Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
17a4adbe
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看板
提交
17a4adbe
编写于
11月 08, 2012
作者:
T
Takashi Iwai
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-linus' into for-next
上级
c9adeefd
8bb4d9ce
变更
21
隐藏空白更改
内联
并排
Showing
21 changed file
with
98 addition
and
41 deletion
+98
-41
sound/core/oss/mixer_oss.c
sound/core/oss/mixer_oss.c
+1
-0
sound/core/oss/pcm_oss.c
sound/core/oss/pcm_oss.c
+1
-0
sound/core/pcm_native.c
sound/core/pcm_native.c
+4
-2
sound/core/sound.c
sound/core/sound.c
+1
-1
sound/core/sound_oss.c
sound/core/sound_oss.c
+1
-1
sound/i2c/other/ak4113.c
sound/i2c/other/ak4113.c
+1
-1
sound/i2c/other/ak4114.c
sound/i2c/other/ak4114.c
+1
-1
sound/i2c/other/ak4117.c
sound/i2c/other/ak4117.c
+1
-1
sound/pci/es1968.c
sound/pci/es1968.c
+2
-0
sound/pci/hda/hda_intel.c
sound/pci/hda/hda_intel.c
+2
-0
sound/pci/hda/patch_analog.c
sound/pci/hda/patch_analog.c
+1
-0
sound/pci/hda/patch_cirrus.c
sound/pci/hda/patch_cirrus.c
+12
-9
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+13
-13
sound/pci/hda/patch_via.c
sound/pci/hda/patch_via.c
+29
-7
sound/pci/ice1712/ice1724.c
sound/pci/ice1712/ice1724.c
+6
-1
sound/pci/rme9652/hdspm.c
sound/pci/rme9652/hdspm.c
+3
-2
sound/soc/codecs/cs42l52.c
sound/soc/codecs/cs42l52.c
+1
-1
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm8994.c
+1
-1
sound/usb/endpoint.c
sound/usb/endpoint.c
+13
-0
sound/usb/endpoint.h
sound/usb/endpoint.h
+1
-0
sound/usb/pcm.c
sound/usb/pcm.c
+3
-0
未找到文件。
sound/core/oss/mixer_oss.c
浏览文件 @
17a4adbe
...
...
@@ -76,6 +76,7 @@ static int snd_mixer_oss_open(struct inode *inode, struct file *file)
snd_card_unref
(
card
);
return
-
EFAULT
;
}
snd_card_unref
(
card
);
return
0
;
}
...
...
sound/core/oss/pcm_oss.c
浏览文件 @
17a4adbe
...
...
@@ -2454,6 +2454,7 @@ static int snd_pcm_oss_open(struct inode *inode, struct file *file)
mutex_unlock
(
&
pcm
->
open_mutex
);
if
(
err
<
0
)
goto
__error
;
snd_card_unref
(
pcm
->
card
);
return
err
;
__error:
...
...
sound/core/pcm_native.c
浏览文件 @
17a4adbe
...
...
@@ -2124,7 +2124,8 @@ static int snd_pcm_playback_open(struct inode *inode, struct file *file)
pcm
=
snd_lookup_minor_data
(
iminor
(
inode
),
SNDRV_DEVICE_TYPE_PCM_PLAYBACK
);
err
=
snd_pcm_open
(
file
,
pcm
,
SNDRV_PCM_STREAM_PLAYBACK
);
snd_card_unref
(
pcm
->
card
);
if
(
pcm
)
snd_card_unref
(
pcm
->
card
);
return
err
;
}
...
...
@@ -2137,7 +2138,8 @@ static int snd_pcm_capture_open(struct inode *inode, struct file *file)
pcm
=
snd_lookup_minor_data
(
iminor
(
inode
),
SNDRV_DEVICE_TYPE_PCM_CAPTURE
);
err
=
snd_pcm_open
(
file
,
pcm
,
SNDRV_PCM_STREAM_CAPTURE
);
snd_card_unref
(
pcm
->
card
);
if
(
pcm
)
snd_card_unref
(
pcm
->
card
);
return
err
;
}
...
...
sound/core/sound.c
浏览文件 @
17a4adbe
...
...
@@ -114,7 +114,7 @@ void *snd_lookup_minor_data(unsigned int minor, int type)
mreg
=
snd_minors
[
minor
];
if
(
mreg
&&
mreg
->
type
==
type
)
{
private_data
=
mreg
->
private_data
;
if
(
mreg
->
card_ptr
)
if
(
private_data
&&
mreg
->
card_ptr
)
atomic_inc
(
&
mreg
->
card_ptr
->
refcount
);
}
else
private_data
=
NULL
;
...
...
sound/core/sound_oss.c
浏览文件 @
17a4adbe
...
...
@@ -54,7 +54,7 @@ void *snd_lookup_oss_minor_data(unsigned int minor, int type)
mreg
=
snd_oss_minors
[
minor
];
if
(
mreg
&&
mreg
->
type
==
type
)
{
private_data
=
mreg
->
private_data
;
if
(
mreg
->
card_ptr
)
if
(
private_data
&&
mreg
->
card_ptr
)
atomic_inc
(
&
mreg
->
card_ptr
->
refcount
);
}
else
private_data
=
NULL
;
...
...
sound/i2c/other/ak4113.c
浏览文件 @
17a4adbe
...
...
@@ -426,7 +426,7 @@ static struct snd_kcontrol_new snd_ak4113_iec958_controls[] = {
},
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_PCM
,
.
name
=
"IEC958 Pream
p
le Capture Default"
,
.
name
=
"IEC958 Pream
b
le Capture Default"
,
.
access
=
SNDRV_CTL_ELEM_ACCESS_READ
|
SNDRV_CTL_ELEM_ACCESS_VOLATILE
,
.
info
=
snd_ak4113_spdif_pinfo
,
...
...
sound/i2c/other/ak4114.c
浏览文件 @
17a4adbe
...
...
@@ -401,7 +401,7 @@ static struct snd_kcontrol_new snd_ak4114_iec958_controls[] = {
},
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_PCM
,
.
name
=
"IEC958 Pream
p
le Capture Default"
,
.
name
=
"IEC958 Pream
b
le Capture Default"
,
.
access
=
SNDRV_CTL_ELEM_ACCESS_READ
|
SNDRV_CTL_ELEM_ACCESS_VOLATILE
,
.
info
=
snd_ak4114_spdif_pinfo
,
.
get
=
snd_ak4114_spdif_pget
,
...
...
sound/i2c/other/ak4117.c
浏览文件 @
17a4adbe
...
...
@@ -380,7 +380,7 @@ static struct snd_kcontrol_new snd_ak4117_iec958_controls[] = {
},
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_PCM
,
.
name
=
"IEC958 Pream
p
le Capture Default"
,
.
name
=
"IEC958 Pream
b
le Capture Default"
,
.
access
=
SNDRV_CTL_ELEM_ACCESS_READ
|
SNDRV_CTL_ELEM_ACCESS_VOLATILE
,
.
info
=
snd_ak4117_spdif_pinfo
,
.
get
=
snd_ak4117_spdif_pget
,
...
...
sound/pci/es1968.c
浏览文件 @
17a4adbe
...
...
@@ -2655,6 +2655,8 @@ static struct ess_device_list pm_whitelist[] __devinitdata = {
{
TYPE_MAESTRO2E
,
0x1179
},
{
TYPE_MAESTRO2E
,
0x14c0
},
/* HP omnibook 4150 */
{
TYPE_MAESTRO2E
,
0x1558
},
{
TYPE_MAESTRO2E
,
0x125d
},
/* a PCI card, e.g. Terratec DMX */
{
TYPE_MAESTRO2
,
0x125d
},
/* a PCI card, e.g. SF64-PCE2 */
};
static
struct
ess_device_list
mpu_blacklist
[]
__devinitdata
=
{
...
...
sound/pci/hda/hda_intel.c
浏览文件 @
17a4adbe
...
...
@@ -3683,6 +3683,8 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
/* Teradici */
{
PCI_DEVICE
(
0x6549
,
0x1200
),
.
driver_data
=
AZX_DRIVER_TERA
|
AZX_DCAPS_NO_64BIT
},
{
PCI_DEVICE
(
0x6549
,
0x2200
),
.
driver_data
=
AZX_DRIVER_TERA
|
AZX_DCAPS_NO_64BIT
},
/* Creative X-Fi (CA0110-IBG) */
/* CTHDA chips */
{
PCI_DEVICE
(
0x1102
,
0x0010
),
...
...
sound/pci/hda/patch_analog.c
浏览文件 @
17a4adbe
...
...
@@ -545,6 +545,7 @@ static int ad198x_build_pcms(struct hda_codec *codec)
if
(
spec
->
multiout
.
dig_out_nid
)
{
info
++
;
codec
->
num_pcms
++
;
codec
->
spdif_status_reset
=
1
;
info
->
name
=
"AD198x Digital"
;
info
->
pcm_type
=
HDA_PCM_TYPE_SPDIF
;
info
->
stream
[
SNDRV_PCM_STREAM_PLAYBACK
]
=
ad198x_pcm_digital_playback
;
...
...
sound/pci/hda/patch_cirrus.c
浏览文件 @
17a4adbe
...
...
@@ -101,8 +101,8 @@ enum {
#define CS420X_VENDOR_NID 0x11
#define CS_DIG_OUT1_PIN_NID 0x10
#define CS_DIG_OUT2_PIN_NID 0x15
#define CS_DMIC1_PIN_NID 0x
12
#define CS_DMIC2_PIN_NID 0x
0e
#define CS_DMIC1_PIN_NID 0x
0e
#define CS_DMIC2_PIN_NID 0x
12
/* coef indices */
#define IDX_SPDIF_STAT 0x0000
...
...
@@ -1080,14 +1080,18 @@ static void init_input(struct hda_codec *codec)
cs_automic
(
codec
,
NULL
);
coef
=
0x000a
;
/* ADC1/2 - Digital and Analog Soft Ramp */
cs_vendor_coef_set
(
codec
,
IDX_ADC_CFG
,
coef
);
coef
=
cs_vendor_coef_get
(
codec
,
IDX_BEEP_CFG
);
if
(
is_active_pin
(
codec
,
CS_DMIC2_PIN_NID
))
coef
|=
0x0500
;
/* DMIC2 2 chan on, GPIO1 off */
coef
|=
1
<<
4
;
/* DMIC2 2 chan on, GPIO1 off */
if
(
is_active_pin
(
codec
,
CS_DMIC1_PIN_NID
))
coef
|=
0x1800
;
/* DMIC1 2 chan on, GPIO0 off
coef
|=
1
<<
3
;
/* DMIC1 2 chan on, GPIO0 off
* No effect if SPDIF_OUT2 is
* selected in IDX_SPDIF_CTL.
*/
cs_vendor_coef_set
(
codec
,
IDX_ADC_CFG
,
coef
);
cs_vendor_coef_set
(
codec
,
IDX_BEEP_CFG
,
coef
);
}
else
{
if
(
spec
->
mic_detect
)
cs_automic
(
codec
,
NULL
);
...
...
@@ -1108,7 +1112,7 @@ static const struct hda_verb cs_coef_init_verbs[] = {
|
0x0400
/* Disable Coefficient Auto increment */
)},
/* Beep */
{
0x11
,
AC_VERB_SET_COEF_INDEX
,
IDX_
DAC
_CFG
},
{
0x11
,
AC_VERB_SET_COEF_INDEX
,
IDX_
BEEP
_CFG
},
{
0x11
,
AC_VERB_SET_PROC_COEF
,
0x0007
},
/* Enable Beep thru DAC1/2/3 */
{}
/* terminator */
...
...
@@ -1729,8 +1733,7 @@ static int cs421x_mux_enum_put(struct snd_kcontrol *kcontrol,
}
static
struct
snd_kcontrol_new
cs421x_capture_source
=
{
static
const
struct
snd_kcontrol_new
cs421x_capture_source
=
{
.
iface
=
SNDRV_CTL_ELEM_IFACE_MIXER
,
.
name
=
"Capture Source"
,
.
access
=
SNDRV_CTL_ELEM_ACCESS_READWRITE
,
...
...
@@ -1947,7 +1950,7 @@ static int cs421x_suspend(struct hda_codec *codec)
}
#endif
static
struct
hda_codec_ops
cs421x_patch_ops
=
{
static
const
struct
hda_codec_ops
cs421x_patch_ops
=
{
.
build_controls
=
cs421x_build_controls
,
.
build_pcms
=
cs_build_pcms
,
.
init
=
cs421x_init
,
...
...
sound/pci/hda/patch_realtek.c
浏览文件 @
17a4adbe
...
...
@@ -5841,7 +5841,7 @@ static int alc269_parse_auto_config(struct hda_codec *codec)
return
alc_parse_auto_config
(
codec
,
alc269_ignore
,
ssids
);
}
static
void
alc269_toggle_power_output
(
struct
hda_codec
*
codec
,
int
power_up
)
static
void
alc269
vb
_toggle_power_output
(
struct
hda_codec
*
codec
,
int
power_up
)
{
int
val
=
alc_read_coef_idx
(
codec
,
0x04
);
if
(
power_up
)
...
...
@@ -5858,10 +5858,10 @@ static void alc269_shutup(struct hda_codec *codec)
if
(
spec
->
codec_variant
!=
ALC269_TYPE_ALC269VB
)
return
;
if
(
(
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x017
)
alc269_toggle_power_output
(
codec
,
0
);
if
(
(
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x018
)
{
alc269_toggle_power_output
(
codec
,
0
);
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
)
alc269
vb
_toggle_power_output
(
codec
,
0
);
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
&&
(
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x018
)
{
msleep
(
150
);
}
}
...
...
@@ -5871,24 +5871,22 @@ static int alc269_resume(struct hda_codec *codec)
{
struct
alc_spec
*
spec
=
codec
->
spec
;
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
||
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
)
alc269vb_toggle_power_output
(
codec
,
0
);
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
&&
(
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x018
)
{
alc269_toggle_power_output
(
codec
,
0
);
msleep
(
150
);
}
codec
->
patch_ops
.
init
(
codec
);
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
||
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
)
alc269vb_toggle_power_output
(
codec
,
1
);
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
&&
(
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x017
)
{
alc269_toggle_power_output
(
codec
,
1
);
msleep
(
200
);
}
if
(
spec
->
codec_variant
==
ALC269_TYPE_ALC269VB
||
(
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x018
)
alc269_toggle_power_output
(
codec
,
1
);
snd_hda_codec_resume_amp
(
codec
);
snd_hda_codec_resume_cache
(
codec
);
hda_call_check_power_status
(
codec
,
0x01
);
...
...
@@ -7080,6 +7078,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
.
patch
=
patch_alc662
},
{
.
id
=
0x10ec0663
,
.
name
=
"ALC663"
,
.
patch
=
patch_alc662
},
{
.
id
=
0x10ec0665
,
.
name
=
"ALC665"
,
.
patch
=
patch_alc662
},
{
.
id
=
0x10ec0668
,
.
name
=
"ALC668"
,
.
patch
=
patch_alc662
},
{
.
id
=
0x10ec0670
,
.
name
=
"ALC670"
,
.
patch
=
patch_alc662
},
{
.
id
=
0x10ec0680
,
.
name
=
"ALC680"
,
.
patch
=
patch_alc680
},
{
.
id
=
0x10ec0880
,
.
name
=
"ALC880"
,
.
patch
=
patch_alc880
},
...
...
@@ -7097,6 +7096,7 @@ static const struct hda_codec_preset snd_hda_preset_realtek[] = {
{
.
id
=
0x10ec0889
,
.
name
=
"ALC889"
,
.
patch
=
patch_alc882
},
{
.
id
=
0x10ec0892
,
.
name
=
"ALC892"
,
.
patch
=
patch_alc662
},
{
.
id
=
0x10ec0899
,
.
name
=
"ALC898"
,
.
patch
=
patch_alc882
},
{
.
id
=
0x10ec0900
,
.
name
=
"ALC1150"
,
.
patch
=
patch_alc882
},
{}
/* terminator */
};
...
...
sound/pci/hda/patch_via.c
浏览文件 @
17a4adbe
...
...
@@ -1809,11 +1809,11 @@ static int via_auto_fill_dac_nids(struct hda_codec *codec)
{
struct
via_spec
*
spec
=
codec
->
spec
;
const
struct
auto_pin_cfg
*
cfg
=
&
spec
->
autocfg
;
int
i
,
dac_num
;
int
i
;
hda_nid_t
nid
;
spec
->
multiout
.
num_dacs
=
0
;
spec
->
multiout
.
dac_nids
=
spec
->
private_dac_nids
;
dac_num
=
0
;
for
(
i
=
0
;
i
<
cfg
->
line_outs
;
i
++
)
{
hda_nid_t
dac
=
0
;
nid
=
cfg
->
line_out_pins
[
i
];
...
...
@@ -1824,16 +1824,13 @@ static int via_auto_fill_dac_nids(struct hda_codec *codec)
if
(
!
i
&&
parse_output_path
(
codec
,
nid
,
dac
,
1
,
&
spec
->
out_mix_path
))
dac
=
spec
->
out_mix_path
.
path
[
0
];
if
(
dac
)
{
spec
->
private_dac_nids
[
i
]
=
dac
;
dac_num
++
;
}
if
(
dac
)
spec
->
private_dac_nids
[
spec
->
multiout
.
num_dacs
++
]
=
dac
;
}
if
(
!
spec
->
out_path
[
0
].
depth
&&
spec
->
out_mix_path
.
depth
)
{
spec
->
out_path
[
0
]
=
spec
->
out_mix_path
;
spec
->
out_mix_path
.
depth
=
0
;
}
spec
->
multiout
.
num_dacs
=
dac_num
;
return
0
;
}
...
...
@@ -3628,6 +3625,7 @@ static void set_widgets_power_state_vt2002P(struct hda_codec *codec)
*/
enum
{
VIA_FIXUP_INTMIC_BOOST
,
VIA_FIXUP_ASUS_G75
,
};
static
void
via_fixup_intmic_boost
(
struct
hda_codec
*
codec
,
...
...
@@ -3642,13 +3640,35 @@ static const struct hda_fixup via_fixups[] = {
.
type
=
HDA_FIXUP_FUNC
,
.
v
.
func
=
via_fixup_intmic_boost
,
},
[
VIA_FIXUP_ASUS_G75
]
=
{
.
type
=
HDA_FIXUP_PINS
,
.
v
.
pins
=
(
const
struct
hda_pintbl
[])
{
/* set 0x24 and 0x33 as speakers */
{
0x24
,
0x991301f0
},
{
0x33
,
0x991301f1
},
/* subwoofer */
{
}
}
},
};
static
const
struct
snd_pci_quirk
vt2002p_fixups
[]
=
{
SND_PCI_QUIRK
(
0x1043
,
0x1487
,
"Asus G75"
,
VIA_FIXUP_ASUS_G75
),
SND_PCI_QUIRK
(
0x1043
,
0x8532
,
"Asus X202E"
,
VIA_FIXUP_INTMIC_BOOST
),
{}
};
/* NIDs 0x24 and 0x33 on VT1802 have connections to non-existing NID 0x3e
* Replace this with mixer NID 0x1c
*/
static
void
fix_vt1802_connections
(
struct
hda_codec
*
codec
)
{
static
hda_nid_t
conn_24
[]
=
{
0x14
,
0x1c
};
static
hda_nid_t
conn_33
[]
=
{
0x1c
};
snd_hda_override_conn_list
(
codec
,
0x24
,
ARRAY_SIZE
(
conn_24
),
conn_24
);
snd_hda_override_conn_list
(
codec
,
0x33
,
ARRAY_SIZE
(
conn_33
),
conn_33
);
}
/* patch for vt2002P */
static
int
patch_vt2002P
(
struct
hda_codec
*
codec
)
{
...
...
@@ -3663,6 +3683,8 @@ static int patch_vt2002P(struct hda_codec *codec)
spec
->
aa_mix_nid
=
0x21
;
override_mic_boost
(
codec
,
0x2b
,
0
,
3
,
40
);
override_mic_boost
(
codec
,
0x29
,
0
,
3
,
40
);
if
(
spec
->
codec_type
==
VT1802
)
fix_vt1802_connections
(
codec
);
add_secret_dac_path
(
codec
);
snd_hda_pick_fixup
(
codec
,
NULL
,
vt2002p_fixups
,
via_fixups
);
...
...
sound/pci/ice1712/ice1724.c
浏览文件 @
17a4adbe
...
...
@@ -2866,7 +2866,12 @@ static int snd_vt1724_resume(struct device *dev)
ice
->
set_spdif_clock
(
ice
,
0
);
}
else
{
/* internal on-card clock */
snd_vt1724_set_pro_rate
(
ice
,
ice
->
pro_rate_default
,
1
);
int
rate
;
if
(
ice
->
cur_rate
)
rate
=
ice
->
cur_rate
;
else
rate
=
ice
->
pro_rate_default
;
snd_vt1724_set_pro_rate
(
ice
,
rate
,
1
);
}
update_spdif_bits
(
ice
,
ice
->
pm_saved_spdif_ctrl
);
...
...
sound/pci/rme9652/hdspm.c
浏览文件 @
17a4adbe
...
...
@@ -3979,7 +3979,8 @@ static int snd_hdspm_get_sync_check(struct snd_kcontrol *kcontrol,
case
8
:
/* SYNC IN */
val
=
hdspm_sync_in_sync_check
(
hdspm
);
break
;
default:
val
=
hdspm_s1_sync_check
(
hdspm
,
ucontrol
->
id
.
index
-
1
);
val
=
hdspm_s1_sync_check
(
hdspm
,
kcontrol
->
private_value
-
1
);
}
break
;
...
...
@@ -4899,7 +4900,7 @@ snd_hdspm_proc_read_madi(struct snd_info_entry * entry,
insel
=
"Coaxial"
;
break
;
default:
insel
=
"Unkown"
;
insel
=
"Unk
n
own"
;
}
snd_iprintf
(
buffer
,
...
...
sound/soc/codecs/cs42l52.c
浏览文件 @
17a4adbe
...
...
@@ -763,7 +763,7 @@ static int cs42l52_set_sysclk(struct snd_soc_dai *codec_dai,
if
((
freq
>=
CS42L52_MIN_CLK
)
&&
(
freq
<=
CS42L52_MAX_CLK
))
{
cs42l52
->
sysclk
=
freq
;
}
else
{
dev_err
(
codec
->
dev
,
"Invalid freq paramter
\n
"
);
dev_err
(
codec
->
dev
,
"Invalid freq param
e
ter
\n
"
);
return
-
EINVAL
;
}
return
0
;
...
...
sound/soc/codecs/wm8994.c
浏览文件 @
17a4adbe
...
...
@@ -3722,7 +3722,7 @@ static irqreturn_t wm8958_mic_irq(int irq, void *data)
}
while
(
count
--
);
if
(
count
==
0
)
dev_warn
(
codec
->
dev
,
"No imped
e
nce range reported for jack
\n
"
);
dev_warn
(
codec
->
dev
,
"No imped
a
nce range reported for jack
\n
"
);
#ifndef CONFIG_SND_SOC_WM8994_MODULE
trace_snd_soc_jack_irq
(
dev_name
(
codec
->
dev
));
...
...
sound/usb/endpoint.c
浏览文件 @
17a4adbe
...
...
@@ -35,6 +35,7 @@
#define EP_FLAG_ACTIVATED 0
#define EP_FLAG_RUNNING 1
#define EP_FLAG_STOPPING 2
/*
* snd_usb_endpoint is a model that abstracts everything related to an
...
...
@@ -502,10 +503,20 @@ static int wait_clear_urbs(struct snd_usb_endpoint *ep)
if
(
alive
)
snd_printk
(
KERN_ERR
"timeout: still %d active urbs on EP #%x
\n
"
,
alive
,
ep
->
ep_num
);
clear_bit
(
EP_FLAG_STOPPING
,
&
ep
->
flags
);
return
0
;
}
/* sync the pending stop operation;
* this function itself doesn't trigger the stop operation
*/
void
snd_usb_endpoint_sync_pending_stop
(
struct
snd_usb_endpoint
*
ep
)
{
if
(
ep
&&
test_bit
(
EP_FLAG_STOPPING
,
&
ep
->
flags
))
wait_clear_urbs
(
ep
);
}
/*
* unlink active urbs.
*/
...
...
@@ -918,6 +929,8 @@ void snd_usb_endpoint_stop(struct snd_usb_endpoint *ep,
if
(
wait
)
wait_clear_urbs
(
ep
);
else
set_bit
(
EP_FLAG_STOPPING
,
&
ep
->
flags
);
}
}
...
...
sound/usb/endpoint.h
浏览文件 @
17a4adbe
...
...
@@ -19,6 +19,7 @@ int snd_usb_endpoint_set_params(struct snd_usb_endpoint *ep,
int
snd_usb_endpoint_start
(
struct
snd_usb_endpoint
*
ep
,
int
can_sleep
);
void
snd_usb_endpoint_stop
(
struct
snd_usb_endpoint
*
ep
,
int
force
,
int
can_sleep
,
int
wait
);
void
snd_usb_endpoint_sync_pending_stop
(
struct
snd_usb_endpoint
*
ep
);
int
snd_usb_endpoint_activate
(
struct
snd_usb_endpoint
*
ep
);
int
snd_usb_endpoint_deactivate
(
struct
snd_usb_endpoint
*
ep
);
void
snd_usb_endpoint_free
(
struct
list_head
*
head
);
...
...
sound/usb/pcm.c
浏览文件 @
17a4adbe
...
...
@@ -565,6 +565,9 @@ static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream)
goto
unlock
;
}
snd_usb_endpoint_sync_pending_stop
(
subs
->
sync_endpoint
);
snd_usb_endpoint_sync_pending_stop
(
subs
->
data_endpoint
);
ret
=
set_format
(
subs
,
subs
->
cur_audiofmt
);
if
(
ret
<
0
)
goto
unlock
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录