On 07/01/16 15:40, Akinobu Mita wrote: > mcp320x driver supports the pseudo-differential mode by > in_voltage'IN+'-voltage'IN-'_raw where (IN+, IN-) = (0, 1), (2, 3), ... > > mcp320x chips except MCP3X01 can also select swapped IN+ and IN- > pairs in the pseudo-differential mode. > i.e. in_voltage'IN+'-voltage'IN-'_raw where (IN+, IN-) = (1, 0), > (3, 2), ... > > If the voltage level of IN+ is equal to or less than IN-, the > resultant code will be 000h. So it is useful to provide these, too. > > Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx> > Cc: Oskar Andero <oskar.andero@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 Looks good to me. Will let it sit for a while longer on the list as we have lots of time at this point in a kernel cycle (new one has just started as far as IIO is concerned) Jonathan > --- > drivers/iio/adc/mcp320x.c | 31 +++++++++++++++++++------------ > 1 file changed, 19 insertions(+), 12 deletions(-) > > diff --git a/drivers/iio/adc/mcp320x.c b/drivers/iio/adc/mcp320x.c > index 8569c8e..a9c4acd 100644 > --- a/drivers/iio/adc/mcp320x.c > +++ b/drivers/iio/adc/mcp320x.c > @@ -187,26 +187,27 @@ out: > .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) \ > } > > -#define MCP320X_VOLTAGE_CHANNEL_DIFF(num) \ > +#define MCP320X_VOLTAGE_CHANNEL_DIFF(chan1, chan2) \ > { \ > .type = IIO_VOLTAGE, \ > .indexed = 1, \ > - .channel = (num * 2), \ > - .channel2 = (num * 2 + 1), \ > - .address = (num * 2), \ > + .channel = (chan1), \ > + .channel2 = (chan2), \ > + .address = (chan1), \ > .differential = 1, \ > .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ > .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE) \ > } > > static const struct iio_chan_spec mcp3201_channels[] = { > - MCP320X_VOLTAGE_CHANNEL_DIFF(0), > + MCP320X_VOLTAGE_CHANNEL_DIFF(0, 1), > }; > > static const struct iio_chan_spec mcp3202_channels[] = { > MCP320X_VOLTAGE_CHANNEL(0), > MCP320X_VOLTAGE_CHANNEL(1), > - MCP320X_VOLTAGE_CHANNEL_DIFF(0), > + MCP320X_VOLTAGE_CHANNEL_DIFF(0, 1), > + MCP320X_VOLTAGE_CHANNEL_DIFF(1, 0), > }; > > static const struct iio_chan_spec mcp3204_channels[] = { > @@ -214,8 +215,10 @@ static const struct iio_chan_spec mcp3204_channels[] = { > MCP320X_VOLTAGE_CHANNEL(1), > MCP320X_VOLTAGE_CHANNEL(2), > MCP320X_VOLTAGE_CHANNEL(3), > - MCP320X_VOLTAGE_CHANNEL_DIFF(0), > - MCP320X_VOLTAGE_CHANNEL_DIFF(1), > + MCP320X_VOLTAGE_CHANNEL_DIFF(0, 1), > + MCP320X_VOLTAGE_CHANNEL_DIFF(1, 0), > + MCP320X_VOLTAGE_CHANNEL_DIFF(2, 3), > + MCP320X_VOLTAGE_CHANNEL_DIFF(3, 2), > }; > > static const struct iio_chan_spec mcp3208_channels[] = { > @@ -227,10 +230,14 @@ static const struct iio_chan_spec mcp3208_channels[] = { > MCP320X_VOLTAGE_CHANNEL(5), > MCP320X_VOLTAGE_CHANNEL(6), > MCP320X_VOLTAGE_CHANNEL(7), > - MCP320X_VOLTAGE_CHANNEL_DIFF(0), > - MCP320X_VOLTAGE_CHANNEL_DIFF(1), > - MCP320X_VOLTAGE_CHANNEL_DIFF(2), > - MCP320X_VOLTAGE_CHANNEL_DIFF(3), > + MCP320X_VOLTAGE_CHANNEL_DIFF(0, 1), > + MCP320X_VOLTAGE_CHANNEL_DIFF(1, 0), > + MCP320X_VOLTAGE_CHANNEL_DIFF(2, 3), > + MCP320X_VOLTAGE_CHANNEL_DIFF(3, 2), > + MCP320X_VOLTAGE_CHANNEL_DIFF(4, 5), > + MCP320X_VOLTAGE_CHANNEL_DIFF(5, 4), > + MCP320X_VOLTAGE_CHANNEL_DIFF(6, 7), > + MCP320X_VOLTAGE_CHANNEL_DIFF(7, 6), > }; > > static const struct iio_info mcp320x_info = { > -- 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