Unverified Commit d3dcc588 authored by Hans de Goede's avatar Hans de Goede Committed by Mark Brown
Browse files

ASoC: Intel: common: Add quirk for PoV P1006W tablet



The Point of View TAB-P1006W-232 (v1.0) tablet uses 10EC5640 as
ACPI HID, but it has a rt5651 codec add a quirk for this.

Acked-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 7674bec4
Loading
Loading
Loading
Loading
+33 −2
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
static unsigned long byt_machine_id;

#define BYT_THINKPAD_10  1
#define BYT_POV_P1006W   2

static int byt_thinkpad10_quirk_cb(const struct dmi_system_id *id)
{
@@ -28,6 +29,11 @@ static int byt_thinkpad10_quirk_cb(const struct dmi_system_id *id)
	return 1;
}

static int byt_pov_p1006w_quirk_cb(const struct dmi_system_id *id)
{
	byt_machine_id = BYT_POV_P1006W;
	return 1;
}

static const struct dmi_system_id byt_table[] = {
	{
@@ -58,6 +64,17 @@ static const struct dmi_system_id byt_table[] = {
			DMI_MATCH(DMI_PRODUCT_VERSION, "Lenovo Miix 2 10"),
		},
	},
	{
		/* Point of View mobii wintab p1006w (v1.0) */
		.callback = byt_pov_p1006w_quirk_cb,
		.matches = {
			DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Insyde"),
			DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "BayTrail"),
			/* Note 105b is Foxcon's USB/PCI vendor id */
			DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "105B"),
			DMI_EXACT_MATCH(DMI_BOARD_NAME, "0E57"),
		},
	},
	{ }
};

@@ -71,17 +88,31 @@ static struct snd_soc_acpi_mach byt_thinkpad_10 = {
	.asoc_plat_name = "sst-mfld-platform",
};

static struct snd_soc_acpi_mach byt_pov_p1006w = {
	.id = "10EC5640",
	.drv_name = "bytcr_rt5651",
	.fw_filename = "intel/fw_sst_0f28.bin",
	.board = "bytcr_rt5651",
	.sof_fw_filename = "intel/sof-byt.ri",
	.sof_tplg_filename = "intel/sof-byt-rt5651.tplg",
	.asoc_plat_name = "sst-mfld-platform",
};

static struct snd_soc_acpi_mach *byt_quirk(void *arg)
{
	struct snd_soc_acpi_mach *mach = arg;

	dmi_check_system(byt_table);

	if (byt_machine_id == BYT_THINKPAD_10)
	switch (byt_machine_id) {
	case BYT_THINKPAD_10:
		return &byt_thinkpad_10;
	else
	case BYT_POV_P1006W:
		return &byt_pov_p1006w;
	default:
		return mach;
	}
}

struct snd_soc_acpi_mach snd_soc_acpi_intel_baytrail_legacy_machines[] = {
	{