Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
890c6812
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
163
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
890c6812
编写于
14年前
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-2.6.34' into for-2.6.35
上级
d21e0f4c
83926099
master
alk-4.19.24
alk-4.19.30
alk-4.19.34
alk-4.19.36
alk-4.19.43
alk-4.19.48
alk-4.19.57
ck-4.19.67
ck-4.19.81
ck-4.19.91
github/fork/deepanshu1422/fix-typo-in-comment
github/fork/haosdent/fix-typo
linux-next
v4.19.91
v4.19.90
v4.19.89
v4.19.88
v4.19.87
v4.19.86
v4.19.85
v4.19.84
v4.19.83
v4.19.82
v4.19.81
v4.19.80
v4.19.79
v4.19.78
v4.19.77
v4.19.76
v4.19.75
v4.19.74
v4.19.73
v4.19.72
v4.19.71
v4.19.70
v4.19.69
v4.19.68
v4.19.67
v4.19.66
v4.19.65
v4.19.64
v4.19.63
v4.19.62
v4.19.61
v4.19.60
v4.19.59
v4.19.58
v4.19.57
v4.19.56
v4.19.55
v4.19.54
v4.19.53
v4.19.52
v4.19.51
v4.19.50
v4.19.49
v4.19.48
v4.19.47
v4.19.46
v4.19.45
v4.19.44
v4.19.43
v4.19.42
v4.19.41
v4.19.40
v4.19.39
v4.19.38
v4.19.37
v4.19.36
v4.19.35
v4.19.34
v4.19.33
v4.19.32
v4.19.31
v4.19.30
v4.19.29
v4.19.28
v4.19.27
v4.19.26
v4.19.25
v4.19.24
v4.19.23
v4.19.22
v4.19.21
v4.19.20
v4.19.19
v4.19.18
v4.19.17
v4.19.16
v4.19.15
v4.19.14
v4.19.13
v4.19.12
v4.19.11
v4.19.10
v4.19.9
v4.19.8
v4.19.7
v4.19.6
v4.19.5
v4.19.4
v4.19.3
v4.19.2
v4.19.1
v4.19
v4.19-rc8
v4.19-rc7
v4.19-rc6
v4.19-rc5
v4.19-rc4
v4.19-rc3
v4.19-rc2
v4.19-rc1
ck-release-21
ck-release-20
ck-release-19.2
ck-release-19.1
ck-release-19
ck-release-18
ck-release-17.2
ck-release-17.1
ck-release-17
ck-release-16
ck-release-15.1
ck-release-15
ck-release-14
ck-release-13.2
ck-release-13
ck-release-12
ck-release-11
ck-release-10
ck-release-9
ck-release-7
alk-release-15
alk-release-14
alk-release-13.2
alk-release-13
alk-release-12
alk-release-11
alk-release-10
alk-release-9
alk-release-7
无相关合并请求
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
45 addition
and
29 deletion
+45
-29
sound/soc/codecs/wm2000.c
sound/soc/codecs/wm2000.c
+0
-1
sound/soc/imx/imx-pcm-dma-mx2.c
sound/soc/imx/imx-pcm-dma-mx2.c
+14
-1
sound/soc/imx/imx-pcm-fiq.c
sound/soc/imx/imx-pcm-fiq.c
+29
-26
sound/soc/imx/imx-ssi.c
sound/soc/imx/imx-ssi.c
+2
-1
未找到文件。
sound/soc/codecs/wm2000.c
浏览文件 @
890c6812
...
...
@@ -23,7 +23,6 @@
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/version.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/firmware.h>
...
...
This diff is collapsed.
Click to expand it.
sound/soc/imx/imx-pcm-dma-mx2.c
浏览文件 @
890c6812
...
...
@@ -70,7 +70,12 @@ static void imx_ssi_dma_callback(int channel, void *data)
static
void
snd_imx_dma_err_callback
(
int
channel
,
void
*
data
,
int
err
)
{
pr_err
(
"DMA error callback called
\n
"
);
struct
snd_pcm_substream
*
substream
=
data
;
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
imx_pcm_dma_params
*
dma_params
=
rtd
->
dai
->
cpu_dai
->
dma_data
;
struct
snd_pcm_runtime
*
runtime
=
substream
->
runtime
;
struct
imx_pcm_runtime_data
*
iprtd
=
runtime
->
private_data
;
int
ret
;
pr_err
(
"DMA timeout on channel %d -%s%s%s%s
\n
"
,
channel
,
...
...
@@ -78,6 +83,14 @@ static void snd_imx_dma_err_callback(int channel, void *data, int err)
err
&
IMX_DMA_ERR_REQUEST
?
" request"
:
""
,
err
&
IMX_DMA_ERR_TRANSFER
?
" transfer"
:
""
,
err
&
IMX_DMA_ERR_BUFFER
?
" buffer"
:
""
);
imx_dma_disable
(
iprtd
->
dma
);
ret
=
imx_dma_setup_sg
(
iprtd
->
dma
,
iprtd
->
sg_list
,
iprtd
->
sg_count
,
IMX_DMA_LENGTH_LOOP
,
dma_params
->
dma_addr
,
substream
->
stream
==
SNDRV_PCM_STREAM_PLAYBACK
?
DMA_MODE_WRITE
:
DMA_MODE_READ
);
if
(
!
ret
)
imx_dma_enable
(
iprtd
->
dma
);
}
static
int
imx_ssi_dma_alloc
(
struct
snd_pcm_substream
*
substream
)
...
...
This diff is collapsed.
Click to expand it.
sound/soc/imx/imx-pcm-fiq.c
浏览文件 @
890c6812
...
...
@@ -38,23 +38,24 @@ struct imx_pcm_runtime_data {
unsigned
long
offset
;
unsigned
long
last_offset
;
unsigned
long
size
;
struct
timer_list
timer
;
int
poll_time
;
struct
hrtimer
hrt
;
int
poll_time_ns
;
struct
snd_pcm_substream
*
substream
;
atomic_t
running
;
};
static
inline
void
imx_ssi_set_next_poll
(
struct
imx_pcm_runtime_data
*
iprtd
)
static
enum
hrtimer_restart
snd_hrtimer_callback
(
struct
hrtimer
*
hrt
)
{
iprtd
->
timer
.
expires
=
jiffies
+
iprtd
->
poll_time
;
}
static
void
imx_ssi_timer_callback
(
unsigned
long
data
)
{
struct
snd_pcm_substream
*
substream
=
(
void
*
)
data
;
struct
imx_pcm_runtime_data
*
iprtd
=
container_of
(
hrt
,
struct
imx_pcm_runtime_data
,
hrt
);
struct
snd_pcm_substream
*
substream
=
iprtd
->
substream
;
struct
snd_pcm_runtime
*
runtime
=
substream
->
runtime
;
struct
imx_pcm_runtime_data
*
iprtd
=
runtime
->
private_data
;
struct
pt_regs
regs
;
unsigned
long
delta
;
if
(
!
atomic_read
(
&
iprtd
->
running
))
return
HRTIMER_NORESTART
;
get_fiq_regs
(
&
regs
);
if
(
substream
->
stream
==
SNDRV_PCM_STREAM_PLAYBACK
)
...
...
@@ -71,16 +72,14 @@ static void imx_ssi_timer_callback(unsigned long data)
/* If we've transferred at least a period then report it and
* reset our poll time */
if
(
delta
>=
runtime
->
period_size
)
{
if
(
delta
>=
iprtd
->
period
)
{
snd_pcm_period_elapsed
(
substream
);
iprtd
->
last_offset
=
iprtd
->
offset
;
imx_ssi_set_next_poll
(
iprtd
);
}
/* Restart the timer; if we didn't report we'll run on the next tick */
add_timer
(
&
iprtd
->
timer
);
hrtimer_forward_now
(
hrt
,
ns_to_ktime
(
iprtd
->
poll_time_ns
));
return
HRTIMER_RESTART
;
}
static
struct
fiq_handler
fh
=
{
...
...
@@ -98,8 +97,8 @@ static int snd_imx_pcm_hw_params(struct snd_pcm_substream *substream,
iprtd
->
period
=
params_period_bytes
(
params
)
;
iprtd
->
offset
=
0
;
iprtd
->
last_offset
=
0
;
iprtd
->
poll_time
=
HZ
/
(
params_rate
(
params
)
/
params_period_size
(
params
));
iprtd
->
poll_time
_ns
=
1000000000
/
params_rate
(
params
)
*
params_period_size
(
params
);
snd_pcm_set_runtime_buffer
(
substream
,
&
substream
->
dma_buffer
);
return
0
;
...
...
@@ -134,8 +133,9 @@ static int snd_imx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
case
SNDRV_PCM_TRIGGER_START
:
case
SNDRV_PCM_TRIGGER_RESUME
:
case
SNDRV_PCM_TRIGGER_PAUSE_RELEASE
:
imx_ssi_set_next_poll
(
iprtd
);
add_timer
(
&
iprtd
->
timer
);
atomic_set
(
&
iprtd
->
running
,
1
);
hrtimer_start
(
&
iprtd
->
hrt
,
ns_to_ktime
(
iprtd
->
poll_time_ns
),
HRTIMER_MODE_REL
);
if
(
++
fiq_enable
==
1
)
enable_fiq
(
imx_pcm_fiq
);
...
...
@@ -144,11 +144,11 @@ static int snd_imx_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
case
SNDRV_PCM_TRIGGER_STOP
:
case
SNDRV_PCM_TRIGGER_SUSPEND
:
case
SNDRV_PCM_TRIGGER_PAUSE_PUSH
:
del_timer
(
&
iprtd
->
timer
);
atomic_set
(
&
iprtd
->
running
,
0
);
if
(
--
fiq_enable
==
0
)
disable_fiq
(
imx_pcm_fiq
);
break
;
default:
return
-
EINVAL
;
...
...
@@ -179,7 +179,7 @@ static struct snd_pcm_hardware snd_imx_hardware = {
.
buffer_bytes_max
=
IMX_SSI_DMABUF_SIZE
,
.
period_bytes_min
=
128
,
.
period_bytes_max
=
16
*
1024
,
.
periods_min
=
2
,
.
periods_min
=
4
,
.
periods_max
=
255
,
.
fifo_size
=
0
,
};
...
...
@@ -193,9 +193,11 @@ static int snd_imx_open(struct snd_pcm_substream *substream)
iprtd
=
kzalloc
(
sizeof
(
*
iprtd
),
GFP_KERNEL
);
runtime
->
private_data
=
iprtd
;
init_timer
(
&
iprtd
->
timer
);
iprtd
->
timer
.
data
=
(
unsigned
long
)
substream
;
iprtd
->
timer
.
function
=
imx_ssi_timer_callback
;
iprtd
->
substream
=
substream
;
atomic_set
(
&
iprtd
->
running
,
0
);
hrtimer_init
(
&
iprtd
->
hrt
,
CLOCK_MONOTONIC
,
HRTIMER_MODE_REL
);
iprtd
->
hrt
.
function
=
snd_hrtimer_callback
;
ret
=
snd_pcm_hw_constraint_integer
(
substream
->
runtime
,
SNDRV_PCM_HW_PARAM_PERIODS
);
...
...
@@ -211,7 +213,8 @@ static int snd_imx_close(struct snd_pcm_substream *substream)
struct
snd_pcm_runtime
*
runtime
=
substream
->
runtime
;
struct
imx_pcm_runtime_data
*
iprtd
=
runtime
->
private_data
;
del_timer_sync
(
&
iprtd
->
timer
);
hrtimer_cancel
(
&
iprtd
->
hrt
);
kfree
(
iprtd
);
return
0
;
...
...
This diff is collapsed.
Click to expand it.
sound/soc/imx/imx-ssi.c
浏览文件 @
890c6812
...
...
@@ -655,7 +655,8 @@ static int imx_ssi_probe(struct platform_device *pdev)
dai
->
private_data
=
ssi
;
if
((
cpu_is_mx27
()
||
cpu_is_mx21
())
&&
!
(
ssi
->
flags
&
IMX_SSI_USE_AC97
))
{
!
(
ssi
->
flags
&
IMX_SSI_USE_AC97
)
&&
(
ssi
->
flags
&
IMX_SSI_DMA
))
{
ssi
->
flags
|=
IMX_SSI_DMA
;
platform
=
imx_ssi_dma_mx2_init
(
pdev
,
ssi
);
}
else
...
...
This diff is collapsed.
Click to expand it.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录
反馈
建议
客服
返回
顶部