* [PATCH v5 0/2] Driver for Microchip digital potentiometers
@ 2015-09-23 11:57 Peter Rosin
2015-09-23 11:57 ` [PATCH v5 1/2] iio: resistance: Document that resistance can be output Peter Rosin
2015-09-23 11:57 ` [PATCH v5 2/2] iio: mcp4531: Driver for Microchip digital potentiometers Peter Rosin
0 siblings, 2 replies; 4+ messages in thread
From: Peter Rosin @ 2015-09-23 11:57 UTC (permalink / raw)
To: linux-iio
Cc: Peter Rosin, Crt Mori, Daniel Baluta, Andreas Dannenberg,
Greg Kroah-Hartman, Jonathan Cameron, Hartmut Knaack,
Lars-Peter Clausen, Peter Meerwald, Peter Rosin, linux-kernel
From: Peter Rosin <peda@axentia.se>
This is the fifth attempt for a driver for these chips.
Thanks for review comments from Greg Kroah-Hartman, Crt Mori,
Daniel Baluta, Lars-Peter Clauson, Andreas Dannenberg, Peter
Meerwald and Jonathan Cameron. I think and hope I got it all sorted.
Changes since v4:
- Less convoluted changelog (Jonathan)
- Use an index into an array of configs as dev_id (Jonathan)
- Drop .address and use .channel (Jonathan)
- Remove one layer of wrappers (Jonathan)
- Provide a scale (Jonathan, Lars-Peter)
Changes since v3:
- Use i2c_smbus_read_word_swapped (Peter)
- Use devm_iio_device_register and drop the mcp4531_remove op (Peter)
- Add defines for a few magic numbers (Peter)
- Deduplicate channel params with a macro (Peter)
- Mention the i2c client address options (Peter)
- Whitespace and other trivial nits (Peter)
Changes since v2:
- Change naming from mcp4xxx_dpot to mcp4531 (Daniel)
- Added links to datasheet in commit message and source (Daniel)
- Rename from pot to potentiometer (Daniel, Crt)
- Use IIO_RESISTANCE instead of IIO_STEPS (Crt, Lars-Peter)
- Don't use wildcards in MAINTAINERS and point to the iio list (Crt)
- Avoid races by not caching values (Crt)
- Spell Microchip correctly (Andreas)
Changes since v1:
- Make it an IIO driver instead (Greg)
- Don't convolute the code with big obscure macros (Greg)
- Inline the bits from mcp4xxx_dpot.h that are actually used
and drop that file (me)
- Better Changelog (Greg)
Cheers,
Peter
Peter Rosin (2):
iio: resistance: Document that resistance can be output
iio: mcp4531: Driver for Microchip digital potentiometers
Documentation/ABI/testing/sysfs-bus-iio | 2 +
MAINTAINERS | 6 +
drivers/iio/Kconfig | 1 +
drivers/iio/Makefile | 1 +
drivers/iio/potentiometer/Kconfig | 20 +++
drivers/iio/potentiometer/Makefile | 6 +
drivers/iio/potentiometer/mcp4531.c | 228 +++++++++++++++++++++++++++++++
7 files changed, 264 insertions(+)
create mode 100644 drivers/iio/potentiometer/Kconfig
create mode 100644 drivers/iio/potentiometer/Makefile
create mode 100644 drivers/iio/potentiometer/mcp4531.c
--
1.7.10.4
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v5 1/2] iio: resistance: Document that resistance can be output
2015-09-23 11:57 [PATCH v5 0/2] Driver for Microchip digital potentiometers Peter Rosin
@ 2015-09-23 11:57 ` Peter Rosin
2015-09-23 11:57 ` [PATCH v5 2/2] iio: mcp4531: Driver for Microchip digital potentiometers Peter Rosin
1 sibling, 0 replies; 4+ messages in thread
From: Peter Rosin @ 2015-09-23 11:57 UTC (permalink / raw)
To: linux-iio
Cc: Peter Rosin, Crt Mori, Daniel Baluta, Andreas Dannenberg,
Greg Kroah-Hartman, Jonathan Cameron, Hartmut Knaack,
Lars-Peter Clausen, Peter Meerwald, Peter Rosin, linux-kernel
From: Peter Rosin <peda@axentia.se>
Signed-off-by: Peter Rosin <peda@axentia.se>
---
Documentation/ABI/testing/sysfs-bus-iio | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
index 9398484196c4..2eea468f704d 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -1475,6 +1475,8 @@ Description:
What: /sys/bus/iio/devices/iio:deviceX/in_resistance_raw
What: /sys/bus/iio/devices/iio:deviceX/in_resistanceX_raw
+What: /sys/bus/iio/devices/iio:deviceX/out_resistance_raw
+What: /sys/bus/iio/devices/iio:deviceX/out_resistanceX_raw
KernelVersion: 4.3
Contact: linux-iio@vger.kernel.org
Description:
--
1.7.10.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v5 2/2] iio: mcp4531: Driver for Microchip digital potentiometers
2015-09-23 11:57 [PATCH v5 0/2] Driver for Microchip digital potentiometers Peter Rosin
2015-09-23 11:57 ` [PATCH v5 1/2] iio: resistance: Document that resistance can be output Peter Rosin
@ 2015-09-23 11:57 ` Peter Rosin
2015-09-23 13:28 ` Lars-Peter Clausen
1 sibling, 1 reply; 4+ messages in thread
From: Peter Rosin @ 2015-09-23 11:57 UTC (permalink / raw)
To: linux-iio
Cc: Peter Rosin, Crt Mori, Daniel Baluta, Andreas Dannenberg,
Greg Kroah-Hartman, Jonathan Cameron, Hartmut Knaack,
Lars-Peter Clausen, Peter Meerwald, Peter Rosin, linux-kernel
From: Peter Rosin <peda@axentia.se>
Add support for Microchip digital potentiometers and rheostats
MCP4531, MCP4532, MCP4551, MCP4552
MCP4631, MCP4632, MCP4651, MCP4652
DEVICE Wipers Steps Resistor Opts (kOhm) i2c address
MCP4531 1 129 5, 10, 50, 100 010111x
MCP4532 1 129 5, 10, 50, 100 01011xx
MCP4551 1 257 5, 10, 50, 100 010111x
MCP4552 1 257 5, 10, 50, 100 01011xx
MCP4631 2 129 5, 10, 50, 100 0101xxx
MCP4632 2 129 5, 10, 50, 100 01011xx
MCP4651 2 257 5, 10, 50, 100 0101xxx
MCP4652 2 257 5, 10, 50, 100 01011xx
Datasheet: http://www.microchip.com/downloads/en/DeviceDoc/22096b.pdf
Signed-off-by: Peter Rosin <peda@axentia.se>
---
MAINTAINERS | 6 +
drivers/iio/Kconfig | 1 +
drivers/iio/Makefile | 1 +
drivers/iio/potentiometer/Kconfig | 20 +++
drivers/iio/potentiometer/Makefile | 6 +
drivers/iio/potentiometer/mcp4531.c | 228 +++++++++++++++++++++++++++++++++++
6 files changed, 262 insertions(+)
create mode 100644 drivers/iio/potentiometer/Kconfig
create mode 100644 drivers/iio/potentiometer/Makefile
create mode 100644 drivers/iio/potentiometer/mcp4531.c
diff --git a/MAINTAINERS b/MAINTAINERS
index b60e2b2369d2..27862156c7a7 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -6600,6 +6600,12 @@ W: http://linuxtv.org
S: Maintained
F: drivers/media/radio/radio-maxiradio*
+MCP4531 MICROCHIP DIGITAL POTENTIOMETER DRIVER
+M: Peter Rosin <peda@axentia.se>
+L: linux-iio@vger.kernel.org
+S: Maintained
+F: drivers/iio/potentiometer/mcp4531.c
+
MEDIA DRIVERS FOR RENESAS - VSP1
M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
L: linux-media@vger.kernel.org
diff --git a/drivers/iio/Kconfig b/drivers/iio/Kconfig
index 4011effe4c05..7cc87f322655 100644
--- a/drivers/iio/Kconfig
+++ b/drivers/iio/Kconfig
@@ -73,6 +73,7 @@ source "drivers/iio/orientation/Kconfig"
if IIO_TRIGGER
source "drivers/iio/trigger/Kconfig"
endif #IIO_TRIGGER
+source "drivers/iio/potentiometer/Kconfig"
source "drivers/iio/pressure/Kconfig"
source "drivers/iio/proximity/Kconfig"
source "drivers/iio/temperature/Kconfig"
diff --git a/drivers/iio/Makefile b/drivers/iio/Makefile
index 698afc2d17ce..121c814e366b 100644
--- a/drivers/iio/Makefile
+++ b/drivers/iio/Makefile
@@ -23,6 +23,7 @@ obj-y += imu/
obj-y += light/
obj-y += magnetometer/
obj-y += orientation/
+obj-y += potentiometer/
obj-y += pressure/
obj-y += proximity/
obj-y += temperature/
diff --git a/drivers/iio/potentiometer/Kconfig b/drivers/iio/potentiometer/Kconfig
new file mode 100644
index 000000000000..fd75db73e582
--- /dev/null
+++ b/drivers/iio/potentiometer/Kconfig
@@ -0,0 +1,20 @@
+#
+# Potentiometer drivers
+#
+# When adding new entries keep the list in alphabetical order
+
+menu "Digital potentiometers"
+
+config MCP4531
+ tristate "Microchip MCP45xx/MCP46xx Digital Potentiometer driver"
+ depends on I2C
+ help
+ Say yes here to build support for the Microchip
+ MCP4531, MCP4532, MCP4551, MCP4552,
+ MCP4631, MCP4632, MCP4651, MCP4652
+ digital potentiomenter chips.
+
+ To compile this driver as a module, choose M here: the
+ module will be called mcp4531.
+
+endmenu
diff --git a/drivers/iio/potentiometer/Makefile b/drivers/iio/potentiometer/Makefile
new file mode 100644
index 000000000000..8afe49227012
--- /dev/null
+++ b/drivers/iio/potentiometer/Makefile
@@ -0,0 +1,6 @@
+#
+# Makefile for industrial I/O potentiometer drivers
+#
+
+# When adding new entries keep the list in alphabetical order
+obj-$(CONFIG_MCP4531) += mcp4531.o
diff --git a/drivers/iio/potentiometer/mcp4531.c b/drivers/iio/potentiometer/mcp4531.c
new file mode 100644
index 000000000000..82c24c6dcde0
--- /dev/null
+++ b/drivers/iio/potentiometer/mcp4531.c
@@ -0,0 +1,228 @@
+/*
+ * Industrial I/O driver for Microchip digital potentiometers
+ * Copyright (c) 2015 Axentia Technologies AB
+ * Author: Peter Rosin <peda@axentia.se>
+ *
+ * Datasheet: http://www.microchip.com/downloads/en/DeviceDoc/22096b.pdf
+ *
+ * DEVID #Wipers #Positions Resistor Opts (kOhm) i2c address
+ * mcp4531 1 129 5, 10, 50, 100 010111x
+ * mcp4532 1 129 5, 10, 50, 100 01011xx
+ * mcp4551 1 257 5, 10, 50, 100 010111x
+ * mcp4552 1 257 5, 10, 50, 100 01011xx
+ * mcp4631 2 129 5, 10, 50, 100 0101xxx
+ * mcp4632 2 129 5, 10, 50, 100 01011xx
+ * mcp4651 2 257 5, 10, 50, 100 0101xxx
+ * mcp4652 2 257 5, 10, 50, 100 01011xx
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 as published by
+ * the Free Software Foundation.
+ */
+
+#include <linux/module.h>
+#include <linux/i2c.h>
+#include <linux/err.h>
+
+#include <linux/iio/iio.h>
+
+struct mcp4531_cfg {
+ int wipers;
+ int max_pos;
+ int kohms;
+};
+
+static const struct mcp4531_cfg mcp4531_cfg[] = {
+ { /* MCP4531-502 */ .wipers = 1, .max_pos = 128, .kohms = 5, },
+ { /* MCP4531-103 */ .wipers = 1, .max_pos = 128, .kohms = 10, },
+ { /* MCP4531-503 */ .wipers = 1, .max_pos = 128, .kohms = 50, },
+ { /* MCP4531-104 */ .wipers = 1, .max_pos = 128, .kohms = 100, },
+ { /* MCP4532-502 */ .wipers = 1, .max_pos = 128, .kohms = 5, },
+ { /* MCP4532-103 */ .wipers = 1, .max_pos = 128, .kohms = 10, },
+ { /* MCP4532-503 */ .wipers = 1, .max_pos = 128, .kohms = 50, },
+ { /* MCP4532-104 */ .wipers = 1, .max_pos = 128, .kohms = 100, },
+ { /* MCP4551-502 */ .wipers = 1, .max_pos = 256, .kohms = 5, },
+ { /* MCP4551-103 */ .wipers = 1, .max_pos = 256, .kohms = 10, },
+ { /* MCP4551-503 */ .wipers = 1, .max_pos = 256, .kohms = 50, },
+ { /* MCP4551-104 */ .wipers = 1, .max_pos = 256, .kohms = 100, },
+ { /* MCP4552-502 */ .wipers = 1, .max_pos = 256, .kohms = 5, },
+ { /* MCP4552-103 */ .wipers = 1, .max_pos = 256, .kohms = 10, },
+ { /* MCP4552-503 */ .wipers = 1, .max_pos = 256, .kohms = 50, },
+ { /* MCP4552-104 */ .wipers = 1, .max_pos = 256, .kohms = 100, },
+ { /* MCP4631-502 */ .wipers = 2, .max_pos = 128, .kohms = 5, },
+ { /* MCP4631-103 */ .wipers = 2, .max_pos = 128, .kohms = 10, },
+ { /* MCP4631-503 */ .wipers = 2, .max_pos = 128, .kohms = 50, },
+ { /* MCP4631-104 */ .wipers = 2, .max_pos = 128, .kohms = 100, },
+ { /* MCP4632-502 */ .wipers = 2, .max_pos = 128, .kohms = 5, },
+ { /* MCP4632-103 */ .wipers = 2, .max_pos = 128, .kohms = 10, },
+ { /* MCP4632-503 */ .wipers = 2, .max_pos = 128, .kohms = 50, },
+ { /* MCP4632-104 */ .wipers = 2, .max_pos = 128, .kohms = 100, },
+ { /* MCP4651-502 */ .wipers = 2, .max_pos = 256, .kohms = 5, },
+ { /* MCP4651-103 */ .wipers = 2, .max_pos = 256, .kohms = 10, },
+ { /* MCP4651-503 */ .wipers = 2, .max_pos = 256, .kohms = 50, },
+ { /* MCP4651-104 */ .wipers = 2, .max_pos = 256, .kohms = 100, },
+ { /* MCP4652-502 */ .wipers = 2, .max_pos = 256, .kohms = 5, },
+ { /* MCP4652-103 */ .wipers = 2, .max_pos = 256, .kohms = 10, },
+ { /* MCP4652-503 */ .wipers = 2, .max_pos = 256, .kohms = 50, },
+ { /* MCP4652-104 */ .wipers = 2, .max_pos = 256, .kohms = 100, },
+};
+
+#define MCP4531_WRITE (0 << 2)
+#define MCP4531_INCR (1 << 2)
+#define MCP4531_DECR (2 << 2)
+#define MCP4531_READ (3 << 2)
+
+#define MCP4531_WIPER_SHIFT (4)
+
+struct mcp4531_data {
+ struct i2c_client *client;
+ unsigned long devid;
+};
+
+#define MCP4531_CHANNEL(ch) { \
+ .type = IIO_RESISTANCE, \
+ .indexed = 1, \
+ .output = 1, \
+ .channel = (ch), \
+ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \
+ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
+}
+
+static const struct iio_chan_spec mcp4531_channels[] = {
+ MCP4531_CHANNEL(0),
+ MCP4531_CHANNEL(1),
+};
+
+static int mcp4531_read_raw(struct iio_dev *indio_dev,
+ struct iio_chan_spec const *chan,
+ int *val, int *val2, long mask)
+{
+ struct mcp4531_data *data = iio_priv(indio_dev);
+ int address = chan->channel << MCP4531_WIPER_SHIFT;
+ s32 ret;
+
+ switch (mask) {
+ case IIO_CHAN_INFO_RAW:
+ ret = i2c_smbus_read_word_swapped(data->client,
+ MCP4531_READ | address);
+ if (ret < 0)
+ return ret;
+ *val = ret;
+ return IIO_VAL_INT;
+ case IIO_CHAN_INFO_SCALE:
+ *val = 1000 * mcp4531_cfg[data->devid].kohms;
+ *val2 = mcp4531_cfg[data->devid].max_pos;
+ return IIO_VAL_FRACTIONAL;
+ }
+
+ return -EINVAL;
+}
+
+static int mcp4531_write_raw(struct iio_dev *indio_dev,
+ struct iio_chan_spec const *chan,
+ int val, int val2, long mask)
+{
+ struct mcp4531_data *data = iio_priv(indio_dev);
+ int address = chan->channel << MCP4531_WIPER_SHIFT;
+
+ switch (mask) {
+ case IIO_CHAN_INFO_RAW:
+ if (val > mcp4531_cfg[data->devid].max_pos || val < 0)
+ return -EINVAL;
+ break;
+ default:
+ return -EINVAL;
+ }
+
+ return i2c_smbus_write_byte_data(data->client,
+ MCP4531_WRITE | address | (val >> 8),
+ val & 0xff);
+}
+
+static const struct iio_info mcp4531_info = {
+ .read_raw = mcp4531_read_raw,
+ .write_raw = mcp4531_write_raw,
+ .driver_module = THIS_MODULE,
+};
+
+static int mcp4531_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct device *dev = &client->dev;
+ unsigned long devid = id->driver_data;
+ struct mcp4531_data *data;
+ struct iio_dev *indio_dev;
+
+ if (!i2c_check_functionality(client->adapter,
+ I2C_FUNC_SMBUS_WORD_DATA)) {
+ dev_err(dev, "SMBUS Word Data not supported\n");
+ return -EIO;
+ }
+
+ indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
+ if (!indio_dev)
+ return -ENOMEM;
+ data = iio_priv(indio_dev);
+ i2c_set_clientdata(client, indio_dev);
+ data->client = client;
+ data->devid = devid;
+
+ indio_dev->dev.parent = dev;
+ indio_dev->info = &mcp4531_info;
+ indio_dev->channels = mcp4531_channels;
+ indio_dev->num_channels = mcp4531_cfg[devid].wipers;
+ indio_dev->name = client->name;
+
+ return devm_iio_device_register(dev, indio_dev);
+}
+
+static const struct i2c_device_id mcp4531_id[] = {
+ { "mcp4531-502", 0 },
+ { "mcp4531-103", 1 },
+ { "mcp4531-503", 2 },
+ { "mcp4531-104", 3 },
+ { "mcp4532-502", 4 },
+ { "mcp4532-103", 5 },
+ { "mcp4532-503", 6 },
+ { "mcp4532-104", 7 },
+ { "mcp4551-502", 8 },
+ { "mcp4551-103", 9 },
+ { "mcp4551-503", 10 },
+ { "mcp4551-104", 11 },
+ { "mcp4552-502", 12 },
+ { "mcp4552-103", 13 },
+ { "mcp4552-503", 14 },
+ { "mcp4552-104", 15 },
+ { "mcp4631-502", 16 },
+ { "mcp4631-103", 17 },
+ { "mcp4631-503", 18 },
+ { "mcp4631-104", 19 },
+ { "mcp4632-502", 20 },
+ { "mcp4632-103", 21 },
+ { "mcp4632-503", 22 },
+ { "mcp4632-104", 23 },
+ { "mcp4651-502", 24 },
+ { "mcp4651-103", 25 },
+ { "mcp4651-503", 26 },
+ { "mcp4651-104", 27 },
+ { "mcp4652-502", 28 },
+ { "mcp4652-103", 29 },
+ { "mcp4652-503", 30 },
+ { "mcp4652-104", 31 },
+ {}
+};
+MODULE_DEVICE_TABLE(i2c, mcp4531_id);
+
+static struct i2c_driver mcp4531_driver = {
+ .driver = {
+ .name = "mcp4531",
+ },
+ .probe = mcp4531_probe,
+ .id_table = mcp4531_id,
+};
+
+module_i2c_driver(mcp4531_driver);
+
+MODULE_AUTHOR("Peter Rosin <peda@axentia.se>");
+MODULE_DESCRIPTION("MCP4531 digital potentiometer");
+MODULE_LICENSE("GPL");
--
1.7.10.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v5 2/2] iio: mcp4531: Driver for Microchip digital potentiometers
2015-09-23 11:57 ` [PATCH v5 2/2] iio: mcp4531: Driver for Microchip digital potentiometers Peter Rosin
@ 2015-09-23 13:28 ` Lars-Peter Clausen
0 siblings, 0 replies; 4+ messages in thread
From: Lars-Peter Clausen @ 2015-09-23 13:28 UTC (permalink / raw)
To: Peter Rosin, linux-iio
Cc: Peter Rosin, Crt Mori, Daniel Baluta, Andreas Dannenberg,
Greg Kroah-Hartman, Jonathan Cameron, Hartmut Knaack,
Peter Meerwald, linux-kernel
On 09/23/2015 01:57 PM, Peter Rosin wrote:
[...]
Looks pretty good.
One thing I'm concerned about is that this array
> +static const struct mcp4531_cfg mcp4531_cfg[] = {
> + { /* MCP4531-502 */ .wipers = 1, .max_pos = 128, .kohms = 5, },
> + { /* MCP4531-103 */ .wipers = 1, .max_pos = 128, .kohms = 10, },
> + { /* MCP4531-503 */ .wipers = 1, .max_pos = 128, .kohms = 50, },
> + { /* MCP4531-104 */ .wipers = 1, .max_pos = 128, .kohms = 100, },
[...]
> +};
> +
And the indices into the array defined here need to stay in sync. It is
really easy to mess this up by accident when a new entry is added. And it
will probably take a while to notice when this happens.
> +static const struct i2c_device_id mcp4531_id[] = {
> + { "mcp4531-502", 0 },
> + { "mcp4531-103", 1 },
> + { "mcp4531-503", 2 },
> + { "mcp4531-104", 3 },
[...]
> + {}
> +};
I see two options to solve this. Either define a enum with all the different
devices and use a symbolic name for the indices.
E.g.
enum mcp4531_type {
MCP4531_502,
MCP4531_103,
...
};
static const struct mcp5431_cfg mcp5431_cfg[] = {
[MCP4531_502] = {.wipers = 1, .max_pos = 128, .kohms = 5, },
[MCP4531_103] = {.wipers = 1, .max_pos = 128, .kohms = 10, },
...
};
static const struct i2c_device_id mcp4531_id[] = {
{ "mcp4531-502", MCP4531_502 },
{ "mcp4531-103", MCP4531_103 },
...
};
Or the second option is to directly assign the cfg struct as the driver data
in the device ID table.
E.g.
#define MCP4531_CFG(_wipers, _max_pos, _kohms) \
(kernel_ulong_t)&(struct mcp4531_cfg) { \
.wipers = _wipers, .max_pos = _max_pos, .kohms = _kohms }
static const struct i2c_device_id mcp4531_id[] = {
{ "mcp4531-502", MCP4531_CFG(1, 128, 5) },
{ "mcp4531-103", MCP4531_CFG(1, 128, 10) },
...
};
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-09-23 13:29 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-23 11:57 [PATCH v5 0/2] Driver for Microchip digital potentiometers Peter Rosin
2015-09-23 11:57 ` [PATCH v5 1/2] iio: resistance: Document that resistance can be output Peter Rosin
2015-09-23 11:57 ` [PATCH v5 2/2] iio: mcp4531: Driver for Microchip digital potentiometers Peter Rosin
2015-09-23 13:28 ` Lars-Peter Clausen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).