devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/2] iio: adc: max1363: Add device tree support
@ 2016-06-26 20:04 Florian Vaussard
  2016-06-26 20:04 ` [PATCH v2 1/2] iio: adc: max1363: Add device tree binding documentation Florian Vaussard
  2016-06-26 20:04 ` [PATCH v2 2/2] iio: adc: max1363: Add device tree binding Florian Vaussard
  0 siblings, 2 replies; 3+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:04 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,
	Martin Kepplinger, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Florian Vaussard

Hello,

This series introduces the necessary device tree binding to
perform DT boot.

Tested with MAX11644 (DT boot).

Best regards,
Florian

---
Since v1:
- First patch applied by Jonathan
- Added DT maintainer's Ack
- Fixed handling of data pointer in struct of_device_id

Florian Vaussard (2):
  iio: adc: max1363: Add device tree binding documentation
  iio: adc: max1363: Add device tree binding

 .../devicetree/bindings/iio/adc/max1363.txt        |  63 ++++++++
 drivers/iio/adc/max1363.c                          | 169 ++++++++++++++++++++-
 2 files changed, 231 insertions(+), 1 deletion(-)
 create mode 100644 Documentation/devicetree/bindings/iio/adc/max1363.txt

-- 
2.5.5

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

* [PATCH v2 1/2] iio: adc: max1363: Add device tree binding documentation
  2016-06-26 20:04 [PATCH v2 0/2] iio: adc: max1363: Add device tree support Florian Vaussard
@ 2016-06-26 20:04 ` Florian Vaussard
  2016-06-26 20:04 ` [PATCH v2 2/2] iio: adc: max1363: Add device tree binding Florian Vaussard
  1 sibling, 0 replies; 3+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:04 UTC (permalink / raw)
  To: devicetree, Jonathan Cameron, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Martin Kepplinger, linux-iio, linux-kernel, Florian Vaussard

Add the device tree documentation for all the supported parts. Mandatory
binding is the compatible string and the slave I2C address.

Optional properties can be used to specify the Vcc / Vref regulators, as
well as the IRQ line if available.

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Florian Vaussard <florian.vaussard@heig-vd.ch>
---
 .../devicetree/bindings/iio/adc/max1363.txt        | 63 ++++++++++++++++++++++
 1 file changed, 63 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/adc/max1363.txt

diff --git a/Documentation/devicetree/bindings/iio/adc/max1363.txt b/Documentation/devicetree/bindings/iio/adc/max1363.txt
new file mode 100644
index 0000000..94a9011
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/adc/max1363.txt
@@ -0,0 +1,63 @@
+* Maxim 1x3x/136x/116xx Analog to Digital Converter (ADC)
+
+The node for this driver must be a child node of a I2C controller, hence
+all mandatory properties for your controller must be specified. See directory:
+
+        Documentation/devicetree/bindings/i2c
+
+for more details.
+
+Required properties:
+  - compatible: Should be one of
+		"maxim,max1361"
+		"maxim,max1362"
+		"maxim,max1363"
+		"maxim,max1364"
+		"maxim,max1036"
+		"maxim,max1037"
+		"maxim,max1038"
+		"maxim,max1039"
+		"maxim,max1136"
+		"maxim,max1137"
+		"maxim,max1138"
+		"maxim,max1139"
+		"maxim,max1236"
+		"maxim,max1237"
+		"maxim,max1238"
+		"maxim,max1239"
+		"maxim,max11600"
+		"maxim,max11601"
+		"maxim,max11602"
+		"maxim,max11603"
+		"maxim,max11604"
+		"maxim,max11605"
+		"maxim,max11606"
+		"maxim,max11607"
+		"maxim,max11608"
+		"maxim,max11609"
+		"maxim,max11610"
+		"maxim,max11611"
+		"maxim,max11612"
+		"maxim,max11613"
+		"maxim,max11614"
+		"maxim,max11615"
+		"maxim,max11616"
+		"maxim,max11617"
+		"maxim,max11644"
+		"maxim,max11645"
+		"maxim,max11646"
+		"maxim,max11647"
+  - reg: Should contain the ADC I2C address
+
+Optional properties:
+  - vcc-supply: phandle to the regulator that provides power to the ADC.
+  - vref-supply: phandle to the regulator for ADC reference voltage.
+  - interrupts: IRQ line for the ADC. If not used the driver will use
+    polling.
+
+Example:
+adc: max11644@36 {
+	compatible = "maxim,max11644";
+	reg = <0x36>;
+	vref-supply = <&adc_vref>;
+};
-- 
2.5.5

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

* [PATCH v2 2/2] iio: adc: max1363: Add device tree binding
  2016-06-26 20:04 [PATCH v2 0/2] iio: adc: max1363: Add device tree support Florian Vaussard
  2016-06-26 20:04 ` [PATCH v2 1/2] iio: adc: max1363: Add device tree binding documentation Florian Vaussard
@ 2016-06-26 20:04 ` Florian Vaussard
  1 sibling, 0 replies; 3+ messages in thread
From: Florian Vaussard @ 2016-06-26 20:04 UTC (permalink / raw)
  To: devicetree, Jonathan Cameron, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald-Stadler
  Cc: Rob Herring, Pawel Moll, Mark Rutland, Ian Campbell, Kumar Gala,
	Martin Kepplinger, linux-iio, linux-kernel, 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@heig-vd.ch>
---
 drivers/iio/adc/max1363.c | 169 +++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 168 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/adc/max1363.c b/drivers/iio/adc/max1363.c
index b5d28c0..faa2514 100644
--- a/drivers/iio/adc/max1363.c
+++ b/drivers/iio/adc/max1363.c
@@ -25,6 +25,8 @@
 #include <linux/slab.h>
 #include <linux/err.h>
 #include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
 
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
@@ -1516,6 +1518,164 @@ done:
 	return IRQ_HANDLED;
 }
 
+#ifdef CONFIG_OF
+static const struct of_device_id max1363_of_match[] = {
+	{
+		.compatible = "maxim,max1361",
+		.data = &max1363_chip_info_tbl[max1361]
+	},
+	{
+		.compatible = "maxim,max1362",
+		.data = &max1363_chip_info_tbl[max1362]
+	},
+	{
+		.compatible = "maxim,max1363",
+		.data = &max1363_chip_info_tbl[max1363]
+	},
+	{
+		.compatible = "maxim,max1364",
+		.data = &max1363_chip_info_tbl[max1364]
+	},
+	{
+		.compatible = "maxim,max1036",
+		.data = &max1363_chip_info_tbl[max1036]
+	},
+	{
+		.compatible = "maxim,max1037",
+		.data = &max1363_chip_info_tbl[max1037]
+	},
+	{
+		.compatible = "maxim,max1038",
+		.data = &max1363_chip_info_tbl[max1038]
+	},
+	{
+		.compatible = "maxim,max1039",
+		.data = &max1363_chip_info_tbl[max1039]
+	},
+	{
+		.compatible = "maxim,max1136",
+		.data = &max1363_chip_info_tbl[max1136]
+	},
+	{
+		.compatible = "maxim,max1137",
+		.data = &max1363_chip_info_tbl[max1137]
+	},
+	{
+		.compatible = "maxim,max1138",
+		.data = &max1363_chip_info_tbl[max1138]
+	},
+	{
+		.compatible = "maxim,max1139",
+		.data = &max1363_chip_info_tbl[max1139]
+	},
+	{
+		.compatible = "maxim,max1236",
+		.data = &max1363_chip_info_tbl[max1236]
+	},
+	{
+		.compatible = "maxim,max1237",
+		.data = &max1363_chip_info_tbl[max1237]
+	},
+	{
+		.compatible = "maxim,max1238",
+		.data = &max1363_chip_info_tbl[max1238]
+	},
+	{
+		.compatible = "maxim,max1239",
+		.data = &max1363_chip_info_tbl[max1239]
+	},
+	{
+		.compatible = "maxim,max11600",
+		.data = &max1363_chip_info_tbl[max11600]
+	},
+	{
+		.compatible = "maxim,max11601",
+		.data = &max1363_chip_info_tbl[max11601]
+	},
+	{
+		.compatible = "maxim,max11602",
+		.data = &max1363_chip_info_tbl[max11602]
+	},
+	{
+		.compatible = "maxim,max11603",
+		.data = &max1363_chip_info_tbl[max11603]
+	},
+	{
+		.compatible = "maxim,max11604",
+		.data = &max1363_chip_info_tbl[max11604]
+	},
+	{
+		.compatible = "maxim,max11605",
+		.data = &max1363_chip_info_tbl[max11605]
+	},
+	{
+		.compatible = "maxim,max11606",
+		.data = &max1363_chip_info_tbl[max11606]
+	},
+	{
+		.compatible = "maxim,max11607",
+		.data = &max1363_chip_info_tbl[max11607]
+	},
+	{
+		.compatible = "maxim,max11608",
+		.data = &max1363_chip_info_tbl[max11608]
+	},
+	{
+		.compatible = "maxim,max11609",
+		.data = &max1363_chip_info_tbl[max11609]
+	},
+	{
+		.compatible = "maxim,max11610",
+		.data = &max1363_chip_info_tbl[max11610]
+	},
+	{
+		.compatible = "maxim,max11611",
+		.data = &max1363_chip_info_tbl[max11611]
+	},
+	{
+		.compatible = "maxim,max11612",
+		.data = &max1363_chip_info_tbl[max11612]
+	},
+	{
+		.compatible = "maxim,max11613",
+		.data = &max1363_chip_info_tbl[max11613]
+	},
+	{
+		.compatible = "maxim,max11614",
+		.data = &max1363_chip_info_tbl[max11614]
+	},
+	{
+		.compatible = "maxim,max11615",
+		.data = &max1363_chip_info_tbl[max11615]
+	},
+	{
+		.compatible = "maxim,max11616",
+		.data = &max1363_chip_info_tbl[max11616]
+	},
+	{
+		.compatible = "maxim,max11617",
+		.data = &max1363_chip_info_tbl[max11617]
+	},
+	{
+		.compatible = "maxim,max11644",
+		.data = &max1363_chip_info_tbl[max11644]
+	},
+	{
+		.compatible = "maxim,max11645",
+		.data = &max1363_chip_info_tbl[max11645]
+	},
+	{
+		.compatible = "maxim,max11646",
+		.data = &max1363_chip_info_tbl[max11646]
+	},
+	{
+		.compatible = "maxim,max11647",
+		.data = &max1363_chip_info_tbl[max11647]
+	},
+	{ /* sentinel */ }
+};
+#endif
+
 static int max1363_probe(struct i2c_client *client,
 			 const struct i2c_device_id *id)
 {
@@ -1523,6 +1683,7 @@ static int max1363_probe(struct i2c_client *client,
 	struct max1363_state *st;
 	struct iio_dev *indio_dev;
 	struct regulator *vref;
+	const struct of_device_id *match;
 
 	indio_dev = devm_iio_device_alloc(&client->dev,
 					  sizeof(struct max1363_state));
@@ -1549,7 +1710,12 @@ static int max1363_probe(struct i2c_client *client,
 	/* this is only used for device removal purposes */
 	i2c_set_clientdata(client, indio_dev);
 
-	st->chip_info = &max1363_chip_info_tbl[id->driver_data];
+	match = of_match_device(of_match_ptr(max1363_of_match),
+				&client->dev);
+	if (match)
+		st->chip_info = of_device_get_match_data(&client->dev);
+	else
+		st->chip_info = &max1363_chip_info_tbl[id->driver_data];
 	st->client = client;
 
 	st->vref_uv = st->chip_info->int_vref_mv * 1000;
@@ -1692,6 +1858,7 @@ MODULE_DEVICE_TABLE(i2c, max1363_id);
 static struct i2c_driver max1363_driver = {
 	.driver = {
 		.name = "max1363",
+		.of_match_table = of_match_ptr(max1363_of_match),
 	},
 	.probe = max1363_probe,
 	.remove = max1363_remove,
-- 
2.5.5

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

end of thread, other threads:[~2016-06-26 20:04 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-26 20:04 [PATCH v2 0/2] iio: adc: max1363: Add device tree support Florian Vaussard
2016-06-26 20:04 ` [PATCH v2 1/2] iio: adc: max1363: Add device tree binding documentation Florian Vaussard
2016-06-26 20:04 ` [PATCH v2 2/2] iio: adc: max1363: Add device tree binding 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).