On 14/09/14 20:20, Jonathan Cameron wrote: > On 19/08/14 23:43, Peter Meerwald wrote: >> Signed-off-by: Peter Meerwald <pmeerw@xxxxxxxxxx> >> Cc: Oleksandr Kravchenko <o.v.kravchenko@xxxxxxxxxxxxxxx> > applied Actually - one minor fixlet. >> --- >> drivers/iio/accel/bma180.c | 41 ++++++++++++++++++++++++++++++++--------- >> 1 file changed, 32 insertions(+), 9 deletions(-) >> >> diff --git a/drivers/iio/accel/bma180.c b/drivers/iio/accel/bma180.c >> index 5838318..fc7c7b8 100644 >> --- a/drivers/iio/accel/bma180.c >> +++ b/drivers/iio/accel/bma180.c >> @@ -26,6 +26,19 @@ >> #define BMA180_DRV_NAME "bma180" >> #define BMA180_IRQ_NAME "bma180_event" >> >> +enum { >> + BMA180, >> +}; >> + >> +struct bma180_part_info { >> + const struct iio_chan_spec *channels; >> + unsigned num_channels; >> + const int *scale_table; >> + unsigned num_scales; >> + const int *bw_table; >> + unsigned num_bw; >> +}; >> + >> /* Register set */ >> #define BMA180_CHIP_ID 0x00 /* Need to distinguish BMA180 from other */ >> #define BMA180_ACC_X_LSB 0x02 /* First of 6 registers of accel data */ >> @@ -77,6 +90,7 @@ >> struct bma180_data { >> struct i2c_client *client; >> struct iio_trigger *trig; >> + const struct bma180_part_info *part_info; >> struct mutex mutex; >> bool sleep_state; >> int scale; >> @@ -193,8 +207,8 @@ static int bma180_set_bw(struct bma180_data *data, int val) >> if (data->sleep_state) >> return -EBUSY; >> >> - for (i = 0; i < ARRAY_SIZE(bma180_bw_table); ++i) { >> - if (bma180_bw_table[i] == val) { >> + for (i = 0; i < data->part_info->num_bw; ++i) { >> + if (data->part_info->bw_table[i] == val) { >> ret = bma180_set_bits(data, >> BMA180_BW_TCS, BMA180_BW, i); >> if (ret) { >> @@ -217,8 +231,8 @@ static int bma180_set_scale(struct bma180_data *data, int val) >> if (data->sleep_state) >> return -EBUSY; >> >> - for (i = 0; i < ARRAY_SIZE(bma180_scale_table); ++i) >> - if (bma180_scale_table[i] == val) { >> + for (i = 0; i < data->part_info->num_scales; ++i) >> + if (data->part_info->scale_table[i] == val) { >> ret = bma180_set_bits(data, >> BMA180_OFFSET_LSB1, BMA180_RANGE, i); >> if (ret) { >> @@ -488,6 +502,14 @@ static const struct iio_chan_spec bma180_channels[] = { >> IIO_CHAN_SOFT_TIMESTAMP(4), >> }; >> >> +static const struct bma180_part_info bma180_part_info[] = { >> + [BMA180] = { >> + bma180_channels, ARRAY_SIZE(bma180_channels), >> + bma180_scale_table, ARRAY_SIZE(bma180_scale_table), >> + bma180_bw_table, ARRAY_SIZE(bma180_bw_table), >> + }, >> +}; >> + >> static irqreturn_t bma180_trigger_handler(int irq, void *p) >> { >> struct iio_poll_func *pf = p; >> @@ -554,6 +576,7 @@ static int bma180_probe(struct i2c_client *client, >> data = iio_priv(indio_dev); >> i2c_set_clientdata(client, indio_dev); >> data->client = client; >> + data->part_info = &bma180_part_info[id->driver_data]; >> >> ret = bma180_chip_init(data); >> if (ret < 0) >> @@ -562,8 +585,8 @@ static int bma180_probe(struct i2c_client *client, >> mutex_init(&data->mutex); >> >> indio_dev->dev.parent = &client->dev; >> - indio_dev->channels = bma180_channels; >> - indio_dev->num_channels = ARRAY_SIZE(bma180_channels); >> + indio_dev->channels = data->part_info->channels; >> + indio_dev->num_channels = data->part_info->num_channels; >> indio_dev->name = BMA180_DRV_NAME; >> indio_dev->modes = INDIO_DIRECT_MODE; >> indio_dev->info = &bma180_info; >> @@ -674,8 +697,8 @@ static SIMPLE_DEV_PM_OPS(bma180_pm_ops, bma180_suspend, bma180_resume); >> #define BMA180_PM_OPS NULL >> #endif >> >> -static struct i2c_device_id bma180_id[] = { >> - { BMA180_DRV_NAME, 0 }, >> +static struct i2c_device_id bma180_ids[] = { >> + { BMA180_DRV_NAME, BMA180 }, >> { } >> }; You didn't update the module_device_id reference to bma180_id. Fixed up in tree. >> >> @@ -689,7 +712,7 @@ static struct i2c_driver bma180_driver = { >> }, >> .probe = bma180_probe, >> .remove = bma180_remove, >> - .id_table = bma180_id, >> + .id_table = bma180_ids, >> }; >> >> module_i2c_driver(bma180_driver); >> > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html