rtc: isl1208: Make similar I2C and DT-based matching table
authorBiju Das <biju.das.jz@bp.renesas.com>
Fri, 23 Jun 2023 14:09:45 +0000 (15:09 +0100)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Sun, 25 Jun 2023 22:58:21 +0000 (00:58 +0200)
The isl1208_id[].driver_data could store a pointer to the config,
like for DT-based matching, making I2C and DT-based matching
more similar.

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/20230623140948.384762-8-biju.das.jz@bp.renesas.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-isl1208.c

index 6b3ff21..cefff1d 100644 (file)
@@ -90,10 +90,10 @@ static const struct isl1208_config {
 };
 
 static const struct i2c_device_id isl1208_id[] = {
-       { "isl1208", TYPE_ISL1208 },
-       { "isl1209", TYPE_ISL1209 },
-       { "isl1218", TYPE_ISL1218 },
-       { "isl1219", TYPE_ISL1219 },
+       { "isl1208", .driver_data = (kernel_ulong_t)&isl1208_configs[TYPE_ISL1208] },
+       { "isl1209", .driver_data = (kernel_ulong_t)&isl1208_configs[TYPE_ISL1209] },
+       { "isl1218", .driver_data = (kernel_ulong_t)&isl1208_configs[TYPE_ISL1218] },
+       { "isl1219", .driver_data = (kernel_ulong_t)&isl1208_configs[TYPE_ISL1219] },
        { }
 };
 MODULE_DEVICE_TABLE(i2c, isl1208_id);
@@ -822,9 +822,9 @@ isl1208_probe(struct i2c_client *client)
        } else {
                const struct i2c_device_id *id = i2c_match_id(isl1208_id, client);
 
-               if (id->driver_data >= ISL_LAST_ID)
+               if (!id)
                        return -ENODEV;
-               isl1208->config = &isl1208_configs[id->driver_data];
+               isl1208->config = (struct isl1208_config *)id->driver_data;
        }
 
        isl1208->rtc = devm_rtc_allocate_device(&client->dev);