Commit 4f9ea93a authored by Biju Das's avatar Biju Das Committed by Jonathan Cameron

iio: magnetometer: ak8975: Convert enum->pointer for data in the match tables

Convert enum->pointer for data in the match tables to 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.
Signed-off-by: default avatarBiju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Link: https://lore.kernel.org/r/20230818075600.24277-2-biju.das.jz@bp.renesas.comSigned-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 4545d477
...@@ -813,13 +813,13 @@ static const struct iio_info ak8975_info = { ...@@ -813,13 +813,13 @@ static const struct iio_info ak8975_info = {
}; };
static const struct acpi_device_id ak_acpi_match[] = { static const struct acpi_device_id ak_acpi_match[] = {
{"AK8975", AK8975}, {"AK8975", (kernel_ulong_t)&ak_def_array[AK8975] },
{"AK8963", AK8963}, {"AK8963", (kernel_ulong_t)&ak_def_array[AK8963] },
{"INVN6500", AK8963}, {"INVN6500", (kernel_ulong_t)&ak_def_array[AK8963] },
{"AK009911", AK09911}, {"AK009911", (kernel_ulong_t)&ak_def_array[AK09911] },
{"AK09911", AK09911}, {"AK09911", (kernel_ulong_t)&ak_def_array[AK09911] },
{"AKM9911", AK09911}, {"AKM9911", (kernel_ulong_t)&ak_def_array[AK09911] },
{"AK09912", AK09912}, {"AK09912", (kernel_ulong_t)&ak_def_array[AK09912] },
{ } { }
}; };
MODULE_DEVICE_TABLE(acpi, ak_acpi_match); MODULE_DEVICE_TABLE(acpi, ak_acpi_match);
...@@ -883,10 +883,7 @@ static int ak8975_probe(struct i2c_client *client) ...@@ -883,10 +883,7 @@ static int ak8975_probe(struct i2c_client *client)
struct iio_dev *indio_dev; struct iio_dev *indio_dev;
struct gpio_desc *eoc_gpiod; struct gpio_desc *eoc_gpiod;
struct gpio_desc *reset_gpiod; struct gpio_desc *reset_gpiod;
const void *match;
unsigned int i;
int err; int err;
enum asahi_compass_chipset chipset;
const char *name = NULL; const char *name = NULL;
/* /*
...@@ -928,27 +925,15 @@ static int ak8975_probe(struct i2c_client *client) ...@@ -928,27 +925,15 @@ static int ak8975_probe(struct i2c_client *client)
return err; return err;
/* id will be NULL when enumerated via ACPI */ /* id will be NULL when enumerated via ACPI */
match = device_get_match_data(&client->dev); data->def = i2c_get_match_data(client);
if (match) { if (!data->def)
chipset = (uintptr_t)match;
name = dev_name(&client->dev);
} else if (id) {
chipset = (enum asahi_compass_chipset)(id->driver_data);
name = id->name;
} else
return -ENOSYS;
for (i = 0; i < ARRAY_SIZE(ak_def_array); i++)
if (ak_def_array[i].type == chipset)
break;
if (i == ARRAY_SIZE(ak_def_array)) {
dev_err(&client->dev, "AKM device type unsupported: %d\n",
chipset);
return -ENODEV; return -ENODEV;
}
data->def = &ak_def_array[i]; /* If enumerated via firmware node, fix the ABI */
if (dev_fwnode(&client->dev))
name = dev_name(&client->dev);
else
name = id->name;
/* Fetch the regulators */ /* Fetch the regulators */
data->vdd = devm_regulator_get(&client->dev, "vdd"); data->vdd = devm_regulator_get(&client->dev, "vdd");
...@@ -1077,28 +1062,28 @@ static DEFINE_RUNTIME_DEV_PM_OPS(ak8975_dev_pm_ops, ak8975_runtime_suspend, ...@@ -1077,28 +1062,28 @@ static DEFINE_RUNTIME_DEV_PM_OPS(ak8975_dev_pm_ops, ak8975_runtime_suspend,
ak8975_runtime_resume, NULL); ak8975_runtime_resume, NULL);
static const struct i2c_device_id ak8975_id[] = { static const struct i2c_device_id ak8975_id[] = {
{"ak8975", AK8975}, {"ak8975", (kernel_ulong_t)&ak_def_array[AK8975] },
{"ak8963", AK8963}, {"ak8963", (kernel_ulong_t)&ak_def_array[AK8963] },
{"AK8963", AK8963}, {"AK8963", (kernel_ulong_t)&ak_def_array[AK8963] },
{"ak09911", AK09911}, {"ak09911", (kernel_ulong_t)&ak_def_array[AK09911] },
{"ak09912", AK09912}, {"ak09912", (kernel_ulong_t)&ak_def_array[AK09912] },
{"ak09916", AK09916}, {"ak09916", (kernel_ulong_t)&ak_def_array[AK09916] },
{} {}
}; };
MODULE_DEVICE_TABLE(i2c, ak8975_id); MODULE_DEVICE_TABLE(i2c, ak8975_id);
static const struct of_device_id ak8975_of_match[] = { static const struct of_device_id ak8975_of_match[] = {
{ .compatible = "asahi-kasei,ak8975", }, { .compatible = "asahi-kasei,ak8975", .data = &ak_def_array[AK8975] },
{ .compatible = "ak8975", }, { .compatible = "ak8975", .data = &ak_def_array[AK8975] },
{ .compatible = "asahi-kasei,ak8963", }, { .compatible = "asahi-kasei,ak8963", .data = &ak_def_array[AK8963] },
{ .compatible = "ak8963", }, { .compatible = "ak8963", .data = &ak_def_array[AK8963] },
{ .compatible = "asahi-kasei,ak09911", }, { .compatible = "asahi-kasei,ak09911", .data = &ak_def_array[AK09911] },
{ .compatible = "ak09911", }, { .compatible = "ak09911", .data = &ak_def_array[AK09911] },
{ .compatible = "asahi-kasei,ak09912", }, { .compatible = "asahi-kasei,ak09912", .data = &ak_def_array[AK09912] },
{ .compatible = "ak09912", }, { .compatible = "ak09912", .data = &ak_def_array[AK09912] },
{ .compatible = "asahi-kasei,ak09916", }, { .compatible = "asahi-kasei,ak09916", .data = &ak_def_array[AK09916] },
{ .compatible = "ak09916", }, { .compatible = "ak09916", .data = &ak_def_array[AK09916] },
{} {}
}; };
MODULE_DEVICE_TABLE(of, ak8975_of_match); MODULE_DEVICE_TABLE(of, ak8975_of_match);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment