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
nexedi
linux
Commits
d207df2d
Commit
d207df2d
authored
Mar 03, 2011
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/hda' into topic/hda
parents
1aa924e2
c8900a0f
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
253 additions
and
54 deletions
+253
-54
include/sound/wm8903.h
include/sound/wm8903.h
+3
-7
sound/pci/hda/patch_hdmi.c
sound/pci/hda/patch_hdmi.c
+5
-0
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+3
-6
sound/pci/hda/patch_sigmatel.c
sound/pci/hda/patch_sigmatel.c
+12
-3
sound/soc/codecs/cx20442.c
sound/soc/codecs/cx20442.c
+1
-1
sound/soc/codecs/wm8903.c
sound/soc/codecs/wm8903.c
+1
-1
sound/soc/codecs/wm8903.h
sound/soc/codecs/wm8903.h
+1
-1
sound/soc/codecs/wm8994.c
sound/soc/codecs/wm8994.c
+185
-17
sound/soc/codecs/wm_hubs.c
sound/soc/codecs/wm_hubs.c
+3
-0
sound/soc/imx/eukrea-tlv320.c
sound/soc/imx/eukrea-tlv320.c
+1
-1
sound/soc/pxa/e740_wm9705.c
sound/soc/pxa/e740_wm9705.c
+2
-2
sound/soc/pxa/e750_wm9705.c
sound/soc/pxa/e750_wm9705.c
+2
-2
sound/soc/pxa/e800_wm9712.c
sound/soc/pxa/e800_wm9712.c
+2
-2
sound/soc/pxa/em-x270.c
sound/soc/pxa/em-x270.c
+2
-2
sound/soc/pxa/mioa701_wm9713.c
sound/soc/pxa/mioa701_wm9713.c
+2
-2
sound/soc/pxa/palm27x.c
sound/soc/pxa/palm27x.c
+2
-2
sound/soc/pxa/tosa.c
sound/soc/pxa/tosa.c
+2
-2
sound/soc/pxa/zylonite.c
sound/soc/pxa/zylonite.c
+2
-2
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+22
-1
No files found.
include/sound/wm8903.h
View file @
d207df2d
...
...
@@ -17,13 +17,9 @@
/*
* R6 (0x06) - Mic Bias Control 0
*/
#define WM8903_MICDET_HYST_ENA 0x0080
/* MICDET_HYST_ENA */
#define WM8903_MICDET_HYST_ENA_MASK 0x0080
/* MICDET_HYST_ENA */
#define WM8903_MICDET_HYST_ENA_SHIFT 7
/* MICDET_HYST_ENA */
#define WM8903_MICDET_HYST_ENA_WIDTH 1
/* MICDET_HYST_ENA */
#define WM8903_MICDET_THR_MASK 0x0070
/* MICDET_THR - [6:4] */
#define WM8903_MICDET_THR_SHIFT 4
/* MICDET_THR - [6:4] */
#define WM8903_MICDET_THR_WIDTH 3
/* MICDET_THR - [6:4] */
#define WM8903_MICDET_THR_MASK 0x0030
/* MICDET_THR - [5:4] */
#define WM8903_MICDET_THR_SHIFT 4
/* MICDET_THR - [5:4] */
#define WM8903_MICDET_THR_WIDTH 2
/* MICDET_THR - [5:4] */
#define WM8903_MICSHORT_THR_MASK 0x000C
/* MICSHORT_THR - [3:2] */
#define WM8903_MICSHORT_THR_SHIFT 2
/* MICSHORT_THR - [3:2] */
#define WM8903_MICSHORT_THR_WIDTH 2
/* MICSHORT_THR - [3:2] */
...
...
sound/pci/hda/patch_hdmi.c
View file @
d207df2d
...
...
@@ -1638,6 +1638,9 @@ static struct hda_codec_preset snd_hda_preset_hdmi[] = {
{
.
id
=
0x10de0012
,
.
name
=
"GPU 12 HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
{
.
id
=
0x10de0013
,
.
name
=
"GPU 13 HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
{
.
id
=
0x10de0014
,
.
name
=
"GPU 14 HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
{
.
id
=
0x10de0015
,
.
name
=
"GPU 15 HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
{
.
id
=
0x10de0016
,
.
name
=
"GPU 16 HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
/* 17 is known to be absent */
{
.
id
=
0x10de0018
,
.
name
=
"GPU 18 HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
{
.
id
=
0x10de0019
,
.
name
=
"GPU 19 HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
{
.
id
=
0x10de001a
,
.
name
=
"GPU 1a HDMI/DP"
,
.
patch
=
patch_nvhdmi_8ch_89
},
...
...
@@ -1680,6 +1683,8 @@ MODULE_ALIAS("snd-hda-codec-id:10de0011");
MODULE_ALIAS
(
"snd-hda-codec-id:10de0012"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10de0013"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10de0014"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10de0015"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10de0016"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10de0018"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10de0019"
);
MODULE_ALIAS
(
"snd-hda-codec-id:10de001a"
);
...
...
sound/pci/hda/patch_realtek.c
View file @
d207df2d
...
...
@@ -1133,11 +1133,8 @@ static void alc_automute_speaker(struct hda_codec *codec, int pinctl)
nid
=
spec
->
autocfg
.
hp_pins
[
i
];
if
(
!
nid
)
break
;
if
(
snd_hda_jack_detect
(
codec
,
nid
))
{
spec
->
jack_present
=
1
;
break
;
}
alc_report_jack
(
codec
,
spec
->
autocfg
.
hp_pins
[
i
]);
alc_report_jack
(
codec
,
nid
);
spec
->
jack_present
|=
snd_hda_jack_detect
(
codec
,
nid
);
}
mute
=
spec
->
jack_present
?
HDA_AMP_MUTE
:
0
;
...
...
@@ -15014,7 +15011,7 @@ static struct snd_pci_quirk alc269_cfg_tbl[] = {
SND_PCI_QUIRK
(
0x1043
,
0x11e3
,
"ASUS U33Jc"
,
ALC269VB_AMIC
),
SND_PCI_QUIRK
(
0x1043
,
0x1273
,
"ASUS UL80Jt"
,
ALC269VB_AMIC
),
SND_PCI_QUIRK
(
0x1043
,
0x1283
,
"ASUS U53Jc"
,
ALC269_AMIC
),
SND_PCI_QUIRK
(
0x1043
,
0x12b3
,
"ASUS N82J
v"
,
ALC269
_AMIC
),
SND_PCI_QUIRK
(
0x1043
,
0x12b3
,
"ASUS N82J
V"
,
ALC269VB
_AMIC
),
SND_PCI_QUIRK
(
0x1043
,
0x12d3
,
"ASUS N61Jv"
,
ALC269_AMIC
),
SND_PCI_QUIRK
(
0x1043
,
0x13a3
,
"ASUS UL30Vt"
,
ALC269_AMIC
),
SND_PCI_QUIRK
(
0x1043
,
0x1373
,
"ASUS G73JX"
,
ALC269_AMIC
),
...
...
sound/pci/hda/patch_sigmatel.c
View file @
d207df2d
...
...
@@ -586,7 +586,12 @@ static hda_nid_t stac92hd83xxx_pin_nids[10] = {
0x0f
,
0x10
,
0x11
,
0x1f
,
0x20
,
};
static
hda_nid_t
stac92hd88xxx_pin_nids
[
10
]
=
{
static
hda_nid_t
stac92hd87xxx_pin_nids
[
6
]
=
{
0x0a
,
0x0b
,
0x0c
,
0x0d
,
0x0f
,
0x11
,
};
static
hda_nid_t
stac92hd88xxx_pin_nids
[
8
]
=
{
0x0a
,
0x0b
,
0x0c
,
0x0d
,
0x0f
,
0x11
,
0x1f
,
0x20
,
};
...
...
@@ -5430,12 +5435,13 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
switch
(
codec
->
vendor_id
)
{
case
0x111d76d1
:
case
0x111d76d9
:
case
0x111d76e5
:
spec
->
dmic_nids
=
stac92hd87b_dmic_nids
;
spec
->
num_dmics
=
stac92xx_connected_ports
(
codec
,
stac92hd87b_dmic_nids
,
STAC92HD87B_NUM_DMICS
);
spec
->
num_pins
=
ARRAY_SIZE
(
stac92hd8
8
xxx_pin_nids
);
spec
->
pin_nids
=
stac92hd8
8
xxx_pin_nids
;
spec
->
num_pins
=
ARRAY_SIZE
(
stac92hd8
7
xxx_pin_nids
);
spec
->
pin_nids
=
stac92hd8
7
xxx_pin_nids
;
spec
->
mono_nid
=
0
;
spec
->
num_pwrs
=
0
;
break
;
...
...
@@ -5443,6 +5449,7 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
case
0x111d7667
:
case
0x111d7668
:
case
0x111d7669
:
case
0x111d76e3
:
spec
->
num_dmics
=
stac92xx_connected_ports
(
codec
,
stac92hd88xxx_dmic_nids
,
STAC92HD88XXX_NUM_DMICS
);
...
...
@@ -6387,6 +6394,8 @@ static struct hda_codec_preset snd_hda_preset_sigmatel[] = {
{
.
id
=
0x111d76cd
,
.
name
=
"92HD89F2"
,
.
patch
=
patch_stac92hd73xx
},
{
.
id
=
0x111d76ce
,
.
name
=
"92HD89F1"
,
.
patch
=
patch_stac92hd73xx
},
{
.
id
=
0x111d76e0
,
.
name
=
"92HD91BXX"
,
.
patch
=
patch_stac92hd83xxx
},
{
.
id
=
0x111d76e3
,
.
name
=
"92HD98BXX"
,
.
patch
=
patch_stac92hd83xxx
},
{
.
id
=
0x111d76e5
,
.
name
=
"92HD99BXX"
,
.
patch
=
patch_stac92hd83xxx
},
{
.
id
=
0x111d76e7
,
.
name
=
"92HD90BXX"
,
.
patch
=
patch_stac92hd83xxx
},
{}
/* terminator */
};
...
...
sound/soc/codecs/cx20442.c
View file @
d207df2d
...
...
@@ -367,7 +367,7 @@ static int cx20442_codec_remove(struct snd_soc_codec *codec)
return
0
;
}
static
const
u8
cx20442_reg
=
CX20442_TELOUT
|
CX20442_MIC
;
static
const
u8
cx20442_reg
;
static
struct
snd_soc_codec_driver
cx20442_codec_dev
=
{
.
probe
=
cx20442_codec_probe
,
...
...
sound/soc/codecs/wm8903.c
View file @
d207df2d
...
...
@@ -1482,7 +1482,7 @@ int wm8903_mic_detect(struct snd_soc_codec *codec, struct snd_soc_jack *jack,
WM8903_MICDET_EINT
|
WM8903_MICSHRT_EINT
,
irq_mask
);
if
(
det
&&
shrt
)
{
if
(
det
||
shrt
)
{
/* Enable mic detection, this may not have been set through
* platform data (eg, if the defaults are OK). */
snd_soc_update_bits
(
codec
,
WM8903_WRITE_SEQUENCER_0
,
...
...
sound/soc/codecs/wm8903.h
View file @
d207df2d
...
...
@@ -165,7 +165,7 @@ extern int wm8903_mic_detect(struct snd_soc_codec *codec,
#define WM8903_VMID_RES_50K 2
#define WM8903_VMID_RES_250K 3
#define WM8903_VMID_RES_5K
4
#define WM8903_VMID_RES_5K
6
/*
* R8 (0x08) - Analogue DAC 0
...
...
sound/soc/codecs/wm8994.c
View file @
d207df2d
...
...
@@ -107,6 +107,9 @@ struct wm8994_priv {
int
revision
;
struct
wm8994_pdata
*
pdata
;
unsigned
int
aif1clk_enable
:
1
;
unsigned
int
aif2clk_enable
:
1
;
};
static
int
wm8994_readable
(
unsigned
int
reg
)
...
...
@@ -1004,6 +1007,93 @@ static void wm8994_update_class_w(struct snd_soc_codec *codec)
}
}
static
int
late_enable_ev
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
kcontrol
,
int
event
)
{
struct
snd_soc_codec
*
codec
=
w
->
codec
;
struct
wm8994_priv
*
wm8994
=
snd_soc_codec_get_drvdata
(
codec
);
switch
(
event
)
{
case
SND_SOC_DAPM_PRE_PMU
:
if
(
wm8994
->
aif1clk_enable
)
snd_soc_update_bits
(
codec
,
WM8994_AIF1_CLOCKING_1
,
WM8994_AIF1CLK_ENA_MASK
,
WM8994_AIF1CLK_ENA
);
if
(
wm8994
->
aif2clk_enable
)
snd_soc_update_bits
(
codec
,
WM8994_AIF2_CLOCKING_1
,
WM8994_AIF2CLK_ENA_MASK
,
WM8994_AIF2CLK_ENA
);
break
;
}
return
0
;
}
static
int
late_disable_ev
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
kcontrol
,
int
event
)
{
struct
snd_soc_codec
*
codec
=
w
->
codec
;
struct
wm8994_priv
*
wm8994
=
snd_soc_codec_get_drvdata
(
codec
);
switch
(
event
)
{
case
SND_SOC_DAPM_POST_PMD
:
if
(
wm8994
->
aif1clk_enable
)
{
snd_soc_update_bits
(
codec
,
WM8994_AIF1_CLOCKING_1
,
WM8994_AIF1CLK_ENA_MASK
,
0
);
wm8994
->
aif1clk_enable
=
0
;
}
if
(
wm8994
->
aif2clk_enable
)
{
snd_soc_update_bits
(
codec
,
WM8994_AIF2_CLOCKING_1
,
WM8994_AIF2CLK_ENA_MASK
,
0
);
wm8994
->
aif2clk_enable
=
0
;
}
break
;
}
return
0
;
}
static
int
aif1clk_ev
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
kcontrol
,
int
event
)
{
struct
snd_soc_codec
*
codec
=
w
->
codec
;
struct
wm8994_priv
*
wm8994
=
snd_soc_codec_get_drvdata
(
codec
);
switch
(
event
)
{
case
SND_SOC_DAPM_PRE_PMU
:
wm8994
->
aif1clk_enable
=
1
;
break
;
}
return
0
;
}
static
int
aif2clk_ev
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
kcontrol
,
int
event
)
{
struct
snd_soc_codec
*
codec
=
w
->
codec
;
struct
wm8994_priv
*
wm8994
=
snd_soc_codec_get_drvdata
(
codec
);
switch
(
event
)
{
case
SND_SOC_DAPM_PRE_PMU
:
wm8994
->
aif2clk_enable
=
1
;
break
;
}
return
0
;
}
static
int
dac_ev
(
struct
snd_soc_dapm_widget
*
w
,
struct
snd_kcontrol
*
kcontrol
,
int
event
)
{
struct
snd_soc_codec
*
codec
=
w
->
codec
;
unsigned
int
mask
=
1
<<
w
->
shift
;
snd_soc_update_bits
(
codec
,
WM8994_POWER_MANAGEMENT_5
,
mask
,
mask
);
return
0
;
}
static
const
char
*
hp_mux_text
[]
=
{
"Mixer"
,
"DAC"
,
...
...
@@ -1272,6 +1362,47 @@ static const struct soc_enum aif2dacr_src_enum =
static
const
struct
snd_kcontrol_new
aif2dacr_src_mux
=
SOC_DAPM_ENUM
(
"AIF2DACR Mux"
,
aif2dacr_src_enum
);
static
const
struct
snd_soc_dapm_widget
wm8994_lateclk_revd_widgets
[]
=
{
SND_SOC_DAPM_SUPPLY
(
"AIF1CLK"
,
SND_SOC_NOPM
,
0
,
0
,
aif1clk_ev
,
SND_SOC_DAPM_PRE_PMU
|
SND_SOC_DAPM_POST_PMD
),
SND_SOC_DAPM_SUPPLY
(
"AIF2CLK"
,
SND_SOC_NOPM
,
0
,
0
,
aif2clk_ev
,
SND_SOC_DAPM_PRE_PMU
|
SND_SOC_DAPM_POST_PMD
),
SND_SOC_DAPM_PGA_E
(
"Late DAC1L Enable PGA"
,
SND_SOC_NOPM
,
0
,
0
,
NULL
,
0
,
late_enable_ev
,
SND_SOC_DAPM_PRE_PMU
),
SND_SOC_DAPM_PGA_E
(
"Late DAC1R Enable PGA"
,
SND_SOC_NOPM
,
0
,
0
,
NULL
,
0
,
late_enable_ev
,
SND_SOC_DAPM_PRE_PMU
),
SND_SOC_DAPM_PGA_E
(
"Late DAC2L Enable PGA"
,
SND_SOC_NOPM
,
0
,
0
,
NULL
,
0
,
late_enable_ev
,
SND_SOC_DAPM_PRE_PMU
),
SND_SOC_DAPM_PGA_E
(
"Late DAC2R Enable PGA"
,
SND_SOC_NOPM
,
0
,
0
,
NULL
,
0
,
late_enable_ev
,
SND_SOC_DAPM_PRE_PMU
),
SND_SOC_DAPM_POST
(
"Late Disable PGA"
,
late_disable_ev
)
};
static
const
struct
snd_soc_dapm_widget
wm8994_lateclk_widgets
[]
=
{
SND_SOC_DAPM_SUPPLY
(
"AIF1CLK"
,
WM8994_AIF1_CLOCKING_1
,
0
,
0
,
NULL
,
0
),
SND_SOC_DAPM_SUPPLY
(
"AIF2CLK"
,
WM8994_AIF2_CLOCKING_1
,
0
,
0
,
NULL
,
0
)
};
static
const
struct
snd_soc_dapm_widget
wm8994_dac_revd_widgets
[]
=
{
SND_SOC_DAPM_DAC_E
(
"DAC2L"
,
NULL
,
SND_SOC_NOPM
,
3
,
0
,
dac_ev
,
SND_SOC_DAPM_PRE_PMU
),
SND_SOC_DAPM_DAC_E
(
"DAC2R"
,
NULL
,
SND_SOC_NOPM
,
2
,
0
,
dac_ev
,
SND_SOC_DAPM_PRE_PMU
),
SND_SOC_DAPM_DAC_E
(
"DAC1L"
,
NULL
,
SND_SOC_NOPM
,
1
,
0
,
dac_ev
,
SND_SOC_DAPM_PRE_PMU
),
SND_SOC_DAPM_DAC_E
(
"DAC1R"
,
NULL
,
SND_SOC_NOPM
,
0
,
0
,
dac_ev
,
SND_SOC_DAPM_PRE_PMU
),
};
static
const
struct
snd_soc_dapm_widget
wm8994_dac_widgets
[]
=
{
SND_SOC_DAPM_DAC
(
"DAC2L"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
3
,
0
),
SND_SOC_DAPM_DAC
(
"DAC1R"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
2
,
0
),
SND_SOC_DAPM_DAC
(
"DAC1L"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
1
,
0
),
SND_SOC_DAPM_DAC
(
"DAC1R"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
0
,
0
),
};
static
const
struct
snd_soc_dapm_widget
wm8994_dapm_widgets
[]
=
{
SND_SOC_DAPM_INPUT
(
"DMIC1DAT"
),
SND_SOC_DAPM_INPUT
(
"DMIC2DAT"
),
...
...
@@ -1284,9 +1415,6 @@ SND_SOC_DAPM_SUPPLY("DSP1CLK", WM8994_CLOCKING_1, 3, 0, NULL, 0),
SND_SOC_DAPM_SUPPLY
(
"DSP2CLK"
,
WM8994_CLOCKING_1
,
2
,
0
,
NULL
,
0
),
SND_SOC_DAPM_SUPPLY
(
"DSPINTCLK"
,
WM8994_CLOCKING_1
,
1
,
0
,
NULL
,
0
),
SND_SOC_DAPM_SUPPLY
(
"AIF1CLK"
,
WM8994_AIF1_CLOCKING_1
,
0
,
0
,
NULL
,
0
),
SND_SOC_DAPM_SUPPLY
(
"AIF2CLK"
,
WM8994_AIF2_CLOCKING_1
,
0
,
0
,
NULL
,
0
),
SND_SOC_DAPM_AIF_OUT
(
"AIF1ADC1L"
,
NULL
,
0
,
WM8994_POWER_MANAGEMENT_4
,
9
,
0
),
SND_SOC_DAPM_AIF_OUT
(
"AIF1ADC1R"
,
NULL
,
...
...
@@ -1372,11 +1500,6 @@ SND_SOC_DAPM_ADC("ADCR", NULL, SND_SOC_NOPM, 0, 0),
SND_SOC_DAPM_MUX
(
"ADCL Mux"
,
WM8994_POWER_MANAGEMENT_4
,
1
,
0
,
&
adcl_mux
),
SND_SOC_DAPM_MUX
(
"ADCR Mux"
,
WM8994_POWER_MANAGEMENT_4
,
0
,
0
,
&
adcr_mux
),
SND_SOC_DAPM_DAC
(
"DAC2L"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
3
,
0
),
SND_SOC_DAPM_DAC
(
"DAC2R"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
2
,
0
),
SND_SOC_DAPM_DAC
(
"DAC1L"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
1
,
0
),
SND_SOC_DAPM_DAC
(
"DAC1R"
,
NULL
,
WM8994_POWER_MANAGEMENT_5
,
0
,
0
),
SND_SOC_DAPM_MUX
(
"Left Headphone Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
hpl_mux
),
SND_SOC_DAPM_MUX
(
"Right Headphone Mux"
,
SND_SOC_NOPM
,
0
,
0
,
&
hpr_mux
),
...
...
@@ -1516,14 +1639,12 @@ static const struct snd_soc_dapm_route intercon[] = {
{
"AIF2ADC Mux"
,
"AIF3DACDAT"
,
"AIF3ADCDAT"
},
/* DAC1 inputs */
{
"DAC1L"
,
NULL
,
"DAC1L Mixer"
},
{
"DAC1L Mixer"
,
"AIF2 Switch"
,
"AIF2DACL"
},
{
"DAC1L Mixer"
,
"AIF1.2 Switch"
,
"AIF1DAC2L"
},
{
"DAC1L Mixer"
,
"AIF1.1 Switch"
,
"AIF1DAC1L"
},
{
"DAC1L Mixer"
,
"Left Sidetone Switch"
,
"Left Sidetone"
},
{
"DAC1L Mixer"
,
"Right Sidetone Switch"
,
"Right Sidetone"
},
{
"DAC1R"
,
NULL
,
"DAC1R Mixer"
},
{
"DAC1R Mixer"
,
"AIF2 Switch"
,
"AIF2DACR"
},
{
"DAC1R Mixer"
,
"AIF1.2 Switch"
,
"AIF1DAC2R"
},
{
"DAC1R Mixer"
,
"AIF1.1 Switch"
,
"AIF1DAC1R"
},
...
...
@@ -1532,7 +1653,6 @@ static const struct snd_soc_dapm_route intercon[] = {
/* DAC2/AIF2 outputs */
{
"AIF2ADCL"
,
NULL
,
"AIF2DAC2L Mixer"
},
{
"DAC2L"
,
NULL
,
"AIF2DAC2L Mixer"
},
{
"AIF2DAC2L Mixer"
,
"AIF2 Switch"
,
"AIF2DACL"
},
{
"AIF2DAC2L Mixer"
,
"AIF1.2 Switch"
,
"AIF1DAC2L"
},
{
"AIF2DAC2L Mixer"
,
"AIF1.1 Switch"
,
"AIF1DAC1L"
},
...
...
@@ -1540,7 +1660,6 @@ static const struct snd_soc_dapm_route intercon[] = {
{
"AIF2DAC2L Mixer"
,
"Right Sidetone Switch"
,
"Right Sidetone"
},
{
"AIF2ADCR"
,
NULL
,
"AIF2DAC2R Mixer"
},
{
"DAC2R"
,
NULL
,
"AIF2DAC2R Mixer"
},
{
"AIF2DAC2R Mixer"
,
"AIF2 Switch"
,
"AIF2DACR"
},
{
"AIF2DAC2R Mixer"
,
"AIF1.2 Switch"
,
"AIF1DAC2R"
},
{
"AIF2DAC2R Mixer"
,
"AIF1.1 Switch"
,
"AIF1DAC1R"
},
...
...
@@ -1584,6 +1703,24 @@ static const struct snd_soc_dapm_route intercon[] = {
{
"Right Headphone Mux"
,
"DAC"
,
"DAC1R"
},
};
static
const
struct
snd_soc_dapm_route
wm8994_lateclk_revd_intercon
[]
=
{
{
"DAC1L"
,
NULL
,
"Late DAC1L Enable PGA"
},
{
"Late DAC1L Enable PGA"
,
NULL
,
"DAC1L Mixer"
},
{
"DAC1R"
,
NULL
,
"Late DAC1R Enable PGA"
},
{
"Late DAC1R Enable PGA"
,
NULL
,
"DAC1R Mixer"
},
{
"DAC2L"
,
NULL
,
"Late DAC2L Enable PGA"
},
{
"Late DAC2L Enable PGA"
,
NULL
,
"AIF2DAC2L Mixer"
},
{
"DAC2R"
,
NULL
,
"Late DAC2R Enable PGA"
},
{
"Late DAC2R Enable PGA"
,
NULL
,
"AIF2DAC2R Mixer"
}
};
static
const
struct
snd_soc_dapm_route
wm8994_lateclk_intercon
[]
=
{
{
"DAC1L"
,
NULL
,
"DAC1L Mixer"
},
{
"DAC1R"
,
NULL
,
"DAC1R Mixer"
},
{
"DAC2L"
,
NULL
,
"AIF2DAC2L Mixer"
},
{
"DAC2R"
,
NULL
,
"AIF2DAC2R Mixer"
},
};
static
const
struct
snd_soc_dapm_route
wm8994_revd_intercon
[]
=
{
{
"AIF1DACDAT"
,
NULL
,
"AIF2DACDAT"
},
{
"AIF2DACDAT"
,
NULL
,
"AIF1DACDAT"
},
...
...
@@ -2514,6 +2651,22 @@ static int wm8994_resume(struct snd_soc_codec *codec)
{
struct
wm8994_priv
*
wm8994
=
snd_soc_codec_get_drvdata
(
codec
);
int
i
,
ret
;
unsigned
int
val
,
mask
;
if
(
wm8994
->
revision
<
4
)
{
/* force a HW read */
val
=
wm8994_reg_read
(
codec
->
control_data
,
WM8994_POWER_MANAGEMENT_5
);
/* modify the cache only */
codec
->
cache_only
=
1
;
mask
=
WM8994_DAC1R_ENA
|
WM8994_DAC1L_ENA
|
WM8994_DAC2R_ENA
|
WM8994_DAC2L_ENA
;
val
&=
mask
;
snd_soc_update_bits
(
codec
,
WM8994_POWER_MANAGEMENT_5
,
mask
,
val
);
codec
->
cache_only
=
0
;
}
/* Restore the registers */
ret
=
snd_soc_cache_sync
(
codec
);
...
...
@@ -2847,11 +3000,10 @@ static void wm8958_default_micdet(u16 status, void *data)
report
|=
SND_JACK_BTN_5
;
done:
snd_soc_jack_report
(
wm8994
->
micdet
[
0
].
jack
,
snd_soc_jack_report
(
wm8994
->
micdet
[
0
].
jack
,
report
,
SND_JACK_BTN_0
|
SND_JACK_BTN_1
|
SND_JACK_BTN_2
|
SND_JACK_BTN_3
|
SND_JACK_BTN_4
|
SND_JACK_BTN_5
|
SND_JACK_MICROPHONE
|
SND_JACK_VIDEOOUT
,
report
);
SND_JACK_MICROPHONE
|
SND_JACK_VIDEOOUT
);
}
/**
...
...
@@ -3125,6 +3277,17 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
case
WM8994
:
snd_soc_dapm_new_controls
(
dapm
,
wm8994_specific_dapm_widgets
,
ARRAY_SIZE
(
wm8994_specific_dapm_widgets
));
if
(
wm8994
->
revision
<
4
)
{
snd_soc_dapm_new_controls
(
dapm
,
wm8994_lateclk_revd_widgets
,
ARRAY_SIZE
(
wm8994_lateclk_revd_widgets
));
snd_soc_dapm_new_controls
(
dapm
,
wm8994_dac_revd_widgets
,
ARRAY_SIZE
(
wm8994_dac_revd_widgets
));
}
else
{
snd_soc_dapm_new_controls
(
dapm
,
wm8994_lateclk_widgets
,
ARRAY_SIZE
(
wm8994_lateclk_widgets
));
snd_soc_dapm_new_controls
(
dapm
,
wm8994_dac_widgets
,
ARRAY_SIZE
(
wm8994_dac_widgets
));
}
break
;
case
WM8958
:
snd_soc_add_controls
(
codec
,
wm8958_snd_controls
,
...
...
@@ -3143,10 +3306,15 @@ static int wm8994_codec_probe(struct snd_soc_codec *codec)
snd_soc_dapm_add_routes
(
dapm
,
wm8994_intercon
,
ARRAY_SIZE
(
wm8994_intercon
));
if
(
wm8994
->
revision
<
4
)
if
(
wm8994
->
revision
<
4
)
{
snd_soc_dapm_add_routes
(
dapm
,
wm8994_revd_intercon
,
ARRAY_SIZE
(
wm8994_revd_intercon
));
snd_soc_dapm_add_routes
(
dapm
,
wm8994_lateclk_revd_intercon
,
ARRAY_SIZE
(
wm8994_lateclk_revd_intercon
));
}
else
{
snd_soc_dapm_add_routes
(
dapm
,
wm8994_lateclk_intercon
,
ARRAY_SIZE
(
wm8994_lateclk_intercon
));
}
break
;
case
WM8958
:
snd_soc_dapm_add_routes
(
dapm
,
wm8958_intercon
,
...
...
sound/soc/codecs/wm_hubs.c
View file @
d207df2d
...
...
@@ -674,6 +674,9 @@ SND_SOC_DAPM_OUTPUT("LINEOUT2N"),
};
static
const
struct
snd_soc_dapm_route
analogue_routes
[]
=
{
{
"MICBIAS1"
,
NULL
,
"CLK_SYS"
},
{
"MICBIAS2"
,
NULL
,
"CLK_SYS"
},
{
"IN1L PGA"
,
"IN1LP Switch"
,
"IN1LP"
},
{
"IN1L PGA"
,
"IN1LN Switch"
,
"IN1LN"
},
...
...
sound/soc/imx/eukrea-tlv320.c
View file @
d207df2d
...
...
@@ -79,7 +79,7 @@ static struct snd_soc_dai_link eukrea_tlv320_dai = {
.
name
=
"tlv320aic23"
,
.
stream_name
=
"TLV320AIC23"
,
.
codec_dai_name
=
"tlv320aic23-hifi"
,
.
platform_name
=
"imx-pcm-audio.0"
,
.
platform_name
=
"imx-
fiq-
pcm-audio.0"
,
.
codec_name
=
"tlv320aic23-codec.0-001a"
,
.
cpu_dai_name
=
"imx-ssi.0"
,
.
ops
=
&
eukrea_tlv320_snd_ops
,
...
...
sound/soc/pxa/e740_wm9705.c
View file @
d207df2d
...
...
@@ -117,7 +117,7 @@ static struct snd_soc_dai_link e740_dai[] = {
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_dai_name
=
"wm9705-hifi"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9705-codec"
,
...
...
@@ -126,7 +126,7 @@ static struct snd_soc_dai_link e740_dai[] = {
{
.
name
=
"AC97 Aux"
,
.
stream_name
=
"AC97 Aux"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_dai_name
=
"wm9705-aux"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9705-codec"
,
...
...
sound/soc/pxa/e750_wm9705.c
View file @
d207df2d
...
...
@@ -99,7 +99,7 @@ static struct snd_soc_dai_link e750_dai[] = {
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_dai_name
=
"wm9705-hifi"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9705-codec"
,
...
...
@@ -109,7 +109,7 @@ static struct snd_soc_dai_link e750_dai[] = {
{
.
name
=
"AC97 Aux"
,
.
stream_name
=
"AC97 Aux"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_dai_name
=
"wm9705-aux"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9705-codec"
,
...
...
sound/soc/pxa/e800_wm9712.c
View file @
d207df2d
...
...
@@ -89,7 +89,7 @@ static struct snd_soc_dai_link e800_dai[] = {
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_dai_name
=
"wm9712-hifi"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9712-codec"
,
...
...
@@ -98,7 +98,7 @@ static struct snd_soc_dai_link e800_dai[] = {
{
.
name
=
"AC97 Aux"
,
.
stream_name
=
"AC97 Aux"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_dai_name
=
"wm9712-aux"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9712-codec"
,
...
...
sound/soc/pxa/em-x270.c
View file @
d207df2d
...
...
@@ -37,7 +37,7 @@ static struct snd_soc_dai_link em_x270_dai[] = {
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_dai_name
=
"wm9712-hifi"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9712-codec"
,
...
...
@@ -45,7 +45,7 @@ static struct snd_soc_dai_link em_x270_dai[] = {
{
.
name
=
"AC97 Aux"
,
.
stream_name
=
"AC97 Aux"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_dai_name
=
"wm9712-aux"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9712-codec"
,
...
...
sound/soc/pxa/mioa701_wm9713.c
View file @
d207df2d
...
...
@@ -162,7 +162,7 @@ static struct snd_soc_dai_link mioa701_dai[] = {
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_dai_name
=
"wm9713-hifi"
,
.
codec_name
=
"wm9713-codec"
,
.
init
=
mioa701_wm9713_init
,
...
...
@@ -172,7 +172,7 @@ static struct snd_soc_dai_link mioa701_dai[] = {
{
.
name
=
"AC97 Aux"
,
.
stream_name
=
"AC97 Aux"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_dai_name
=
"wm9713-aux"
,
.
codec_name
=
"wm9713-codec"
,
.
platform_name
=
"pxa-pcm-audio"
,
...
...
sound/soc/pxa/palm27x.c
View file @
d207df2d
...
...
@@ -132,7 +132,7 @@ static struct snd_soc_dai_link palm27x_dai[] = {
{
.
name
=
"AC97 HiFi"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_dai_name
=
"wm9712-hifi"
,
.
codec_name
=
"wm9712-codec"
,
.
platform_name
=
"pxa-pcm-audio"
,
...
...
@@ -141,7 +141,7 @@ static struct snd_soc_dai_link palm27x_dai[] = {
{
.
name
=
"AC97 Aux"
,
.
stream_name
=
"AC97 Aux"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_dai_name
=
"wm9712-aux"
,
.
codec_name
=
"wm9712-codec"
,
.
platform_name
=
"pxa-pcm-audio"
,
...
...
sound/soc/pxa/tosa.c
View file @
d207df2d
...
...
@@ -219,7 +219,7 @@ static struct snd_soc_dai_link tosa_dai[] = {
{
.
name
=
"AC97"
,
.
stream_name
=
"AC97 HiFi"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_dai_name
=
"wm9712-hifi"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9712-codec"
,
...
...
@@ -229,7 +229,7 @@ static struct snd_soc_dai_link tosa_dai[] = {
{
.
name
=
"AC97 Aux"
,
.
stream_name
=
"AC97 Aux"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_dai_name
=
"wm9712-aux"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
codec_name
=
"wm9712-codec"
,
...
...
sound/soc/pxa/zylonite.c
View file @
d207df2d
...
...
@@ -166,7 +166,7 @@ static struct snd_soc_dai_link zylonite_dai[] = {
.
stream_name
=
"AC97 HiFi"
,
.
codec_name
=
"wm9713-codec"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
cpu_dai_name
=
"pxa
-ac97.0
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97
"
,
.
codec_name
=
"wm9713-hifi"
,
.
init
=
zylonite_wm9713_init
,
},
...
...
@@ -175,7 +175,7 @@ static struct snd_soc_dai_link zylonite_dai[] = {
.
stream_name
=
"AC97 Aux"
,
.
codec_name
=
"wm9713-codec"
,
.
platform_name
=
"pxa-pcm-audio"
,
.
cpu_dai_name
=
"pxa
-ac97.1
"
,
.
cpu_dai_name
=
"pxa
2xx-ac97-aux
"
,
.
codec_name
=
"wm9713-aux"
,
},
{
...
...
sound/soc/soc-dapm.c
View file @
d207df2d
...
...
@@ -712,7 +712,15 @@ static int dapm_supply_check_power(struct snd_soc_dapm_widget *w)
!
path
->
connected
(
path
->
source
,
path
->
sink
))
continue
;
if
(
path
->
sink
&&
path
->
sink
->
power_check
&&
if
(
!
path
->
sink
)
continue
;
if
(
path
->
sink
->
force
)
{
power
=
1
;
break
;
}
if
(
path
->
sink
->
power_check
&&
path
->
sink
->
power_check
(
path
->
sink
))
{
power
=
1
;
break
;
...
...
@@ -1627,6 +1635,7 @@ EXPORT_SYMBOL_GPL(snd_soc_dapm_add_routes);
int
snd_soc_dapm_new_widgets
(
struct
snd_soc_dapm_context
*
dapm
)
{
struct
snd_soc_dapm_widget
*
w
;
unsigned
int
val
;
list_for_each_entry
(
w
,
&
dapm
->
card
->
widgets
,
list
)
{
...
...
@@ -1675,6 +1684,18 @@ int snd_soc_dapm_new_widgets(struct snd_soc_dapm_context *dapm)
case
snd_soc_dapm_post
:
break
;
}
/* Read the initial power state from the device */
if
(
w
->
reg
>=
0
)
{
val
=
snd_soc_read
(
w
->
codec
,
w
->
reg
);
val
&=
1
<<
w
->
shift
;
if
(
w
->
invert
)
val
=
!
val
;
if
(
val
)
w
->
power
=
1
;
}
w
->
new
=
1
;
}
...
...
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