Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
9eb6e9b1
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看板
提交
9eb6e9b1
编写于
12月 01, 2011
作者:
T
Takashi Iwai
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fix/hda' into topic/hda
上级
a4567cb3
88d68602
变更
20
隐藏空白更改
内联
并排
Showing
20 changed file
with
166 addition
and
74 deletion
+166
-74
MAINTAINERS
MAINTAINERS
+0
-1
sound/pci/hda/hda_intel.c
sound/pci/hda/hda_intel.c
+0
-1
sound/pci/hda/patch_cirrus.c
sound/pci/hda/patch_cirrus.c
+1
-1
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_sigmatel.c
+3
-19
sound/pci/hda/patch_via.c
sound/pci/hda/patch_via.c
+43
-33
sound/soc/codecs/adau1373.c
sound/soc/codecs/adau1373.c
+1
-1
sound/soc/codecs/cs4271.c
sound/soc/codecs/cs4271.c
+5
-3
sound/soc/codecs/rt5631.c
sound/soc/codecs/rt5631.c
+1
-1
sound/soc/codecs/sgtl5000.c
sound/soc/codecs/sgtl5000.c
+1
-1
sound/soc/codecs/sta32x.c
sound/soc/codecs/sta32x.c
+62
-1
sound/soc/codecs/sta32x.h
sound/soc/codecs/sta32x.h
+1
-0
sound/soc/codecs/wm8731.c
sound/soc/codecs/wm8731.c
+1
-0
sound/soc/codecs/wm8753.c
sound/soc/codecs/wm8753.c
+3
-0
sound/soc/codecs/wm8962.c
sound/soc/codecs/wm8962.c
+2
-2
sound/soc/codecs/wm8993.c
sound/soc/codecs/wm8993.c
+1
-1
sound/soc/codecs/wm9081.c
sound/soc/codecs/wm9081.c
+5
-5
sound/soc/codecs/wm9090.c
sound/soc/codecs/wm9090.c
+3
-3
sound/soc/codecs/wm_hubs.c
sound/soc/codecs/wm_hubs.c
+1
-1
sound/soc/fsl/fsl_ssi.c
sound/soc/fsl/fsl_ssi.c
+1
-0
sound/usb/quirks-table.h
sound/usb/quirks-table.h
+31
-0
未找到文件。
MAINTAINERS
浏览文件 @
9eb6e9b1
...
...
@@ -5648,7 +5648,6 @@ F: drivers/media/video/*7146*
F: include/media/*7146*
SAMSUNG AUDIO (ASoC) DRIVERS
M: Jassi Brar <jassisinghbrar@gmail.com>
M: Sangbeom Kim <sbkim73@samsung.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
S: Supported
...
...
sound/pci/hda/hda_intel.c
浏览文件 @
9eb6e9b1
...
...
@@ -2507,7 +2507,6 @@ static struct snd_pci_quirk position_fix_list[] __devinitdata = {
SND_PCI_QUIRK
(
0x1043
,
0x81b3
,
"ASUS"
,
POS_FIX_LPIB
),
SND_PCI_QUIRK
(
0x1043
,
0x81e7
,
"ASUS M2V"
,
POS_FIX_LPIB
),
SND_PCI_QUIRK
(
0x104d
,
0x9069
,
"Sony VPCS11V9E"
,
POS_FIX_LPIB
),
SND_PCI_QUIRK
(
0x1106
,
0x3288
,
"ASUS M2V-MX SE"
,
POS_FIX_LPIB
),
SND_PCI_QUIRK
(
0x1297
,
0x3166
,
"Shuttle"
,
POS_FIX_LPIB
),
SND_PCI_QUIRK
(
0x1458
,
0xa022
,
"ga-ma770-ud3"
,
POS_FIX_LPIB
),
SND_PCI_QUIRK
(
0x1462
,
0x1002
,
"MSI Wind U115"
,
POS_FIX_LPIB
),
...
...
sound/pci/hda/patch_cirrus.c
浏览文件 @
9eb6e9b1
...
...
@@ -1278,7 +1278,7 @@ static const char * const cs420x_models[CS420X_MODELS] = {
[
CS420X_MBP53
]
=
"mbp53"
,
[
CS420X_MBP55
]
=
"mbp55"
,
[
CS420X_IMAC27
]
=
"imac27"
,
[
CS420X_
IMAC27
]
=
"apple"
,
[
CS420X_
APPLE
]
=
"apple"
,
[
CS420X_AUTO
]
=
"auto"
,
};
...
...
sound/pci/hda/patch_sigmatel.c
浏览文件 @
9eb6e9b1
...
...
@@ -4441,7 +4441,9 @@ static int stac92xx_init(struct hda_codec *codec)
int
pinctl
,
def_conf
;
/* power on when no jack detection is available */
if
(
!
spec
->
hp_detect
)
{
/* or when the VREF is used for controlling LED */
if
(
!
spec
->
hp_detect
||
(
spec
->
gpio_led
>
8
&&
spec
->
gpio_led
==
nid
))
{
stac_toggle_power_map
(
codec
,
nid
,
1
);
continue
;
}
...
...
@@ -5055,20 +5057,6 @@ static int stac92xx_pre_resume(struct hda_codec *codec)
return
0
;
}
static
int
stac92xx_post_suspend
(
struct
hda_codec
*
codec
)
{
struct
sigmatel_spec
*
spec
=
codec
->
spec
;
if
(
spec
->
gpio_led
>
8
)
{
/* with vref-out pin used for mute led control
* codec AFG is prevented from D3 state, but on
* system suspend it can (and should) be used
*/
snd_hda_codec_read
(
codec
,
codec
->
afg
,
0
,
AC_VERB_SET_POWER_STATE
,
AC_PWRST_D3
);
}
return
0
;
}
static
void
stac92xx_set_power_state
(
struct
hda_codec
*
codec
,
hda_nid_t
fg
,
unsigned
int
power_state
)
{
...
...
@@ -5668,8 +5656,6 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
}
else
{
codec
->
patch_ops
.
set_power_state
=
stac92xx_set_power_state
;
codec
->
patch_ops
.
post_suspend
=
stac92xx_post_suspend
;
}
codec
->
patch_ops
.
pre_resume
=
stac92xx_pre_resume
;
codec
->
patch_ops
.
check_power_status
=
...
...
@@ -5983,8 +5969,6 @@ static int patch_stac92hd71bxx(struct hda_codec *codec)
}
else
{
codec
->
patch_ops
.
set_power_state
=
stac92xx_set_power_state
;
codec
->
patch_ops
.
post_suspend
=
stac92xx_post_suspend
;
}
codec
->
patch_ops
.
pre_resume
=
stac92xx_pre_resume
;
codec
->
patch_ops
.
check_power_status
=
...
...
sound/pci/hda/patch_via.c
浏览文件 @
9eb6e9b1
...
...
@@ -208,6 +208,7 @@ struct via_spec {
/* work to check hp jack state */
struct
hda_codec
*
codec
;
struct
delayed_work
vt1708_hp_work
;
int
hp_work_active
;
int
vt1708_jack_detect
;
int
vt1708_hp_present
;
...
...
@@ -305,27 +306,35 @@ enum {
static
void
analog_low_current_mode
(
struct
hda_codec
*
codec
);
static
bool
is_aa_path_mute
(
struct
hda_codec
*
codec
);
static
void
vt1708_start_hp_work
(
struct
via_spec
*
spec
)
#define hp_detect_with_aa(codec) \
(snd_hda_get_bool_hint(codec, "analog_loopback_hp_detect") == 1 && \
!is_aa_path_mute(codec))
static
void
vt1708_stop_hp_work
(
struct
via_spec
*
spec
)
{
if
(
spec
->
codec_type
!=
VT1708
||
spec
->
autocfg
.
hp_pins
[
0
]
==
0
)
return
;
snd_hda_codec_write
(
spec
->
codec
,
0x1
,
0
,
0xf81
,
!
spec
->
vt1708_jack_detect
);
if
(
!
delayed_work_pending
(
&
spec
->
vt1708_hp_work
))
s
chedule_delayed_work
(
&
spec
->
vt1708_hp_work
,
msecs_to_jiffies
(
100
));
if
(
spec
->
hp_work_active
)
{
snd_hda_codec_write
(
spec
->
codec
,
0x1
,
0
,
0xf81
,
1
);
cancel_delayed_work_sync
(
&
spec
->
vt1708_hp_work
);
s
pec
->
hp_work_active
=
0
;
}
}
static
void
vt1708_
stop
_hp_work
(
struct
via_spec
*
spec
)
static
void
vt1708_
update
_hp_work
(
struct
via_spec
*
spec
)
{
if
(
spec
->
codec_type
!=
VT1708
||
spec
->
autocfg
.
hp_pins
[
0
]
==
0
)
return
;
if
(
snd_hda_get_bool_hint
(
spec
->
codec
,
"analog_loopback_hp_detect"
)
==
1
&&
!
is_aa_path_mute
(
spec
->
codec
))
return
;
snd_hda_codec_write
(
spec
->
codec
,
0x1
,
0
,
0xf81
,
!
spec
->
vt1708_jack_detect
);
cancel_delayed_work_sync
(
&
spec
->
vt1708_hp_work
);
if
(
spec
->
vt1708_jack_detect
&&
(
spec
->
active_streams
||
hp_detect_with_aa
(
spec
->
codec
)))
{
if
(
!
spec
->
hp_work_active
)
{
snd_hda_codec_write
(
spec
->
codec
,
0x1
,
0
,
0xf81
,
0
);
schedule_delayed_work
(
&
spec
->
vt1708_hp_work
,
msecs_to_jiffies
(
100
));
spec
->
hp_work_active
=
1
;
}
}
else
if
(
!
hp_detect_with_aa
(
spec
->
codec
))
vt1708_stop_hp_work
(
spec
);
}
static
void
set_widgets_power_state
(
struct
hda_codec
*
codec
)
...
...
@@ -343,12 +352,7 @@ static int analog_input_switch_put(struct snd_kcontrol *kcontrol,
set_widgets_power_state
(
codec
);
analog_low_current_mode
(
snd_kcontrol_chip
(
kcontrol
));
if
(
snd_hda_get_bool_hint
(
codec
,
"analog_loopback_hp_detect"
)
==
1
)
{
if
(
is_aa_path_mute
(
codec
))
vt1708_start_hp_work
(
codec
->
spec
);
else
vt1708_stop_hp_work
(
codec
->
spec
);
}
vt1708_update_hp_work
(
codec
->
spec
);
return
change
;
}
...
...
@@ -1154,7 +1158,7 @@ static int via_playback_multi_pcm_prepare(struct hda_pcm_stream *hinfo,
spec
->
cur_dac_stream_tag
=
stream_tag
;
spec
->
cur_dac_format
=
format
;
mutex_unlock
(
&
spec
->
config_mutex
);
vt1708_
start
_hp_work
(
spec
);
vt1708_
update
_hp_work
(
spec
);
return
0
;
}
...
...
@@ -1174,7 +1178,7 @@ static int via_playback_hp_pcm_prepare(struct hda_pcm_stream *hinfo,
spec
->
cur_hp_stream_tag
=
stream_tag
;
spec
->
cur_hp_format
=
format
;
mutex_unlock
(
&
spec
->
config_mutex
);
vt1708_
start
_hp_work
(
spec
);
vt1708_
update
_hp_work
(
spec
);
return
0
;
}
...
...
@@ -1188,7 +1192,7 @@ static int via_playback_multi_pcm_cleanup(struct hda_pcm_stream *hinfo,
snd_hda_multi_out_analog_cleanup
(
codec
,
&
spec
->
multiout
);
spec
->
active_streams
&=
~
STREAM_MULTI_OUT
;
mutex_unlock
(
&
spec
->
config_mutex
);
vt1708_
stop
_hp_work
(
spec
);
vt1708_
update
_hp_work
(
spec
);
return
0
;
}
...
...
@@ -1203,7 +1207,7 @@ static int via_playback_hp_pcm_cleanup(struct hda_pcm_stream *hinfo,
snd_hda_codec_setup_stream
(
codec
,
spec
->
hp_dac_nid
,
0
,
0
,
0
);
spec
->
active_streams
&=
~
STREAM_INDEP_HP
;
mutex_unlock
(
&
spec
->
config_mutex
);
vt1708_
stop
_hp_work
(
spec
);
vt1708_
update
_hp_work
(
spec
);
return
0
;
}
...
...
@@ -1645,7 +1649,8 @@ static void via_hp_automute(struct hda_codec *codec)
int
nums
;
struct
via_spec
*
spec
=
codec
->
spec
;
if
(
!
spec
->
hp_independent_mode
&&
spec
->
autocfg
.
hp_pins
[
0
])
if
(
!
spec
->
hp_independent_mode
&&
spec
->
autocfg
.
hp_pins
[
0
]
&&
(
spec
->
codec_type
!=
VT1708
||
spec
->
vt1708_jack_detect
))
present
=
snd_hda_jack_detect
(
codec
,
spec
->
autocfg
.
hp_pins
[
0
]);
if
(
spec
->
smart51_enabled
)
...
...
@@ -2612,8 +2617,6 @@ static int vt1708_jack_detect_get(struct snd_kcontrol *kcontrol,
if
(
spec
->
codec_type
!=
VT1708
)
return
0
;
spec
->
vt1708_jack_detect
=
!
((
snd_hda_codec_read
(
codec
,
0x1
,
0
,
0xf84
,
0
)
>>
8
)
&
0x1
);
ucontrol
->
value
.
integer
.
value
[
0
]
=
spec
->
vt1708_jack_detect
;
return
0
;
}
...
...
@@ -2623,18 +2626,22 @@ static int vt1708_jack_detect_put(struct snd_kcontrol *kcontrol,
{
struct
hda_codec
*
codec
=
snd_kcontrol_chip
(
kcontrol
);
struct
via_spec
*
spec
=
codec
->
spec
;
int
change
;
int
val
;
if
(
spec
->
codec_type
!=
VT1708
)
return
0
;
spec
->
vt1708_jack_detect
=
ucontrol
->
value
.
integer
.
value
[
0
];
change
=
(
0x1
&
(
snd_hda_codec_read
(
codec
,
0x1
,
0
,
0xf84
,
0
)
>>
8
))
==
!
spec
->
vt1708_jack_detect
;
if
(
spec
->
vt1708_jack_detect
)
{
val
=
!!
ucontrol
->
value
.
integer
.
value
[
0
];
if
(
spec
->
vt1708_jack_detect
==
val
)
return
0
;
spec
->
vt1708_jack_detect
=
val
;
if
(
spec
->
vt1708_jack_detect
&&
snd_hda_get_bool_hint
(
codec
,
"analog_loopback_hp_detect"
)
!=
1
)
{
mute_aa_path
(
codec
,
1
);
notify_aa_path_ctls
(
codec
);
}
return
change
;
via_hp_automute
(
codec
);
vt1708_update_hp_work
(
spec
);
return
1
;
}
static
const
struct
snd_kcontrol_new
vt1708_jack_detect_ctl
=
{
...
...
@@ -2771,6 +2778,7 @@ static int via_init(struct hda_codec *codec)
via_auto_init_unsol_event
(
codec
);
via_hp_automute
(
codec
);
vt1708_update_hp_work
(
spec
);
return
0
;
}
...
...
@@ -2787,7 +2795,9 @@ static void vt1708_update_hp_jack_state(struct work_struct *work)
spec
->
vt1708_hp_present
^=
1
;
via_hp_automute
(
spec
->
codec
);
}
vt1708_start_hp_work
(
spec
);
if
(
spec
->
vt1708_jack_detect
)
schedule_delayed_work
(
&
spec
->
vt1708_hp_work
,
msecs_to_jiffies
(
100
));
}
static
int
get_mux_nids
(
struct
hda_codec
*
codec
)
...
...
sound/soc/codecs/adau1373.c
浏览文件 @
9eb6e9b1
...
...
@@ -245,7 +245,7 @@ static const char *adau1373_bass_hpf_cutoff_text[] = {
};
static
const
unsigned
int
adau1373_bass_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
4
),
TLV_DB_RANGE_HEAD
(
3
),
0
,
2
,
TLV_DB_SCALE_ITEM
(
-
600
,
600
,
1
),
3
,
4
,
TLV_DB_SCALE_ITEM
(
950
,
250
,
0
),
5
,
7
,
TLV_DB_SCALE_ITEM
(
1400
,
150
,
0
),
...
...
sound/soc/codecs/cs4271.c
浏览文件 @
9eb6e9b1
...
...
@@ -434,7 +434,8 @@ static int cs4271_soc_suspend(struct snd_soc_codec *codec, pm_message_t mesg)
{
int
ret
;
/* Set power-down bit */
ret
=
snd_soc_update_bits
(
codec
,
CS4271_MODE2
,
0
,
CS4271_MODE2_PDN
);
ret
=
snd_soc_update_bits
(
codec
,
CS4271_MODE2
,
CS4271_MODE2_PDN
,
CS4271_MODE2_PDN
);
if
(
ret
<
0
)
return
ret
;
return
0
;
...
...
@@ -501,8 +502,9 @@ static int cs4271_probe(struct snd_soc_codec *codec)
return
ret
;
}
ret
=
snd_soc_update_bits
(
codec
,
CS4271_MODE2
,
0
,
CS4271_MODE2_PDN
|
CS4271_MODE2_CPEN
);
ret
=
snd_soc_update_bits
(
codec
,
CS4271_MODE2
,
CS4271_MODE2_PDN
|
CS4271_MODE2_CPEN
,
CS4271_MODE2_PDN
|
CS4271_MODE2_CPEN
);
if
(
ret
<
0
)
return
ret
;
ret
=
snd_soc_update_bits
(
codec
,
CS4271_MODE2
,
CS4271_MODE2_PDN
,
0
);
...
...
sound/soc/codecs/rt5631.c
浏览文件 @
9eb6e9b1
...
...
@@ -177,7 +177,7 @@ static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -95625, 375, 0);
static
const
DECLARE_TLV_DB_SCALE
(
in_vol_tlv
,
-
3450
,
150
,
0
);
/* {0, +20, +24, +30, +35, +40, +44, +50, +52}dB */
static
unsigned
int
mic_bst_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
6
),
TLV_DB_RANGE_HEAD
(
7
),
0
,
0
,
TLV_DB_SCALE_ITEM
(
0
,
0
,
0
),
1
,
1
,
TLV_DB_SCALE_ITEM
(
2000
,
0
,
0
),
2
,
2
,
TLV_DB_SCALE_ITEM
(
2400
,
0
,
0
),
...
...
sound/soc/codecs/sgtl5000.c
浏览文件 @
9eb6e9b1
...
...
@@ -365,7 +365,7 @@ static const DECLARE_TLV_DB_SCALE(capture_6db_attenuate, -600, 600, 0);
/* tlv for mic gain, 0db 20db 30db 40db */
static
const
unsigned
int
mic_gain_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
4
),
TLV_DB_RANGE_HEAD
(
2
),
0
,
0
,
TLV_DB_SCALE_ITEM
(
0
,
0
,
0
),
1
,
3
,
TLV_DB_SCALE_ITEM
(
2000
,
1000
,
0
),
};
...
...
sound/soc/codecs/sta32x.c
浏览文件 @
9eb6e9b1
...
...
@@ -76,6 +76,8 @@ struct sta32x_priv {
unsigned
int
mclk
;
unsigned
int
format
;
u32
coef_shadow
[
STA32X_COEF_COUNT
];
};
static
const
DECLARE_TLV_DB_SCALE
(
mvol_tlv
,
-
12700
,
50
,
1
);
...
...
@@ -227,6 +229,7 @@ static int sta32x_coefficient_put(struct snd_kcontrol *kcontrol,
struct
snd_ctl_elem_value
*
ucontrol
)
{
struct
snd_soc_codec
*
codec
=
snd_kcontrol_chip
(
kcontrol
);
struct
sta32x_priv
*
sta32x
=
snd_soc_codec_get_drvdata
(
codec
);
int
numcoef
=
kcontrol
->
private_value
>>
16
;
int
index
=
kcontrol
->
private_value
&
0xffff
;
unsigned
int
cfud
;
...
...
@@ -239,6 +242,11 @@ static int sta32x_coefficient_put(struct snd_kcontrol *kcontrol,
snd_soc_write
(
codec
,
STA32X_CFUD
,
cfud
);
snd_soc_write
(
codec
,
STA32X_CFADDR2
,
index
);
for
(
i
=
0
;
i
<
numcoef
&&
(
index
+
i
<
STA32X_COEF_COUNT
);
i
++
)
sta32x
->
coef_shadow
[
index
+
i
]
=
(
ucontrol
->
value
.
bytes
.
data
[
3
*
i
]
<<
16
)
|
(
ucontrol
->
value
.
bytes
.
data
[
3
*
i
+
1
]
<<
8
)
|
(
ucontrol
->
value
.
bytes
.
data
[
3
*
i
+
2
]);
for
(
i
=
0
;
i
<
3
*
numcoef
;
i
++
)
snd_soc_write
(
codec
,
STA32X_B1CF1
+
i
,
ucontrol
->
value
.
bytes
.
data
[
i
]);
...
...
@@ -252,6 +260,48 @@ static int sta32x_coefficient_put(struct snd_kcontrol *kcontrol,
return
0
;
}
int
sta32x_sync_coef_shadow
(
struct
snd_soc_codec
*
codec
)
{
struct
sta32x_priv
*
sta32x
=
snd_soc_codec_get_drvdata
(
codec
);
unsigned
int
cfud
;
int
i
;
/* preserve reserved bits in STA32X_CFUD */
cfud
=
snd_soc_read
(
codec
,
STA32X_CFUD
)
&
0xf0
;
for
(
i
=
0
;
i
<
STA32X_COEF_COUNT
;
i
++
)
{
snd_soc_write
(
codec
,
STA32X_CFADDR2
,
i
);
snd_soc_write
(
codec
,
STA32X_B1CF1
,
(
sta32x
->
coef_shadow
[
i
]
>>
16
)
&
0xff
);
snd_soc_write
(
codec
,
STA32X_B1CF2
,
(
sta32x
->
coef_shadow
[
i
]
>>
8
)
&
0xff
);
snd_soc_write
(
codec
,
STA32X_B1CF3
,
(
sta32x
->
coef_shadow
[
i
])
&
0xff
);
/* chip documentation does not say if the bits are
* self-clearing, so do it explicitly */
snd_soc_write
(
codec
,
STA32X_CFUD
,
cfud
);
snd_soc_write
(
codec
,
STA32X_CFUD
,
cfud
|
0x01
);
}
return
0
;
}
int
sta32x_cache_sync
(
struct
snd_soc_codec
*
codec
)
{
unsigned
int
mute
;
int
rc
;
if
(
!
codec
->
cache_sync
)
return
0
;
/* mute during register sync */
mute
=
snd_soc_read
(
codec
,
STA32X_MMUTE
);
snd_soc_write
(
codec
,
STA32X_MMUTE
,
mute
|
STA32X_MMUTE_MMUTE
);
sta32x_sync_coef_shadow
(
codec
);
rc
=
snd_soc_cache_sync
(
codec
);
snd_soc_write
(
codec
,
STA32X_MMUTE
,
mute
);
return
rc
;
}
#define SINGLE_COEF(xname, index) \
{ .iface = SNDRV_CTL_ELEM_IFACE_MIXER, .name = xname, \
.info = sta32x_coefficient_info, \
...
...
@@ -661,7 +711,7 @@ static int sta32x_set_bias_level(struct snd_soc_codec *codec,
return
ret
;
}
s
nd_soc
_cache_sync
(
codec
);
s
ta32x
_cache_sync
(
codec
);
}
/* Power up to mute */
...
...
@@ -790,6 +840,17 @@ static int sta32x_probe(struct snd_soc_codec *codec)
STA32X_CxCFG_OM_MASK
,
2
<<
STA32X_CxCFG_OM_SHIFT
);
/* initialize coefficient shadow RAM with reset values */
for
(
i
=
4
;
i
<=
49
;
i
+=
5
)
sta32x
->
coef_shadow
[
i
]
=
0x400000
;
for
(
i
=
50
;
i
<=
54
;
i
++
)
sta32x
->
coef_shadow
[
i
]
=
0x7fffff
;
sta32x
->
coef_shadow
[
55
]
=
0x5a9df7
;
sta32x
->
coef_shadow
[
56
]
=
0x7fffff
;
sta32x
->
coef_shadow
[
59
]
=
0x7fffff
;
sta32x
->
coef_shadow
[
60
]
=
0x400000
;
sta32x
->
coef_shadow
[
61
]
=
0x400000
;
sta32x_set_bias_level
(
codec
,
SND_SOC_BIAS_STANDBY
);
/* Bias level configuration will have done an extra enable */
regulator_bulk_disable
(
ARRAY_SIZE
(
sta32x
->
supplies
),
sta32x
->
supplies
);
...
...
sound/soc/codecs/sta32x.h
浏览文件 @
9eb6e9b1
...
...
@@ -19,6 +19,7 @@
/* STA326 register addresses */
#define STA32X_REGISTER_COUNT 0x2d
#define STA32X_COEF_COUNT 62
#define STA32X_CONFA 0x00
#define STA32X_CONFB 0x01
...
...
sound/soc/codecs/wm8731.c
浏览文件 @
9eb6e9b1
...
...
@@ -453,6 +453,7 @@ static int wm8731_set_bias_level(struct snd_soc_codec *codec,
snd_soc_write
(
codec
,
WM8731_PWR
,
0xffff
);
regulator_bulk_disable
(
ARRAY_SIZE
(
wm8731
->
supplies
),
wm8731
->
supplies
);
codec
->
cache_sync
=
1
;
break
;
}
codec
->
dapm
.
bias_level
=
level
;
...
...
sound/soc/codecs/wm8753.c
浏览文件 @
9eb6e9b1
...
...
@@ -190,6 +190,9 @@ static int wm8753_set_dai(struct snd_kcontrol *kcontrol,
struct
wm8753_priv
*
wm8753
=
snd_soc_codec_get_drvdata
(
codec
);
u16
ioctl
;
if
(
wm8753
->
dai_func
==
ucontrol
->
value
.
integer
.
value
[
0
])
return
0
;
if
(
codec
->
active
)
return
-
EBUSY
;
...
...
sound/soc/codecs/wm8962.c
浏览文件 @
9eb6e9b1
...
...
@@ -1973,7 +1973,7 @@ static int wm8962_reset(struct snd_soc_codec *codec)
static
const
DECLARE_TLV_DB_SCALE
(
inpga_tlv
,
-
2325
,
75
,
0
);
static
const
DECLARE_TLV_DB_SCALE
(
mixin_tlv
,
-
1500
,
300
,
0
);
static
const
unsigned
int
mixinpga_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
7
),
TLV_DB_RANGE_HEAD
(
5
),
0
,
1
,
TLV_DB_SCALE_ITEM
(
0
,
600
,
0
),
2
,
2
,
TLV_DB_SCALE_ITEM
(
1300
,
1300
,
0
),
3
,
4
,
TLV_DB_SCALE_ITEM
(
1800
,
200
,
0
),
...
...
@@ -1988,7 +1988,7 @@ static const DECLARE_TLV_DB_SCALE(bypass_tlv, -1500, 300, 0);
static
const
DECLARE_TLV_DB_SCALE
(
out_tlv
,
-
12100
,
100
,
1
);
static
const
DECLARE_TLV_DB_SCALE
(
hp_tlv
,
-
700
,
100
,
0
);
static
const
unsigned
int
classd_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
7
),
TLV_DB_RANGE_HEAD
(
2
),
0
,
6
,
TLV_DB_SCALE_ITEM
(
0
,
150
,
0
),
7
,
7
,
TLV_DB_SCALE_ITEM
(
1200
,
0
,
0
),
};
...
...
sound/soc/codecs/wm8993.c
浏览文件 @
9eb6e9b1
...
...
@@ -512,7 +512,7 @@ static const DECLARE_TLV_DB_SCALE(drc_comp_threash, -4500, 75, 0);
static
const
DECLARE_TLV_DB_SCALE
(
drc_comp_amp
,
-
2250
,
75
,
0
);
static
const
DECLARE_TLV_DB_SCALE
(
drc_min_tlv
,
-
1800
,
600
,
0
);
static
const
unsigned
int
drc_max_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
4
),
TLV_DB_RANGE_HEAD
(
2
),
0
,
2
,
TLV_DB_SCALE_ITEM
(
1200
,
600
,
0
),
3
,
3
,
TLV_DB_SCALE_ITEM
(
3600
,
0
,
0
),
};
...
...
sound/soc/codecs/wm9081.c
浏览文件 @
9eb6e9b1
...
...
@@ -807,7 +807,6 @@ static int wm9081_set_bias_level(struct snd_soc_codec *codec,
mdelay
(
100
);
/* Normal bias enable & soft start off */
reg
|=
WM9081_BIAS_ENA
;
reg
&=
~
WM9081_VMID_RAMP
;
snd_soc_write
(
codec
,
WM9081_VMID_CONTROL
,
reg
);
...
...
@@ -818,7 +817,7 @@ static int wm9081_set_bias_level(struct snd_soc_codec *codec,
}
/* VMID 2*240k */
reg
=
snd_soc_read
(
codec
,
WM9081_
BIAS_CONTROL_1
);
reg
=
snd_soc_read
(
codec
,
WM9081_
VMID_CONTROL
);
reg
&=
~
WM9081_VMID_SEL_MASK
;
reg
|=
0x04
;
snd_soc_write
(
codec
,
WM9081_VMID_CONTROL
,
reg
);
...
...
@@ -830,14 +829,15 @@ static int wm9081_set_bias_level(struct snd_soc_codec *codec,
break
;
case
SND_SOC_BIAS_OFF
:
/* Startup bias source */
/* Startup bias source
and disable bias
*/
reg
=
snd_soc_read
(
codec
,
WM9081_BIAS_CONTROL_1
);
reg
|=
WM9081_BIAS_SRC
;
reg
&=
~
WM9081_BIAS_ENA
;
snd_soc_write
(
codec
,
WM9081_BIAS_CONTROL_1
,
reg
);
/* Disable VMID
and biases
with soft ramping */
/* Disable VMID with soft ramping */
reg
=
snd_soc_read
(
codec
,
WM9081_VMID_CONTROL
);
reg
&=
~
(
WM9081_VMID_SEL_MASK
|
WM9081_BIAS_ENA
)
;
reg
&=
~
WM9081_VMID_SEL_MASK
;
reg
|=
WM9081_VMID_RAMP
;
snd_soc_write
(
codec
,
WM9081_VMID_CONTROL
,
reg
);
...
...
sound/soc/codecs/wm9090.c
浏览文件 @
9eb6e9b1
...
...
@@ -177,19 +177,19 @@ static void wait_for_dc_servo(struct snd_soc_codec *codec)
}
static
const
unsigned
int
in_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
6
),
TLV_DB_RANGE_HEAD
(
3
),
0
,
0
,
TLV_DB_SCALE_ITEM
(
-
600
,
0
,
0
),
1
,
3
,
TLV_DB_SCALE_ITEM
(
-
350
,
350
,
0
),
4
,
6
,
TLV_DB_SCALE_ITEM
(
600
,
600
,
0
),
};
static
const
unsigned
int
mix_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
4
),
TLV_DB_RANGE_HEAD
(
2
),
0
,
2
,
TLV_DB_SCALE_ITEM
(
-
1200
,
300
,
0
),
3
,
3
,
TLV_DB_SCALE_ITEM
(
0
,
0
,
0
),
};
static
const
DECLARE_TLV_DB_SCALE
(
out_tlv
,
-
5700
,
100
,
0
);
static
const
unsigned
int
spkboost_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
7
),
TLV_DB_RANGE_HEAD
(
2
),
0
,
6
,
TLV_DB_SCALE_ITEM
(
0
,
150
,
0
),
7
,
7
,
TLV_DB_SCALE_ITEM
(
1200
,
0
,
0
),
};
...
...
sound/soc/codecs/wm_hubs.c
浏览文件 @
9eb6e9b1
...
...
@@ -40,7 +40,7 @@ static const DECLARE_TLV_DB_SCALE(outmix_tlv, -2100, 300, 0);
static
const
DECLARE_TLV_DB_SCALE
(
spkmixout_tlv
,
-
1800
,
600
,
1
);
static
const
DECLARE_TLV_DB_SCALE
(
outpga_tlv
,
-
5700
,
100
,
0
);
static
const
unsigned
int
spkboost_tlv
[]
=
{
TLV_DB_RANGE_HEAD
(
7
),
TLV_DB_RANGE_HEAD
(
2
),
0
,
6
,
TLV_DB_SCALE_ITEM
(
0
,
150
,
0
),
7
,
7
,
TLV_DB_SCALE_ITEM
(
1200
,
0
,
0
),
};
...
...
sound/soc/fsl/fsl_ssi.c
浏览文件 @
9eb6e9b1
...
...
@@ -694,6 +694,7 @@ static int __devinit fsl_ssi_probe(struct platform_device *pdev)
/* Initialize the the device_attribute structure */
dev_attr
=
&
ssi_private
->
dev_attr
;
sysfs_attr_init
(
&
dev_attr
->
attr
);
dev_attr
->
attr
.
name
=
"statistics"
;
dev_attr
->
attr
.
mode
=
S_IRUGO
;
dev_attr
->
show
=
fsl_sysfs_ssi_show
;
...
...
sound/usb/quirks-table.h
浏览文件 @
9eb6e9b1
...
...
@@ -1632,6 +1632,37 @@ YAMAHA_DEVICE(0x7010, "UB99"),
}
}
},
{
/* Roland GAIA SH-01 */
USB_DEVICE
(
0x0582
,
0x0111
),
.
driver_info
=
(
unsigned
long
)
&
(
const
struct
snd_usb_audio_quirk
)
{
.
vendor_name
=
"Roland"
,
.
product_name
=
"GAIA"
,
.
ifnum
=
QUIRK_ANY_INTERFACE
,
.
type
=
QUIRK_COMPOSITE
,
.
data
=
(
const
struct
snd_usb_audio_quirk
[])
{
{
.
ifnum
=
0
,
.
type
=
QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.
ifnum
=
1
,
.
type
=
QUIRK_AUDIO_STANDARD_INTERFACE
},
{
.
ifnum
=
2
,
.
type
=
QUIRK_MIDI_FIXED_ENDPOINT
,
.
data
=
&
(
const
struct
snd_usb_midi_endpoint_info
)
{
.
out_cables
=
0x0003
,
.
in_cables
=
0x0003
}
},
{
.
ifnum
=
-
1
}
}
}
},
{
USB_DEVICE
(
0x0582
,
0x0113
),
.
driver_info
=
(
unsigned
long
)
&
(
const
struct
snd_usb_audio_quirk
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录