Commit 2b0ddc83 authored by Biju Das's avatar Biju Das Committed by Jonathan Cameron

iio: chemical: vz89x: Convert enum->pointer for data in the match tables

Convert enum->pointer for data in the match tables, so that
device_get_match_data() can do match against OF/ACPI/I2C tables, once i2c
bus type match support added to it.

Replace enum->struct *vz89x_chip_data for data in the match table. Simplify
the probe() by replacing device_get_match_data() and ID lookup for
retrieving data by i2c_get_match_data().
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/20230818190429.338065-1-biju.das.jz@bp.renesas.comSigned-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 6915f0b9
...@@ -342,19 +342,17 @@ static const struct vz89x_chip_data vz89x_chips[] = { ...@@ -342,19 +342,17 @@ static const struct vz89x_chip_data vz89x_chips[] = {
}; };
static const struct of_device_id vz89x_dt_ids[] = { static const struct of_device_id vz89x_dt_ids[] = {
{ .compatible = "sgx,vz89x", .data = (void *) VZ89X }, { .compatible = "sgx,vz89x", .data = &vz89x_chips[VZ89X] },
{ .compatible = "sgx,vz89te", .data = (void *) VZ89TE }, { .compatible = "sgx,vz89te", .data = &vz89x_chips[VZ89TE] },
{ } { }
}; };
MODULE_DEVICE_TABLE(of, vz89x_dt_ids); MODULE_DEVICE_TABLE(of, vz89x_dt_ids);
static int vz89x_probe(struct i2c_client *client) static int vz89x_probe(struct i2c_client *client)
{ {
const struct i2c_device_id *id = i2c_client_get_device_id(client);
struct device *dev = &client->dev; struct device *dev = &client->dev;
struct iio_dev *indio_dev; struct iio_dev *indio_dev;
struct vz89x_data *data; struct vz89x_data *data;
int chip_id;
indio_dev = devm_iio_device_alloc(dev, sizeof(*data)); indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
if (!indio_dev) if (!indio_dev)
...@@ -369,14 +367,10 @@ static int vz89x_probe(struct i2c_client *client) ...@@ -369,14 +367,10 @@ static int vz89x_probe(struct i2c_client *client)
else else
return -EOPNOTSUPP; return -EOPNOTSUPP;
if (!dev_fwnode(dev)) data->chip = i2c_get_match_data(client);
chip_id = id->driver_data;
else
chip_id = (unsigned long)device_get_match_data(dev);
i2c_set_clientdata(client, indio_dev); i2c_set_clientdata(client, indio_dev);
data->client = client; data->client = client;
data->chip = &vz89x_chips[chip_id];
data->last_update = jiffies - HZ; data->last_update = jiffies - HZ;
mutex_init(&data->lock); mutex_init(&data->lock);
...@@ -391,8 +385,8 @@ static int vz89x_probe(struct i2c_client *client) ...@@ -391,8 +385,8 @@ static int vz89x_probe(struct i2c_client *client)
} }
static const struct i2c_device_id vz89x_id[] = { static const struct i2c_device_id vz89x_id[] = {
{ "vz89x", VZ89X }, { "vz89x", (kernel_ulong_t)&vz89x_chips[VZ89X] },
{ "vz89te", VZ89TE }, { "vz89te", (kernel_ulong_t)&vz89x_chips[VZ89TE] },
{ } { }
}; };
MODULE_DEVICE_TABLE(i2c, vz89x_id); MODULE_DEVICE_TABLE(i2c, vz89x_id);
......
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