devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] iio: potentiometer: mcp4531: New parts, DT and typo
@ 2016-06-26 20:22 Florian Vaussard
       [not found] ` <1466972567-9580-1-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:22 UTC (permalink / raw)
  To: devicetree-u79uwXL29TY76Z2rM5mHXA, Jonathan Cameron,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Peter Rosin, Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

Hello,

This series first adds support for parts missing from mcp4531 driver
(MCP454x, MCP456x, MCP464x and MCP466x). It then introduces the necessary
device tree binding to perform DT boot. Finally it fixes a typo in the
Kconfig.

Tested with MCP4561-103 and MCP4561-503 (DT boot).

Best regards,
Florian

---
Since v1:
- Applied Acks
- Moved the binding to i2c/trivial-devices.txt
- Fixed data pointer handling in struct of_device_id
- Renamed struct of_device_id to mcp4531_of_match
- New patch to fix typo in Kconfig

Florian Vaussard (4):
  iio: potentiometer: mcp4531: Add support for MCP454x, MCP456x, MCP464x
    and MCP466x
  iio: potentiometer: mcp4531: Add device tree binding documentation
  iio: potentiometer: mcp4531: Add device tree binding
  iio: potentiometer: Fix typo in Kconfig

 .../devicetree/bindings/i2c/trivial-devices.txt    |  64 ++++
 drivers/iio/potentiometer/Kconfig                  |  12 +-
 drivers/iio/potentiometer/mcp4531.c                | 345 ++++++++++++++++++++-
 3 files changed, 415 insertions(+), 6 deletions(-)

-- 
2.5.5

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v2 1/4] iio: potentiometer: mcp4531: Add support for MCP454x, MCP456x, MCP464x and MCP466x
       [not found] ` <1466972567-9580-1-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
@ 2016-06-26 20:22   ` Florian Vaussard
  2016-06-26 20:22   ` [PATCH v2 2/4] iio: potentiometer: mcp4531: Add device tree binding documentation Florian Vaussard
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:22 UTC (permalink / raw)
  To: devicetree-u79uwXL29TY76Z2rM5mHXA, Jonathan Cameron,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Peter Rosin, Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

This patch adds support for MCP454x, MCP456x, MCP464x and MCP466x parts.
The main difference with currently supported parts (MCP453x and alike) is
the addition of a non-volatile memory in order to recall the wiper setting
at power-on. This feature is currently not supported and only the
volatile memory is used to set the wiper.

Acked-by: Peter Rosin <peda-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
---
 drivers/iio/potentiometer/Kconfig   |  6 ++--
 drivers/iio/potentiometer/mcp4531.c | 72 +++++++++++++++++++++++++++++++++++++
 2 files changed, 76 insertions(+), 2 deletions(-)

diff --git a/drivers/iio/potentiometer/Kconfig b/drivers/iio/potentiometer/Kconfig
index 0941c8d4..55c2414 100644
--- a/drivers/iio/potentiometer/Kconfig
+++ b/drivers/iio/potentiometer/Kconfig
@@ -49,8 +49,10 @@ config MCP4531
 	depends on I2C
 	help
 	  Say yes here to build support for the Microchip
-	  MCP4531, MCP4532, MCP4551, MCP4552,
-	  MCP4631, MCP4632, MCP4651, MCP4652
+	  MCP4531, MCP4532, MCP4541, MCP4542,
+	  MCP4551, MCP4552, MCP4561, MCP4562,
+	  MCP4631, MCP4632, MCP4641, MCP4642,
+	  MCP4651, MCP4652, MCP4661, MCP4662
 	  digital potentiomenter chips.
 
 	  To compile this driver as a module, choose M here: the
diff --git a/drivers/iio/potentiometer/mcp4531.c b/drivers/iio/potentiometer/mcp4531.c
index 3b72e1a..2251173 100644
--- a/drivers/iio/potentiometer/mcp4531.c
+++ b/drivers/iio/potentiometer/mcp4531.c
@@ -8,12 +8,20 @@
  * DEVID	#Wipers	#Positions	Resistor Opts (kOhm)	i2c address
  * mcp4531	1	129		5, 10, 50, 100          010111x
  * mcp4532	1	129		5, 10, 50, 100          01011xx
+ * mcp4541	1	129		5, 10, 50, 100          010111x
+ * mcp4542	1	129		5, 10, 50, 100          01011xx
  * mcp4551	1	257		5, 10, 50, 100          010111x
  * mcp4552	1	257		5, 10, 50, 100          01011xx
+ * mcp4561	1	257		5, 10, 50, 100          010111x
+ * mcp4562	1	257		5, 10, 50, 100          01011xx
  * mcp4631	2	129		5, 10, 50, 100          0101xxx
  * mcp4632	2	129		5, 10, 50, 100          01011xx
+ * mcp4641	2	129		5, 10, 50, 100          0101xxx
+ * mcp4642	2	129		5, 10, 50, 100          01011xx
  * mcp4651	2	257		5, 10, 50, 100          0101xxx
  * mcp4652	2	257		5, 10, 50, 100          01011xx
+ * mcp4661	2	257		5, 10, 50, 100          0101xxx
+ * mcp4662	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
@@ -37,18 +45,34 @@ enum mcp4531_type {
 	MCP453x_103,
 	MCP453x_503,
 	MCP453x_104,
+	MCP454x_502,
+	MCP454x_103,
+	MCP454x_503,
+	MCP454x_104,
 	MCP455x_502,
 	MCP455x_103,
 	MCP455x_503,
 	MCP455x_104,
+	MCP456x_502,
+	MCP456x_103,
+	MCP456x_503,
+	MCP456x_104,
 	MCP463x_502,
 	MCP463x_103,
 	MCP463x_503,
 	MCP463x_104,
+	MCP464x_502,
+	MCP464x_103,
+	MCP464x_503,
+	MCP464x_104,
 	MCP465x_502,
 	MCP465x_103,
 	MCP465x_503,
 	MCP465x_104,
+	MCP466x_502,
+	MCP466x_103,
+	MCP466x_503,
+	MCP466x_104,
 };
 
 static const struct mcp4531_cfg mcp4531_cfg[] = {
@@ -56,18 +80,34 @@ static const struct mcp4531_cfg mcp4531_cfg[] = {
 	[MCP453x_103] = { .wipers = 1, .max_pos = 128, .kohms =  10, },
 	[MCP453x_503] = { .wipers = 1, .max_pos = 128, .kohms =  50, },
 	[MCP453x_104] = { .wipers = 1, .max_pos = 128, .kohms = 100, },
+	[MCP454x_502] = { .wipers = 1, .max_pos = 128, .kohms =   5, },
+	[MCP454x_103] = { .wipers = 1, .max_pos = 128, .kohms =  10, },
+	[MCP454x_503] = { .wipers = 1, .max_pos = 128, .kohms =  50, },
+	[MCP454x_104] = { .wipers = 1, .max_pos = 128, .kohms = 100, },
 	[MCP455x_502] = { .wipers = 1, .max_pos = 256, .kohms =   5, },
 	[MCP455x_103] = { .wipers = 1, .max_pos = 256, .kohms =  10, },
 	[MCP455x_503] = { .wipers = 1, .max_pos = 256, .kohms =  50, },
 	[MCP455x_104] = { .wipers = 1, .max_pos = 256, .kohms = 100, },
+	[MCP456x_502] = { .wipers = 1, .max_pos = 256, .kohms =   5, },
+	[MCP456x_103] = { .wipers = 1, .max_pos = 256, .kohms =  10, },
+	[MCP456x_503] = { .wipers = 1, .max_pos = 256, .kohms =  50, },
+	[MCP456x_104] = { .wipers = 1, .max_pos = 256, .kohms = 100, },
 	[MCP463x_502] = { .wipers = 2, .max_pos = 128, .kohms =   5, },
 	[MCP463x_103] = { .wipers = 2, .max_pos = 128, .kohms =  10, },
 	[MCP463x_503] = { .wipers = 2, .max_pos = 128, .kohms =  50, },
 	[MCP463x_104] = { .wipers = 2, .max_pos = 128, .kohms = 100, },
+	[MCP464x_502] = { .wipers = 2, .max_pos = 128, .kohms =   5, },
+	[MCP464x_103] = { .wipers = 2, .max_pos = 128, .kohms =  10, },
+	[MCP464x_503] = { .wipers = 2, .max_pos = 128, .kohms =  50, },
+	[MCP464x_104] = { .wipers = 2, .max_pos = 128, .kohms = 100, },
 	[MCP465x_502] = { .wipers = 2, .max_pos = 256, .kohms =   5, },
 	[MCP465x_103] = { .wipers = 2, .max_pos = 256, .kohms =  10, },
 	[MCP465x_503] = { .wipers = 2, .max_pos = 256, .kohms =  50, },
 	[MCP465x_104] = { .wipers = 2, .max_pos = 256, .kohms = 100, },
+	[MCP466x_502] = { .wipers = 2, .max_pos = 256, .kohms =   5, },
+	[MCP466x_103] = { .wipers = 2, .max_pos = 256, .kohms =  10, },
+	[MCP466x_503] = { .wipers = 2, .max_pos = 256, .kohms =  50, },
+	[MCP466x_104] = { .wipers = 2, .max_pos = 256, .kohms = 100, },
 };
 
 #define MCP4531_WRITE (0 << 2)
@@ -187,6 +227,14 @@ static const struct i2c_device_id mcp4531_id[] = {
 	{ "mcp4532-103", MCP453x_103 },
 	{ "mcp4532-503", MCP453x_503 },
 	{ "mcp4532-104", MCP453x_104 },
+	{ "mcp4541-502", MCP454x_502 },
+	{ "mcp4541-103", MCP454x_103 },
+	{ "mcp4541-503", MCP454x_503 },
+	{ "mcp4541-104", MCP454x_104 },
+	{ "mcp4542-502", MCP454x_502 },
+	{ "mcp4542-103", MCP454x_103 },
+	{ "mcp4542-503", MCP454x_503 },
+	{ "mcp4542-104", MCP454x_104 },
 	{ "mcp4551-502", MCP455x_502 },
 	{ "mcp4551-103", MCP455x_103 },
 	{ "mcp4551-503", MCP455x_503 },
@@ -195,6 +243,14 @@ static const struct i2c_device_id mcp4531_id[] = {
 	{ "mcp4552-103", MCP455x_103 },
 	{ "mcp4552-503", MCP455x_503 },
 	{ "mcp4552-104", MCP455x_104 },
+	{ "mcp4561-502", MCP456x_502 },
+	{ "mcp4561-103", MCP456x_103 },
+	{ "mcp4561-503", MCP456x_503 },
+	{ "mcp4561-104", MCP456x_104 },
+	{ "mcp4562-502", MCP456x_502 },
+	{ "mcp4562-103", MCP456x_103 },
+	{ "mcp4562-503", MCP456x_503 },
+	{ "mcp4562-104", MCP456x_104 },
 	{ "mcp4631-502", MCP463x_502 },
 	{ "mcp4631-103", MCP463x_103 },
 	{ "mcp4631-503", MCP463x_503 },
@@ -203,6 +259,14 @@ static const struct i2c_device_id mcp4531_id[] = {
 	{ "mcp4632-103", MCP463x_103 },
 	{ "mcp4632-503", MCP463x_503 },
 	{ "mcp4632-104", MCP463x_104 },
+	{ "mcp4641-502", MCP464x_502 },
+	{ "mcp4641-103", MCP464x_103 },
+	{ "mcp4641-503", MCP464x_503 },
+	{ "mcp4641-104", MCP464x_104 },
+	{ "mcp4642-502", MCP464x_502 },
+	{ "mcp4642-103", MCP464x_103 },
+	{ "mcp4642-503", MCP464x_503 },
+	{ "mcp4642-104", MCP464x_104 },
 	{ "mcp4651-502", MCP465x_502 },
 	{ "mcp4651-103", MCP465x_103 },
 	{ "mcp4651-503", MCP465x_503 },
@@ -211,6 +275,14 @@ static const struct i2c_device_id mcp4531_id[] = {
 	{ "mcp4652-103", MCP465x_103 },
 	{ "mcp4652-503", MCP465x_503 },
 	{ "mcp4652-104", MCP465x_104 },
+	{ "mcp4661-502", MCP466x_502 },
+	{ "mcp4661-103", MCP466x_103 },
+	{ "mcp4661-503", MCP466x_503 },
+	{ "mcp4661-104", MCP466x_104 },
+	{ "mcp4662-502", MCP466x_502 },
+	{ "mcp4662-103", MCP466x_103 },
+	{ "mcp4662-503", MCP466x_503 },
+	{ "mcp4662-104", MCP466x_104 },
 	{}
 };
 MODULE_DEVICE_TABLE(i2c, mcp4531_id);
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 2/4] iio: potentiometer: mcp4531: Add device tree binding documentation
       [not found] ` <1466972567-9580-1-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
  2016-06-26 20:22   ` [PATCH v2 1/4] iio: potentiometer: mcp4531: Add support for MCP454x, MCP456x, MCP464x and MCP466x Florian Vaussard
@ 2016-06-26 20:22   ` Florian Vaussard
       [not found]     ` <1466972567-9580-3-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
  2016-06-26 20:22   ` [PATCH v2 3/4] iio: potentiometer: mcp4531: Add device tree binding Florian Vaussard
  2016-06-26 20:22   ` [PATCH v2 4/4] iio: potentiometer: Fix typo in Kconfig Florian Vaussard
  3 siblings, 1 reply; 10+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:22 UTC (permalink / raw)
  To: devicetree-u79uwXL29TY76Z2rM5mHXA, Jonathan Cameron,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Peter Rosin, Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

Add the device tree documentation for all the supported parts. Apart the
compatible string and standard I2C binding, no other binding is currently
needed.

Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
---
 .../devicetree/bindings/i2c/trivial-devices.txt    | 64 ++++++++++++++++++++++
 1 file changed, 64 insertions(+)

diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
index 53987449..4ffe9a9 100644
--- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt
+++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
@@ -56,6 +56,70 @@ maxim,ds1050		5 Bit Programmable, Pulse-Width Modulator
 maxim,max1237		Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs
 maxim,max6625		9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface
 mc,rv3029c2		Real Time Clock Module with I2C-Bus
+microchip,mcp4531-502	Microchip 8-bit Single I2C Digital Potentiometer (5k)
+microchip,mcp4531-103	Microchip 8-bit Single I2C Digital Potentiometer (10k)
+microchip,mcp4531-503	Microchip 8-bit Single I2C Digital Potentiometer (50k)
+microchip,mcp4531-104	Microchip 8-bit Single I2C Digital Potentiometer (100k)
+microchip,mcp4532-502	Microchip 8-bit Single I2C Digital Potentiometer (5k)
+microchip,mcp4532-103	Microchip 8-bit Single I2C Digital Potentiometer (10k)
+microchip,mcp4532-503	Microchip 8-bit Single I2C Digital Potentiometer (50k)
+microchip,mcp4532-104	Microchip 8-bit Single I2C Digital Potentiometer (100k)
+microchip,mcp4541-502	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4541-103	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4541-503	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4541-104	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (100k)
+microchip,mcp4542-502	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4542-103	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4542-503	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4542-104	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (100k)
+microchip,mcp4551-502	Microchip 7-bit Single I2C Digital Potentiometer (5k)
+microchip,mcp4551-103	Microchip 7-bit Single I2C Digital Potentiometer (10k)
+microchip,mcp4551-503	Microchip 7-bit Single I2C Digital Potentiometer (50k)
+microchip,mcp4551-104	Microchip 7-bit Single I2C Digital Potentiometer (100k)
+microchip,mcp4552-502	Microchip 7-bit Single I2C Digital Potentiometer (5k)
+microchip,mcp4552-103	Microchip 7-bit Single I2C Digital Potentiometer (10k)
+microchip,mcp4552-503	Microchip 7-bit Single I2C Digital Potentiometer (50k)
+microchip,mcp4552-104	Microchip 7-bit Single I2C Digital Potentiometer (100k)
+microchip,mcp4561-502	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4561-103	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4561-503	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4561-104	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (100k)
+microchip,mcp4562-502	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4562-103	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4562-503	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4562-104	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (100k)
+microchip,mcp4631-502	Microchip 8-bit Dual I2C Digital Potentiometer (5k)
+microchip,mcp4631-103	Microchip 8-bit Dual I2C Digital Potentiometer (10k)
+microchip,mcp4631-503	Microchip 8-bit Dual I2C Digital Potentiometer (50k)
+microchip,mcp4631-104	Microchip 8-bit Dual I2C Digital Potentiometer (100k)
+microchip,mcp4632-502	Microchip 8-bit Dual I2C Digital Potentiometer (5k)
+microchip,mcp4632-103	Microchip 8-bit Dual I2C Digital Potentiometer (10k)
+microchip,mcp4632-503	Microchip 8-bit Dual I2C Digital Potentiometer (50k)
+microchip,mcp4632-104	Microchip 8-bit Dual I2C Digital Potentiometer (100k)
+microchip,mcp4641-502	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4641-103	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4641-503	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4641-104	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (100k)
+microchip,mcp4642-502	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4642-103	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4642-503	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4642-104	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (100k)
+microchip,mcp4651-502	Microchip 7-bit Dual I2C Digital Potentiometer (5k)
+microchip,mcp4651-103	Microchip 7-bit Dual I2C Digital Potentiometer (10k)
+microchip,mcp4651-503	Microchip 7-bit Dual I2C Digital Potentiometer (50k)
+microchip,mcp4651-104	Microchip 7-bit Dual I2C Digital Potentiometer (100k)
+microchip,mcp4652-502	Microchip 7-bit Dual I2C Digital Potentiometer (5k)
+microchip,mcp4652-103	Microchip 7-bit Dual I2C Digital Potentiometer (10k)
+microchip,mcp4652-503	Microchip 7-bit Dual I2C Digital Potentiometer (50k)
+microchip,mcp4652-104	Microchip 7-bit Dual I2C Digital Potentiometer (100k)
+microchip,mcp4661-502	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4661-103	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4661-503	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4661-104	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (100k)
+microchip,mcp4662-502	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (5k)
+microchip,mcp4662-103	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (10k)
+microchip,mcp4662-503	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (50k)
+microchip,mcp4662-104	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (100k)
 national,lm63		Temperature sensor with integrated fan control
 national,lm75		I2C TEMP SENSOR
 national,lm80		Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 3/4] iio: potentiometer: mcp4531: Add device tree binding
       [not found] ` <1466972567-9580-1-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
  2016-06-26 20:22   ` [PATCH v2 1/4] iio: potentiometer: mcp4531: Add support for MCP454x, MCP456x, MCP464x and MCP466x Florian Vaussard
  2016-06-26 20:22   ` [PATCH v2 2/4] iio: potentiometer: mcp4531: Add device tree binding documentation Florian Vaussard
@ 2016-06-26 20:22   ` Florian Vaussard
       [not found]     ` <1466972567-9580-4-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
  2016-06-26 20:22   ` [PATCH v2 4/4] iio: potentiometer: Fix typo in Kconfig Florian Vaussard
  3 siblings, 1 reply; 10+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:22 UTC (permalink / raw)
  To: devicetree-u79uwXL29TY76Z2rM5mHXA, Jonathan Cameron,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Peter Rosin, Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

This patch adds the necessary device tree binding to allow DT probing of
currently supported parts.

Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
---
 drivers/iio/potentiometer/mcp4531.c | 273 +++++++++++++++++++++++++++++++++++-
 1 file changed, 272 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/potentiometer/mcp4531.c b/drivers/iio/potentiometer/mcp4531.c
index 2251173..bf7b853 100644
--- a/drivers/iio/potentiometer/mcp4531.c
+++ b/drivers/iio/potentiometer/mcp4531.c
@@ -31,6 +31,8 @@
 #include <linux/module.h>
 #include <linux/i2c.h>
 #include <linux/err.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
 
 #include <linux/iio/iio.h>
 
@@ -188,12 +190,275 @@ static const struct iio_info mcp4531_info = {
 	.driver_module = THIS_MODULE,
 };
 
+#ifdef CONFIG_OF
+static const struct of_device_id mcp4531_of_match[] = {
+	{
+		.compatible = "microchip,mcp4531-502",
+		.data = &mcp4531_cfg[MCP453x_502]
+	},
+	{
+		.compatible = "microchip,mcp4531-103",
+		.data = &mcp4531_cfg[MCP453x_103]
+	},
+	{
+		.compatible = "microchip,mcp4531-503",
+		.data = &mcp4531_cfg[MCP453x_503]
+	},
+	{
+		.compatible = "microchip,mcp4531-104",
+		.data = &mcp4531_cfg[MCP453x_104]
+	},
+	{
+		.compatible = "microchip,mcp4532-502",
+		.data = &mcp4531_cfg[MCP453x_502]
+	},
+	{
+		.compatible = "microchip,mcp4532-103",
+		.data = &mcp4531_cfg[MCP453x_103]
+	},
+	{
+		.compatible = "microchip,mcp4532-503",
+		.data = &mcp4531_cfg[MCP453x_503]
+	},
+	{
+		.compatible = "microchip,mcp4532-104",
+		.data = &mcp4531_cfg[MCP453x_104]
+	},
+	{
+		.compatible = "microchip,mcp4541-502",
+		.data = &mcp4531_cfg[MCP454x_502]
+	},
+	{
+		.compatible = "microchip,mcp4541-103",
+		.data = &mcp4531_cfg[MCP454x_103]
+	},
+	{
+		.compatible = "microchip,mcp4541-503",
+		.data = &mcp4531_cfg[MCP454x_503]
+	},
+	{
+		.compatible = "microchip,mcp4541-104",
+		.data = &mcp4531_cfg[MCP454x_104]
+	},
+	{
+		.compatible = "microchip,mcp4542-502",
+		.data = &mcp4531_cfg[MCP454x_502]
+	},
+	{
+		.compatible = "microchip,mcp4542-103",
+		.data = &mcp4531_cfg[MCP454x_103]
+	},
+	{
+		.compatible = "microchip,mcp4542-503",
+		.data = &mcp4531_cfg[MCP454x_503]
+	},
+	{
+		.compatible = "microchip,mcp4542-104",
+		.data = &mcp4531_cfg[MCP454x_104]
+	},
+	{
+		.compatible = "microchip,mcp4551-502",
+		.data = &mcp4531_cfg[MCP455x_502]
+	},
+	{
+		.compatible = "microchip,mcp4551-103",
+		.data = &mcp4531_cfg[MCP455x_103]
+	},
+	{
+		.compatible = "microchip,mcp4551-503",
+		.data = &mcp4531_cfg[MCP455x_503]
+	},
+	{
+		.compatible = "microchip,mcp4551-104",
+		.data = &mcp4531_cfg[MCP455x_104]
+	},
+	{
+		.compatible = "microchip,mcp4552-502",
+		.data = &mcp4531_cfg[MCP455x_502]
+	},
+	{
+		.compatible = "microchip,mcp4552-103",
+		.data = &mcp4531_cfg[MCP455x_103]
+	},
+	{
+		.compatible = "microchip,mcp4552-503",
+		.data = &mcp4531_cfg[MCP455x_503]
+	},
+	{
+		.compatible = "microchip,mcp4552-104",
+		.data = &mcp4531_cfg[MCP455x_104]
+	},
+	{
+		.compatible = "microchip,mcp4561-502",
+		.data = &mcp4531_cfg[MCP456x_502]
+	},
+	{
+		.compatible = "microchip,mcp4561-103",
+		.data = &mcp4531_cfg[MCP456x_103]
+	},
+	{
+		.compatible = "microchip,mcp4561-503",
+		.data = &mcp4531_cfg[MCP456x_503]
+	},
+	{
+		.compatible = "microchip,mcp4561-104",
+		.data = &mcp4531_cfg[MCP456x_104]
+	},
+	{
+		.compatible = "microchip,mcp4562-502",
+		.data = &mcp4531_cfg[MCP456x_502]
+	},
+	{
+		.compatible = "microchip,mcp4562-103",
+		.data = &mcp4531_cfg[MCP456x_103]
+	},
+	{
+		.compatible = "microchip,mcp4562-503",
+		.data = &mcp4531_cfg[MCP456x_503]
+	},
+	{
+		.compatible = "microchip,mcp4562-104",
+		.data = &mcp4531_cfg[MCP456x_104]
+	},
+	{
+		.compatible = "microchip,mcp4631-502",
+		.data = &mcp4531_cfg[MCP463x_502]
+	},
+	{
+		.compatible = "microchip,mcp4631-103",
+		.data = &mcp4531_cfg[MCP463x_103]
+	},
+	{
+		.compatible = "microchip,mcp4631-503",
+		.data = &mcp4531_cfg[MCP463x_503]
+	},
+	{
+		.compatible = "microchip,mcp4631-104",
+		.data = &mcp4531_cfg[MCP463x_104]
+	},
+	{
+		.compatible = "microchip,mcp4632-502",
+		.data = &mcp4531_cfg[MCP463x_502]
+	},
+	{
+		.compatible = "microchip,mcp4632-103",
+		.data = &mcp4531_cfg[MCP463x_103]
+	},
+	{
+		.compatible = "microchip,mcp4632-503",
+		.data = &mcp4531_cfg[MCP463x_503]
+	},
+	{
+		.compatible = "microchip,mcp4632-104",
+		.data = &mcp4531_cfg[MCP463x_104]
+	},
+	{
+		.compatible = "microchip,mcp4641-502",
+		.data = &mcp4531_cfg[MCP464x_502]
+	},
+	{
+		.compatible = "microchip,mcp4641-103",
+		.data = &mcp4531_cfg[MCP464x_103]
+	},
+	{
+		.compatible = "microchip,mcp4641-503",
+		.data = &mcp4531_cfg[MCP464x_503]
+	},
+	{
+		.compatible = "microchip,mcp4641-104",
+		.data = &mcp4531_cfg[MCP464x_104]
+	},
+	{
+		.compatible = "microchip,mcp4642-502",
+		.data = &mcp4531_cfg[MCP464x_502]
+	},
+	{
+		.compatible = "microchip,mcp4642-103",
+		.data = &mcp4531_cfg[MCP464x_103]
+	},
+	{
+		.compatible = "microchip,mcp4642-503",
+		.data = &mcp4531_cfg[MCP464x_503]
+	},
+	{
+		.compatible = "microchip,mcp4642-104",
+		.data = &mcp4531_cfg[MCP464x_104]
+	},
+	{
+		.compatible = "microchip,mcp4651-502",
+		.data = &mcp4531_cfg[MCP465x_502]
+	},
+	{
+		.compatible = "microchip,mcp4651-103",
+		.data = &mcp4531_cfg[MCP465x_103]
+	},
+	{
+		.compatible = "microchip,mcp4651-503",
+		.data = &mcp4531_cfg[MCP465x_503]
+	},
+	{
+		.compatible = "microchip,mcp4651-104",
+		.data = &mcp4531_cfg[MCP465x_104]
+	},
+	{
+		.compatible = "microchip,mcp4652-502",
+		.data = &mcp4531_cfg[MCP465x_502]
+	},
+	{
+		.compatible = "microchip,mcp4652-103",
+		.data = &mcp4531_cfg[MCP465x_103]
+	},
+	{
+		.compatible = "microchip,mcp4652-503",
+		.data = &mcp4531_cfg[MCP465x_503]
+	},
+	{
+		.compatible = "microchip,mcp4652-104",
+		.data = &mcp4531_cfg[MCP465x_104]
+	},
+	{
+		.compatible = "microchip,mcp4661-502",
+		.data = &mcp4531_cfg[MCP466x_502]
+	},
+	{
+		.compatible = "microchip,mcp4661-103",
+		.data = &mcp4531_cfg[MCP466x_103]
+	},
+	{
+		.compatible = "microchip,mcp4661-503",
+		.data = &mcp4531_cfg[MCP466x_503]
+	},
+	{
+		.compatible = "microchip,mcp4661-104",
+		.data = &mcp4531_cfg[MCP466x_104]
+	},
+	{
+		.compatible = "microchip,mcp4662-502",
+		.data = &mcp4531_cfg[MCP466x_502]
+	},
+	{
+		.compatible = "microchip,mcp4662-103",
+		.data = &mcp4531_cfg[MCP466x_103]
+	},
+	{
+		.compatible = "microchip,mcp4662-503",
+		.data = &mcp4531_cfg[MCP466x_503]
+	},
+	{
+		.compatible = "microchip,mcp4662-104",
+		.data = &mcp4531_cfg[MCP466x_104]
+	},
+	{ /* sentinel */ }
+};
+#endif
+
 static int mcp4531_probe(struct i2c_client *client,
 			 const struct i2c_device_id *id)
 {
 	struct device *dev = &client->dev;
 	struct mcp4531_data *data;
 	struct iio_dev *indio_dev;
+	const struct of_device_id *match;
 
 	if (!i2c_check_functionality(client->adapter,
 				     I2C_FUNC_SMBUS_WORD_DATA)) {
@@ -207,7 +472,12 @@ static int mcp4531_probe(struct i2c_client *client,
 	data = iio_priv(indio_dev);
 	i2c_set_clientdata(client, indio_dev);
 	data->client = client;
-	data->cfg = &mcp4531_cfg[id->driver_data];
+
+	match = of_match_device(of_match_ptr(mcp4531_of_match), dev);
+	if (match)
+		data->cfg = of_device_get_match_data(dev);
+	else
+		data->cfg = &mcp4531_cfg[id->driver_data];
 
 	indio_dev->dev.parent = dev;
 	indio_dev->info = &mcp4531_info;
@@ -290,6 +560,7 @@ MODULE_DEVICE_TABLE(i2c, mcp4531_id);
 static struct i2c_driver mcp4531_driver = {
 	.driver = {
 		.name	= "mcp4531",
+		.of_match_table = of_match_ptr(mcp4531_of_match),
 	},
 	.probe		= mcp4531_probe,
 	.id_table	= mcp4531_id,
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v2 4/4] iio: potentiometer: Fix typo in Kconfig
       [not found] ` <1466972567-9580-1-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
                     ` (2 preceding siblings ...)
  2016-06-26 20:22   ` [PATCH v2 3/4] iio: potentiometer: mcp4531: Add device tree binding Florian Vaussard
@ 2016-06-26 20:22   ` Florian Vaussard
  3 siblings, 0 replies; 10+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:22 UTC (permalink / raw)
  To: devicetree-u79uwXL29TY76Z2rM5mHXA, Jonathan Cameron,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Peter Rosin, Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

Fix s/potentiomenter/potentiometer/.

Suggested-by: Peter Meerwald-Stadler <pmeerw-jW+XmwGofnusTnJN9+BGXg@public.gmane.org>
Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
---
 drivers/iio/potentiometer/Kconfig | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/iio/potentiometer/Kconfig b/drivers/iio/potentiometer/Kconfig
index 55c2414..2e9da1c 100644
--- a/drivers/iio/potentiometer/Kconfig
+++ b/drivers/iio/potentiometer/Kconfig
@@ -10,7 +10,7 @@ config DS1803
 	depends on I2C
 	help
 	  Say yes here to build support for the Maxim Integrated DS1803
-	  digital potentiomenter chip.
+	  digital potentiometer chip.
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called ds1803.
@@ -39,7 +39,7 @@ config MCP4131
 	  MCP4241, MCP4242,
 	  MCP4251, MCP4252,
 	  MCP4261, MCP4262,
-	  digital potentiomenter chips.
+	  digital potentiometer chips.
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called mcp4131.
@@ -53,7 +53,7 @@ config MCP4531
 	  MCP4551, MCP4552, MCP4561, MCP4562,
 	  MCP4631, MCP4632, MCP4641, MCP4642,
 	  MCP4651, MCP4652, MCP4661, MCP4662
-	  digital potentiomenter chips.
+	  digital potentiometer chips.
 
 	  To compile this driver as a module, choose M here: the
 	  module will be called mcp4531.
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 2/4] iio: potentiometer: mcp4531: Add device tree binding documentation
       [not found]     ` <1466972567-9580-3-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
@ 2016-06-26 21:38       ` Peter Rosin
  2016-06-27  5:31         ` Florian Vaussard
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Rosin @ 2016-06-26 21:38 UTC (permalink / raw)
  To: Florian Vaussard, devicetree-u79uwXL29TY76Z2rM5mHXA,
	Jonathan Cameron, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

On 2016-06-26 22:22, Florian Vaussard wrote:
> Add the device tree documentation for all the supported parts. Apart the
> compatible string and standard I2C binding, no other binding is currently
> needed.
> 
> Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
> ---
>  .../devicetree/bindings/i2c/trivial-devices.txt    | 64 ++++++++++++++++++++++
>  1 file changed, 64 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
> index 53987449..4ffe9a9 100644
> --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt
> +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
> @@ -56,6 +56,70 @@ maxim,ds1050		5 Bit Programmable, Pulse-Width Modulator
>  maxim,max1237		Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs
>  maxim,max6625		9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface
>  mc,rv3029c2		Real Time Clock Module with I2C-Bus
> +microchip,mcp4531-502	Microchip 8-bit Single I2C Digital Potentiometer (5k)
                                          ^
You have mixed up 7/8-bit, here and below.

Cheers,
Peter

> +microchip,mcp4531-103	Microchip 8-bit Single I2C Digital Potentiometer (10k)
> +microchip,mcp4531-503	Microchip 8-bit Single I2C Digital Potentiometer (50k)
> +microchip,mcp4531-104	Microchip 8-bit Single I2C Digital Potentiometer (100k)
> +microchip,mcp4532-502	Microchip 8-bit Single I2C Digital Potentiometer (5k)
> +microchip,mcp4532-103	Microchip 8-bit Single I2C Digital Potentiometer (10k)
> +microchip,mcp4532-503	Microchip 8-bit Single I2C Digital Potentiometer (50k)
> +microchip,mcp4532-104	Microchip 8-bit Single I2C Digital Potentiometer (100k)
> +microchip,mcp4541-502	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4541-103	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4541-503	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4541-104	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (100k)
> +microchip,mcp4542-502	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4542-103	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4542-503	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4542-104	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (100k)
> +microchip,mcp4551-502	Microchip 7-bit Single I2C Digital Potentiometer (5k)
> +microchip,mcp4551-103	Microchip 7-bit Single I2C Digital Potentiometer (10k)
> +microchip,mcp4551-503	Microchip 7-bit Single I2C Digital Potentiometer (50k)
> +microchip,mcp4551-104	Microchip 7-bit Single I2C Digital Potentiometer (100k)
> +microchip,mcp4552-502	Microchip 7-bit Single I2C Digital Potentiometer (5k)
> +microchip,mcp4552-103	Microchip 7-bit Single I2C Digital Potentiometer (10k)
> +microchip,mcp4552-503	Microchip 7-bit Single I2C Digital Potentiometer (50k)
> +microchip,mcp4552-104	Microchip 7-bit Single I2C Digital Potentiometer (100k)
> +microchip,mcp4561-502	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4561-103	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4561-503	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4561-104	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (100k)
> +microchip,mcp4562-502	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4562-103	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4562-503	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4562-104	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (100k)
> +microchip,mcp4631-502	Microchip 8-bit Dual I2C Digital Potentiometer (5k)
> +microchip,mcp4631-103	Microchip 8-bit Dual I2C Digital Potentiometer (10k)
> +microchip,mcp4631-503	Microchip 8-bit Dual I2C Digital Potentiometer (50k)
> +microchip,mcp4631-104	Microchip 8-bit Dual I2C Digital Potentiometer (100k)
> +microchip,mcp4632-502	Microchip 8-bit Dual I2C Digital Potentiometer (5k)
> +microchip,mcp4632-103	Microchip 8-bit Dual I2C Digital Potentiometer (10k)
> +microchip,mcp4632-503	Microchip 8-bit Dual I2C Digital Potentiometer (50k)
> +microchip,mcp4632-104	Microchip 8-bit Dual I2C Digital Potentiometer (100k)
> +microchip,mcp4641-502	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4641-103	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4641-503	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4641-104	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (100k)
> +microchip,mcp4642-502	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4642-103	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4642-503	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4642-104	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (100k)
> +microchip,mcp4651-502	Microchip 7-bit Dual I2C Digital Potentiometer (5k)
> +microchip,mcp4651-103	Microchip 7-bit Dual I2C Digital Potentiometer (10k)
> +microchip,mcp4651-503	Microchip 7-bit Dual I2C Digital Potentiometer (50k)
> +microchip,mcp4651-104	Microchip 7-bit Dual I2C Digital Potentiometer (100k)
> +microchip,mcp4652-502	Microchip 7-bit Dual I2C Digital Potentiometer (5k)
> +microchip,mcp4652-103	Microchip 7-bit Dual I2C Digital Potentiometer (10k)
> +microchip,mcp4652-503	Microchip 7-bit Dual I2C Digital Potentiometer (50k)
> +microchip,mcp4652-104	Microchip 7-bit Dual I2C Digital Potentiometer (100k)
> +microchip,mcp4661-502	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4661-103	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4661-503	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4661-104	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (100k)
> +microchip,mcp4662-502	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (5k)
> +microchip,mcp4662-103	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (10k)
> +microchip,mcp4662-503	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (50k)
> +microchip,mcp4662-104	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (100k)
>  national,lm63		Temperature sensor with integrated fan control
>  national,lm75		I2C TEMP SENSOR
>  national,lm80		Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 3/4] iio: potentiometer: mcp4531: Add device tree binding
       [not found]     ` <1466972567-9580-4-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
@ 2016-06-26 22:12       ` Peter Rosin
       [not found]         ` <68f532da-766d-d1f6-5528-f69b80fb41b6-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Rosin @ 2016-06-26 22:12 UTC (permalink / raw)
  To: Florian Vaussard, devicetree-u79uwXL29TY76Z2rM5mHXA,
	Jonathan Cameron, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

Hi Florian,

On 2016-06-26 22:22, Florian Vaussard wrote:
> This patch adds the necessary device tree binding to allow DT probing of
> currently supported parts.
> 
> Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
> ---
>  drivers/iio/potentiometer/mcp4531.c | 273 +++++++++++++++++++++++++++++++++++-
>  1 file changed, 272 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/potentiometer/mcp4531.c b/drivers/iio/potentiometer/mcp4531.c
> index 2251173..bf7b853 100644
> --- a/drivers/iio/potentiometer/mcp4531.c
> +++ b/drivers/iio/potentiometer/mcp4531.c
> @@ -31,6 +31,8 @@
>  #include <linux/module.h>
>  #include <linux/i2c.h>
>  #include <linux/err.h>
> +#include <linux/of.h>
> +#include <linux/of_device.h>
>  
>  #include <linux/iio/iio.h>
>  
> @@ -188,12 +190,275 @@ static const struct iio_info mcp4531_info = {
>  	.driver_module = THIS_MODULE,
>  };
>  
> +#ifdef CONFIG_OF
> +static const struct of_device_id mcp4531_of_match[] = {
> +	{
> +		.compatible = "microchip,mcp4531-502",
> +		.data = &mcp4531_cfg[MCP453x_502]
> +	},

All this vertical whitespace makes this unreadable. I'd be
happier with either ignoring the 80 char rule, or skipping
the leading tab. I.e.

	{ .compatible = "microchip,mcp4531-502", .data = &mcp4531_cfg[MCP453x_502] },
	{ .compatible = "microchip,mcp4531-103", .data = &mcp4531_cfg[MCP453x_103] },
	{ .compatible = "microchip,mcp4531-503", .data = &mcp4531_cfg[MCP453x_503] },
	...

or

{ .compatible = "microchip,mcp4531-502", .data = &mcp4531_cfg[MCP453x_502] },
{ .compatible = "microchip,mcp4531-103", .data = &mcp4531_cfg[MCP453x_103] },
{ .compatible = "microchip,mcp4531-503", .data = &mcp4531_cfg[MCP453x_503] },
...

Or perhaps using a macro?

#define MCP4531_COMPATIBLE(of_compatible, cfg) {	\
		.compatible = of_compatible,		\
		.data = &mcp4531_cfg[cfg],		\
}

and then

	MCP4531_COMPATIBLE("microchip,mcp4531-502", MCP453x_502),
	MCP4531_COMPATIBLE("microchip,mcp4531-103", MCP453x_103),
	MCP4531_COMPATIBLE("microchip,mcp4531-503", MCP453x_503),
	...

Pick any of those, and you have my ack. Maybe Jonathan has an opinion
on which is best?

End of bikeshed...

Cheers,
Peter

> +	{
> +		.compatible = "microchip,mcp4531-103",
> +		.data = &mcp4531_cfg[MCP453x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4531-503",
> +		.data = &mcp4531_cfg[MCP453x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4531-104",
> +		.data = &mcp4531_cfg[MCP453x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4532-502",
> +		.data = &mcp4531_cfg[MCP453x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4532-103",
> +		.data = &mcp4531_cfg[MCP453x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4532-503",
> +		.data = &mcp4531_cfg[MCP453x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4532-104",
> +		.data = &mcp4531_cfg[MCP453x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4541-502",
> +		.data = &mcp4531_cfg[MCP454x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4541-103",
> +		.data = &mcp4531_cfg[MCP454x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4541-503",
> +		.data = &mcp4531_cfg[MCP454x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4541-104",
> +		.data = &mcp4531_cfg[MCP454x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4542-502",
> +		.data = &mcp4531_cfg[MCP454x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4542-103",
> +		.data = &mcp4531_cfg[MCP454x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4542-503",
> +		.data = &mcp4531_cfg[MCP454x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4542-104",
> +		.data = &mcp4531_cfg[MCP454x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4551-502",
> +		.data = &mcp4531_cfg[MCP455x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4551-103",
> +		.data = &mcp4531_cfg[MCP455x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4551-503",
> +		.data = &mcp4531_cfg[MCP455x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4551-104",
> +		.data = &mcp4531_cfg[MCP455x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4552-502",
> +		.data = &mcp4531_cfg[MCP455x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4552-103",
> +		.data = &mcp4531_cfg[MCP455x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4552-503",
> +		.data = &mcp4531_cfg[MCP455x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4552-104",
> +		.data = &mcp4531_cfg[MCP455x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4561-502",
> +		.data = &mcp4531_cfg[MCP456x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4561-103",
> +		.data = &mcp4531_cfg[MCP456x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4561-503",
> +		.data = &mcp4531_cfg[MCP456x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4561-104",
> +		.data = &mcp4531_cfg[MCP456x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4562-502",
> +		.data = &mcp4531_cfg[MCP456x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4562-103",
> +		.data = &mcp4531_cfg[MCP456x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4562-503",
> +		.data = &mcp4531_cfg[MCP456x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4562-104",
> +		.data = &mcp4531_cfg[MCP456x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4631-502",
> +		.data = &mcp4531_cfg[MCP463x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4631-103",
> +		.data = &mcp4531_cfg[MCP463x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4631-503",
> +		.data = &mcp4531_cfg[MCP463x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4631-104",
> +		.data = &mcp4531_cfg[MCP463x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4632-502",
> +		.data = &mcp4531_cfg[MCP463x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4632-103",
> +		.data = &mcp4531_cfg[MCP463x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4632-503",
> +		.data = &mcp4531_cfg[MCP463x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4632-104",
> +		.data = &mcp4531_cfg[MCP463x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4641-502",
> +		.data = &mcp4531_cfg[MCP464x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4641-103",
> +		.data = &mcp4531_cfg[MCP464x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4641-503",
> +		.data = &mcp4531_cfg[MCP464x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4641-104",
> +		.data = &mcp4531_cfg[MCP464x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4642-502",
> +		.data = &mcp4531_cfg[MCP464x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4642-103",
> +		.data = &mcp4531_cfg[MCP464x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4642-503",
> +		.data = &mcp4531_cfg[MCP464x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4642-104",
> +		.data = &mcp4531_cfg[MCP464x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4651-502",
> +		.data = &mcp4531_cfg[MCP465x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4651-103",
> +		.data = &mcp4531_cfg[MCP465x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4651-503",
> +		.data = &mcp4531_cfg[MCP465x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4651-104",
> +		.data = &mcp4531_cfg[MCP465x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4652-502",
> +		.data = &mcp4531_cfg[MCP465x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4652-103",
> +		.data = &mcp4531_cfg[MCP465x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4652-503",
> +		.data = &mcp4531_cfg[MCP465x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4652-104",
> +		.data = &mcp4531_cfg[MCP465x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4661-502",
> +		.data = &mcp4531_cfg[MCP466x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4661-103",
> +		.data = &mcp4531_cfg[MCP466x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4661-503",
> +		.data = &mcp4531_cfg[MCP466x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4661-104",
> +		.data = &mcp4531_cfg[MCP466x_104]
> +	},
> +	{
> +		.compatible = "microchip,mcp4662-502",
> +		.data = &mcp4531_cfg[MCP466x_502]
> +	},
> +	{
> +		.compatible = "microchip,mcp4662-103",
> +		.data = &mcp4531_cfg[MCP466x_103]
> +	},
> +	{
> +		.compatible = "microchip,mcp4662-503",
> +		.data = &mcp4531_cfg[MCP466x_503]
> +	},
> +	{
> +		.compatible = "microchip,mcp4662-104",
> +		.data = &mcp4531_cfg[MCP466x_104]
> +	},
> +	{ /* sentinel */ }
> +};
> +#endif
> +
>  static int mcp4531_probe(struct i2c_client *client,
>  			 const struct i2c_device_id *id)
>  {
>  	struct device *dev = &client->dev;
>  	struct mcp4531_data *data;
>  	struct iio_dev *indio_dev;
> +	const struct of_device_id *match;
>  
>  	if (!i2c_check_functionality(client->adapter,
>  				     I2C_FUNC_SMBUS_WORD_DATA)) {
> @@ -207,7 +472,12 @@ static int mcp4531_probe(struct i2c_client *client,
>  	data = iio_priv(indio_dev);
>  	i2c_set_clientdata(client, indio_dev);
>  	data->client = client;
> -	data->cfg = &mcp4531_cfg[id->driver_data];
> +
> +	match = of_match_device(of_match_ptr(mcp4531_of_match), dev);
> +	if (match)
> +		data->cfg = of_device_get_match_data(dev);
> +	else
> +		data->cfg = &mcp4531_cfg[id->driver_data];
>  
>  	indio_dev->dev.parent = dev;
>  	indio_dev->info = &mcp4531_info;
> @@ -290,6 +560,7 @@ MODULE_DEVICE_TABLE(i2c, mcp4531_id);
>  static struct i2c_driver mcp4531_driver = {
>  	.driver = {
>  		.name	= "mcp4531",
> +		.of_match_table = of_match_ptr(mcp4531_of_match),
>  	},
>  	.probe		= mcp4531_probe,
>  	.id_table	= mcp4531_id,
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 3/4] iio: potentiometer: mcp4531: Add device tree binding
       [not found]         ` <68f532da-766d-d1f6-5528-f69b80fb41b6-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
@ 2016-06-27  5:30           ` Florian Vaussard
       [not found]             ` <f05299bb-6404-fb3a-badc-4668a6600e08-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
  0 siblings, 1 reply; 10+ messages in thread
From: Florian Vaussard @ 2016-06-27  5:30 UTC (permalink / raw)
  To: Peter Rosin, Florian Vaussard, devicetree-u79uwXL29TY76Z2rM5mHXA,
	Jonathan Cameron, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Vaussard Florian

Hi Peter,

Le 27. 06. 16 à 00:12, Peter Rosin a écrit :
> Hi Florian,
> 
> On 2016-06-26 22:22, Florian Vaussard wrote:
>> This patch adds the necessary device tree binding to allow DT probing of
>> currently supported parts.
>>
>> Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
>> ---
>>  drivers/iio/potentiometer/mcp4531.c | 273 +++++++++++++++++++++++++++++++++++-
>>  1 file changed, 272 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/iio/potentiometer/mcp4531.c b/drivers/iio/potentiometer/mcp4531.c
>> index 2251173..bf7b853 100644
>> --- a/drivers/iio/potentiometer/mcp4531.c
>> +++ b/drivers/iio/potentiometer/mcp4531.c
>> @@ -31,6 +31,8 @@
>>  #include <linux/module.h>
>>  #include <linux/i2c.h>
>>  #include <linux/err.h>
>> +#include <linux/of.h>
>> +#include <linux/of_device.h>
>>  
>>  #include <linux/iio/iio.h>
>>  
>> @@ -188,12 +190,275 @@ static const struct iio_info mcp4531_info = {
>>  	.driver_module = THIS_MODULE,
>>  };
>>  
>> +#ifdef CONFIG_OF
>> +static const struct of_device_id mcp4531_of_match[] = {
>> +	{
>> +		.compatible = "microchip,mcp4531-502",
>> +		.data = &mcp4531_cfg[MCP453x_502]
>> +	},
> 
> All this vertical whitespace makes this unreadable. I'd be
> happier with either ignoring the 80 char rule, or skipping
> the leading tab. I.e.
> 
> 	{ .compatible = "microchip,mcp4531-502", .data = &mcp4531_cfg[MCP453x_502] },
> 	{ .compatible = "microchip,mcp4531-103", .data = &mcp4531_cfg[MCP453x_103] },
> 	{ .compatible = "microchip,mcp4531-503", .data = &mcp4531_cfg[MCP453x_503] },
> 	...
> 
> or
> 
> { .compatible = "microchip,mcp4531-502", .data = &mcp4531_cfg[MCP453x_502] },
> { .compatible = "microchip,mcp4531-103", .data = &mcp4531_cfg[MCP453x_103] },
> { .compatible = "microchip,mcp4531-503", .data = &mcp4531_cfg[MCP453x_503] },
> ...
> 
> Or perhaps using a macro?
> 
> #define MCP4531_COMPATIBLE(of_compatible, cfg) {	\
> 		.compatible = of_compatible,		\
> 		.data = &mcp4531_cfg[cfg],		\
> }
> 
> and then
> 
> 	MCP4531_COMPATIBLE("microchip,mcp4531-502", MCP453x_502),
> 	MCP4531_COMPATIBLE("microchip,mcp4531-103", MCP453x_103),
> 	MCP4531_COMPATIBLE("microchip,mcp4531-503", MCP453x_503),
> 	...
> 
> Pick any of those, and you have my ack. Maybe Jonathan has an opinion
> on which is best?
> 

The macro is my preferred one, as it makes things easier to read. Jonathan?

Thanks for the suggestion!

Best,
Florian

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 2/4] iio: potentiometer: mcp4531: Add device tree binding documentation
  2016-06-26 21:38       ` Peter Rosin
@ 2016-06-27  5:31         ` Florian Vaussard
  0 siblings, 0 replies; 10+ messages in thread
From: Florian Vaussard @ 2016-06-27  5:31 UTC (permalink / raw)
  To: Peter Rosin, Florian Vaussard, devicetree, Jonathan Cameron,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio, linux-kernel, Vaussard Florian

Hello Peter,

Le 26. 06. 16 à 23:38, Peter Rosin a écrit :
> On 2016-06-26 22:22, Florian Vaussard wrote:
>> Add the device tree documentation for all the supported parts. Apart the
>> compatible string and standard I2C binding, no other binding is currently
>> needed.
>>
>> Signed-off-by: Florian Vaussard <florian.vaussard@heig-vd.ch>
>> ---
>>  .../devicetree/bindings/i2c/trivial-devices.txt    | 64 ++++++++++++++++++++++
>>  1 file changed, 64 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/i2c/trivial-devices.txt b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
>> index 53987449..4ffe9a9 100644
>> --- a/Documentation/devicetree/bindings/i2c/trivial-devices.txt
>> +++ b/Documentation/devicetree/bindings/i2c/trivial-devices.txt
>> @@ -56,6 +56,70 @@ maxim,ds1050		5 Bit Programmable, Pulse-Width Modulator
>>  maxim,max1237		Low-Power, 4-/12-Channel, 2-Wire Serial, 12-Bit ADCs
>>  maxim,max6625		9-Bit/12-Bit Temperature Sensors with I²C-Compatible Serial Interface
>>  mc,rv3029c2		Real Time Clock Module with I2C-Bus
>> +microchip,mcp4531-502	Microchip 8-bit Single I2C Digital Potentiometer (5k)
>                                           ^
> You have mixed up 7/8-bit, here and below.
> 

Oh you are right, stupid me. I will fix.

Thanks,
Florian

> Cheers,
> Peter
> 
>> +microchip,mcp4531-103	Microchip 8-bit Single I2C Digital Potentiometer (10k)
>> +microchip,mcp4531-503	Microchip 8-bit Single I2C Digital Potentiometer (50k)
>> +microchip,mcp4531-104	Microchip 8-bit Single I2C Digital Potentiometer (100k)
>> +microchip,mcp4532-502	Microchip 8-bit Single I2C Digital Potentiometer (5k)
>> +microchip,mcp4532-103	Microchip 8-bit Single I2C Digital Potentiometer (10k)
>> +microchip,mcp4532-503	Microchip 8-bit Single I2C Digital Potentiometer (50k)
>> +microchip,mcp4532-104	Microchip 8-bit Single I2C Digital Potentiometer (100k)
>> +microchip,mcp4541-502	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4541-103	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4541-503	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4541-104	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (100k)
>> +microchip,mcp4542-502	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4542-103	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4542-503	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4542-104	Microchip 8-bit Single I2C Digital Potentiometer with NV Memory (100k)
>> +microchip,mcp4551-502	Microchip 7-bit Single I2C Digital Potentiometer (5k)
>> +microchip,mcp4551-103	Microchip 7-bit Single I2C Digital Potentiometer (10k)
>> +microchip,mcp4551-503	Microchip 7-bit Single I2C Digital Potentiometer (50k)
>> +microchip,mcp4551-104	Microchip 7-bit Single I2C Digital Potentiometer (100k)
>> +microchip,mcp4552-502	Microchip 7-bit Single I2C Digital Potentiometer (5k)
>> +microchip,mcp4552-103	Microchip 7-bit Single I2C Digital Potentiometer (10k)
>> +microchip,mcp4552-503	Microchip 7-bit Single I2C Digital Potentiometer (50k)
>> +microchip,mcp4552-104	Microchip 7-bit Single I2C Digital Potentiometer (100k)
>> +microchip,mcp4561-502	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4561-103	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4561-503	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4561-104	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (100k)
>> +microchip,mcp4562-502	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4562-103	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4562-503	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4562-104	Microchip 7-bit Single I2C Digital Potentiometer with NV Memory (100k)
>> +microchip,mcp4631-502	Microchip 8-bit Dual I2C Digital Potentiometer (5k)
>> +microchip,mcp4631-103	Microchip 8-bit Dual I2C Digital Potentiometer (10k)
>> +microchip,mcp4631-503	Microchip 8-bit Dual I2C Digital Potentiometer (50k)
>> +microchip,mcp4631-104	Microchip 8-bit Dual I2C Digital Potentiometer (100k)
>> +microchip,mcp4632-502	Microchip 8-bit Dual I2C Digital Potentiometer (5k)
>> +microchip,mcp4632-103	Microchip 8-bit Dual I2C Digital Potentiometer (10k)
>> +microchip,mcp4632-503	Microchip 8-bit Dual I2C Digital Potentiometer (50k)
>> +microchip,mcp4632-104	Microchip 8-bit Dual I2C Digital Potentiometer (100k)
>> +microchip,mcp4641-502	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4641-103	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4641-503	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4641-104	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (100k)
>> +microchip,mcp4642-502	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4642-103	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4642-503	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4642-104	Microchip 8-bit Dual I2C Digital Potentiometer with NV Memory (100k)
>> +microchip,mcp4651-502	Microchip 7-bit Dual I2C Digital Potentiometer (5k)
>> +microchip,mcp4651-103	Microchip 7-bit Dual I2C Digital Potentiometer (10k)
>> +microchip,mcp4651-503	Microchip 7-bit Dual I2C Digital Potentiometer (50k)
>> +microchip,mcp4651-104	Microchip 7-bit Dual I2C Digital Potentiometer (100k)
>> +microchip,mcp4652-502	Microchip 7-bit Dual I2C Digital Potentiometer (5k)
>> +microchip,mcp4652-103	Microchip 7-bit Dual I2C Digital Potentiometer (10k)
>> +microchip,mcp4652-503	Microchip 7-bit Dual I2C Digital Potentiometer (50k)
>> +microchip,mcp4652-104	Microchip 7-bit Dual I2C Digital Potentiometer (100k)
>> +microchip,mcp4661-502	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4661-103	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4661-503	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4661-104	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (100k)
>> +microchip,mcp4662-502	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (5k)
>> +microchip,mcp4662-103	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (10k)
>> +microchip,mcp4662-503	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (50k)
>> +microchip,mcp4662-104	Microchip 7-bit Dual I2C Digital Potentiometer with NV Memory (100k)
>>  national,lm63		Temperature sensor with integrated fan control
>>  national,lm75		I2C TEMP SENSOR
>>  national,lm80		Serial Interface ACPI-Compatible Microprocessor System Hardware Monitor
>>
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v2 3/4] iio: potentiometer: mcp4531: Add device tree binding
       [not found]             ` <f05299bb-6404-fb3a-badc-4668a6600e08-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
@ 2016-07-03  9:25               ` Jonathan Cameron
  0 siblings, 0 replies; 10+ messages in thread
From: Jonathan Cameron @ 2016-07-03  9:25 UTC (permalink / raw)
  To: Florian Vaussard, Peter Rosin, Florian Vaussard,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Hartmut Knaack,
	Lars-Peter Clausen, Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Slawomir Stepien, Joachim Eastwood, Matt Ranostay,
	Cristina Moraru, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA

On 27/06/16 06:30, Florian Vaussard wrote:
> Hi Peter,
> 
> Le 27. 06. 16 à 00:12, Peter Rosin a écrit :
>> Hi Florian,
>>
>> On 2016-06-26 22:22, Florian Vaussard wrote:
>>> This patch adds the necessary device tree binding to allow DT probing of
>>> currently supported parts.
>>>
>>> Signed-off-by: Florian Vaussard <florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
>>> ---
>>>  drivers/iio/potentiometer/mcp4531.c | 273 +++++++++++++++++++++++++++++++++++-
>>>  1 file changed, 272 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/iio/potentiometer/mcp4531.c b/drivers/iio/potentiometer/mcp4531.c
>>> index 2251173..bf7b853 100644
>>> --- a/drivers/iio/potentiometer/mcp4531.c
>>> +++ b/drivers/iio/potentiometer/mcp4531.c
>>> @@ -31,6 +31,8 @@
>>>  #include <linux/module.h>
>>>  #include <linux/i2c.h>
>>>  #include <linux/err.h>
>>> +#include <linux/of.h>
>>> +#include <linux/of_device.h>
>>>  
>>>  #include <linux/iio/iio.h>
>>>  
>>> @@ -188,12 +190,275 @@ static const struct iio_info mcp4531_info = {
>>>  	.driver_module = THIS_MODULE,
>>>  };
>>>  
>>> +#ifdef CONFIG_OF
>>> +static const struct of_device_id mcp4531_of_match[] = {
>>> +	{
>>> +		.compatible = "microchip,mcp4531-502",
>>> +		.data = &mcp4531_cfg[MCP453x_502]
>>> +	},
>>
>> All this vertical whitespace makes this unreadable. I'd be
>> happier with either ignoring the 80 char rule, or skipping
>> the leading tab. I.e.
>>
>> 	{ .compatible = "microchip,mcp4531-502", .data = &mcp4531_cfg[MCP453x_502] },
>> 	{ .compatible = "microchip,mcp4531-103", .data = &mcp4531_cfg[MCP453x_103] },
>> 	{ .compatible = "microchip,mcp4531-503", .data = &mcp4531_cfg[MCP453x_503] },
>> 	...
>>
>> or
>>
>> { .compatible = "microchip,mcp4531-502", .data = &mcp4531_cfg[MCP453x_502] },
>> { .compatible = "microchip,mcp4531-103", .data = &mcp4531_cfg[MCP453x_103] },
>> { .compatible = "microchip,mcp4531-503", .data = &mcp4531_cfg[MCP453x_503] },
>> ...
>>
>> Or perhaps using a macro?
>>
>> #define MCP4531_COMPATIBLE(of_compatible, cfg) {	\
>> 		.compatible = of_compatible,		\
>> 		.data = &mcp4531_cfg[cfg],		\
>> }
>>
>> and then
>>
>> 	MCP4531_COMPATIBLE("microchip,mcp4531-502", MCP453x_502),
>> 	MCP4531_COMPATIBLE("microchip,mcp4531-103", MCP453x_103),
>> 	MCP4531_COMPATIBLE("microchip,mcp4531-503", MCP453x_503),
>> 	...
>>
>> Pick any of those, and you have my ack. Maybe Jonathan has an opinion
>> on which is best?
>>
> 
> The macro is my preferred one, as it makes things easier to read. Jonathan?
I'm fine with any of the options (or indeed the original line break heavy
approach). Take your pick!

Jonathan
> 
> Thanks for the suggestion!
> 
> Best,
> Florian
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-07-03  9:25 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-26 20:22 [PATCH v2 0/4] iio: potentiometer: mcp4531: New parts, DT and typo Florian Vaussard
     [not found] ` <1466972567-9580-1-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
2016-06-26 20:22   ` [PATCH v2 1/4] iio: potentiometer: mcp4531: Add support for MCP454x, MCP456x, MCP464x and MCP466x Florian Vaussard
2016-06-26 20:22   ` [PATCH v2 2/4] iio: potentiometer: mcp4531: Add device tree binding documentation Florian Vaussard
     [not found]     ` <1466972567-9580-3-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
2016-06-26 21:38       ` Peter Rosin
2016-06-27  5:31         ` Florian Vaussard
2016-06-26 20:22   ` [PATCH v2 3/4] iio: potentiometer: mcp4531: Add device tree binding Florian Vaussard
     [not found]     ` <1466972567-9580-4-git-send-email-florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
2016-06-26 22:12       ` Peter Rosin
     [not found]         ` <68f532da-766d-d1f6-5528-f69b80fb41b6-koto5C5qi+TLoDKTGw+V6w@public.gmane.org>
2016-06-27  5:30           ` Florian Vaussard
     [not found]             ` <f05299bb-6404-fb3a-badc-4668a6600e08-EWQkb/GNqlFyDzI6CaY1VQ@public.gmane.org>
2016-07-03  9:25               ` Jonathan Cameron
2016-06-26 20:22   ` [PATCH v2 4/4] iio: potentiometer: Fix typo in Kconfig Florian Vaussard

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).