Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
d2b88e4c
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
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看板
提交
d2b88e4c
编写于
11月 22, 2010
作者:
T
Takashi Iwai
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'fix/misc' into topic/misc
上级
2146dcfd
a1d71a2c
变更
23
隐藏空白更改
内联
并排
Showing
23 changed file
with
120 addition
and
64 deletion
+120
-64
sound/atmel/abdac.c
sound/atmel/abdac.c
+1
-1
sound/core/pcm_lib.c
sound/core/pcm_lib.c
+1
-1
sound/oss/dev_table.c
sound/oss/dev_table.c
+2
-4
sound/oss/midibuf.c
sound/oss/midibuf.c
+2
-2
sound/oss/pss.c
sound/oss/pss.c
+3
-3
sound/oss/sequencer.c
sound/oss/sequencer.c
+2
-2
sound/pci/asihpi/hpioctl.c
sound/pci/asihpi/hpioctl.c
+1
-1
sound/pci/azt3328.c
sound/pci/azt3328.c
+18
-8
sound/pci/ctxfi/ctpcm.c
sound/pci/ctxfi/ctpcm.c
+10
-6
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_conexant.c
+1
-0
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+9
-2
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_sigmatel.c
+12
-2
sound/pci/intel8x0.c
sound/pci/intel8x0.c
+6
-0
sound/pci/mixart/mixart_hwdep.h
sound/pci/mixart/mixart_hwdep.h
+10
-0
sound/ppc/pmac.c
sound/ppc/pmac.c
+4
-8
sound/soc/codecs/Kconfig
sound/soc/codecs/Kconfig
+2
-1
sound/soc/codecs/tlv320dac33.c
sound/soc/codecs/tlv320dac33.c
+26
-10
sound/soc/codecs/tpa6130a2.c
sound/soc/codecs/tpa6130a2.c
+3
-3
sound/soc/codecs/wm8900.c
sound/soc/codecs/wm8900.c
+0
-6
sound/soc/codecs/wm_hubs.c
sound/soc/codecs/wm_hubs.c
+1
-1
sound/soc/pxa/tosa.c
sound/soc/pxa/tosa.c
+1
-1
sound/soc/soc-core.c
sound/soc/soc-core.c
+4
-1
sound/spi/at73c213.c
sound/spi/at73c213.c
+1
-1
未找到文件。
sound/atmel/abdac.c
浏览文件 @
d2b88e4c
...
...
@@ -420,7 +420,7 @@ static int __devinit atmel_abdac_probe(struct platform_device *pdev)
return
PTR_ERR
(
pclk
);
}
sample_clk
=
clk_get
(
&
pdev
->
dev
,
"sample_clk"
);
if
(
IS_ERR
(
p
clk
))
{
if
(
IS_ERR
(
sample_
clk
))
{
dev_dbg
(
&
pdev
->
dev
,
"no sample clock
\n
"
);
retval
=
PTR_ERR
(
pclk
);
goto
out_put_pclk
;
...
...
sound/core/pcm_lib.c
浏览文件 @
d2b88e4c
...
...
@@ -223,7 +223,7 @@ static void xrun_log(struct snd_pcm_substream *substream,
entry
->
jiffies
=
jiffies
;
entry
->
pos
=
pos
;
entry
->
period_size
=
runtime
->
period_size
;
entry
->
buffer_size
=
runtime
->
buffer_size
;
;
entry
->
buffer_size
=
runtime
->
buffer_size
;
entry
->
old_hw_ptr
=
runtime
->
status
->
hw_ptr
;
entry
->
hw_ptr_base
=
runtime
->
hw_ptr_base
;
log
->
idx
=
(
log
->
idx
+
1
)
%
XRUN_LOG_CNT
;
...
...
sound/oss/dev_table.c
浏览文件 @
d2b88e4c
...
...
@@ -71,7 +71,7 @@ int sound_install_audiodrv(int vers, char *name, struct audio_driver *driver,
if
(
sound_nblocks
>=
MAX_MEM_BLOCKS
)
sound_nblocks
=
MAX_MEM_BLOCKS
-
1
;
op
=
(
struct
audio_operations
*
)
(
sound_mem_blocks
[
sound_nblocks
]
=
v
m
alloc
(
sizeof
(
struct
audio_operations
)));
op
=
(
struct
audio_operations
*
)
(
sound_mem_blocks
[
sound_nblocks
]
=
v
z
alloc
(
sizeof
(
struct
audio_operations
)));
sound_nblocks
++
;
if
(
sound_nblocks
>=
MAX_MEM_BLOCKS
)
sound_nblocks
=
MAX_MEM_BLOCKS
-
1
;
...
...
@@ -81,7 +81,6 @@ int sound_install_audiodrv(int vers, char *name, struct audio_driver *driver,
sound_unload_audiodev
(
num
);
return
-
(
ENOMEM
);
}
memset
((
char
*
)
op
,
0
,
sizeof
(
struct
audio_operations
));
init_waitqueue_head
(
&
op
->
in_sleeper
);
init_waitqueue_head
(
&
op
->
out_sleeper
);
init_waitqueue_head
(
&
op
->
poll_sleeper
);
...
...
@@ -128,7 +127,7 @@ int sound_install_mixer(int vers, char *name, struct mixer_operations *driver,
/* FIXME: This leaks a mixer_operations struct every time its called
until you unload sound! */
op
=
(
struct
mixer_operations
*
)
(
sound_mem_blocks
[
sound_nblocks
]
=
v
m
alloc
(
sizeof
(
struct
mixer_operations
)));
op
=
(
struct
mixer_operations
*
)
(
sound_mem_blocks
[
sound_nblocks
]
=
v
z
alloc
(
sizeof
(
struct
mixer_operations
)));
sound_nblocks
++
;
if
(
sound_nblocks
>=
MAX_MEM_BLOCKS
)
sound_nblocks
=
MAX_MEM_BLOCKS
-
1
;
...
...
@@ -137,7 +136,6 @@ int sound_install_mixer(int vers, char *name, struct mixer_operations *driver,
printk
(
KERN_ERR
"Sound: Can't allocate mixer driver for (%s)
\n
"
,
name
);
return
-
ENOMEM
;
}
memset
((
char
*
)
op
,
0
,
sizeof
(
struct
mixer_operations
));
memcpy
((
char
*
)
op
,
(
char
*
)
driver
,
driver_size
);
strlcpy
(
op
->
name
,
name
,
sizeof
(
op
->
name
));
...
...
sound/oss/midibuf.c
浏览文件 @
d2b88e4c
...
...
@@ -178,7 +178,7 @@ int MIDIbuf_open(int dev, struct file *file)
return
err
;
parms
[
dev
].
prech_timeout
=
MAX_SCHEDULE_TIMEOUT
;
midi_in_buf
[
dev
]
=
(
struct
midi_buf
*
)
vmalloc
(
sizeof
(
struct
midi_buf
));
midi_in_buf
[
dev
]
=
vmalloc
(
sizeof
(
struct
midi_buf
));
if
(
midi_in_buf
[
dev
]
==
NULL
)
{
...
...
@@ -188,7 +188,7 @@ int MIDIbuf_open(int dev, struct file *file)
}
midi_in_buf
[
dev
]
->
len
=
midi_in_buf
[
dev
]
->
head
=
midi_in_buf
[
dev
]
->
tail
=
0
;
midi_out_buf
[
dev
]
=
(
struct
midi_buf
*
)
vmalloc
(
sizeof
(
struct
midi_buf
));
midi_out_buf
[
dev
]
=
vmalloc
(
sizeof
(
struct
midi_buf
));
if
(
midi_out_buf
[
dev
]
==
NULL
)
{
...
...
sound/oss/pss.c
浏览文件 @
d2b88e4c
...
...
@@ -859,7 +859,7 @@ static int pss_coproc_ioctl(void *dev_info, unsigned int cmd, void __user *arg,
return
0
;
case
SNDCTL_COPR_LOAD
:
buf
=
(
copr_buffer
*
)
vmalloc
(
sizeof
(
copr_buffer
));
buf
=
vmalloc
(
sizeof
(
copr_buffer
));
if
(
buf
==
NULL
)
return
-
ENOSPC
;
if
(
copy_from_user
(
buf
,
arg
,
sizeof
(
copr_buffer
)))
{
...
...
@@ -871,7 +871,7 @@ static int pss_coproc_ioctl(void *dev_info, unsigned int cmd, void __user *arg,
return
err
;
case
SNDCTL_COPR_SENDMSG
:
mbuf
=
(
copr_msg
*
)
vmalloc
(
sizeof
(
copr_msg
));
mbuf
=
vmalloc
(
sizeof
(
copr_msg
));
if
(
mbuf
==
NULL
)
return
-
ENOSPC
;
if
(
copy_from_user
(
mbuf
,
arg
,
sizeof
(
copr_msg
)))
{
...
...
@@ -895,7 +895,7 @@ static int pss_coproc_ioctl(void *dev_info, unsigned int cmd, void __user *arg,
case
SNDCTL_COPR_RCVMSG
:
err
=
0
;
mbuf
=
(
copr_msg
*
)
vmalloc
(
sizeof
(
copr_msg
));
mbuf
=
vmalloc
(
sizeof
(
copr_msg
));
if
(
mbuf
==
NULL
)
return
-
ENOSPC
;
data
=
(
unsigned
short
*
)
mbuf
->
data
;
...
...
sound/oss/sequencer.c
浏览文件 @
d2b88e4c
...
...
@@ -1646,13 +1646,13 @@ void sequencer_init(void)
{
if
(
sequencer_ok
)
return
;
queue
=
(
unsigned
char
*
)
vmalloc
(
SEQ_MAX_QUEUE
*
EV_SZ
);
queue
=
vmalloc
(
SEQ_MAX_QUEUE
*
EV_SZ
);
if
(
queue
==
NULL
)
{
printk
(
KERN_ERR
"sequencer: Can't allocate memory for sequencer output queue
\n
"
);
return
;
}
iqueue
=
(
unsigned
char
*
)
vmalloc
(
SEQ_MAX_QUEUE
*
IEV_SZ
);
iqueue
=
vmalloc
(
SEQ_MAX_QUEUE
*
IEV_SZ
);
if
(
iqueue
==
NULL
)
{
printk
(
KERN_ERR
"sequencer: Can't allocate memory for sequencer input queue
\n
"
);
...
...
sound/pci/asihpi/hpioctl.c
浏览文件 @
d2b88e4c
...
...
@@ -435,7 +435,7 @@ void __devexit asihpi_adapter_remove(struct pci_dev *pci_dev)
struct
hpi_message
hm
;
struct
hpi_response
hr
;
struct
hpi_adapter
*
pa
;
pa
=
(
struct
hpi_adapter
*
)
pci_get_drvdata
(
pci_dev
);
pa
=
pci_get_drvdata
(
pci_dev
);
hpi_init_message_response
(
&
hm
,
&
hr
,
HPI_OBJ_SUBSYSTEM
,
HPI_SUBSYS_DELETE_ADAPTER
);
...
...
sound/pci/azt3328.c
浏览文件 @
d2b88e4c
...
...
@@ -1129,10 +1129,11 @@ snd_azf3328_codec_setdmaa(struct snd_azf3328 *chip,
count_areas
=
size
/
2
;
addr_area2
=
addr
+
count_areas
;
count_areas
--
;
/* max. index */
snd_azf3328_dbgcodec
(
"setdma: buffers %08lx[%u] / %08lx[%u]
\n
"
,
addr
,
count_areas
,
addr_area2
,
count_areas
);
count_areas
--
;
/* max. index */
/* build combined I/O buffer length word */
lengths
=
(
count_areas
<<
16
)
|
(
count_areas
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
...
...
@@ -1740,11 +1741,15 @@ static const struct snd_pcm_hardware snd_azf3328_hardware =
.
rate_max
=
AZF_FREQ_66200
,
.
channels_min
=
1
,
.
channels_max
=
2
,
.
buffer_bytes_max
=
65536
,
.
period_bytes_min
=
64
,
.
period_bytes_max
=
65536
,
.
periods_min
=
1
,
.
periods_max
=
1024
,
.
buffer_bytes_max
=
(
64
*
1024
),
.
period_bytes_min
=
1024
,
.
period_bytes_max
=
(
32
*
1024
),
/* We simply have two DMA areas (instead of a list of descriptors
such as other cards); I believe that this is a fixed hardware
attribute and there isn't much driver magic to be done to expand it.
Thus indicate that we have at least and at most 2 periods. */
.
periods_min
=
2
,
.
periods_max
=
2
,
/* FIXME: maybe that card actually has a FIFO?
* Hmm, it seems newer revisions do have one, but we still don't know
* its size... */
...
...
@@ -1980,8 +1985,13 @@ snd_azf3328_timer_stop(struct snd_timer *timer)
chip
=
snd_timer_chip
(
timer
);
spin_lock_irqsave
(
&
chip
->
reg_lock
,
flags
);
/* disable timer countdown and interrupt */
/* FIXME: should we write TIMER_IRQ_ACK here? */
snd_azf3328_ctrl_outb
(
chip
,
IDX_IO_TIMER_VALUE
+
3
,
0
);
/* Hmm, should we write TIMER_IRQ_ACK here?
YES indeed, otherwise a rogue timer operation - which prompts
ALSA(?) to call repeated stop() in vain, but NOT start() -
will never end (value 0x03 is kept shown in control byte).
Simply manually poking 0x04 _once_ immediately successfully stops
the hardware/ALSA interrupt activity. */
snd_azf3328_ctrl_outb
(
chip
,
IDX_IO_TIMER_VALUE
+
3
,
0x04
);
spin_unlock_irqrestore
(
&
chip
->
reg_lock
,
flags
);
snd_azf3328_dbgcallleave
();
return
0
;
...
...
sound/pci/ctxfi/ctpcm.c
浏览文件 @
d2b88e4c
...
...
@@ -129,8 +129,6 @@ static int ct_pcm_playback_open(struct snd_pcm_substream *substream)
apcm
->
substream
=
substream
;
apcm
->
interrupt
=
ct_atc_pcm_interrupt
;
runtime
->
private_data
=
apcm
;
runtime
->
private_free
=
ct_atc_pcm_free_substream
;
if
(
IEC958
==
substream
->
pcm
->
device
)
{
runtime
->
hw
=
ct_spdif_passthru_playback_hw
;
atc
->
spdif_out_passthru
(
atc
,
1
);
...
...
@@ -155,8 +153,12 @@ static int ct_pcm_playback_open(struct snd_pcm_substream *substream)
}
apcm
->
timer
=
ct_timer_instance_new
(
atc
->
timer
,
apcm
);
if
(
!
apcm
->
timer
)
if
(
!
apcm
->
timer
)
{
kfree
(
apcm
);
return
-
ENOMEM
;
}
runtime
->
private_data
=
apcm
;
runtime
->
private_free
=
ct_atc_pcm_free_substream
;
return
0
;
}
...
...
@@ -278,8 +280,6 @@ static int ct_pcm_capture_open(struct snd_pcm_substream *substream)
apcm
->
started
=
0
;
apcm
->
substream
=
substream
;
apcm
->
interrupt
=
ct_atc_pcm_interrupt
;
runtime
->
private_data
=
apcm
;
runtime
->
private_free
=
ct_atc_pcm_free_substream
;
runtime
->
hw
=
ct_pcm_capture_hw
;
runtime
->
hw
.
rate_max
=
atc
->
rsr
*
atc
->
msr
;
...
...
@@ -298,8 +298,12 @@ static int ct_pcm_capture_open(struct snd_pcm_substream *substream)
}
apcm
->
timer
=
ct_timer_instance_new
(
atc
->
timer
,
apcm
);
if
(
!
apcm
->
timer
)
if
(
!
apcm
->
timer
)
{
kfree
(
apcm
);
return
-
ENOMEM
;
}
runtime
->
private_data
=
apcm
;
runtime
->
private_free
=
ct_atc_pcm_free_substream
;
return
0
;
}
...
...
sound/pci/hda/patch_conexant.c
浏览文件 @
d2b88e4c
...
...
@@ -3100,6 +3100,7 @@ static struct snd_pci_quirk cxt5066_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x1028
,
0x0402
,
"Dell Vostro"
,
CXT5066_DELL_VOSTRO
),
SND_PCI_QUIRK
(
0x1028
,
0x0408
,
"Dell Inspiron One 19T"
,
CXT5066_IDEAPAD
),
SND_PCI_QUIRK
(
0x103c
,
0x360b
,
"HP G60"
,
CXT5066_HP_LAPTOP
),
SND_PCI_QUIRK
(
0x1043
,
0x13f3
,
"Asus A52J"
,
CXT5066_HP_LAPTOP
),
SND_PCI_QUIRK
(
0x1179
,
0xff1e
,
"Toshiba Satellite C650D"
,
CXT5066_IDEAPAD
),
SND_PCI_QUIRK
(
0x1179
,
0xff50
,
"Toshiba Satellite P500-PSPGSC-01800T"
,
CXT5066_OLPC_XO_1_5
),
SND_PCI_QUIRK
(
0x1179
,
0xffe0
,
"Toshiba Satellite Pro T130-15F"
,
CXT5066_OLPC_XO_1_5
),
...
...
sound/pci/hda/patch_realtek.c
浏览文件 @
d2b88e4c
...
...
@@ -10816,6 +10816,9 @@ static int alc_auto_add_mic_boost(struct hda_codec *codec)
return 0;
}
static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec,
const struct auto_pin_cfg *cfg);
/* almost identical with ALC880 parser... */
static int alc882_parse_auto_config(struct hda_codec *codec)
{
...
...
@@ -10833,7 +10836,10 @@ static int alc882_parse_auto_config(struct hda_codec *codec)
err = alc880_auto_fill_dac_nids(spec, &spec->autocfg);
if (err < 0)
return err;
err = alc880_auto_create_multi_out_ctls(spec, &spec->autocfg);
if (codec->vendor_id == 0x10ec0887)
err = alc861vd_auto_create_multi_out_ctls(spec, &spec->autocfg);
else
err = alc880_auto_create_multi_out_ctls(spec, &spec->autocfg);
if (err < 0)
return err;
err = alc880_auto_create_extra_out(spec, spec->autocfg.hp_pins[0],
...
...
@@ -16963,7 +16969,7 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
/* add playback controls from the parsed DAC table */
/* Based on ALC880 version. But ALC861VD
has
separate,
/* Based on ALC880 version. But ALC861VD
and ALC887 have
separate,
* different NIDs for mute/unmute switch and volume control */
static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec,
const struct auto_pin_cfg *cfg)
...
...
@@ -19298,6 +19304,7 @@ static const struct alc_fixup alc662_fixups[] = {
static struct snd_pci_quirk alc662_fixup_tbl[] = {
SND_PCI_QUIRK(0x1025, 0x038b, "Acer Aspire 8943G", ALC662_FIXUP_ASPIRE),
SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
SND_PCI_QUIRK(0x17aa, 0x38af, "Lenovo Ideapad Y550P", ALC662_FIXUP_IDEAPAD),
SND_PCI_QUIRK(0x17aa, 0x3a0d, "Lenovo Ideapad Y550", ALC662_FIXUP_IDEAPAD),
{}
...
...
sound/pci/hda/patch_sigmatel.c
浏览文件 @
d2b88e4c
...
...
@@ -389,6 +389,11 @@ static hda_nid_t stac92hd83xxx_dmic_nids[STAC92HD83XXX_NUM_DMICS + 1] = {
0x11
,
0x20
,
0
};
#define STAC92HD87B_NUM_DMICS 1
static
hda_nid_t
stac92hd87b_dmic_nids
[
STAC92HD87B_NUM_DMICS
+
1
]
=
{
0x11
,
0
};
#define STAC92HD83XXX_NUM_CAPS 2
static
unsigned
long
stac92hd83xxx_capvols
[]
=
{
HDA_COMPOSE_AMP_VAL
(
0x17
,
3
,
0
,
HDA_OUTPUT
),
...
...
@@ -5452,12 +5457,17 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
stac92hd83xxx_brd_tbl
[
spec
->
board_config
]);
switch
(
codec
->
vendor_id
)
{
case
0x111d76d1
:
case
0x111d76d9
:
spec
->
dmic_nids
=
stac92hd87b_dmic_nids
;
spec
->
num_dmics
=
stac92xx_connected_ports
(
codec
,
stac92hd87b_dmic_nids
,
STAC92HD87B_NUM_DMICS
);
/* Fall through */
case
0x111d7666
:
case
0x111d7667
:
case
0x111d7668
:
case
0x111d7669
:
case
0x111d76d1
:
case
0x111d76d9
:
spec
->
num_pins
=
ARRAY_SIZE
(
stac92hd88xxx_pin_nids
);
spec
->
pin_nids
=
stac92hd88xxx_pin_nids
;
spec
->
mono_nid
=
0
;
...
...
sound/pci/intel8x0.c
浏览文件 @
d2b88e4c
...
...
@@ -1864,6 +1864,12 @@ static struct ac97_quirk ac97_quirks[] __devinitdata = {
.
name
=
"Dell Inspiron 8600"
,
/* STAC9750/51 */
.
type
=
AC97_TUNE_HP_ONLY
},
{
.
subvendor
=
0x1028
,
.
subdevice
=
0x0182
,
.
name
=
"Dell Latitude D610"
,
/* STAC9750/51 */
.
type
=
AC97_TUNE_HP_ONLY
},
{
.
subvendor
=
0x1028
,
.
subdevice
=
0x0186
,
...
...
sound/pci/mixart/mixart_hwdep.h
浏览文件 @
d2b88e4c
...
...
@@ -25,11 +25,21 @@
#include <sound/hwdep.h>
#ifndef readl_be
#define readl_be(x) be32_to_cpu(__raw_readl(x))
#endif
#ifndef writel_be
#define writel_be(data,addr) __raw_writel(cpu_to_be32(data),addr)
#endif
#ifndef readl_le
#define readl_le(x) le32_to_cpu(__raw_readl(x))
#endif
#ifndef writel_le
#define writel_le(data,addr) __raw_writel(cpu_to_le32(data),addr)
#endif
#define MIXART_MEM(mgr,x) ((mgr)->mem[0].virt + (x))
#define MIXART_REG(mgr,x) ((mgr)->mem[1].virt + (x))
...
...
sound/ppc/pmac.c
浏览文件 @
d2b88e4c
...
...
@@ -1228,10 +1228,8 @@ int __devinit snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
chip
->
rsrc
[
i
].
start
+
1
,
rnames
[
i
])
==
NULL
)
{
printk
(
KERN_ERR
"snd: can't request rsrc "
" %d (%s: 0x%016llx:%016llx)
\n
"
,
i
,
rnames
[
i
],
(
unsigned
long
long
)
chip
->
rsrc
[
i
].
start
,
(
unsigned
long
long
)
chip
->
rsrc
[
i
].
end
);
" %d (%s: %pR)
\n
"
,
i
,
rnames
[
i
],
&
chip
->
rsrc
[
i
]);
err
=
-
ENODEV
;
goto
__error
;
}
...
...
@@ -1256,10 +1254,8 @@ int __devinit snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
chip
->
rsrc
[
i
].
start
+
1
,
rnames
[
i
])
==
NULL
)
{
printk
(
KERN_ERR
"snd: can't request rsrc "
" %d (%s: 0x%016llx:%016llx)
\n
"
,
i
,
rnames
[
i
],
(
unsigned
long
long
)
chip
->
rsrc
[
i
].
start
,
(
unsigned
long
long
)
chip
->
rsrc
[
i
].
end
);
" %d (%s: %pR)
\n
"
,
i
,
rnames
[
i
],
&
chip
->
rsrc
[
i
]);
err
=
-
ENODEV
;
goto
__error
;
}
...
...
sound/soc/codecs/Kconfig
浏览文件 @
d2b88e4c
...
...
@@ -25,8 +25,9 @@ config SND_SOC_ALL_CODECS
select SND_SOC_CQ0093VC if MFD_DAVINCI_VOICECODEC
select SND_SOC_CS42L51 if I2C
select SND_SOC_CS4270 if I2C
select SND_SOC_CX20442
select SND_SOC_DA7210 if I2C
select SND_SOC_JZ4740 if SOC_JZ4740
select SND_SOC_JZ4740
_CODEC
if SOC_JZ4740
select SND_SOC_MAX98088 if I2C
select SND_SOC_MAX9877 if I2C
select SND_SOC_PCM3008
...
...
sound/soc/codecs/tlv320dac33.c
浏览文件 @
d2b88e4c
...
...
@@ -58,7 +58,7 @@
(1000000000 / ((rate * 1000) / samples))
#define US_TO_SAMPLES(rate, us) \
(rate / (1000000 /
us
))
(rate / (1000000 /
(us < 1000000 ? us : 1000000)
))
#define UTHR_FROM_PERIOD_SIZE(samples, playrate, burstrate) \
((samples * 5000) / ((burstrate * 5000) / (burstrate - playrate)))
...
...
@@ -200,7 +200,7 @@ static int dac33_read(struct snd_soc_codec *codec, unsigned int reg,
u8
*
value
)
{
struct
tlv320dac33_priv
*
dac33
=
snd_soc_codec_get_drvdata
(
codec
);
int
val
;
int
val
,
ret
=
0
;
*
value
=
reg
&
0xff
;
...
...
@@ -210,6 +210,7 @@ static int dac33_read(struct snd_soc_codec *codec, unsigned int reg,
if
(
val
<
0
)
{
dev_err
(
codec
->
dev
,
"Read failed (%d)
\n
"
,
val
);
value
[
0
]
=
dac33_read_reg_cache
(
codec
,
reg
);
ret
=
val
;
}
else
{
value
[
0
]
=
val
;
dac33_write_reg_cache
(
codec
,
reg
,
val
);
...
...
@@ -218,7 +219,7 @@ static int dac33_read(struct snd_soc_codec *codec, unsigned int reg,
value
[
0
]
=
dac33_read_reg_cache
(
codec
,
reg
);
}
return
0
;
return
ret
;
}
static
int
dac33_write
(
struct
snd_soc_codec
*
codec
,
unsigned
int
reg
,
...
...
@@ -329,13 +330,18 @@ static void dac33_init_chip(struct snd_soc_codec *codec)
dac33_read_reg_cache
(
codec
,
DAC33_LINER_TO_RLO_VOL
));
}
static
inline
void
dac33_read_id
(
struct
snd_soc_codec
*
codec
)
static
inline
int
dac33_read_id
(
struct
snd_soc_codec
*
codec
)
{
int
i
,
ret
=
0
;
u8
reg
;
dac33_read
(
codec
,
DAC33_DEVICE_ID_MSB
,
&
reg
);
dac33_read
(
codec
,
DAC33_DEVICE_ID_LSB
,
&
reg
);
dac33_read
(
codec
,
DAC33_DEVICE_REV_ID
,
&
reg
);
for
(
i
=
0
;
i
<
3
;
i
++
)
{
ret
=
dac33_read
(
codec
,
DAC33_DEVICE_ID_MSB
+
i
,
&
reg
);
if
(
ret
<
0
)
break
;
}
return
ret
;
}
static
inline
void
dac33_soft_power
(
struct
snd_soc_codec
*
codec
,
int
power
)
...
...
@@ -1076,6 +1082,9 @@ static void dac33_calculate_times(struct snd_pcm_substream *substream)
/* Number of samples under i2c latency */
dac33
->
alarm_threshold
=
US_TO_SAMPLES
(
rate
,
dac33
->
mode1_latency
);
nsample_limit
=
DAC33_BUFFER_SIZE_SAMPLES
-
dac33
->
alarm_threshold
;
if
(
dac33
->
auto_fifo_config
)
{
if
(
period_size
<=
dac33
->
alarm_threshold
)
/*
...
...
@@ -1086,6 +1095,8 @@ static void dac33_calculate_times(struct snd_pcm_substream *substream)
((
dac33
->
alarm_threshold
/
period_size
)
+
(
dac33
->
alarm_threshold
%
period_size
?
1
:
0
));
else
if
(
period_size
>
nsample_limit
)
dac33
->
nsample
=
nsample_limit
;
else
dac33
->
nsample
=
period_size
;
}
else
{
...
...
@@ -1097,8 +1108,7 @@ static void dac33_calculate_times(struct snd_pcm_substream *substream)
*/
dac33
->
nsample_max
=
substream
->
runtime
->
buffer_size
-
period_size
;
nsample_limit
=
DAC33_BUFFER_SIZE_SAMPLES
-
dac33
->
alarm_threshold
;
if
(
dac33
->
nsample_max
>
nsample_limit
)
dac33
->
nsample_max
=
nsample_limit
;
...
...
@@ -1414,9 +1424,15 @@ static int dac33_soc_probe(struct snd_soc_codec *codec)
dev_err
(
codec
->
dev
,
"Failed to power up codec: %d
\n
"
,
ret
);
goto
err_power
;
}
dac33_read_id
(
codec
);
ret
=
dac33_read_id
(
codec
);
dac33_hard_power
(
codec
,
0
);
if
(
ret
<
0
)
{
dev_err
(
codec
->
dev
,
"Failed to read chip ID: %d
\n
"
,
ret
);
ret
=
-
ENODEV
;
goto
err_power
;
}
/* Check if the IRQ number is valid and request it */
if
(
dac33
->
irq
>=
0
)
{
ret
=
request_irq
(
dac33
->
irq
,
dac33_interrupt_handler
,
...
...
sound/soc/codecs/tpa6130a2.c
浏览文件 @
d2b88e4c
...
...
@@ -119,13 +119,13 @@ static int tpa6130a2_power(int power)
{
struct
tpa6130a2_data
*
data
;
u8
val
;
int
ret
;
int
ret
=
0
;
BUG_ON
(
tpa6130a2_client
==
NULL
);
data
=
i2c_get_clientdata
(
tpa6130a2_client
);
mutex_lock
(
&
data
->
mutex
);
if
(
power
)
{
if
(
power
&&
!
data
->
power_state
)
{
/* Power on */
if
(
data
->
power_gpio
>=
0
)
gpio_set_value
(
data
->
power_gpio
,
1
);
...
...
@@ -153,7 +153,7 @@ static int tpa6130a2_power(int power)
val
=
tpa6130a2_read
(
TPA6130A2_REG_CONTROL
);
val
&=
~
TPA6130A2_SWS
;
tpa6130a2_i2c_write
(
TPA6130A2_REG_CONTROL
,
val
);
}
else
{
}
else
if
(
!
power
&&
data
->
power_state
)
{
/* set SWS */
val
=
tpa6130a2_read
(
TPA6130A2_REG_CONTROL
);
val
|=
TPA6130A2_SWS
;
...
...
sound/soc/codecs/wm8900.c
浏览文件 @
d2b88e4c
...
...
@@ -186,7 +186,6 @@ static int wm8900_volatile_register(unsigned int reg)
{
switch
(
reg
)
{
case
WM8900_REG_ID
:
case
WM8900_REG_POWER1
:
return
1
;
default:
return
0
;
...
...
@@ -1200,11 +1199,6 @@ static int wm8900_probe(struct snd_soc_codec *codec)
return
-
ENODEV
;
}
/* Read back from the chip */
reg
=
snd_soc_read
(
codec
,
WM8900_REG_POWER1
);
reg
=
(
reg
>>
12
)
&
0xf
;
dev_info
(
codec
->
dev
,
"WM8900 revision %d
\n
"
,
reg
);
wm8900_reset
(
codec
);
/* Turn the chip on */
...
...
sound/soc/codecs/wm_hubs.c
浏览文件 @
d2b88e4c
...
...
@@ -123,7 +123,7 @@ static void calibrate_dc_servo(struct snd_soc_codec *codec)
reg_r
=
reg
&
WM8993_DCS_DAC_WR_VAL_0_MASK
;
break
;
default:
WARN
(
1
,
"Unknown DCS readback method"
);
WARN
(
1
,
"Unknown DCS readback method
\n
"
);
break
;
}
...
...
sound/soc/pxa/tosa.c
浏览文件 @
d2b88e4c
...
...
@@ -79,7 +79,7 @@ static void tosa_ext_control(struct snd_soc_codec *codec)
static
int
tosa_startup
(
struct
snd_pcm_substream
*
substream
)
{
struct
snd_soc_pcm_runtime
*
rtd
=
substream
->
private_data
;
struct
snd_soc_codec
*
codec
=
rtd
->
c
ard
->
c
odec
;
struct
snd_soc_codec
*
codec
=
rtd
->
codec
;
/* check the jack status at stream startup */
tosa_ext_control
(
codec
);
...
...
sound/soc/soc-core.c
浏览文件 @
d2b88e4c
...
...
@@ -165,8 +165,11 @@ static ssize_t pmdown_time_set(struct device *dev,
{
struct
snd_soc_pcm_runtime
*
rtd
=
container_of
(
dev
,
struct
snd_soc_pcm_runtime
,
dev
);
int
ret
;
strict_strtol
(
buf
,
10
,
&
rtd
->
pmdown_time
);
ret
=
strict_strtol
(
buf
,
10
,
&
rtd
->
pmdown_time
);
if
(
ret
)
return
ret
;
return
count
;
}
...
...
sound/spi/at73c213.c
浏览文件 @
d2b88e4c
...
...
@@ -155,7 +155,7 @@ static int snd_at73c213_set_bitrate(struct snd_at73c213 *chip)
if
(
max_tries
<
1
)
max_tries
=
1
;
/* ssc_div must be
a power of 2
. */
/* ssc_div must be
even
. */
ssc_div
=
(
ssc_div
+
1
)
&
~
1UL
;
if
((
ssc_rate
/
(
ssc_div
*
2
*
16
))
<
BITRATE_MIN
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录