Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24221dcc authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Mark Brown
Browse files

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: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
Reported-by: default avatarJan-Michael Brummer <jan.brummer@tabos.org>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a5f0ab05
Loading
Loading
Loading
Loading
+18 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,10 @@ static const struct snd_soc_dapm_route byt_rt5640_intmic_dmic1_map[] = {
	{"DMIC1", NULL, "Internal Mic"},
	{"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[] = {
static const struct snd_soc_dapm_route byt_rt5640_intmic_in1_map[] = {
	{"Internal Mic", NULL, "MICBIAS1"},
	{"Internal Mic", NULL, "MICBIAS1"},
	{"IN1P", NULL, "Internal Mic"},
	{"IN1P", NULL, "Internal Mic"},
@@ -56,6 +60,7 @@ static const struct snd_soc_dapm_route byt_rt5640_intmic_in1_map[] = {


enum {
enum {
	BYT_RT5640_DMIC1_MAP,
	BYT_RT5640_DMIC1_MAP,
	BYT_RT5640_DMIC2_MAP,
	BYT_RT5640_IN1_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,
		.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;
		custom_map = byt_rt5640_intmic_in1_map;
		num_routes = ARRAY_SIZE(byt_rt5640_intmic_in1_map);
		num_routes = ARRAY_SIZE(byt_rt5640_intmic_in1_map);
		break;
		break;
	case BYT_RT5640_DMIC2_MAP:
		custom_map = byt_rt5640_intmic_dmic2_map;
		num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic2_map);
		break;
	default:
	default:
		custom_map = byt_rt5640_intmic_dmic1_map;
		custom_map = byt_rt5640_intmic_dmic1_map;
		num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic1_map);
		num_routes = ARRAY_SIZE(byt_rt5640_intmic_dmic1_map);