lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.18 214/879] ASoC: amd: Add driver data to acp6x machine driver
    Date
    From: Mario Limonciello <mario.limonciello@amd.com>

    [ Upstream commit e521f087780d07731e8c950f2f34d08358c86bc9 ]

    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: Mario Limonciello <mario.limonciello@amd.com>
    Link: https://lore.kernel.org/r/20220411134532.13538-2-mario.limonciello@amd.com
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/amd/yc/acp6x-mach.c | 29 +++++++++++++++++++++++++----
    1 file changed, 25 insertions(+), 4 deletions(-)

    diff --git a/sound/soc/amd/yc/acp6x-mach.c b/sound/soc/amd/yc/acp6x-mach.c
    index 9a767f47b89f..959b70e8baf2 100644
    --- a/sound/soc/amd/yc/acp6x-mach.c
    +++ b/sound/soc/amd/yc/acp6x-mach.c
    @@ -45,108 +45,126 @@ static struct snd_soc_card acp6x_card = {

    static const struct dmi_system_id yc_acp_quirk_table[] = {
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21D2"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21D3"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21D4"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21D5"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CF"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CG"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CQ"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CR"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21AW"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21AX"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21BN"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21BQ"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CH"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CJ"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CK"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21CL"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21D8"),
    }
    },
    {
    + .driver_data = &acp6x_card,
    .matches = {
    DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
    DMI_MATCH(DMI_PRODUCT_NAME, "21D9"),
    @@ -157,18 +175,21 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {

    static int acp6x_probe(struct platform_device *pdev)
    {
    + const struct dmi_system_id *dmi_id;
    struct acp6x_pdm *machine = NULL;
    struct snd_soc_card *card;
    int ret;
    - const struct dmi_system_id *dmi_id;

    + /* check for any DMI overrides */
    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;
    - card = &acp6x_card;
    acp6x_card.dev = &pdev->dev;

    - platform_set_drvdata(pdev, card);
    snd_soc_card_set_drvdata(card, machine);
    ret = devm_snd_soc_register_card(&pdev->dev, card);
    if (ret) {
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-08 00:22    [W:3.591 / U:0.356 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site