mfd: da9062: Simplify obtaining I2C match data
authorBiju Das <biju.das.jz@bp.renesas.com>
Mon, 4 Dec 2023 12:45:07 +0000 (12:45 +0000)
committerLee Jones <lee@kernel.org>
Thu, 7 Dec 2023 16:06:30 +0000 (16:06 +0000)
Simplify probe() by replacing of_device_get_match_data() and ID lookup for
retrieving match data by i2c_get_match_data().

Some minor cleanups:
 * Remove the trailing comma in the terminator entry for the ID
   table making code robust against (theoretical) misrebases or other
   similar things where the new entry goes _after_ the termination without
   the compiler noticing.
 * Move OF table near to the user.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20231204124507.124758-1-biju.das.jz@bp.renesas.com
Signed-off-by: Lee Jones <lee@kernel.org>
drivers/mfd/da9062-core.c

index 45da007d3e702edd9ab63ce22c83eb76ca290c1b..73a22107900c8c59cdf0a83ee8fb1826d427201d 100644 (file)
@@ -588,16 +588,8 @@ static struct regmap_config da9062_regmap_config = {
        .volatile_table = &da9062_aa_volatile_table,
 };
 
-static const struct of_device_id da9062_dt_ids[] = {
-       { .compatible = "dlg,da9061", .data = (void *)COMPAT_TYPE_DA9061, },
-       { .compatible = "dlg,da9062", .data = (void *)COMPAT_TYPE_DA9062, },
-       { }
-};
-MODULE_DEVICE_TABLE(of, da9062_dt_ids);
-
 static int da9062_i2c_probe(struct i2c_client *i2c)
 {
-       const struct i2c_device_id *id = i2c_client_get_device_id(i2c);
        struct da9062 *chip;
        unsigned int irq_base = 0;
        const struct mfd_cell *cell;
@@ -611,10 +603,7 @@ static int da9062_i2c_probe(struct i2c_client *i2c)
        if (!chip)
                return -ENOMEM;
 
-       if (i2c->dev.of_node)
-               chip->chip_type = (uintptr_t)of_device_get_match_data(&i2c->dev);
-       else
-               chip->chip_type = id->driver_data;
+       chip->chip_type = (uintptr_t)i2c_get_match_data(i2c);
 
        i2c_set_clientdata(i2c, chip);
        chip->dev = &i2c->dev;
@@ -714,10 +703,17 @@ static void da9062_i2c_remove(struct i2c_client *i2c)
        regmap_del_irq_chip(i2c->irq, chip->regmap_irq);
 }
 
+static const struct of_device_id da9062_dt_ids[] = {
+       { .compatible = "dlg,da9061", .data = (void *)COMPAT_TYPE_DA9061 },
+       { .compatible = "dlg,da9062", .data = (void *)COMPAT_TYPE_DA9062 },
+       { }
+};
+MODULE_DEVICE_TABLE(of, da9062_dt_ids);
+
 static const struct i2c_device_id da9062_i2c_id[] = {
        { "da9061", COMPAT_TYPE_DA9061 },
        { "da9062", COMPAT_TYPE_DA9062 },
-       { },
+       { }
 };
 MODULE_DEVICE_TABLE(i2c, da9062_i2c_id);