Skip to content
Snippets Groups Projects
Unverified Commit e521f087 authored by Mario Limonciello's avatar Mario Limonciello Committed by Mark Brown
Browse files

ASoC: amd: Add driver data to acp6x machine driver


Currently all of the quirked systems use the same card and so the
DMI quirk list doesn't contain driver data.

Add driver data to these quirks and then check the data was present
or not.  This will allow potentially setting quirks for systems with
faulty firmware that claims to have a DMIC but doesn't really.

Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20220411134532.13538-2-mario.limonciello@amd.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 239556a3
No related branches found
No related tags found
No related merge requests found
...@@ -45,108 +45,126 @@ static struct snd_soc_card acp6x_card = { ...@@ -45,108 +45,126 @@ static struct snd_soc_card acp6x_card = {
static const struct dmi_system_id yc_acp_quirk_table[] = { static const struct dmi_system_id yc_acp_quirk_table[] = {
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21D2"), DMI_MATCH(DMI_PRODUCT_NAME, "21D2"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21D3"), DMI_MATCH(DMI_PRODUCT_NAME, "21D3"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21D4"), DMI_MATCH(DMI_PRODUCT_NAME, "21D4"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21D5"), DMI_MATCH(DMI_PRODUCT_NAME, "21D5"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CF"), DMI_MATCH(DMI_PRODUCT_NAME, "21CF"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CG"), DMI_MATCH(DMI_PRODUCT_NAME, "21CG"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CQ"), DMI_MATCH(DMI_PRODUCT_NAME, "21CQ"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CR"), DMI_MATCH(DMI_PRODUCT_NAME, "21CR"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21AW"), DMI_MATCH(DMI_PRODUCT_NAME, "21AW"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21AX"), DMI_MATCH(DMI_PRODUCT_NAME, "21AX"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21BN"), DMI_MATCH(DMI_PRODUCT_NAME, "21BN"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21BQ"), DMI_MATCH(DMI_PRODUCT_NAME, "21BQ"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CH"), DMI_MATCH(DMI_PRODUCT_NAME, "21CH"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CJ"), DMI_MATCH(DMI_PRODUCT_NAME, "21CJ"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CK"), DMI_MATCH(DMI_PRODUCT_NAME, "21CK"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21CL"), DMI_MATCH(DMI_PRODUCT_NAME, "21CL"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21D8"), DMI_MATCH(DMI_PRODUCT_NAME, "21D8"),
} }
}, },
{ {
.driver_data = &acp6x_card,
.matches = { .matches = {
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"), DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
DMI_MATCH(DMI_PRODUCT_NAME, "21D9"), DMI_MATCH(DMI_PRODUCT_NAME, "21D9"),
...@@ -157,18 +175,21 @@ static const struct dmi_system_id yc_acp_quirk_table[] = { ...@@ -157,18 +175,21 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
static int acp6x_probe(struct platform_device *pdev) static int acp6x_probe(struct platform_device *pdev)
{ {
const struct dmi_system_id *dmi_id;
struct acp6x_pdm *machine = NULL; struct acp6x_pdm *machine = NULL;
struct snd_soc_card *card; struct snd_soc_card *card;
int ret; int ret;
const struct dmi_system_id *dmi_id;
/* check for any DMI overrides */
dmi_id = dmi_first_match(yc_acp_quirk_table); dmi_id = dmi_first_match(yc_acp_quirk_table);
if (!dmi_id) if (dmi_id)
platform_set_drvdata(pdev, dmi_id->driver_data);
card = platform_get_drvdata(pdev);
if (!card)
return -ENODEV; return -ENODEV;
card = &acp6x_card;
acp6x_card.dev = &pdev->dev; acp6x_card.dev = &pdev->dev;
platform_set_drvdata(pdev, card);
snd_soc_card_set_drvdata(card, machine); snd_soc_card_set_drvdata(card, machine);
ret = devm_snd_soc_register_card(&pdev->dev, card); ret = devm_snd_soc_register_card(&pdev->dev, card);
if (ret) { if (ret) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment