Simplify the probe() by replacing device_get_match_data() and i2c_client_get_device_id by i2c_get_match_data() as we have similar I2C, ACPI and DT matching table. While at it, replace name->chipset to make error message consistent. Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> --- drivers/iio/magnetometer/ak8975.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/drivers/iio/magnetometer/ak8975.c b/drivers/iio/magnetometer/ak8975.c index eb706d0bf70b..9c4d942ffab3 100644 --- a/drivers/iio/magnetometer/ak8975.c +++ b/drivers/iio/magnetometer/ak8975.c @@ -878,16 +878,13 @@ static irqreturn_t ak8975_handle_trigger(int irq, void *p) static int ak8975_probe(struct i2c_client *client) { - const struct i2c_device_id *id = i2c_client_get_device_id(client); struct ak8975_data *data; struct iio_dev *indio_dev; struct gpio_desc *eoc_gpiod; struct gpio_desc *reset_gpiod; - const void *match; unsigned int i; int err; enum asahi_compass_chipset chipset; - const char *name = NULL; /* * Grab and set up the supplied GPIO. @@ -927,15 +924,8 @@ static int ak8975_probe(struct i2c_client *client) if (err) return err; - /* id will be NULL when enumerated via ACPI */ - match = device_get_match_data(&client->dev); - if (match) { - chipset = (uintptr_t)match; - name = dev_name(&client->dev); - } else if (id) { - chipset = (enum asahi_compass_chipset)(id->driver_data); - name = id->name; - } else + chipset = (uintptr_t)i2c_get_match_data(client); + if (!chipset) return -ENOSYS; for (i = 0; i < ARRAY_SIZE(ak_def_array); i++) @@ -967,12 +957,13 @@ static int ak8975_probe(struct i2c_client *client) dev_err(&client->dev, "Unexpected device\n"); goto power_off; } - dev_dbg(&client->dev, "Asahi compass chip %s\n", name); + dev_dbg(&client->dev, "Asahi compass chip %d\n", chipset); /* Perform some basic start-of-day setup of the device. */ err = ak8975_setup(client); if (err < 0) { - dev_err(&client->dev, "%s initialization fails\n", name); + dev_err(&client->dev, "Initialization failed for chip %d\n", + chipset); goto power_off; } @@ -982,7 +973,7 @@ static int ak8975_probe(struct i2c_client *client) indio_dev->info = &ak8975_info; indio_dev->available_scan_masks = ak8975_scan_masks; indio_dev->modes = INDIO_DIRECT_MODE; - indio_dev->name = name; + indio_dev->name = dev_name(&client->dev); err = iio_triggered_buffer_setup(indio_dev, NULL, ak8975_handle_trigger, NULL); -- 2.25.1