mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 09:34:12 +08:00
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: Biju Das <biju.das.jz@bp.renesas.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20230818190429.338065-1-biju.das.jz@bp.renesas.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
6915f0b98b
commit
2b0ddc83dc
@ -342,19 +342,17 @@ static const struct vz89x_chip_data vz89x_chips[] = {
|
||||
};
|
||||
|
||||
static const struct of_device_id vz89x_dt_ids[] = {
|
||||
{ .compatible = "sgx,vz89x", .data = (void *) VZ89X },
|
||||
{ .compatible = "sgx,vz89te", .data = (void *) VZ89TE },
|
||||
{ .compatible = "sgx,vz89x", .data = &vz89x_chips[VZ89X] },
|
||||
{ .compatible = "sgx,vz89te", .data = &vz89x_chips[VZ89TE] },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, vz89x_dt_ids);
|
||||
|
||||
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 iio_dev *indio_dev;
|
||||
struct vz89x_data *data;
|
||||
int chip_id;
|
||||
|
||||
indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
|
||||
if (!indio_dev)
|
||||
@ -369,14 +367,10 @@ static int vz89x_probe(struct i2c_client *client)
|
||||
else
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
if (!dev_fwnode(dev))
|
||||
chip_id = id->driver_data;
|
||||
else
|
||||
chip_id = (unsigned long)device_get_match_data(dev);
|
||||
data->chip = i2c_get_match_data(client);
|
||||
|
||||
i2c_set_clientdata(client, indio_dev);
|
||||
data->client = client;
|
||||
data->chip = &vz89x_chips[chip_id];
|
||||
data->last_update = jiffies - HZ;
|
||||
mutex_init(&data->lock);
|
||||
|
||||
@ -391,8 +385,8 @@ static int vz89x_probe(struct i2c_client *client)
|
||||
}
|
||||
|
||||
static const struct i2c_device_id vz89x_id[] = {
|
||||
{ "vz89x", VZ89X },
|
||||
{ "vz89te", VZ89TE },
|
||||
{ "vz89x", (kernel_ulong_t)&vz89x_chips[VZ89X] },
|
||||
{ "vz89te", (kernel_ulong_t)&vz89x_chips[VZ89TE] },
|
||||
{ }
|
||||
};
|
||||
MODULE_DEVICE_TABLE(i2c, vz89x_id);
|
||||
|
Loading…
Reference in New Issue
Block a user