Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
81628103
K
Kernel
项目概览
openeuler
/
Kernel
大约 1 年 前同步成功
通知
6
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
81628103
编写于
6月 07, 2009
作者:
M
Mark Brown
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ASoC: Coalesce power updates for DAPM widgets with events
Signed-off-by:
N
Mark Brown
<
broonie@opensource.wolfsonmicro.com
>
上级
e3d4dabd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
60 addition
and
16 deletion
+60
-16
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+60
-16
未找到文件。
sound/soc/soc-dapm.c
浏览文件 @
81628103
...
...
@@ -740,7 +740,7 @@ static void dapm_seq_run_coalesced(struct snd_soc_codec *codec,
struct
list_head
*
pending
)
{
struct
snd_soc_dapm_widget
*
w
;
int
reg
,
power
;
int
reg
,
power
,
ret
;
unsigned
int
value
=
0
;
unsigned
int
mask
=
0
;
unsigned
int
cur_mask
;
...
...
@@ -764,13 +764,62 @@ static void dapm_seq_run_coalesced(struct snd_soc_codec *codec,
pop_dbg
(
codec
->
pop_time
,
"pop test : Queue %s: reg=0x%x, 0x%x/0x%x
\n
"
,
w
->
name
,
reg
,
value
,
mask
);
/* power up pre event */
if
(
w
->
power
&&
w
->
event
&&
(
w
->
event_flags
&
SND_SOC_DAPM_PRE_PMU
))
{
pop_dbg
(
codec
->
pop_time
,
"pop test : %s PRE_PMU
\n
"
,
w
->
name
);
ret
=
w
->
event
(
w
,
NULL
,
SND_SOC_DAPM_PRE_PMU
);
if
(
ret
<
0
)
pr_err
(
"%s: pre event failed: %d
\n
"
,
w
->
name
,
ret
);
}
/* power down pre event */
if
(
!
w
->
power
&&
w
->
event
&&
(
w
->
event_flags
&
SND_SOC_DAPM_PRE_PMD
))
{
pop_dbg
(
codec
->
pop_time
,
"pop test : %s PRE_PMD
\n
"
,
w
->
name
);
ret
=
w
->
event
(
w
,
NULL
,
SND_SOC_DAPM_PRE_PMD
);
if
(
ret
<
0
)
pr_err
(
"%s: pre event failed: %d
\n
"
,
w
->
name
,
ret
);
}
}
if
(
reg
>=
0
)
{
pop_dbg
(
codec
->
pop_time
,
"pop test : Applying 0x%x/0x%x to %x in %dms
\n
"
,
value
,
mask
,
reg
,
codec
->
pop_time
);
pop_wait
(
codec
->
pop_time
);
snd_soc_update_bits
(
codec
,
reg
,
mask
,
value
);
}
pop_dbg
(
codec
->
pop_time
,
"pop test : Applying 0x%x/0x%x to %x in %dms
\n
"
,
value
,
mask
,
reg
,
codec
->
pop_time
);
pop_wait
(
codec
->
pop_time
);
snd_soc_update_bits
(
codec
,
reg
,
mask
,
value
);
list_for_each_entry
(
w
,
pending
,
power_list
)
{
/* power up post event */
if
(
w
->
power
&&
w
->
event
&&
(
w
->
event_flags
&
SND_SOC_DAPM_POST_PMU
))
{
pop_dbg
(
codec
->
pop_time
,
"pop test : %s POST_PMU
\n
"
,
w
->
name
);
ret
=
w
->
event
(
w
,
NULL
,
SND_SOC_DAPM_POST_PMU
);
if
(
ret
<
0
)
pr_err
(
"%s: post event failed: %d
\n
"
,
w
->
name
,
ret
);
}
/* power down post event */
if
(
!
w
->
power
&&
w
->
event
&&
(
w
->
event_flags
&
SND_SOC_DAPM_POST_PMD
))
{
pop_dbg
(
codec
->
pop_time
,
"pop test : %s POST_PMD
\n
"
,
w
->
name
);
ret
=
w
->
event
(
w
,
NULL
,
SND_SOC_DAPM_POST_PMD
);
if
(
ret
<
0
)
pr_err
(
"%s: post event failed: %d
\n
"
,
w
->
name
,
ret
);
}
}
}
/* Apply a DAPM power sequence.
...
...
@@ -843,16 +892,11 @@ static void dapm_seq_run(struct snd_soc_codec *codec, struct list_head *list,
break
;
default:
/* If there's an event or an invalid register
* then run immediately, otherwise store the
* updates so that we can coalesce. */
if
(
w
->
reg
>=
0
&&
!
w
->
event
)
{
cur_sort
=
sort
[
w
->
id
];
cur_reg
=
w
->
reg
;
list_move
(
&
w
->
power_list
,
&
pending
);
}
else
{
ret
=
dapm_generic_apply_power
(
w
);
}
/* Queue it up for application */
cur_sort
=
sort
[
w
->
id
];
cur_reg
=
w
->
reg
;
list_move
(
&
w
->
power_list
,
&
pending
);
break
;
}
if
(
ret
<
0
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录