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 <[email protected]>
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
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel