Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
cf30f46a
Commit
cf30f46a
authored
Mar 18, 2013
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-linus' into for-next
Back-merged for refactoring beep stuff.
parents
0959f22e
a86b1a2c
Changes
21
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
166 additions
and
60 deletions
+166
-60
Documentation/sound/alsa/ALSA-Configuration.txt
Documentation/sound/alsa/ALSA-Configuration.txt
+1
-1
Documentation/sound/alsa/seq_oss.html
Documentation/sound/alsa/seq_oss.html
+1
-1
sound/core/seq/oss/seq_oss_event.c
sound/core/seq/oss/seq_oss_event.c
+12
-2
sound/core/seq/seq_timer.c
sound/core/seq/seq_timer.c
+4
-4
sound/core/vmaster.c
sound/core/vmaster.c
+4
-1
sound/oss/sequencer.c
sound/oss/sequencer.c
+6
-0
sound/pci/asihpi/asihpi.c
sound/pci/asihpi/asihpi.c
+2
-1
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.c
+23
-12
sound/pci/hda/patch_ca0132.c
sound/pci/hda/patch_ca0132.c
+21
-15
sound/pci/hda/patch_cirrus.c
sound/pci/hda/patch_cirrus.c
+4
-0
sound/pci/hda/patch_conexant.c
sound/pci/hda/patch_conexant.c
+11
-5
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+2
-0
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_sigmatel.c
+29
-0
sound/pci/ice1712/ice1712.c
sound/pci/ice1712/ice1712.c
+2
-0
sound/soc/codecs/wm5102.c
sound/soc/codecs/wm5102.c
+13
-2
sound/soc/codecs/wm5110.c
sound/soc/codecs/wm5110.c
+8
-8
sound/soc/codecs/wm8350.c
sound/soc/codecs/wm8350.c
+2
-2
sound/soc/codecs/wm8960.c
sound/soc/codecs/wm8960.c
+4
-4
sound/soc/tegra/tegra20_i2s.h
sound/soc/tegra/tegra20_i2s.h
+1
-1
sound/soc/tegra/tegra30_i2s.h
sound/soc/tegra/tegra30_i2s.h
+1
-1
sound/usb/card.c
sound/usb/card.c
+15
-0
No files found.
Documentation/sound/alsa/ALSA-Configuration.txt
View file @
cf30f46a
...
...
@@ -912,7 +912,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
models depending on the codec chip. The list of available models
is found in HD-Audio-Models.txt
The model name "genric" is treated as a special case. When this
The model name "gen
e
ric" is treated as a special case. When this
model is given, the driver uses the generic codec parser without
"codec-patch". It's sometimes good for testing and debugging.
...
...
Documentation/sound/alsa/seq_oss.html
View file @
cf30f46a
...
...
@@ -285,7 +285,7 @@ sample data.
<H4>
7.2.4 Close Callback
</H4>
The
<TT>
close
</TT>
callback is called when this device is closed by the
applicaion. If any private data was allocated in open callback, it must
applica
t
ion. If any private data was allocated in open callback, it must
be released in the close callback. The deletion of ALSA port should be
done here, too. This callback must not be NULL.
<H4>
...
...
sound/core/seq/oss/seq_oss_event.c
View file @
cf30f46a
...
...
@@ -285,7 +285,12 @@ local_event(struct seq_oss_devinfo *dp, union evrec *q, struct snd_seq_event *ev
static
int
note_on_event
(
struct
seq_oss_devinfo
*
dp
,
int
dev
,
int
ch
,
int
note
,
int
vel
,
struct
snd_seq_event
*
ev
)
{
struct
seq_oss_synthinfo
*
info
=
&
dp
->
synths
[
dev
];
struct
seq_oss_synthinfo
*
info
;
if
(
!
snd_seq_oss_synth_is_valid
(
dp
,
dev
))
return
-
ENXIO
;
info
=
&
dp
->
synths
[
dev
];
switch
(
info
->
arg
.
event_passing
)
{
case
SNDRV_SEQ_OSS_PROCESS_EVENTS
:
if
(
!
info
->
ch
||
ch
<
0
||
ch
>=
info
->
nr_voices
)
{
...
...
@@ -340,7 +345,12 @@ note_on_event(struct seq_oss_devinfo *dp, int dev, int ch, int note, int vel, st
static
int
note_off_event
(
struct
seq_oss_devinfo
*
dp
,
int
dev
,
int
ch
,
int
note
,
int
vel
,
struct
snd_seq_event
*
ev
)
{
struct
seq_oss_synthinfo
*
info
=
&
dp
->
synths
[
dev
];
struct
seq_oss_synthinfo
*
info
;
if
(
!
snd_seq_oss_synth_is_valid
(
dp
,
dev
))
return
-
ENXIO
;
info
=
&
dp
->
synths
[
dev
];
switch
(
info
->
arg
.
event_passing
)
{
case
SNDRV_SEQ_OSS_PROCESS_EVENTS
:
if
(
!
info
->
ch
||
ch
<
0
||
ch
>=
info
->
nr_voices
)
{
...
...
sound/core/seq/seq_timer.c
View file @
cf30f46a
...
...
@@ -290,10 +290,10 @@ int snd_seq_timer_open(struct snd_seq_queue *q)
tid
.
device
=
SNDRV_TIMER_GLOBAL_SYSTEM
;
err
=
snd_timer_open
(
&
t
,
str
,
&
tid
,
q
->
queue
);
}
if
(
err
<
0
)
{
snd_printk
(
KERN_ERR
"seq fatal error: cannot create timer (%i)
\n
"
,
err
);
return
err
;
}
}
if
(
err
<
0
)
{
snd_printk
(
KERN_ERR
"seq fatal error: cannot create timer (%i)
\n
"
,
err
)
;
return
err
;
}
t
->
callback
=
snd_seq_timer_interrupt
;
t
->
callback_data
=
q
;
...
...
sound/core/vmaster.c
View file @
cf30f46a
...
...
@@ -213,7 +213,10 @@ static int slave_put(struct snd_kcontrol *kcontrol,
}
if
(
!
changed
)
return
0
;
return
slave_put_val
(
slave
,
ucontrol
);
err
=
slave_put_val
(
slave
,
ucontrol
);
if
(
err
<
0
)
return
err
;
return
1
;
}
static
int
slave_tlv_cmd
(
struct
snd_kcontrol
*
kcontrol
,
...
...
sound/oss/sequencer.c
View file @
cf30f46a
...
...
@@ -545,6 +545,9 @@ static void seq_chn_common_event(unsigned char *event_rec)
case
MIDI_PGM_CHANGE
:
if
(
seq_mode
==
SEQ_2
)
{
if
(
chn
>
15
)
break
;
synth_devs
[
dev
]
->
chn_info
[
chn
].
pgm_num
=
p1
;
if
((
int
)
dev
>=
num_synths
)
synth_devs
[
dev
]
->
set_instr
(
dev
,
chn
,
p1
);
...
...
@@ -596,6 +599,9 @@ static void seq_chn_common_event(unsigned char *event_rec)
case
MIDI_PITCH_BEND
:
if
(
seq_mode
==
SEQ_2
)
{
if
(
chn
>
15
)
break
;
synth_devs
[
dev
]
->
chn_info
[
chn
].
bender_value
=
w14
;
if
((
int
)
dev
<
num_synths
)
...
...
sound/pci/asihpi/asihpi.c
View file @
cf30f46a
...
...
@@ -2549,7 +2549,7 @@ static int snd_asihpi_sampleclock_add(struct snd_card_asihpi *asihpi,
static
int
snd_card_asihpi_mixer_new
(
struct
snd_card_asihpi
*
asihpi
)
{
struct
snd_card
*
card
=
asihpi
->
card
;
struct
snd_card
*
card
;
unsigned
int
idx
=
0
;
unsigned
int
subindex
=
0
;
int
err
;
...
...
@@ -2557,6 +2557,7 @@ static int snd_card_asihpi_mixer_new(struct snd_card_asihpi *asihpi)
if
(
snd_BUG_ON
(
!
asihpi
))
return
-
EINVAL
;
card
=
asihpi
->
card
;
strcpy
(
card
->
mixername
,
"Asihpi Mixer"
);
err
=
...
...
sound/pci/hda/hda_codec.c
View file @
cf30f46a
...
...
@@ -494,7 +494,7 @@ static unsigned int get_num_conns(struct hda_codec *codec, hda_nid_t nid)
int
snd_hda_get_num_raw_conns
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
{
return
get_num_conns
(
codec
,
nid
)
&
AC_CLIST_LENGTH
;
return
snd_hda_get_raw_connections
(
codec
,
nid
,
NULL
,
0
)
;
}
/**
...
...
@@ -517,9 +517,6 @@ int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid,
hda_nid_t
prev_nid
;
int
null_count
=
0
;
if
(
snd_BUG_ON
(
!
conn_list
||
max_conns
<=
0
))
return
-
EINVAL
;
parm
=
get_num_conns
(
codec
,
nid
);
if
(
!
parm
)
return
0
;
...
...
@@ -545,7 +542,8 @@ int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid,
AC_VERB_GET_CONNECT_LIST
,
0
);
if
(
parm
==
-
1
&&
codec
->
bus
->
rirb_error
)
return
-
EIO
;
conn_list
[
0
]
=
parm
&
mask
;
if
(
conn_list
)
conn_list
[
0
]
=
parm
&
mask
;
return
1
;
}
...
...
@@ -580,14 +578,20 @@ int snd_hda_get_raw_connections(struct hda_codec *codec, hda_nid_t nid,
continue
;
}
for
(
n
=
prev_nid
+
1
;
n
<=
val
;
n
++
)
{
if
(
conn_list
)
{
if
(
conns
>=
max_conns
)
return
-
ENOSPC
;
conn_list
[
conns
]
=
n
;
}
conns
++
;
}
}
else
{
if
(
conn_list
)
{
if
(
conns
>=
max_conns
)
return
-
ENOSPC
;
conn_list
[
conns
++
]
=
n
;
conn_list
[
conns
]
=
val
;
}
}
else
{
if
(
conns
>=
max_conns
)
return
-
ENOSPC
;
conn_list
[
conns
++
]
=
val
;
conns
++
;
}
prev_nid
=
val
;
}
...
...
@@ -3331,6 +3335,8 @@ int snd_hda_create_dig_out_ctls(struct hda_codec *codec,
return
-
EBUSY
;
}
spdif
=
snd_array_new
(
&
codec
->
spdif_out
);
if
(
!
spdif
)
return
-
ENOMEM
;
for
(
dig_mix
=
dig_mixes
;
dig_mix
->
name
;
dig_mix
++
)
{
kctl
=
snd_ctl_new1
(
dig_mix
,
codec
);
if
(
!
kctl
)
...
...
@@ -3428,11 +3434,16 @@ static struct snd_kcontrol_new spdif_share_sw = {
int
snd_hda_create_spdif_share_sw
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
)
{
struct
snd_kcontrol
*
kctl
;
if
(
!
mout
->
dig_out_nid
)
return
0
;
kctl
=
snd_ctl_new1
(
&
spdif_share_sw
,
mout
);
if
(
!
kctl
)
return
-
ENOMEM
;
/* ATTENTION: here mout is passed as private_data, instead of codec */
return
snd_hda_ctl_add
(
codec
,
mout
->
dig_out_nid
,
snd_ctl_new1
(
&
spdif_share_sw
,
mout
));
return
snd_hda_ctl_add
(
codec
,
mout
->
dig_out_nid
,
kctl
);
}
EXPORT_SYMBOL_HDA
(
snd_hda_create_spdif_share_sw
);
...
...
sound/pci/hda/patch_ca0132.c
View file @
cf30f46a
...
...
@@ -2298,6 +2298,11 @@ static int dspxfr_one_seg(struct hda_codec *codec,
hda_frame_size_words
=
((
sample_rate_div
==
0
)
?
0
:
(
num_chans
*
sample_rate_mul
/
sample_rate_div
));
if
(
hda_frame_size_words
==
0
)
{
snd_printdd
(
KERN_ERR
"frmsz zero
\n
"
);
return
-
EINVAL
;
}
buffer_size_words
=
min
(
buffer_size_words
,
(
unsigned
int
)(
UC_RANGE
(
chip_addx
,
1
)
?
65536
:
32768
));
...
...
@@ -2308,8 +2313,7 @@ static int dspxfr_one_seg(struct hda_codec *codec,
chip_addx
,
hda_frame_size_words
,
num_chans
,
sample_rate_mul
,
sample_rate_div
,
buffer_size_words
);
if
((
buffer_addx
==
NULL
)
||
(
hda_frame_size_words
==
0
)
||
(
buffer_size_words
<
hda_frame_size_words
))
{
if
(
buffer_size_words
<
hda_frame_size_words
)
{
snd_printdd
(
KERN_ERR
"dspxfr_one_seg:failed
\n
"
);
return
-
EINVAL
;
}
...
...
@@ -3235,7 +3239,7 @@ static int ca0132_set_vipsource(struct hda_codec *codec, int val)
struct
ca0132_spec
*
spec
=
codec
->
spec
;
unsigned
int
tmp
;
if
(
!
dspload_is_loaded
(
codec
)
)
if
(
spec
->
dsp_state
!=
DSP_DOWNLOADED
)
return
0
;
/* if CrystalVoice if off, vipsource should be 0 */
...
...
@@ -4263,11 +4267,12 @@ static void ca0132_refresh_widget_caps(struct hda_codec *codec)
*/
static
void
ca0132_setup_defaults
(
struct
hda_codec
*
codec
)
{
struct
ca0132_spec
*
spec
=
codec
->
spec
;
unsigned
int
tmp
;
int
num_fx
;
int
idx
,
i
;
if
(
!
dspload_is_loaded
(
codec
)
)
if
(
spec
->
dsp_state
!=
DSP_DOWNLOADED
)
return
;
/* out, in effects + voicefx */
...
...
@@ -4347,12 +4352,16 @@ static bool ca0132_download_dsp_images(struct hda_codec *codec)
return
false
;
dsp_os_image
=
(
struct
dsp_image_seg
*
)(
fw_entry
->
data
);
dspload_image
(
codec
,
dsp_os_image
,
0
,
0
,
true
,
0
);
if
(
dspload_image
(
codec
,
dsp_os_image
,
0
,
0
,
true
,
0
))
{
pr_err
(
"ca0132 dspload_image failed.
\n
"
);
goto
exit_download
;
}
dsp_loaded
=
dspload_wait_loaded
(
codec
);
exit_download:
release_firmware
(
fw_entry
);
return
dsp_loaded
;
}
...
...
@@ -4363,16 +4372,13 @@ static void ca0132_download_dsp(struct hda_codec *codec)
#ifndef CONFIG_SND_HDA_CODEC_CA0132_DSP
return
;
/* NOP */
#endif
spec
->
dsp_state
=
DSP_DOWNLOAD_INIT
;
if
(
spec
->
dsp_state
==
DSP_DOWNLOAD_INIT
)
{
chipio_enable_clocks
(
codec
);
spec
->
dsp_state
=
DSP_DOWNLOADING
;
if
(
!
ca0132_download_dsp_images
(
codec
))
spec
->
dsp_state
=
DSP_DOWNLOAD_FAILED
;
else
spec
->
dsp_state
=
DSP_DOWNLOADED
;
}
chipio_enable_clocks
(
codec
);
spec
->
dsp_state
=
DSP_DOWNLOADING
;
if
(
!
ca0132_download_dsp_images
(
codec
))
spec
->
dsp_state
=
DSP_DOWNLOAD_FAILED
;
else
spec
->
dsp_state
=
DSP_DOWNLOADED
;
if
(
spec
->
dsp_state
==
DSP_DOWNLOADED
)
ca0132_set_dsp_msr
(
codec
,
true
);
...
...
sound/pci/hda/patch_cirrus.c
View file @
cf30f46a
...
...
@@ -506,6 +506,8 @@ static int patch_cs420x(struct hda_codec *codec)
if
(
!
spec
)
return
-
ENOMEM
;
spec
->
gen
.
automute_hook
=
cs_automute
;
snd_hda_pick_fixup
(
codec
,
cs420x_models
,
cs420x_fixup_tbl
,
cs420x_fixups
);
snd_hda_apply_fixup
(
codec
,
HDA_FIXUP_ACT_PRE_PROBE
);
...
...
@@ -893,6 +895,8 @@ static int patch_cs4210(struct hda_codec *codec)
if
(
!
spec
)
return
-
ENOMEM
;
spec
->
gen
.
automute_hook
=
cs_automute
;
snd_hda_pick_fixup
(
codec
,
cs421x_models
,
cs421x_fixup_tbl
,
cs421x_fixups
);
snd_hda_apply_fixup
(
codec
,
HDA_FIXUP_ACT_PRE_PROBE
);
...
...
sound/pci/hda/patch_conexant.c
View file @
cf30f46a
...
...
@@ -1142,7 +1142,7 @@ static int patch_cxt5045(struct hda_codec *codec)
}
if
(
spec
->
beep_amp
)
snd_hda_attach_beep_device
(
codec
,
spec
->
beep_amp
);
snd_hda_attach_beep_device
(
codec
,
get_amp_nid_
(
spec
->
beep_amp
)
);
return
0
;
}
...
...
@@ -1921,7 +1921,7 @@ static int patch_cxt5051(struct hda_codec *codec)
}
if
(
spec
->
beep_amp
)
snd_hda_attach_beep_device
(
codec
,
spec
->
beep_amp
);
snd_hda_attach_beep_device
(
codec
,
get_amp_nid_
(
spec
->
beep_amp
)
);
return
0
;
}
...
...
@@ -3099,7 +3099,7 @@ static int patch_cxt5066(struct hda_codec *codec)
}
if
(
spec
->
beep_amp
)
snd_hda_attach_beep_device
(
codec
,
spec
->
beep_amp
);
snd_hda_attach_beep_device
(
codec
,
get_amp_nid_
(
spec
->
beep_amp
)
);
return
0
;
}
...
...
@@ -3191,11 +3191,17 @@ static int cx_auto_build_controls(struct hda_codec *codec)
return
0
;
}
static
void
cx_auto_free
(
struct
hda_codec
*
codec
)
{
snd_hda_detach_beep_device
(
codec
);
snd_hda_gen_free
(
codec
);
}
static
const
struct
hda_codec_ops
cx_auto_patch_ops
=
{
.
build_controls
=
cx_auto_build_controls
,
.
build_pcms
=
snd_hda_gen_build_pcms
,
.
init
=
snd_hda_gen_init
,
.
free
=
snd_hda_gen
_free
,
.
free
=
cx_auto
_free
,
.
unsol_event
=
snd_hda_jack_unsol_event
,
#ifdef CONFIG_PM
.
check_power_status
=
snd_hda_gen_check_power_status
,
...
...
@@ -3390,7 +3396,7 @@ static int patch_conexant_auto(struct hda_codec *codec)
codec
->
patch_ops
=
cx_auto_patch_ops
;
if
(
spec
->
beep_amp
)
snd_hda_attach_beep_device
(
codec
,
spec
->
beep_amp
);
snd_hda_attach_beep_device
(
codec
,
get_amp_nid_
(
spec
->
beep_amp
)
);
/* Some laptops with Conexant chips show stalls in S3 resume,
* which falls into the single-cmd mode.
...
...
sound/pci/hda/patch_realtek.c
View file @
cf30f46a
...
...
@@ -3182,6 +3182,7 @@ static int patch_alc269(struct hda_codec *codec)
case
0x10ec0290
:
spec
->
codec_variant
=
ALC269_TYPE_ALC280
;
break
;
case
0x10ec0233
:
case
0x10ec0282
:
case
0x10ec0283
:
spec
->
codec_variant
=
ALC269_TYPE_ALC282
;
...
...
@@ -3881,6 +3882,7 @@ static int patch_alc680(struct hda_codec *codec)
*/
static
const
struct
hda_codec_preset
snd_hda_preset_realtek
[]
=
{
{
.
id
=
0x10ec0221
,
.
name
=
"ALC221"
,
.
patch
=
patch_alc269
},
{
.
id
=
0x10ec0233
,
.
name
=
"ALC233"
,
.
patch
=
patch_alc269
},
{
.
id
=
0x10ec0260
,
.
name
=
"ALC260"
,
.
patch
=
patch_alc260
},
{
.
id
=
0x10ec0262
,
.
name
=
"ALC262"
,
.
patch
=
patch_alc262
},
{
.
id
=
0x10ec0267
,
.
name
=
"ALC267"
,
.
patch
=
patch_alc268
},
...
...
sound/pci/hda/patch_sigmatel.c
View file @
cf30f46a
...
...
@@ -815,6 +815,29 @@ static int find_mute_led_cfg(struct hda_codec *codec, int default_polarity)
return
0
;
}
/* check whether a built-in speaker is included in parsed pins */
static
bool
has_builtin_speaker
(
struct
hda_codec
*
codec
)
{
struct
sigmatel_spec
*
spec
=
codec
->
spec
;
hda_nid_t
*
nid_pin
;
int
nids
,
i
;
if
(
spec
->
gen
.
autocfg
.
line_out_type
==
AUTO_PIN_SPEAKER_OUT
)
{
nid_pin
=
spec
->
gen
.
autocfg
.
line_out_pins
;
nids
=
spec
->
gen
.
autocfg
.
line_outs
;
}
else
{
nid_pin
=
spec
->
gen
.
autocfg
.
speaker_pins
;
nids
=
spec
->
gen
.
autocfg
.
speaker_outs
;
}
for
(
i
=
0
;
i
<
nids
;
i
++
)
{
unsigned
int
def_conf
=
snd_hda_codec_get_pincfg
(
codec
,
nid_pin
[
i
]);
if
(
snd_hda_get_input_pin_attr
(
def_conf
)
==
INPUT_PIN_ATTR_INT
)
return
true
;
}
return
false
;
}
/*
* PC beep controls
*/
...
...
@@ -3891,6 +3914,12 @@ static int patch_stac92hd73xx(struct hda_codec *codec)
return
err
;
}
/* Don't GPIO-mute speakers if there are no internal speakers, because
* the GPIO might be necessary for Headphone
*/
if
(
spec
->
eapd_switch
&&
!
has_builtin_speaker
(
codec
))
spec
->
eapd_switch
=
0
;
codec
->
proc_widget_hook
=
stac92hd7x_proc_hook
;
snd_hda_apply_fixup
(
codec
,
HDA_FIXUP_ACT_PROBE
);
...
...
sound/pci/ice1712/ice1712.c
View file @
cf30f46a
...
...
@@ -2594,6 +2594,8 @@ static int snd_ice1712_create(struct snd_card *card,
snd_ice1712_proc_init
(
ice
);
synchronize_irq
(
pci
->
irq
);
card
->
private_data
=
ice
;
err
=
pci_request_regions
(
pci
,
"ICE1712"
);
if
(
err
<
0
)
{
kfree
(
ice
);
...
...
sound/soc/codecs/wm5102.c
View file @
cf30f46a
...
...
@@ -573,6 +573,13 @@ static const struct reg_default wm5102_sysclk_reva_patch[] = {
{
0x025e
,
0x0112
},
};
static
const
struct
reg_default
wm5102_sysclk_revb_patch
[]
=
{
{
0x3081
,
0x08FE
},
{
0x3083
,
0x00ED
},
{
0x30C1
,
0x08FE
},
{
0x30C3
,
0x00ED
},
};
static
int
wm5102_sysclk_ev
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
kcontrol
,
int
event
)
{
...
...
@@ -587,6 +594,10 @@ static int wm5102_sysclk_ev(struct snd_soc_dapm_widget *w,
patch
=
wm5102_sysclk_reva_patch
;
patch_size
=
ARRAY_SIZE
(
wm5102_sysclk_reva_patch
);
break
;
default:
patch
=
wm5102_sysclk_revb_patch
;
patch_size
=
ARRAY_SIZE
(
wm5102_sysclk_revb_patch
);
break
;
}
switch
(
event
)
{
...
...
@@ -755,7 +766,7 @@ SOC_SINGLE("SPKDAT1 High Performance Switch", ARIZONA_OUTPUT_PATH_CONFIG_5L,
SOC_DOUBLE_R
(
"HPOUT1 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_1L
,
ARIZONA_DAC_DIGITAL_VOLUME_1R
,
ARIZONA_OUT1L_MUTE_SHIFT
,
1
,
1
),
SOC_DOUBLE_R
(
"OUT2 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
SOC_DOUBLE_R
(
"
HP
OUT2 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
ARIZONA_DAC_DIGITAL_VOLUME_2R
,
ARIZONA_OUT2L_MUTE_SHIFT
,
1
,
1
),
SOC_SINGLE
(
"EPOUT Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_3L
,
ARIZONA_OUT3L_MUTE_SHIFT
,
1
,
1
),
...
...
@@ -767,7 +778,7 @@ SOC_DOUBLE_R("SPKDAT1 Digital Switch", ARIZONA_DAC_DIGITAL_VOLUME_5L,
SOC_DOUBLE_R_TLV
(
"HPOUT1 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_1L
,
ARIZONA_DAC_DIGITAL_VOLUME_1R
,
ARIZONA_OUT1L_VOL_SHIFT
,
0xbf
,
0
,
digital_tlv
),
SOC_DOUBLE_R_TLV
(
"OUT2 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
SOC_DOUBLE_R_TLV
(
"
HP
OUT2 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
ARIZONA_DAC_DIGITAL_VOLUME_2R
,
ARIZONA_OUT2L_VOL_SHIFT
,
0xbf
,
0
,
digital_tlv
),
SOC_SINGLE_TLV
(
"EPOUT Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_3L
,
...
...
sound/soc/codecs/wm5110.c
View file @
cf30f46a
...
...
@@ -213,9 +213,9 @@ ARIZONA_MIXER_CONTROLS("SPKDAT2R", ARIZONA_OUT6RMIX_INPUT_1_SOURCE),
SOC_SINGLE
(
"HPOUT1 High Performance Switch"
,
ARIZONA_OUTPUT_PATH_CONFIG_1L
,
ARIZONA_OUT1_OSR_SHIFT
,
1
,
0
),
SOC_SINGLE
(
"OUT2 High Performance Switch"
,
ARIZONA_OUTPUT_PATH_CONFIG_2L
,
SOC_SINGLE
(
"
HP
OUT2 High Performance Switch"
,
ARIZONA_OUTPUT_PATH_CONFIG_2L
,
ARIZONA_OUT2_OSR_SHIFT
,
1
,
0
),
SOC_SINGLE
(
"OUT3 High Performance Switch"
,
ARIZONA_OUTPUT_PATH_CONFIG_3L
,
SOC_SINGLE
(
"
HP
OUT3 High Performance Switch"
,
ARIZONA_OUTPUT_PATH_CONFIG_3L
,
ARIZONA_OUT3_OSR_SHIFT
,
1
,
0
),
SOC_SINGLE
(
"Speaker High Performance Switch"
,
ARIZONA_OUTPUT_PATH_CONFIG_4L
,
ARIZONA_OUT4_OSR_SHIFT
,
1
,
0
),
...
...
@@ -226,9 +226,9 @@ SOC_SINGLE("SPKDAT2 High Performance Switch", ARIZONA_OUTPUT_PATH_CONFIG_6L,
SOC_DOUBLE_R
(
"HPOUT1 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_1L
,
ARIZONA_DAC_DIGITAL_VOLUME_1R
,
ARIZONA_OUT1L_MUTE_SHIFT
,
1
,
1
),
SOC_DOUBLE_R
(
"OUT2 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
SOC_DOUBLE_R
(
"
HP
OUT2 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
ARIZONA_DAC_DIGITAL_VOLUME_2R
,
ARIZONA_OUT2L_MUTE_SHIFT
,
1
,
1
),
SOC_DOUBLE_R
(
"OUT3 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_3L
,
SOC_DOUBLE_R
(
"
HP
OUT3 Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_3L
,
ARIZONA_DAC_DIGITAL_VOLUME_3R
,
ARIZONA_OUT3L_MUTE_SHIFT
,
1
,
1
),
SOC_DOUBLE_R
(
"Speaker Digital Switch"
,
ARIZONA_DAC_DIGITAL_VOLUME_4L
,
ARIZONA_DAC_DIGITAL_VOLUME_4R
,
ARIZONA_OUT4L_MUTE_SHIFT
,
1
,
1
),
...
...
@@ -240,10 +240,10 @@ SOC_DOUBLE_R("SPKDAT2 Digital Switch", ARIZONA_DAC_DIGITAL_VOLUME_6L,
SOC_DOUBLE_R_TLV
(
"HPOUT1 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_1L
,
ARIZONA_DAC_DIGITAL_VOLUME_1R
,
ARIZONA_OUT1L_VOL_SHIFT
,
0xbf
,
0
,
digital_tlv
),
SOC_DOUBLE_R_TLV
(
"OUT2 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
SOC_DOUBLE_R_TLV
(
"
HP
OUT2 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_2L
,
ARIZONA_DAC_DIGITAL_VOLUME_2R
,
ARIZONA_OUT2L_VOL_SHIFT
,
0xbf
,
0
,
digital_tlv
),
SOC_DOUBLE_R_TLV
(
"OUT3 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_3L
,
SOC_DOUBLE_R_TLV
(
"
HP
OUT3 Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_3L
,
ARIZONA_DAC_DIGITAL_VOLUME_3R
,
ARIZONA_OUT3L_VOL_SHIFT
,
0xbf
,
0
,
digital_tlv
),
SOC_DOUBLE_R_TLV
(
"Speaker Digital Volume"
,
ARIZONA_DAC_DIGITAL_VOLUME_4L
,
...
...
@@ -260,11 +260,11 @@ SOC_DOUBLE_R_RANGE_TLV("HPOUT1 Volume", ARIZONA_OUTPUT_PATH_CONFIG_1L,
ARIZONA_OUTPUT_PATH_CONFIG_1R
,
ARIZONA_OUT1L_PGA_VOL_SHIFT
,
0x34
,
0x40
,
0
,
ana_tlv
),
SOC_DOUBLE_R_RANGE_TLV
(
"OUT2 Volume"
,
ARIZONA_OUTPUT_PATH_CONFIG_2L
,
SOC_DOUBLE_R_RANGE_TLV
(
"
HP
OUT2 Volume"
,
ARIZONA_OUTPUT_PATH_CONFIG_2L
,
ARIZONA_OUTPUT_PATH_CONFIG_2R
,
ARIZONA_OUT2L_PGA_VOL_SHIFT
,
0x34
,
0x40
,
0
,
ana_tlv
),
SOC_DOUBLE_R_RANGE_TLV
(
"OUT3 Volume"
,
ARIZONA_OUTPUT_PATH_CONFIG_3L
,
SOC_DOUBLE_R_RANGE_TLV
(
"
HP
OUT3 Volume"
,
ARIZONA_OUTPUT_PATH_CONFIG_3L
,
ARIZONA_OUTPUT_PATH_CONFIG_3R
,
ARIZONA_OUT3L_PGA_VOL_SHIFT
,
0x34
,
0x40
,
0
,
ana_tlv
),
...
...
sound/soc/codecs/wm8350.c
View file @
cf30f46a
...
...
@@ -1301,7 +1301,7 @@ static irqreturn_t wm8350_hpl_jack_handler(int irq, void *data)
if
(
device_may_wakeup
(
wm8350
->
dev
))
pm_wakeup_event
(
wm8350
->
dev
,
250
);
schedule_delayed_work
(
&
priv
->
hpl
.
work
,
200
);
schedule_delayed_work
(
&
priv
->
hpl
.
work
,
msecs_to_jiffies
(
200
)
);
return
IRQ_HANDLED
;
}
...
...
@@ -1318,7 +1318,7 @@ static irqreturn_t wm8350_hpr_jack_handler(int irq, void *data)
if
(
device_may_wakeup
(
wm8350
->
dev
))
pm_wakeup_event
(
wm8350
->
dev
,
250
);
schedule_delayed_work
(
&
priv
->
hpr
.
work
,
200
);
schedule_delayed_work
(
&
priv
->
hpr
.
work
,
msecs_to_jiffies
(
200
)
);
return
IRQ_HANDLED
;
}
...
...
sound/soc/codecs/wm8960.c
View file @
cf30f46a
...
...
@@ -53,8 +53,8 @@
* using 2 wire for device control, so we cache them instead.
*/
static
const
struct
reg_default
wm8960_reg_defaults
[]
=
{
{
0x0
,
0x00
9
7
},
{
0x1
,
0x00
9
7
},
{
0x0
,
0x00
a
7
},
{
0x1
,
0x00
a
7
},
{
0x2
,
0x0000
},
{
0x3
,
0x0000
},
{
0x4
,
0x0000
},
...
...
@@ -323,8 +323,8 @@ SND_SOC_DAPM_MIXER("Left Input Mixer", WM8960_POWER3, 5, 0,
SND_SOC_DAPM_MIXER
(
"Right Input Mixer"
,
WM8960_POWER3
,
4
,
0
,
wm8960_rin
,
ARRAY_SIZE
(
wm8960_rin
)),
SND_SOC_DAPM_ADC
(
"Left ADC"
,
"Capture"
,
WM8960_POWER
2
,
3
,
0
),
SND_SOC_DAPM_ADC
(
"Right ADC"
,
"Capture"
,
WM8960_POWER
2
,
2
,
0
),
SND_SOC_DAPM_ADC
(
"Left ADC"
,
"Capture"
,
WM8960_POWER
1
,
3
,
0
),
SND_SOC_DAPM_ADC
(
"Right ADC"
,
"Capture"
,
WM8960_POWER
1
,
2
,
0
),
SND_SOC_DAPM_DAC
(
"Left DAC"
,
"Playback"
,
WM8960_POWER2
,
8
,
0
),
SND_SOC_DAPM_DAC
(
"Right DAC"
,
"Playback"
,
WM8960_POWER2
,
7
,
0
),
...
...
sound/soc/tegra/tegra20_i2s.h
View file @
cf30f46a
...
...
@@ -121,7 +121,7 @@
#define TEGRA20_I2S_TIMING_NON_SYM_ENABLE (1 << 12)
#define TEGRA20_I2S_TIMING_CHANNEL_BIT_COUNT_SHIFT 0
#define TEGRA20_I2S_TIMING_CHANNEL_BIT_COUNT_MASK_US 0x7ff
f
#define TEGRA20_I2S_TIMING_CHANNEL_BIT_COUNT_MASK_US 0x7ff
#define TEGRA20_I2S_TIMING_CHANNEL_BIT_COUNT_MASK (TEGRA20_I2S_TIMING_CHANNEL_BIT_COUNT_MASK_US << TEGRA20_I2S_TIMING_CHANNEL_BIT_COUNT_SHIFT)
/* Fields in TEGRA20_I2S_FIFO_SCR */
...
...
sound/soc/tegra/tegra30_i2s.h
View file @
cf30f46a
...
...
@@ -110,7 +110,7 @@
#define TEGRA30_I2S_TIMING_NON_SYM_ENABLE (1 << 12)
#define TEGRA30_I2S_TIMING_CHANNEL_BIT_COUNT_SHIFT 0
#define TEGRA30_I2S_TIMING_CHANNEL_BIT_COUNT_MASK_US 0x7ff
f
#define TEGRA30_I2S_TIMING_CHANNEL_BIT_COUNT_MASK_US 0x7ff
#define TEGRA30_I2S_TIMING_CHANNEL_BIT_COUNT_MASK (TEGRA30_I2S_TIMING_CHANNEL_BIT_COUNT_MASK_US << TEGRA30_I2S_TIMING_CHANNEL_BIT_COUNT_SHIFT)
/* Fields in TEGRA30_I2S_OFFSET */
...
...
sound/usb/card.c
View file @
cf30f46a
...
...
@@ -243,6 +243,21 @@ static int snd_usb_create_streams(struct snd_usb_audio *chip, int ctrlif)
struct
usb_interface_assoc_descriptor
*
assoc
=
usb_ifnum_to_if
(
dev
,
ctrlif
)
->
intf_assoc
;
if
(
!
assoc
)
{
/*
* Firmware writers cannot count to three. So to find
* the IAD on the NuForce UDH-100, also check the next
* interface.
*/
struct
usb_interface
*
iface
=
usb_ifnum_to_if
(
dev
,
ctrlif
+
1
);
if
(
iface
&&
iface
->
intf_assoc
&&
iface
->
intf_assoc
->
bFunctionClass
==
USB_CLASS_AUDIO
&&
iface
->
intf_assoc
->
bFunctionProtocol
==
UAC_VERSION_2
)
assoc
=
iface
->
intf_assoc
;
}
if
(
!
assoc
)
{
snd_printk
(
KERN_ERR
"Audio class v2 interfaces need an interface association
\n
"
);
return
-
EINVAL
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment