On 18/07/15 13:30, Stefan Wahren wrote:
> In order to provide a channel name to in kernel consumers add the
> datasheet names for every usable AD channel. Since the channel names
> differ between i.MX23 and i.MX28, we need to separate the channel
> specs.
> 
> Signed-off-by: Stefan Wahren <stefan.wah...@i2se.com>
Good series - nice to have some cleanups and then some more meat at 
the end :)  Thanks,

Applied to the togreg branch of iio.git.
Pushed out as testing for the autobuilders to play with it.

Jonathan
> ---
>  drivers/staging/iio/adc/mxs-lradc.c |   80 
> +++++++++++++++++++++++++++--------
>  1 file changed, 62 insertions(+), 18 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/mxs-lradc.c 
> b/drivers/staging/iio/adc/mxs-lradc.c
> index 3a549ef..3f7715c 100644
> --- a/drivers/staging/iio/adc/mxs-lradc.c
> +++ b/drivers/staging/iio/adc/mxs-lradc.c
> @@ -1365,7 +1365,7 @@ static const struct iio_buffer_setup_ops 
> mxs_lradc_buffer_ops = {
>   * Driver initialization
>   */
>  
> -#define MXS_ADC_CHAN(idx, chan_type) {                               \
> +#define MXS_ADC_CHAN(idx, chan_type, name) {                 \
>       .type = (chan_type),                                    \
>       .indexed = 1,                                           \
>       .scan_index = (idx),                                    \
> @@ -1378,17 +1378,18 @@ static const struct iio_buffer_setup_ops 
> mxs_lradc_buffer_ops = {
>               .realbits = LRADC_RESOLUTION,                   \
>               .storagebits = 32,                              \
>       },                                                      \
> +     .datasheet_name = (name),                               \
>  }
>  
> -static const struct iio_chan_spec mxs_lradc_chan_spec[] = {
> -     MXS_ADC_CHAN(0, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(1, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(2, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(3, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(4, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(5, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(6, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(7, IIO_VOLTAGE),
> +static const struct iio_chan_spec mx23_lradc_chan_spec[] = {
> +     MXS_ADC_CHAN(0, IIO_VOLTAGE, "LRADC0"),
> +     MXS_ADC_CHAN(1, IIO_VOLTAGE, "LRADC1"),
> +     MXS_ADC_CHAN(2, IIO_VOLTAGE, "LRADC2"),
> +     MXS_ADC_CHAN(3, IIO_VOLTAGE, "LRADC3"),
> +     MXS_ADC_CHAN(4, IIO_VOLTAGE, "LRADC4"),
> +     MXS_ADC_CHAN(5, IIO_VOLTAGE, "LRADC5"),
> +     MXS_ADC_CHAN(6, IIO_VOLTAGE, "VDDIO"),
> +     MXS_ADC_CHAN(7, IIO_VOLTAGE, "VBATT"),
>       /* Combined Temperature sensors */
>       {
>               .type = IIO_TEMP,
> @@ -1399,6 +1400,7 @@ static const struct iio_chan_spec mxs_lradc_chan_spec[] 
> = {
>                                     BIT(IIO_CHAN_INFO_SCALE),
>               .channel = 8,
>               .scan_type = {.sign = 'u', .realbits = 18, .storagebits = 32,},
> +             .datasheet_name = "TEMP_DIE",
>       },
>       /* Hidden channel to keep indexes */
>       {
> @@ -1407,12 +1409,48 @@ static const struct iio_chan_spec 
> mxs_lradc_chan_spec[] = {
>               .scan_index = -1,
>               .channel = 9,
>       },
> -     MXS_ADC_CHAN(10, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(11, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(12, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(13, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(14, IIO_VOLTAGE),
> -     MXS_ADC_CHAN(15, IIO_VOLTAGE),
> +     MXS_ADC_CHAN(10, IIO_VOLTAGE, NULL),
> +     MXS_ADC_CHAN(11, IIO_VOLTAGE, NULL),
> +     MXS_ADC_CHAN(12, IIO_VOLTAGE, "USB_DP"),
> +     MXS_ADC_CHAN(13, IIO_VOLTAGE, "USB_DN"),
> +     MXS_ADC_CHAN(14, IIO_VOLTAGE, "VBG"),
> +     MXS_ADC_CHAN(15, IIO_VOLTAGE, "VDD5V"),
> +};
> +
> +static const struct iio_chan_spec mx28_lradc_chan_spec[] = {
> +     MXS_ADC_CHAN(0, IIO_VOLTAGE, "LRADC0"),
> +     MXS_ADC_CHAN(1, IIO_VOLTAGE, "LRADC1"),
> +     MXS_ADC_CHAN(2, IIO_VOLTAGE, "LRADC2"),
> +     MXS_ADC_CHAN(3, IIO_VOLTAGE, "LRADC3"),
> +     MXS_ADC_CHAN(4, IIO_VOLTAGE, "LRADC4"),
> +     MXS_ADC_CHAN(5, IIO_VOLTAGE, "LRADC5"),
> +     MXS_ADC_CHAN(6, IIO_VOLTAGE, "LRADC6"),
> +     MXS_ADC_CHAN(7, IIO_VOLTAGE, "VBATT"),
> +     /* Combined Temperature sensors */
> +     {
> +             .type = IIO_TEMP,
> +             .indexed = 1,
> +             .scan_index = 8,
> +             .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
> +                                   BIT(IIO_CHAN_INFO_OFFSET) |
> +                                   BIT(IIO_CHAN_INFO_SCALE),
> +             .channel = 8,
> +             .scan_type = {.sign = 'u', .realbits = 18, .storagebits = 32,},
> +             .datasheet_name = "TEMP_DIE",
> +     },
> +     /* Hidden channel to keep indexes */
> +     {
> +             .type = IIO_TEMP,
> +             .indexed = 1,
> +             .scan_index = -1,
> +             .channel = 9,
> +     },
> +     MXS_ADC_CHAN(10, IIO_VOLTAGE, "VDDIO"),
> +     MXS_ADC_CHAN(11, IIO_VOLTAGE, "VTH"),
> +     MXS_ADC_CHAN(12, IIO_VOLTAGE, "VDDA"),
> +     MXS_ADC_CHAN(13, IIO_VOLTAGE, "VDDD"),
> +     MXS_ADC_CHAN(14, IIO_VOLTAGE, "VBG"),
> +     MXS_ADC_CHAN(15, IIO_VOLTAGE, "VDD5V"),
>  };
>  
>  static int mxs_lradc_hw_init(struct mxs_lradc *lradc)
> @@ -1608,10 +1646,16 @@ static int mxs_lradc_probe(struct platform_device 
> *pdev)
>       iio->dev.parent = &pdev->dev;
>       iio->info = &mxs_lradc_iio_info;
>       iio->modes = INDIO_DIRECT_MODE;
> -     iio->channels = mxs_lradc_chan_spec;
> -     iio->num_channels = ARRAY_SIZE(mxs_lradc_chan_spec);
>       iio->masklength = LRADC_MAX_TOTAL_CHANS;
>  
> +     if (lradc->soc == IMX23_LRADC) {
> +             iio->channels = mx23_lradc_chan_spec;
> +             iio->num_channels = ARRAY_SIZE(mx23_lradc_chan_spec);
> +     } else {
> +             iio->channels = mx28_lradc_chan_spec;
> +             iio->num_channels = ARRAY_SIZE(mx28_lradc_chan_spec);
> +     }
> +
>       ret = iio_triggered_buffer_setup(iio, &iio_pollfunc_store_time,
>                               &mxs_lradc_trigger_handler,
>                               &mxs_lradc_buffer_ops);
> 

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to