iio: pressure-core: st: Allow for number of channels to vary
authorLee Jones <lee.jones@linaro.org>
Tue, 10 Sep 2013 12:49:00 +0000 (13:49 +0100)
committerJonathan Cameron <jic23@kernel.org>
Sat, 14 Sep 2013 20:17:17 +0000 (21:17 +0100)
At the moment the number of channels specified is dictated by the first
sensor supported by the driver. As we add support for more sensors this
is likely to vary. Instead of using the ARRAY_SIZE() of the LPS331AP's
channel specifier we'll use a new adaptable 'struct st_sensors' element
instead.

Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Denis Ciocca <denis.ciocca@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
drivers/iio/pressure/st_pressure_core.c
include/linux/iio/common/st_sensors.h

index 506b02d27b0a677250c8cb01dac50867cea6caa4..93bff9ba05d6515962f94a45ae5687816a085fa5 100644 (file)
@@ -107,6 +107,7 @@ static const struct st_sensors st_press_sensors[] = {
                        [0] = LPS331AP_PRESS_DEV_NAME,
                },
                .ch = (struct iio_chan_spec *)st_press_lps331ap_channels,
+               .num_ch = ARRAY_SIZE(st_press_lps331ap_channels),
                .odr = {
                        .addr = ST_PRESS_LPS331AP_ODR_ADDR,
                        .mask = ST_PRESS_LPS331AP_ODR_MASK,
@@ -245,7 +246,7 @@ int st_press_common_probe(struct iio_dev *indio_dev,
        pdata->num_data_channels = ST_PRESS_NUMBER_DATA_CHANNELS;
        pdata->multiread_bit = pdata->sensor->multi_read_bit;
        indio_dev->channels = pdata->sensor->ch;
-       indio_dev->num_channels = ARRAY_SIZE(st_press_lps331ap_channels);
+       indio_dev->num_channels = pdata->sensor->num_ch;
 
        if (pdata->sensor->fs.addr != 0)
                pdata->current_fullscale = (struct st_sensor_fullscale_avl *)
index e51f65480ea5a895828433444e0d3ec6348ca785..e732fda6c8e6443ca5e373fe24b3daef51bfed9f 100644 (file)
@@ -184,6 +184,7 @@ struct st_sensors {
        u8 wai;
        char sensors_supported[ST_SENSORS_MAX_4WAI][ST_SENSORS_MAX_NAME];
        struct iio_chan_spec *ch;
+       int num_ch;
        struct st_sensor_odr odr;
        struct st_sensor_power pw;
        struct st_sensor_axis enable_axis;