summaryrefslogtreecommitdiff
path: root/sound
diff options
context:
space:
mode:
authorJarkko Nikula <jarkko.nikula@linux.intel.com>2014-10-02 13:29:08 +0300
committerMark Brown <broonie@kernel.org>2014-10-02 11:50:22 +0100
commit24221dcc8be736a2b0b83ecaeb60b99bd7e9334c (patch)
treedeb3a3b24eac0991adb8ae7562146c4a89f90c08 /sound
parenta5f0ab05b67213ef33107b716e8596a480b5875f (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>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/intel/byt-rt5640.c18
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[] = {
{"DMIC1", NULL, "Internal Mic"},
};
+static const struct snd_soc_dapm_route byt_rt5640_intmic_dmic2_map[] = {
+ {"DMIC2", NULL, "Internal Mic"},
+};
+
static const struct snd_soc_dapm_route byt_rt5640_intmic_in1_map[] = {
{"Internal Mic", NULL, "MICBIAS1"},
{"IN1P", NULL, "Internal Mic"},
@@ -56,6 +60,7 @@ static const struct snd_soc_dapm_route byt_rt5640_intmic_in1_map[] = {
enum {
BYT_RT5640_DMIC1_MAP,
+ BYT_RT5640_DMIC2_MAP,
BYT_RT5640_IN1_MAP,
};
@@ -111,6 +116,15 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = {
},
.driver_data = (unsigned long *)BYT_RT5640_IN1_MAP,
},
+ {
+ .callback = byt_rt5640_quirk_cb,
+ .matches = {
+ DMI_MATCH(DMI_SYS_VENDOR, "DellInc."),
+ DMI_MATCH(DMI_PRODUCT_NAME, "Venue 8 Pro 5830"),
+ },
+ .driver_data = (unsigned long *)(BYT_RT5640_DMIC2_MAP |
+ BYT_RT5640_DMIC_EN),
+ },
{}
};
@@ -138,6 +152,10 @@ static int byt_rt5640_init(struct snd_soc_pcm_runtime *runtime)
custom_map = byt_rt5640_intmic_in1_map;
num_routes = ARRAY_SIZE(byt_rt5640_intmic_in1_map);
break;
+ case BYT_RT5640_DMIC2_MAP:
+ custom_map = byt_rt5640_intmic_dmic2_map;
+ num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic2_map);
+ break;
default:
custom_map = byt_rt5640_intmic_dmic1_map;
num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic1_map);