diff options
author | Jarkko Nikula <jarkko.nikula@linux.intel.com> | 2014-10-02 06:29:08 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2014-10-02 06:50:22 -0400 |
commit | 24221dcc8be736a2b0b83ecaeb60b99bd7e9334c (patch) | |
tree | deb3a3b24eac0991adb8ae7562146c4a89f90c08 | |
parent | a5f0ab05b67213ef33107b716e8596a480b5875f (diff) |
ASoC: Intel: byt-rt5640: Add quirk for Dell Venue 8 Pro tablet
It was found with help of Jan-Michael Brummer <jan.brummer@tabos.org> that
Dell Venue 8 Pro tablet has a digital microphone connected to DMIC2
interface of the RT564x.
This patch adds a DAPM route to DMIC2 and a quirk using it for that tablet.
Signed-off-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Reported-by: Jan-Michael Brummer <jan.brummer@tabos.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/intel/byt-rt5640.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/sound/soc/intel/byt-rt5640.c b/sound/soc/intel/byt-rt5640.c index 8392c160d9e2..a9619b4201f9 100644 --- a/sound/soc/intel/byt-rt5640.c +++ b/sound/soc/intel/byt-rt5640.c | |||
@@ -49,6 +49,10 @@ static const struct snd_soc_dapm_route byt_rt5640_intmic_dmic1_map[] = { | |||
49 | {"DMIC1", NULL, "Internal Mic"}, | 49 | {"DMIC1", NULL, "Internal Mic"}, |
50 | }; | 50 | }; |
51 | 51 | ||
52 | static const struct snd_soc_dapm_route byt_rt5640_intmic_dmic2_map[] = { | ||
53 | {"DMIC2", NULL, "Internal Mic"}, | ||
54 | }; | ||
55 | |||
52 | static const struct snd_soc_dapm_route byt_rt5640_intmic_in1_map[] = { | 56 | static const struct snd_soc_dapm_route byt_rt5640_intmic_in1_map[] = { |
53 | {"Internal Mic", NULL, "MICBIAS1"}, | 57 | {"Internal Mic", NULL, "MICBIAS1"}, |
54 | {"IN1P", NULL, "Internal Mic"}, | 58 | {"IN1P", NULL, "Internal Mic"}, |
@@ -56,6 +60,7 @@ static const struct snd_soc_dapm_route byt_rt5640_intmic_in1_map[] = { | |||
56 | 60 | ||
57 | enum { | 61 | enum { |
58 | BYT_RT5640_DMIC1_MAP, | 62 | BYT_RT5640_DMIC1_MAP, |
63 | BYT_RT5640_DMIC2_MAP, | ||
59 | BYT_RT5640_IN1_MAP, | 64 | BYT_RT5640_IN1_MAP, |
60 | }; | 65 | }; |
61 | 66 | ||
@@ -111,6 +116,15 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = { | |||
111 | }, | 116 | }, |
112 | .driver_data = (unsigned long *)BYT_RT5640_IN1_MAP, | 117 | .driver_data = (unsigned long *)BYT_RT5640_IN1_MAP, |
113 | }, | 118 | }, |
119 | { | ||
120 | .callback = byt_rt5640_quirk_cb, | ||
121 | .matches = { | ||
122 | DMI_MATCH(DMI_SYS_VENDOR, "DellInc."), | ||
123 | DMI_MATCH(DMI_PRODUCT_NAME, "Venue 8 Pro 5830"), | ||
124 | }, | ||
125 | .driver_data = (unsigned long *)(BYT_RT5640_DMIC2_MAP | | ||
126 | BYT_RT5640_DMIC_EN), | ||
127 | }, | ||
114 | {} | 128 | {} |
115 | }; | 129 | }; |
116 | 130 | ||
@@ -138,6 +152,10 @@ static int byt_rt5640_init(struct snd_soc_pcm_runtime *runtime) | |||
138 | custom_map = byt_rt5640_intmic_in1_map; | 152 | custom_map = byt_rt5640_intmic_in1_map; |
139 | num_routes = ARRAY_SIZE(byt_rt5640_intmic_in1_map); | 153 | num_routes = ARRAY_SIZE(byt_rt5640_intmic_in1_map); |
140 | break; | 154 | break; |
155 | case BYT_RT5640_DMIC2_MAP: | ||
156 | custom_map = byt_rt5640_intmic_dmic2_map; | ||
157 | num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic2_map); | ||
158 | break; | ||
141 | default: | 159 | default: |
142 | custom_map = byt_rt5640_intmic_dmic1_map; | 160 | custom_map = byt_rt5640_intmic_dmic1_map; |
143 | num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic1_map); | 161 | num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic1_map); |