Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
977732b0
Commit
977732b0
authored
Jun 05, 2015
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'asoc/topic/dma' into asoc-next
parents
4b578955
acde50a7
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
16 additions
and
22 deletions
+16
-22
include/sound/dmaengine_pcm.h
include/sound/dmaengine_pcm.h
+0
-5
sound/soc/atmel/atmel-pcm-dma.c
sound/soc/atmel/atmel-pcm-dma.c
+1
-2
sound/soc/cirrus/ep93xx-pcm.c
sound/soc/cirrus/ep93xx-pcm.c
+0
-1
sound/soc/fsl/fsl_sai.c
sound/soc/fsl/fsl_sai.c
+1
-2
sound/soc/soc-generic-dmaengine-pcm.c
sound/soc/soc-generic-dmaengine-pcm.c
+14
-11
sound/soc/ux500/ux500_pcm.c
sound/soc/ux500/ux500_pcm.c
+0
-1
No files found.
include/sound/dmaengine_pcm.h
View file @
977732b0
...
...
@@ -90,11 +90,6 @@ void snd_dmaengine_pcm_set_config_from_dai_data(
* makes sense if SND_DMAENGINE_PCM_FLAG_COMPAT is set as well.
*/
#define SND_DMAENGINE_PCM_FLAG_NO_DT BIT(1)
/*
* The platforms dmaengine driver does not support reporting the amount of
* bytes that are still left to transfer.
*/
#define SND_DMAENGINE_PCM_FLAG_NO_RESIDUE BIT(2)
/*
* The PCM is half duplex and the DMA channel is shared between capture and
* playback.
...
...
sound/soc/atmel/atmel-pcm-dma.c
View file @
977732b0
...
...
@@ -124,8 +124,7 @@ static const struct snd_dmaengine_pcm_config atmel_dmaengine_pcm_config = {
int
atmel_pcm_dma_platform_register
(
struct
device
*
dev
)
{
return
snd_dmaengine_pcm_register
(
dev
,
&
atmel_dmaengine_pcm_config
,
SND_DMAENGINE_PCM_FLAG_NO_RESIDUE
);
return
snd_dmaengine_pcm_register
(
dev
,
&
atmel_dmaengine_pcm_config
,
0
);
}
EXPORT_SYMBOL
(
atmel_pcm_dma_platform_register
);
...
...
sound/soc/cirrus/ep93xx-pcm.c
View file @
977732b0
...
...
@@ -60,7 +60,6 @@ int devm_ep93xx_pcm_platform_register(struct device *dev)
{
return
devm_snd_dmaengine_pcm_register
(
dev
,
&
ep93xx_dmaengine_pcm_config
,
SND_DMAENGINE_PCM_FLAG_NO_RESIDUE
|
SND_DMAENGINE_PCM_FLAG_NO_DT
|
SND_DMAENGINE_PCM_FLAG_COMPAT
);
}
...
...
sound/soc/fsl/fsl_sai.c
View file @
977732b0
...
...
@@ -664,8 +664,7 @@ static int fsl_sai_probe(struct platform_device *pdev)
if
(
sai
->
sai_on_imx
)
return
imx_pcm_dma_init
(
pdev
);
else
return
devm_snd_dmaengine_pcm_register
(
&
pdev
->
dev
,
NULL
,
SND_DMAENGINE_PCM_FLAG_NO_RESIDUE
);
return
devm_snd_dmaengine_pcm_register
(
&
pdev
->
dev
,
NULL
,
0
);
}
static
const
struct
of_device_id
fsl_sai_ids
[]
=
{
...
...
sound/soc/soc-generic-dmaengine-pcm.c
View file @
977732b0
...
...
@@ -24,6 +24,12 @@
#include <sound/dmaengine_pcm.h>
/*
* The platforms dmaengine driver does not support reporting the amount of
* bytes that are still left to transfer.
*/
#define SND_DMAENGINE_PCM_FLAG_NO_RESIDUE BIT(31)
struct
dmaengine_pcm
{
struct
dma_chan
*
chan
[
SNDRV_PCM_STREAM_LAST
+
1
];
const
struct
snd_dmaengine_pcm_config
*
config
;
...
...
@@ -222,14 +228,18 @@ static struct dma_chan *dmaengine_pcm_compat_request_channel(
return
snd_dmaengine_pcm_request_channel
(
fn
,
dma_data
->
filter_data
);
}
static
bool
dmaengine_pcm_can_report_residue
(
struct
dma_chan
*
chan
)
static
bool
dmaengine_pcm_can_report_residue
(
struct
device
*
dev
,
struct
dma_chan
*
chan
)
{
struct
dma_slave_caps
dma_caps
;
int
ret
;
ret
=
dma_get_slave_caps
(
chan
,
&
dma_caps
);
if
(
ret
!=
0
)
return
true
;
if
(
ret
!=
0
)
{
dev_warn
(
dev
,
"Failed to get DMA channel capabilities, falling back to period counting: %d
\n
"
,
ret
);
return
false
;
}
if
(
dma_caps
.
residue_granularity
==
DMA_RESIDUE_GRANULARITY_DESCRIPTOR
)
return
false
;
...
...
@@ -289,14 +299,7 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd)
if
(
ret
)
return
ret
;
/*
* This will only return false if we know for sure that at least
* one channel does not support residue reporting. If the DMA
* driver does not implement the slave_caps API we rely having
* the NO_RESIDUE flag set manually in case residue reporting is
* not supported.
*/
if
(
!
dmaengine_pcm_can_report_residue
(
pcm
->
chan
[
i
]))
if
(
!
dmaengine_pcm_can_report_residue
(
dev
,
pcm
->
chan
[
i
]))
pcm
->
flags
|=
SND_DMAENGINE_PCM_FLAG_NO_RESIDUE
;
}
...
...
sound/soc/ux500/ux500_pcm.c
View file @
977732b0
...
...
@@ -147,7 +147,6 @@ int ux500_pcm_register_platform(struct platform_device *pdev)
pcm_config
=
&
ux500_dmaengine_pcm_config
;
ret
=
snd_dmaengine_pcm_register
(
&
pdev
->
dev
,
pcm_config
,
SND_DMAENGINE_PCM_FLAG_NO_RESIDUE
|
SND_DMAENGINE_PCM_FLAG_COMPAT
);
if
(
ret
<
0
)
{
dev_err
(
&
pdev
->
dev
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment