Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
0186f4f4
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
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看板
提交
0186f4f4
编写于
2月 07, 2013
作者:
T
Takashi Iwai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ALSA: hda - Use generic array for loopback list management
Signed-off-by:
N
Takashi Iwai
<
tiwai@suse.de
>
上级
46a14481
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
17 addition
and
12 deletion
+17
-12
sound/pci/hda/hda_generic.c
sound/pci/hda/hda_generic.c
+11
-7
sound/pci/hda/hda_generic.h
sound/pci/hda/hda_generic.h
+1
-2
sound/pci/hda/patch_via.c
sound/pci/hda/patch_via.c
+5
-3
未找到文件。
sound/pci/hda/hda_generic.c
浏览文件 @
0186f4f4
...
...
@@ -42,6 +42,7 @@ int snd_hda_gen_spec_init(struct hda_gen_spec *spec)
{
snd_array_init
(
&
spec
->
kctls
,
sizeof
(
struct
snd_kcontrol_new
),
32
);
snd_array_init
(
&
spec
->
paths
,
sizeof
(
struct
nid_path
),
8
);
snd_array_init
(
&
spec
->
loopback_list
,
sizeof
(
struct
hda_amp_list
),
8
);
mutex_init
(
&
spec
->
pcm_mutex
);
return
0
;
}
...
...
@@ -82,6 +83,7 @@ void snd_hda_gen_spec_free(struct hda_gen_spec *spec)
return
;
free_kctls
(
spec
);
snd_array_free
(
&
spec
->
paths
);
snd_array_free
(
&
spec
->
loopback_list
);
}
EXPORT_SYMBOL_HDA
(
snd_hda_gen_spec_free
);
...
...
@@ -2484,18 +2486,18 @@ static int create_in_jack_mode(struct hda_codec *codec, hda_nid_t pin)
*/
/* add the powersave loopback-list entry */
static
void
add_loopback_list
(
struct
hda_gen_spec
*
spec
,
hda_nid_t
mix
,
int
idx
)
static
int
add_loopback_list
(
struct
hda_gen_spec
*
spec
,
hda_nid_t
mix
,
int
idx
)
{
struct
hda_amp_list
*
list
;
if
(
spec
->
num_loopbacks
>=
ARRAY_SIZE
(
spec
->
loopback_list
)
-
1
)
return
;
list
=
spec
->
loopback_list
+
spec
->
num_loopbacks
;
list
=
snd_array_new
(
&
spec
->
loopback_list
);
if
(
!
list
)
return
-
ENOMEM
;
list
->
nid
=
mix
;
list
->
dir
=
HDA_INPUT
;
list
->
idx
=
idx
;
spec
->
num_loopbacks
++
;
spec
->
loopback
.
amplist
=
spec
->
loopback_list
;
spec
->
loopback
.
amplist
=
spec
->
loopback_list
.
list
;
return
0
;
}
/* create input playback/capture controls for the given pin */
...
...
@@ -2536,7 +2538,9 @@ static int new_analog_input(struct hda_codec *codec, int input_idx,
}
path
->
active
=
true
;
add_loopback_list
(
spec
,
mix_nid
,
idx
);
err
=
add_loopback_list
(
spec
,
mix_nid
,
idx
);
if
(
err
<
0
)
return
err
;
if
(
spec
->
mixer_nid
!=
spec
->
mixer_merge_nid
&&
!
spec
->
loopback_merge_path
)
{
...
...
sound/pci/hda/hda_generic.h
浏览文件 @
0186f4f4
...
...
@@ -228,8 +228,7 @@ struct hda_gen_spec {
struct
hda_vmaster_mute_hook
vmaster_mute
;
struct
hda_loopback_check
loopback
;
int
num_loopbacks
;
struct
hda_amp_list
loopback_list
[
8
];
struct
snd_array
loopback_list
;
/* multi-io */
int
multi_ios
;
...
...
sound/pci/hda/patch_via.c
浏览文件 @
0186f4f4
...
...
@@ -355,10 +355,12 @@ static bool is_aa_path_mute(struct hda_codec *codec)
{
struct
via_spec
*
spec
=
codec
->
spec
;
const
struct
hda_amp_list
*
p
;
int
i
,
ch
,
v
;
int
ch
,
v
;
for
(
i
=
0
;
i
<
spec
->
gen
.
num_loopbacks
;
i
++
)
{
p
=
&
spec
->
gen
.
loopback_list
[
i
];
p
=
spec
->
gen
.
loopback
.
amplist
;
if
(
!
p
)
return
true
;
for
(;
p
->
nid
;
p
++
)
{
for
(
ch
=
0
;
ch
<
2
;
ch
++
)
{
v
=
snd_hda_codec_amp_read
(
codec
,
p
->
nid
,
ch
,
p
->
dir
,
p
->
idx
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录