]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ASoC: rt5677: Allow it to be defined as an I2C board
authorYauhen Kharuzhy <jekhor@gmail.com>
Wed, 11 Feb 2026 00:18:34 +0000 (02:18 +0200)
committerMark Brown <broonie@kernel.org>
Sun, 22 Feb 2026 23:52:09 +0000 (23:52 +0000)
Some devices (e.g., Lenovo Yoga Book YB1-X90) define the codec as
i2c_board, so add an I2C ID table to support this.

Signed-off-by: Yauhen Kharuzhy <jekhor@gmail.com>
Link: https://patch.msgid.link/20260211002255.4090440-3-jekhor@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt5677.c

index ccbd32cf82986daac25248a169b88d5fc219f01c..6628c7ca5a8a836c0d2c369a82fdd0b6a48d4e1f 100644 (file)
@@ -5209,6 +5209,12 @@ static const struct acpi_device_id rt5677_acpi_match[] = {
 };
 MODULE_DEVICE_TABLE(acpi, rt5677_acpi_match);
 
+static const struct i2c_device_id rt5677_i2c_id[] = {
+       { "rt5677", RT5677 },
+       { }
+};
+MODULE_DEVICE_TABLE(i2c, rt5677_i2c_id);
+
 static void rt5677_read_device_properties(struct rt5677_priv *rt5677,
                struct device *dev)
 {
@@ -5532,7 +5538,6 @@ static int rt5677_init_irq(struct i2c_client *i2c)
 
 static int rt5677_i2c_probe(struct i2c_client *i2c)
 {
-       struct device *dev = &i2c->dev;
        struct rt5677_priv *rt5677;
        int ret;
        unsigned int val;
@@ -5547,7 +5552,7 @@ static int rt5677_i2c_probe(struct i2c_client *i2c)
        INIT_DELAYED_WORK(&rt5677->dsp_work, rt5677_dsp_work);
        i2c_set_clientdata(i2c, rt5677);
 
-       rt5677->type = (enum rt5677_type)(uintptr_t)device_get_match_data(dev);
+       rt5677->type = (enum rt5677_type)(uintptr_t)i2c_get_match_data(i2c);
        if (rt5677->type == 0)
                return -EINVAL;
 
@@ -5666,6 +5671,7 @@ static struct i2c_driver rt5677_i2c_driver = {
                .of_match_table = rt5677_of_match,
                .acpi_match_table = rt5677_acpi_match,
        },
+       .id_table = rt5677_i2c_id,
        .probe    = rt5677_i2c_probe,
        .remove   = rt5677_i2c_remove,
 };