Re: [PATCH] iio: adc: mcp3422: Add support for MCP3425

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2015-12-25 7:23 GMT+09:00 Peter Meerwald-Stadler <pmeerw@xxxxxxxxxx>:
> On Fri, 25 Dec 2015, Akinobu Mita wrote:
>
>> The MCP3425 is a single channel up to 16-bit A/D converter which has
>> features:
>>
>> - On-Board Programmable Gain Amplifier (PGA):
>>  - Gains of 1, 2, 4 or 8
>> - Programmable Data Rate Options:
>>  - 15 SPS (16 bits), 60 SPS (14 bits), 240 SPS (12 bits)
>>
>> So we can support MCP3425 with a little changes to mcp3422 driver.
>
> comments below
>
>> Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx>
>> Cc: Angelo Compagnucci <angelo.compagnucci@xxxxxxxxx>
>> Cc: Jonathan Cameron <jic23@xxxxxxxxxx>
>> Cc: Hartmut Knaack <knaack.h@xxxxxx>
>> Cc: Lars-Peter Clausen <lars@xxxxxxxxxx>
>> Cc: Peter Meerwald <pmeerw@xxxxxxxxxx>
>> Cc: linux-iio@xxxxxxxxxxxxxxx
>> ---
>>  Documentation/devicetree/bindings/iio/adc/mcp3422.txt |  1 +
>>  drivers/iio/adc/Kconfig                               |  4 ++--
>>  drivers/iio/adc/mcp3422.c                             | 16 +++++++++++++---
>>  3 files changed, 16 insertions(+), 5 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/iio/adc/mcp3422.txt b/Documentation/devicetree/bindings/iio/adc/mcp3422.txt
>> index 333139c..84289bd 100644
>> --- a/Documentation/devicetree/bindings/iio/adc/mcp3422.txt
>> +++ b/Documentation/devicetree/bindings/iio/adc/mcp3422.txt
>> @@ -5,6 +5,7 @@ Required properties:
>>       "microchip,mcp3422" or
>>       "microchip,mcp3423" or
>>       "microchip,mcp3424" or
>> +     "microchip,mcp3425" or
>>       "microchip,mcp3426" or
>>       "microchip,mcp3427" or
>>       "microchip,mcp3428"
>> diff --git a/drivers/iio/adc/Kconfig b/drivers/iio/adc/Kconfig
>> index 7868c74..e4b1de9 100644
>> --- a/drivers/iio/adc/Kconfig
>> +++ b/drivers/iio/adc/Kconfig
>> @@ -246,11 +246,11 @@ config MCP320X
>>         called mcp320x.
>>
>>  config MCP3422
>> -     tristate "Microchip Technology MCP3422/3/4/6/7/8 driver"
>> +     tristate "Microchip Technology MCP3422/3/4/5/6/7/8 driver"
>>       depends on I2C
>>       help
>>         Say yes here to build support for Microchip Technology's
>> -       MCP3422, MCP3423, MCP3424, MCP3426, MCP3427 or MCP3428
>> +       MCP3422, MCP3423, MCP3424, MCP3425, MCP3426, MCP3427 or MCP3428
>>         analog to digital converters.
>>
>>         This driver can also be built as a module. If so, the module will be
>> diff --git a/drivers/iio/adc/mcp3422.c b/drivers/iio/adc/mcp3422.c
>> index 3555122..ba0c3ad 100644
>> --- a/drivers/iio/adc/mcp3422.c
>> +++ b/drivers/iio/adc/mcp3422.c
>> @@ -1,11 +1,12 @@
>>  /*
>> - * mcp3422.c - driver for the Microchip mcp3422/3/4/6/7/8 chip family
>> + * mcp3422.c - driver for the Microchip mcp3422/3/4/5/6/7/8 chip family
>>   *
>>   * Copyright (C) 2013, Angelo Compagnucci
>>   * Author: Angelo Compagnucci <angelo.compagnucci@xxxxxxxxx>
>>   *
>>   * Datasheet: http://ww1.microchip.com/downloads/en/devicedoc/22088b.pdf
>>   *            http://ww1.microchip.com/downloads/en/DeviceDoc/22226a.pdf
>> + *            http://ww1.microchip.com/downloads/en/DeviceDoc/22072b.pdf
>>   *
>>   * This driver exports the value of analog input voltage to sysfs, the
>>   * voltage unit is nV.
>> @@ -317,6 +318,10 @@ static const struct iio_chan_spec mcp3424_channels[] = {
>>       MCP3422_CHAN(3),
>>  };
>>
>> +static const struct iio_chan_spec mcp3425_channels[] = {
>> +     MCP3422_CHAN(0),
>> +};
>
> I think the idea is to reuse mcp3421_channels also for mcp3425 (both have
> just one channel), so the above struct is not needed

You are right.  I didn't noticed another single channel variant is
supported in iio.git.

>  +
>>  static const struct iio_info mcp3422_info = {
>>       .read_raw = mcp3422_read_raw,
>>       .write_raw = mcp3422_write_raw,
>> @@ -352,6 +357,10 @@ static int mcp3422_probe(struct i2c_client *client,
>>       indio_dev->info = &mcp3422_info;
>>
>>       switch (adc->id) {
>> +     case 5:
>> +             indio_dev->channels = mcp3425_channels;
>> +             indio_dev->num_channels = ARRAY_SIZE(mcp3425_channels);
>> +             break;
>
> just do
> case 1:
> case 5:
>                 indio_dev->channels = mcp3421_channels;
>                 indio_dev->num_channels = ARRAY_SIZE(mcp3421_channels);
>                 break;
>

OK.

>>       case 2:
>>       case 3:
>>       case 6:
>> @@ -368,7 +377,7 @@ static int mcp3422_probe(struct i2c_client *client,
>>
>>       /* meaningful default configuration */
>>       config = (MCP3422_CONT_SAMPLING
>> -             | MCP3422_CHANNEL_VALUE(1)
>> +             | MCP3422_CHANNEL_VALUE(0)
>
> why is the default behaviour changed? this should go in a separate patch
> together with justification

adc->confing for mcp3422 driver is just used as cache for recently
accessed channel's configuration which is get updated when another
channel is accessed.  So I think this doesn't cause user visible
change but I agree this change should go in a separate patch.

> is MCP3422_CHANNEL_VALUE(1) correct for the mcp3421? maybe this would be a
> bugfix rather...

This field is just no effect for the single channel devices and
this doesn't cause problem but someone who read this code may
confuse a little.

>>               | MCP3422_PGA_VALUE(MCP3422_PGA_1)
>>               | MCP3422_SAMPLE_RATE_VALUE(MCP3422_SRATE_240));
>>       mcp3422_update_config(adc, config);
>> @@ -386,6 +395,7 @@ static const struct i2c_device_id mcp3422_id[] = {
>>       { "mcp3422", 2 },
>>       { "mcp3423", 3 },
>>       { "mcp3424", 4 },
>> +     { "mcp3425", 5 },
>>       { "mcp3426", 6 },
>>       { "mcp3427", 7 },
>>       { "mcp3428", 8 },
>> @@ -412,5 +422,5 @@ static struct i2c_driver mcp3422_driver = {
>>  module_i2c_driver(mcp3422_driver);
>>
>>  MODULE_AUTHOR("Angelo Compagnucci <angelo.compagnucci@xxxxxxxxx>");
>> -MODULE_DESCRIPTION("Microchip mcp3422/3/4/6/7/8 driver");
>> +MODULE_DESCRIPTION("Microchip mcp3422/3/4/5/6/7/8 driver");
>>  MODULE_LICENSE("GPL v2");
>>
>
> --
>
> Peter Meerwald-Stadler
> +43-664-2444418 (mobile)
--
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



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux