Commit fe11e389 authored by Biju Das's avatar Biju Das Committed by Jonathan Cameron

iio: accel: bma180: Convert enum->pointer for data in the match table

Convert enum->pointer for data in the match table, 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 *bma180_part_info for data in the match table and
simplify bma180_probe().
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/20230812141044.151520-1-biju.das.jz@bp.renesas.comSigned-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 9f6001e3
...@@ -926,7 +926,6 @@ static int bma180_probe(struct i2c_client *client) ...@@ -926,7 +926,6 @@ static int bma180_probe(struct i2c_client *client)
struct device *dev = &client->dev; struct device *dev = &client->dev;
struct bma180_data *data; struct bma180_data *data;
struct iio_dev *indio_dev; struct iio_dev *indio_dev;
enum chip_ids chip;
int ret; int ret;
indio_dev = devm_iio_device_alloc(dev, sizeof(*data)); indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
...@@ -936,11 +935,7 @@ static int bma180_probe(struct i2c_client *client) ...@@ -936,11 +935,7 @@ static int bma180_probe(struct i2c_client *client)
data = iio_priv(indio_dev); data = iio_priv(indio_dev);
i2c_set_clientdata(client, indio_dev); i2c_set_clientdata(client, indio_dev);
data->client = client; data->client = client;
if (client->dev.of_node) data->part_info = i2c_get_match_data(client);
chip = (uintptr_t)of_device_get_match_data(dev);
else
chip = id->driver_data;
data->part_info = &bma180_part_info[chip];
ret = iio_read_mount_matrix(dev, &data->orientation); ret = iio_read_mount_matrix(dev, &data->orientation);
if (ret) if (ret)
...@@ -1092,11 +1087,11 @@ static int bma180_resume(struct device *dev) ...@@ -1092,11 +1087,11 @@ static int bma180_resume(struct device *dev)
static DEFINE_SIMPLE_DEV_PM_OPS(bma180_pm_ops, bma180_suspend, bma180_resume); static DEFINE_SIMPLE_DEV_PM_OPS(bma180_pm_ops, bma180_suspend, bma180_resume);
static const struct i2c_device_id bma180_ids[] = { static const struct i2c_device_id bma180_ids[] = {
{ "bma023", BMA023 }, { "bma023", (kernel_ulong_t)&bma180_part_info[BMA023] },
{ "bma150", BMA150 }, { "bma150", (kernel_ulong_t)&bma180_part_info[BMA150] },
{ "bma180", BMA180 }, { "bma180", (kernel_ulong_t)&bma180_part_info[BMA180] },
{ "bma250", BMA250 }, { "bma250", (kernel_ulong_t)&bma180_part_info[BMA250] },
{ "smb380", BMA150 }, { "smb380", (kernel_ulong_t)&bma180_part_info[BMA150] },
{ } { }
}; };
...@@ -1105,23 +1100,23 @@ MODULE_DEVICE_TABLE(i2c, bma180_ids); ...@@ -1105,23 +1100,23 @@ MODULE_DEVICE_TABLE(i2c, bma180_ids);
static const struct of_device_id bma180_of_match[] = { static const struct of_device_id bma180_of_match[] = {
{ {
.compatible = "bosch,bma023", .compatible = "bosch,bma023",
.data = (void *)BMA023 .data = &bma180_part_info[BMA023]
}, },
{ {
.compatible = "bosch,bma150", .compatible = "bosch,bma150",
.data = (void *)BMA150 .data = &bma180_part_info[BMA150]
}, },
{ {
.compatible = "bosch,bma180", .compatible = "bosch,bma180",
.data = (void *)BMA180 .data = &bma180_part_info[BMA180]
}, },
{ {
.compatible = "bosch,bma250", .compatible = "bosch,bma250",
.data = (void *)BMA250 .data = &bma180_part_info[BMA250]
}, },
{ {
.compatible = "bosch,smb380", .compatible = "bosch,smb380",
.data = (void *)BMA150 .data = &bma180_part_info[BMA150]
}, },
{ } { }
}; };
......
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