Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
c7bb6d80
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
c7bb6d80
编写于
2月 19, 2017
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'asoc/topic/dmaengine' into asoc-next
上级
4ae8be8e
9bfa24e9
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
30 addition
and
3 deletion
+30
-3
include/sound/dmaengine_pcm.h
include/sound/dmaengine_pcm.h
+6
-0
sound/soc/samsung/dmaengine.c
sound/soc/samsung/dmaengine.c
+6
-2
sound/soc/samsung/i2s.c
sound/soc/samsung/i2s.c
+3
-0
sound/soc/samsung/s3c2412-i2s.c
sound/soc/samsung/s3c2412-i2s.c
+2
-0
sound/soc/samsung/s3c24xx-i2s.c
sound/soc/samsung/s3c24xx-i2s.c
+2
-0
sound/soc/soc-generic-dmaengine-pcm.c
sound/soc/soc-generic-dmaengine-pcm.c
+11
-1
未找到文件。
include/sound/dmaengine_pcm.h
浏览文件 @
c7bb6d80
...
...
@@ -71,6 +71,7 @@ struct dma_chan *snd_dmaengine_pcm_get_chan(struct snd_pcm_substream *substream)
* @slave_id: Slave requester id for the DMA channel.
* @filter_data: Custom DMA channel filter data, this will usually be used when
* requesting the DMA channel.
* @chan_name: Custom channel name to use when requesting DMA channel.
* @fifo_size: FIFO size of the DAI controller in bytes
* @flags: PCM_DAI flags, only SND_DMAENGINE_PCM_DAI_FLAG_PACK for now
*/
...
...
@@ -80,6 +81,7 @@ struct snd_dmaengine_dai_dma_data {
u32
maxburst
;
unsigned
int
slave_id
;
void
*
filter_data
;
const
char
*
chan_name
;
unsigned
int
fifo_size
;
unsigned
int
flags
;
};
...
...
@@ -105,6 +107,10 @@ void snd_dmaengine_pcm_set_config_from_dai_data(
* playback.
*/
#define SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX BIT(3)
/*
* The PCM streams have custom channel names specified.
*/
#define SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME BIT(4)
/**
* struct snd_dmaengine_pcm_config - Configuration data for dmaengine based PCM
...
...
sound/soc/samsung/dmaengine.c
浏览文件 @
c7bb6d80
...
...
@@ -37,8 +37,12 @@ int samsung_asoc_dma_platform_register(struct device *dev, dma_filter_fn filter,
pcm_conf
->
prepare_slave_config
=
snd_dmaengine_pcm_prepare_slave_config
;
pcm_conf
->
compat_filter_fn
=
filter
;
pcm_conf
->
chan_names
[
SNDRV_PCM_STREAM_PLAYBACK
]
=
tx
;
pcm_conf
->
chan_names
[
SNDRV_PCM_STREAM_CAPTURE
]
=
rx
;
if
(
dev
->
of_node
)
{
pcm_conf
->
chan_names
[
SNDRV_PCM_STREAM_PLAYBACK
]
=
tx
;
pcm_conf
->
chan_names
[
SNDRV_PCM_STREAM_CAPTURE
]
=
rx
;
}
else
{
flags
|=
SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME
;
}
return
devm_snd_dmaengine_pcm_register
(
dev
,
pcm_conf
,
flags
);
}
...
...
sound/soc/samsung/i2s.c
浏览文件 @
c7bb6d80
...
...
@@ -1305,6 +1305,8 @@ static int samsung_i2s_probe(struct platform_device *pdev)
}
pri_dai
->
dma_playback
.
addr
=
regs_base
+
I2STXD
;
pri_dai
->
dma_capture
.
addr
=
regs_base
+
I2SRXD
;
pri_dai
->
dma_playback
.
chan_name
=
"tx"
;
pri_dai
->
dma_capture
.
chan_name
=
"rx"
;
pri_dai
->
dma_playback
.
addr_width
=
4
;
pri_dai
->
dma_capture
.
addr_width
=
4
;
pri_dai
->
quirks
=
quirks
;
...
...
@@ -1329,6 +1331,7 @@ static int samsung_i2s_probe(struct platform_device *pdev)
sec_dai
->
lock
=
&
pri_dai
->
spinlock
;
sec_dai
->
variant_regs
=
pri_dai
->
variant_regs
;
sec_dai
->
dma_playback
.
addr
=
regs_base
+
I2STXDS
;
sec_dai
->
dma_playback
.
chan_name
=
"tx-sec"
;
if
(
!
np
)
{
sec_dai
->
dma_playback
.
filter_data
=
i2s_pdata
->
dma_play_sec
;
...
...
sound/soc/samsung/s3c2412-i2s.c
浏览文件 @
c7bb6d80
...
...
@@ -35,10 +35,12 @@
#include <linux/platform_data/asoc-s3c.h>
static
struct
snd_dmaengine_dai_dma_data
s3c2412_i2s_pcm_stereo_out
=
{
.
chan_name
=
"tx"
,
.
addr_width
=
4
,
};
static
struct
snd_dmaengine_dai_dma_data
s3c2412_i2s_pcm_stereo_in
=
{
.
chan_name
=
"rx"
,
.
addr_width
=
4
,
};
...
...
sound/soc/samsung/s3c24xx-i2s.c
浏览文件 @
c7bb6d80
...
...
@@ -31,10 +31,12 @@
#include "s3c24xx-i2s.h"
static
struct
snd_dmaengine_dai_dma_data
s3c24xx_i2s_pcm_stereo_out
=
{
.
chan_name
=
"tx"
,
.
addr_width
=
2
,
};
static
struct
snd_dmaengine_dai_dma_data
s3c24xx_i2s_pcm_stereo_in
=
{
.
chan_name
=
"rx"
,
.
addr_width
=
2
,
};
...
...
sound/soc/soc-generic-dmaengine-pcm.c
浏览文件 @
c7bb6d80
...
...
@@ -263,6 +263,7 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd)
struct
dmaengine_pcm
*
pcm
=
soc_platform_to_pcm
(
rtd
->
platform
);
const
struct
snd_dmaengine_pcm_config
*
config
=
pcm
->
config
;
struct
device
*
dev
=
rtd
->
platform
->
dev
;
struct
snd_dmaengine_dai_dma_data
*
dma_data
;
struct
snd_pcm_substream
*
substream
;
size_t
prealloc_buffer_size
;
size_t
max_buffer_size
;
...
...
@@ -282,6 +283,13 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd)
if
(
!
substream
)
continue
;
dma_data
=
snd_soc_dai_get_dma_data
(
rtd
->
cpu_dai
,
substream
);
if
(
!
pcm
->
chan
[
i
]
&&
(
pcm
->
flags
&
SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME
))
pcm
->
chan
[
i
]
=
dma_request_slave_channel
(
dev
,
dma_data
->
chan_name
);
if
(
!
pcm
->
chan
[
i
]
&&
(
pcm
->
flags
&
SND_DMAENGINE_PCM_FLAG_COMPAT
))
{
pcm
->
chan
[
i
]
=
dmaengine_pcm_compat_request_channel
(
rtd
,
substream
);
...
...
@@ -350,7 +358,9 @@ static int dmaengine_pcm_request_chan_of(struct dmaengine_pcm *pcm,
const
char
*
name
;
struct
dma_chan
*
chan
;
if
((
pcm
->
flags
&
SND_DMAENGINE_PCM_FLAG_NO_DT
)
||
!
dev
->
of_node
)
if
((
pcm
->
flags
&
(
SND_DMAENGINE_PCM_FLAG_NO_DT
|
SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME
))
||
!
dev
->
of_node
)
return
0
;
if
(
config
&&
config
->
dma_dev
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录