linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging
@ 2018-11-18  4:25 Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support Matheus Tavares
                   ` (6 more replies)
  0 siblings, 7 replies; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

This series adds device tree support to ad2s90, adds the respective dt-binding  
documentation, solves all remaining codestyle problems in the driver code and
move it out of staging.                                                                 
                                                                                
This patch set completes all the remaining itens listed to be done before moving
the driver out of staging, enumerated in this mail thread:                      
https://marc.info/?l=linux-iio&m=154028966111330&w=2.

Alexandru Ardelean (1):
  staging:iio:ad2s90: Add max frequency check at probe

Matheus Tavares (5):
  staging:iio:ad2s90: Add device tree support
  staging:iio:ad2s90: Remove spi setup that should be done via dt
  dt-bindings:iio:resolver: Add docs for ad2s90
  staging:iio:ad2s90: Replace license text w/ SPDX identifier
  staging:iio:ad2s90: Move out of staging

Victor Colombo (1):
  staging:iio:ad2s90: Add comment to device state mutex

 .../bindings/iio/resolver/ad2s90.txt          |  28 ++++
 drivers/iio/resolver/Kconfig                  |  10 ++
 drivers/iio/resolver/Makefile                 |   1 +
 drivers/iio/resolver/ad2s90.c                 | 131 ++++++++++++++++++
 drivers/staging/iio/resolver/Kconfig          |  10 --
 drivers/staging/iio/resolver/Makefile         |   1 -
 drivers/staging/iio/resolver/ad2s90.c         | 127 -----------------
 7 files changed, 170 insertions(+), 138 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/iio/resolver/ad2s90.txt
 create mode 100644 drivers/iio/resolver/ad2s90.c
 delete mode 100644 drivers/staging/iio/resolver/ad2s90.c

-- 
2.18.0

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

* [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support
  2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
@ 2018-11-18  4:25 ` Matheus Tavares
  2018-11-19  8:09   ` Ardelean, Alexandru
  2018-11-18  4:25 ` [PATCH v2 2/7] staging:iio:ad2s90: Remove spi setup that should be done via dt Matheus Tavares
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

This patch adds device tree support to ad2s90 with standard
device tree id table.

Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
---
Changes in v2:
 - none

 drivers/staging/iio/resolver/ad2s90.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
index 3e257ac46f7a..6ffbac66b837 100644
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ b/drivers/staging/iio/resolver/ad2s90.c
@@ -107,6 +107,12 @@ static int ad2s90_probe(struct spi_device *spi)
 	return devm_iio_device_register(indio_dev->dev.parent, indio_dev);
 }
 
+static const struct of_device_id ad2s90_of_match[] = {
+	{ .compatible = "adi,ad2s90", },
+	{}
+};
+MODULE_DEVICE_TABLE(of, ad2s90_of_match);
+
 static const struct spi_device_id ad2s90_id[] = {
 	{ "ad2s90" },
 	{}
@@ -116,6 +122,7 @@ MODULE_DEVICE_TABLE(spi, ad2s90_id);
 static struct spi_driver ad2s90_driver = {
 	.driver = {
 		.name = "ad2s90",
+		.of_match_table = of_match_ptr(ad2s90_of_match),
 	},
 	.probe = ad2s90_probe,
 	.id_table = ad2s90_id,
-- 
2.18.0

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

* [PATCH v2 2/7] staging:iio:ad2s90: Remove spi setup that should be done via dt
  2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support Matheus Tavares
@ 2018-11-18  4:25 ` Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 3/7] staging:iio:ad2s90: Add max frequency check at probe Matheus Tavares
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

The ad2s90 driver currently sets some spi settings (max_speed_hz and
mode) at ad2s90_probe. Since the maximum frequency is a required element
in DT binding for spi slave devices and because the spi mode for the
device can be either (0,0) or (1,1), these settings should be handled
via device tree, not in the driver's code. This patch removes them from
the probe function.

Note: The way in which the mentioned spi settings need to be specified
on the ad2s90's node of a device tree will be documented in the future
patch "dt-bindings:iio:resolver: Add docs for ad2s90".

Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
---
Changes in v2:
 - Rewritten patch message to better explain why the code snippet in
 question should be removed.

 drivers/staging/iio/resolver/ad2s90.c | 11 -----------
 1 file changed, 11 deletions(-)

diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
index 6ffbac66b837..913d6fad2d4d 100644
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ b/drivers/staging/iio/resolver/ad2s90.c
@@ -77,7 +77,6 @@ static int ad2s90_probe(struct spi_device *spi)
 {
 	struct iio_dev *indio_dev;
 	struct ad2s90_state *st;
-	int ret;
 
 	indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
 	if (!indio_dev)
@@ -94,16 +93,6 @@ static int ad2s90_probe(struct spi_device *spi)
 	indio_dev->num_channels = 1;
 	indio_dev->name = spi_get_device_id(spi)->name;
 
-	/* need 600ns between CS and the first falling edge of SCLK */
-	spi->max_speed_hz = 830000;
-	spi->mode = SPI_MODE_3;
-	ret = spi_setup(spi);
-
-	if (ret < 0) {
-		dev_err(&spi->dev, "spi_setup failed!\n");
-		return ret;
-	}
-
 	return devm_iio_device_register(indio_dev->dev.parent, indio_dev);
 }
 
-- 
2.18.0

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

* [PATCH v2 3/7] staging:iio:ad2s90: Add max frequency check at probe
  2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 2/7] staging:iio:ad2s90: Remove spi setup that should be done via dt Matheus Tavares
@ 2018-11-18  4:25 ` Matheus Tavares
  2018-11-19  8:18   ` Ardelean, Alexandru
  2018-11-18  4:25 ` [PATCH v2 4/7] dt-bindings:iio:resolver: Add docs for ad2s90 Matheus Tavares
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

From: Alexandru Ardelean <alexandru.ardelean@analog.com>

This patch adds a max frequency check at the beginning of ad2s90_probe
function so that when it is set to a value above 0.83Mhz, dev_err is
called with an appropriate message and -EINVAL is returned.

The defined limit is 0.83Mhz instead of 2Mhz, which is the chip's max
frequency as specified in the datasheet, because, as also specified in
the datasheet, a 600ns delay is expected between the application of a
logic LO to CS and the application of SCLK. Since the delay is not
implemented in the spi code, to satisfy it, SCLK's period should be at
most 2 * 600ns, so the max frequency should be 1 / (2 * 6e-7), which
gives roughly 830000Hz.

Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
---
Changes in v2:
 - Correctly credit Alexandru as the patch's author

 drivers/staging/iio/resolver/ad2s90.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
index 913d6fad2d4d..fe90f2056bff 100644
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ b/drivers/staging/iio/resolver/ad2s90.c
@@ -19,6 +19,12 @@
 #include <linux/iio/iio.h>
 #include <linux/iio/sysfs.h>
 
+/*
+ * Although chip's max frequency is 2Mhz, it needs 600ns between CS and the
+ * first falling edge of SCLK, so frequency should be at most 1 / (2 * 6e-7)
+ */
+#define AD2S90_MAX_SPI_FREQ_HZ  830000
+
 struct ad2s90_state {
 	struct mutex lock;
 	struct spi_device *sdev;
@@ -78,6 +84,12 @@ static int ad2s90_probe(struct spi_device *spi)
 	struct iio_dev *indio_dev;
 	struct ad2s90_state *st;
 
+	if (spi->max_speed_hz > AD2S90_MAX_SPI_FREQ_HZ) {
+		dev_err(&spi->dev, "SPI CLK, %d Hz exceeds %d Hz\n",
+			spi->max_speed_hz, AD2S90_MAX_SPI_FREQ_HZ);
+		return -EINVAL;
+	}
+
 	indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
 	if (!indio_dev)
 		return -ENOMEM;
-- 
2.18.0

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

* [PATCH v2 4/7] dt-bindings:iio:resolver: Add docs for ad2s90
  2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
                   ` (2 preceding siblings ...)
  2018-11-18  4:25 ` [PATCH v2 3/7] staging:iio:ad2s90: Add max frequency check at probe Matheus Tavares
@ 2018-11-18  4:25 ` Matheus Tavares
  2018-11-19  8:22   ` Ardelean, Alexandru
  2018-11-18  4:25 ` [PATCH v2 5/7] staging:iio:ad2s90: Replace license text w/ SPDX identifier Matheus Tavares
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

This patch adds the device tree binding documentation for the ad2s90
resolver-to-digital converter.

Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
---
Changes in v2:
 - Rewritten 'spi-cpol and spi-cpha' item to say that the device can
 work in either mode (0,0) or (1,1) and explain how they should be
 specified in DT.

 .../bindings/iio/resolver/ad2s90.txt          | 28 +++++++++++++++++++
 1 file changed, 28 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/resolver/ad2s90.txt

diff --git a/Documentation/devicetree/bindings/iio/resolver/ad2s90.txt b/Documentation/devicetree/bindings/iio/resolver/ad2s90.txt
new file mode 100644
index 000000000000..594417539938
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/resolver/ad2s90.txt
@@ -0,0 +1,28 @@
+Analog Devices AD2S90 Resolver-to-Digital Converter
+
+https://www.analog.com/en/products/ad2s90.html
+
+Required properties:
+  - compatible: should be "adi,ad2s90"
+  - reg: SPI chip select number for the device
+  - spi-max-frequency: set maximum clock frequency, must be 830000
+  - spi-cpol and spi-cpha:
+        Either SPI mode (0,0) or (1,1) must be used, so specify none or both of
+        spi-cpha, spi-cpol.
+
+Note about max frequency:
+    Chip's max frequency, as specified in its datasheet, is 2Mhz. But a 600ns
+    delay is expected between the application of a logic LO to CS and the
+    application of SCLK, as also specified. And since the delay is not
+    implemented in the spi code, to satisfy it, SCLK's period should be at most
+    2 * 600ns, so the max frequency should be 1 / (2 * 6e-7), which gives
+    roughly 830000Hz.
+
+Example:
+resolver@0 {
+	compatible = "adi,ad2s90";
+	reg = <0>;
+	spi-max-frequency = <830000>;
+	spi-cpol;
+	spi-cpha;
+};
-- 
2.18.0

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

* [PATCH v2 5/7] staging:iio:ad2s90: Replace license text w/ SPDX identifier
  2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
                   ` (3 preceding siblings ...)
  2018-11-18  4:25 ` [PATCH v2 4/7] dt-bindings:iio:resolver: Add docs for ad2s90 Matheus Tavares
@ 2018-11-18  4:25 ` Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 6/7] staging:iio:ad2s90: Add comment to device state mutex Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 7/7] staging:iio:ad2s90: Move out of staging Matheus Tavares
  6 siblings, 0 replies; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

This patch removes the license boilerplate text at the top of ad2s90.c
and, instead, adds the SPDX GPL-2.0 license identifier, which solves the
checkpatch.pl warning:
"WARNING: Missing or malformed SPDX-License-Identifier tag in line 1".

Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
---
Changes in v2:
 - Changed GPL-2.0-only identifier to GPL-2.0
 - Removed license boilerplate text
 - Rewritten patch message to reflect these modifications

 drivers/staging/iio/resolver/ad2s90.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
index fe90f2056bff..9aa229ba47e7 100644
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ b/drivers/staging/iio/resolver/ad2s90.c
@@ -1,12 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  * ad2s90.c simple support for the ADI Resolver to Digital Converters: AD2S90
  *
  * Copyright (c) 2010-2010 Analog Devices Inc.
- *
- * 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/types.h>
 #include <linux/mutex.h>
-- 
2.18.0

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

* [PATCH v2 6/7] staging:iio:ad2s90: Add comment to device state mutex
  2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
                   ` (4 preceding siblings ...)
  2018-11-18  4:25 ` [PATCH v2 5/7] staging:iio:ad2s90: Replace license text w/ SPDX identifier Matheus Tavares
@ 2018-11-18  4:25 ` Matheus Tavares
  2018-11-18  4:25 ` [PATCH v2 7/7] staging:iio:ad2s90: Move out of staging Matheus Tavares
  6 siblings, 0 replies; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

From: Victor Colombo <victorcolombo@gmail.com>

Fix the checkpatch.pl issue:
"CHECK: struct mutex definition without comment".

Signed-off-by: Victor Colombo <victorcolombo@gmail.com>
Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
---
Changes in v2:
 - Patch added in v2

 drivers/staging/iio/resolver/ad2s90.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
index 9aa229ba47e7..f04dc5dede00 100644
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ b/drivers/staging/iio/resolver/ad2s90.c
@@ -22,7 +22,7 @@
 #define AD2S90_MAX_SPI_FREQ_HZ  830000
 
 struct ad2s90_state {
-	struct mutex lock;
+	struct mutex lock; /* lock to protect rx buffer */
 	struct spi_device *sdev;
 	u8 rx[2] ____cacheline_aligned;
 };
-- 
2.18.0

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

* [PATCH v2 7/7] staging:iio:ad2s90: Move out of staging
  2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
                   ` (5 preceding siblings ...)
  2018-11-18  4:25 ` [PATCH v2 6/7] staging:iio:ad2s90: Add comment to device state mutex Matheus Tavares
@ 2018-11-18  4:25 ` Matheus Tavares
  6 siblings, 0 replies; 14+ messages in thread
From: Matheus Tavares @ 2018-11-18  4:25 UTC (permalink / raw)
  To: Lars-Peter Clausen, Michael Hennerich, Jonathan Cameron,
	Hartmut Knaack, Peter Meerwald-Stadler, Greg Kroah-Hartman,
	Rob Herring, Mark Rutland
  Cc: linux-iio, devel, devicetree, linux-kernel, Alexandru Ardelean,
	kernel-usp, victorcolombo

Move ad2s90 resolver driver out of staging to the main tree.

Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
Signed-off-by: Victor Colombo <victorcolombo@gmail.com>
---
Changes in v2:
 - Disabled git move detection, to see the whole code, as Jonathan
 suggested

 drivers/iio/resolver/Kconfig          |  10 ++
 drivers/iio/resolver/Makefile         |   1 +
 drivers/iio/resolver/ad2s90.c         | 131 ++++++++++++++++++++++++++
 drivers/staging/iio/resolver/Kconfig  |  10 --
 drivers/staging/iio/resolver/Makefile |   1 -
 drivers/staging/iio/resolver/ad2s90.c | 131 --------------------------
 6 files changed, 142 insertions(+), 142 deletions(-)
 create mode 100644 drivers/iio/resolver/ad2s90.c
 delete mode 100644 drivers/staging/iio/resolver/ad2s90.c

diff --git a/drivers/iio/resolver/Kconfig b/drivers/iio/resolver/Kconfig
index 2ced9f22aa70..786801be54f6 100644
--- a/drivers/iio/resolver/Kconfig
+++ b/drivers/iio/resolver/Kconfig
@@ -3,6 +3,16 @@
 #
 menu "Resolver to digital converters"
 
+config AD2S90
+	tristate "Analog Devices ad2s90 driver"
+	depends on SPI
+	help
+	  Say yes here to build support for Analog Devices spi resolver
+	  to digital converters, ad2s90, provides direct access via sysfs.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called ad2s90.
+
 config AD2S1200
 	tristate "Analog Devices ad2s1200/ad2s1205 driver"
 	depends on SPI
diff --git a/drivers/iio/resolver/Makefile b/drivers/iio/resolver/Makefile
index 4e1dccae07e7..398d82d50028 100644
--- a/drivers/iio/resolver/Makefile
+++ b/drivers/iio/resolver/Makefile
@@ -2,4 +2,5 @@
 # Makefile for Resolver/Synchro drivers
 #
 
+obj-$(CONFIG_AD2S90) += ad2s90.o
 obj-$(CONFIG_AD2S1200) += ad2s1200.o
diff --git a/drivers/iio/resolver/ad2s90.c b/drivers/iio/resolver/ad2s90.c
new file mode 100644
index 000000000000..f04dc5dede00
--- /dev/null
+++ b/drivers/iio/resolver/ad2s90.c
@@ -0,0 +1,131 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * ad2s90.c simple support for the ADI Resolver to Digital Converters: AD2S90
+ *
+ * Copyright (c) 2010-2010 Analog Devices Inc.
+ */
+#include <linux/types.h>
+#include <linux/mutex.h>
+#include <linux/device.h>
+#include <linux/spi/spi.h>
+#include <linux/slab.h>
+#include <linux/sysfs.h>
+#include <linux/module.h>
+
+#include <linux/iio/iio.h>
+#include <linux/iio/sysfs.h>
+
+/*
+ * Although chip's max frequency is 2Mhz, it needs 600ns between CS and the
+ * first falling edge of SCLK, so frequency should be at most 1 / (2 * 6e-7)
+ */
+#define AD2S90_MAX_SPI_FREQ_HZ  830000
+
+struct ad2s90_state {
+	struct mutex lock; /* lock to protect rx buffer */
+	struct spi_device *sdev;
+	u8 rx[2] ____cacheline_aligned;
+};
+
+static int ad2s90_read_raw(struct iio_dev *indio_dev,
+			   struct iio_chan_spec const *chan,
+			   int *val,
+			   int *val2,
+			   long m)
+{
+	int ret;
+	struct ad2s90_state *st = iio_priv(indio_dev);
+
+	if (chan->type != IIO_ANGL)
+		return -EINVAL;
+
+	switch (m) {
+	case IIO_CHAN_INFO_SCALE:
+		/* 2 * Pi / 2^12 */
+		*val = 6283; /* mV */
+		*val2 = 12;
+		return IIO_VAL_FRACTIONAL_LOG2;
+	case IIO_CHAN_INFO_RAW:
+		mutex_lock(&st->lock);
+		ret = spi_read(st->sdev, st->rx, 2);
+		if (ret < 0) {
+			mutex_unlock(&st->lock);
+			return ret;
+		}
+		*val = (((u16)(st->rx[0])) << 4) | ((st->rx[1] & 0xF0) >> 4);
+
+		mutex_unlock(&st->lock);
+
+		return IIO_VAL_INT;
+	default:
+		break;
+	}
+
+	return -EINVAL;
+}
+
+static const struct iio_info ad2s90_info = {
+	.read_raw = ad2s90_read_raw,
+};
+
+static const struct iio_chan_spec ad2s90_chan = {
+	.type = IIO_ANGL,
+	.indexed = 1,
+	.channel = 0,
+	.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
+};
+
+static int ad2s90_probe(struct spi_device *spi)
+{
+	struct iio_dev *indio_dev;
+	struct ad2s90_state *st;
+
+	if (spi->max_speed_hz > AD2S90_MAX_SPI_FREQ_HZ) {
+		dev_err(&spi->dev, "SPI CLK, %d Hz exceeds %d Hz\n",
+			spi->max_speed_hz, AD2S90_MAX_SPI_FREQ_HZ);
+		return -EINVAL;
+	}
+
+	indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
+	if (!indio_dev)
+		return -ENOMEM;
+	st = iio_priv(indio_dev);
+	spi_set_drvdata(spi, indio_dev);
+
+	mutex_init(&st->lock);
+	st->sdev = spi;
+	indio_dev->dev.parent = &spi->dev;
+	indio_dev->info = &ad2s90_info;
+	indio_dev->modes = INDIO_DIRECT_MODE;
+	indio_dev->channels = &ad2s90_chan;
+	indio_dev->num_channels = 1;
+	indio_dev->name = spi_get_device_id(spi)->name;
+
+	return devm_iio_device_register(indio_dev->dev.parent, indio_dev);
+}
+
+static const struct of_device_id ad2s90_of_match[] = {
+	{ .compatible = "adi,ad2s90", },
+	{}
+};
+MODULE_DEVICE_TABLE(of, ad2s90_of_match);
+
+static const struct spi_device_id ad2s90_id[] = {
+	{ "ad2s90" },
+	{}
+};
+MODULE_DEVICE_TABLE(spi, ad2s90_id);
+
+static struct spi_driver ad2s90_driver = {
+	.driver = {
+		.name = "ad2s90",
+		.of_match_table = of_match_ptr(ad2s90_of_match),
+	},
+	.probe = ad2s90_probe,
+	.id_table = ad2s90_id,
+};
+module_spi_driver(ad2s90_driver);
+
+MODULE_AUTHOR("Graff Yang <graff.yang@gmail.com>");
+MODULE_DESCRIPTION("Analog Devices AD2S90 Resolver to Digital SPI driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/staging/iio/resolver/Kconfig b/drivers/staging/iio/resolver/Kconfig
index 6a469ee6101f..4a727c17bb8f 100644
--- a/drivers/staging/iio/resolver/Kconfig
+++ b/drivers/staging/iio/resolver/Kconfig
@@ -3,16 +3,6 @@
 #
 menu "Resolver to digital converters"
 
-config AD2S90
-	tristate "Analog Devices ad2s90 driver"
-	depends on SPI
-	help
-	  Say yes here to build support for Analog Devices spi resolver
-	  to digital converters, ad2s90, provides direct access via sysfs.
-
-	  To compile this driver as a module, choose M here: the
-	  module will be called ad2s90.
-
 config AD2S1210
 	tristate "Analog Devices ad2s1210 driver"
 	depends on SPI
diff --git a/drivers/staging/iio/resolver/Makefile b/drivers/staging/iio/resolver/Makefile
index 8d901dc7500b..b2049f2ce36e 100644
--- a/drivers/staging/iio/resolver/Makefile
+++ b/drivers/staging/iio/resolver/Makefile
@@ -2,5 +2,4 @@
 # Makefile for Resolver/Synchro drivers
 #
 
-obj-$(CONFIG_AD2S90) += ad2s90.o
 obj-$(CONFIG_AD2S1210) += ad2s1210.o
diff --git a/drivers/staging/iio/resolver/ad2s90.c b/drivers/staging/iio/resolver/ad2s90.c
deleted file mode 100644
index f04dc5dede00..000000000000
--- a/drivers/staging/iio/resolver/ad2s90.c
+++ /dev/null
@@ -1,131 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * ad2s90.c simple support for the ADI Resolver to Digital Converters: AD2S90
- *
- * Copyright (c) 2010-2010 Analog Devices Inc.
- */
-#include <linux/types.h>
-#include <linux/mutex.h>
-#include <linux/device.h>
-#include <linux/spi/spi.h>
-#include <linux/slab.h>
-#include <linux/sysfs.h>
-#include <linux/module.h>
-
-#include <linux/iio/iio.h>
-#include <linux/iio/sysfs.h>
-
-/*
- * Although chip's max frequency is 2Mhz, it needs 600ns between CS and the
- * first falling edge of SCLK, so frequency should be at most 1 / (2 * 6e-7)
- */
-#define AD2S90_MAX_SPI_FREQ_HZ  830000
-
-struct ad2s90_state {
-	struct mutex lock; /* lock to protect rx buffer */
-	struct spi_device *sdev;
-	u8 rx[2] ____cacheline_aligned;
-};
-
-static int ad2s90_read_raw(struct iio_dev *indio_dev,
-			   struct iio_chan_spec const *chan,
-			   int *val,
-			   int *val2,
-			   long m)
-{
-	int ret;
-	struct ad2s90_state *st = iio_priv(indio_dev);
-
-	if (chan->type != IIO_ANGL)
-		return -EINVAL;
-
-	switch (m) {
-	case IIO_CHAN_INFO_SCALE:
-		/* 2 * Pi / 2^12 */
-		*val = 6283; /* mV */
-		*val2 = 12;
-		return IIO_VAL_FRACTIONAL_LOG2;
-	case IIO_CHAN_INFO_RAW:
-		mutex_lock(&st->lock);
-		ret = spi_read(st->sdev, st->rx, 2);
-		if (ret < 0) {
-			mutex_unlock(&st->lock);
-			return ret;
-		}
-		*val = (((u16)(st->rx[0])) << 4) | ((st->rx[1] & 0xF0) >> 4);
-
-		mutex_unlock(&st->lock);
-
-		return IIO_VAL_INT;
-	default:
-		break;
-	}
-
-	return -EINVAL;
-}
-
-static const struct iio_info ad2s90_info = {
-	.read_raw = ad2s90_read_raw,
-};
-
-static const struct iio_chan_spec ad2s90_chan = {
-	.type = IIO_ANGL,
-	.indexed = 1,
-	.channel = 0,
-	.info_mask_separate = BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
-};
-
-static int ad2s90_probe(struct spi_device *spi)
-{
-	struct iio_dev *indio_dev;
-	struct ad2s90_state *st;
-
-	if (spi->max_speed_hz > AD2S90_MAX_SPI_FREQ_HZ) {
-		dev_err(&spi->dev, "SPI CLK, %d Hz exceeds %d Hz\n",
-			spi->max_speed_hz, AD2S90_MAX_SPI_FREQ_HZ);
-		return -EINVAL;
-	}
-
-	indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st));
-	if (!indio_dev)
-		return -ENOMEM;
-	st = iio_priv(indio_dev);
-	spi_set_drvdata(spi, indio_dev);
-
-	mutex_init(&st->lock);
-	st->sdev = spi;
-	indio_dev->dev.parent = &spi->dev;
-	indio_dev->info = &ad2s90_info;
-	indio_dev->modes = INDIO_DIRECT_MODE;
-	indio_dev->channels = &ad2s90_chan;
-	indio_dev->num_channels = 1;
-	indio_dev->name = spi_get_device_id(spi)->name;
-
-	return devm_iio_device_register(indio_dev->dev.parent, indio_dev);
-}
-
-static const struct of_device_id ad2s90_of_match[] = {
-	{ .compatible = "adi,ad2s90", },
-	{}
-};
-MODULE_DEVICE_TABLE(of, ad2s90_of_match);
-
-static const struct spi_device_id ad2s90_id[] = {
-	{ "ad2s90" },
-	{}
-};
-MODULE_DEVICE_TABLE(spi, ad2s90_id);
-
-static struct spi_driver ad2s90_driver = {
-	.driver = {
-		.name = "ad2s90",
-		.of_match_table = of_match_ptr(ad2s90_of_match),
-	},
-	.probe = ad2s90_probe,
-	.id_table = ad2s90_id,
-};
-module_spi_driver(ad2s90_driver);
-
-MODULE_AUTHOR("Graff Yang <graff.yang@gmail.com>");
-MODULE_DESCRIPTION("Analog Devices AD2S90 Resolver to Digital SPI driver");
-MODULE_LICENSE("GPL v2");
-- 
2.18.0

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

* Re: [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support
  2018-11-18  4:25 ` [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support Matheus Tavares
@ 2018-11-19  8:09   ` Ardelean, Alexandru
  2018-11-20 23:59     ` Matheus Tavares Bernardino
  0 siblings, 1 reply; 14+ messages in thread
From: Ardelean, Alexandru @ 2018-11-19  8:09 UTC (permalink / raw)
  To: lars, robh+dt, knaack.h, jic23, Hennerich, Michael, mark.rutland,
	matheus.bernardino, pmeerw, gregkh
  Cc: victorcolombo, linux-kernel, linux-iio, devel, kernel-usp, devicetree

T24gU3VuLCAyMDE4LTExLTE4IGF0IDAyOjI1IC0wMjAwLCBNYXRoZXVzIFRhdmFyZXMgd3JvdGU6
DQo+IFRoaXMgcGF0Y2ggYWRkcyBkZXZpY2UgdHJlZSBzdXBwb3J0IHRvIGFkMnM5MCB3aXRoIHN0
YW5kYXJkDQo+IGRldmljZSB0cmVlIGlkIHRhYmxlLg0KPiANCg0KSGV5LA0KDQpDb21tZW50IGlu
bGluZQ0KDQo+IFNpZ25lZC1vZmYtYnk6IE1hdGhldXMgVGF2YXJlcyA8bWF0aGV1cy5iZXJuYXJk
aW5vQHVzcC5icj4NCj4gLS0tDQo+IENoYW5nZXMgaW4gdjI6DQo+ICAtIG5vbmUNCj4gDQo+ICBk
cml2ZXJzL3N0YWdpbmcvaWlvL3Jlc29sdmVyL2FkMnM5MC5jIHwgNyArKysrKysrDQo+ICAxIGZp
bGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9z
dGFnaW5nL2lpby9yZXNvbHZlci9hZDJzOTAuYw0KPiBiL2RyaXZlcnMvc3RhZ2luZy9paW8vcmVz
b2x2ZXIvYWQyczkwLmMNCj4gaW5kZXggM2UyNTdhYzQ2ZjdhLi42ZmZiYWM2NmI4MzcgMTAwNjQ0
DQo+IC0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vcmVzb2x2ZXIvYWQyczkwLmMNCj4gKysrIGIv
ZHJpdmVycy9zdGFnaW5nL2lpby9yZXNvbHZlci9hZDJzOTAuYw0KPiBAQCAtMTA3LDYgKzEwNywx
MiBAQCBzdGF0aWMgaW50IGFkMnM5MF9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKQ0KPiAg
CXJldHVybiBkZXZtX2lpb19kZXZpY2VfcmVnaXN0ZXIoaW5kaW9fZGV2LT5kZXYucGFyZW50LCBp
bmRpb19kZXYpOw0KPiAgfQ0KPiAgDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9p
ZCBhZDJzOTBfb2ZfbWF0Y2hbXSA9IHsNCj4gKwl7IC5jb21wYXRpYmxlID0gImFkaSxhZDJzOTAi
LCB9LA0KPiArCXt9DQo+ICt9Ow0KPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgYWQyczkwX29m
X21hdGNoKTsNCj4gKw0KPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2aWNlX2lkIGFkMnM5
MF9pZFtdID0gew0KPiAgCXsgImFkMnM5MCIgfSwNCj4gIAl7fQ0KPiBAQCAtMTE2LDYgKzEyMiw3
IEBAIE1PRFVMRV9ERVZJQ0VfVEFCTEUoc3BpLCBhZDJzOTBfaWQpOw0KPiAgc3RhdGljIHN0cnVj
dCBzcGlfZHJpdmVyIGFkMnM5MF9kcml2ZXIgPSB7DQo+ICAJLmRyaXZlciA9IHsNCj4gIAkJLm5h
bWUgPSAiYWQyczkwIiwNCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKGFkMnM5
MF9vZl9tYXRjaCksDQoNCkkgdGhpbmsgeW91IG5lZWQgdG8gcmVtb3ZlIHRoZSBvZl9tYXRjaF9w
dHIoKS4NClRoZXJlIHdhcyBhIGNvbW1lbnQgZnJvbSBKb25hdGhhbiBvbiBhbm90aGVyIHRocmVh
ZCBhYm91dCB0aGlzLg0KU2VlOg0KICAgaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wYXRj
aC8xMDY4Mjk2My8NCg0KU28sIA0KKwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKGFk
MnM5MF9vZl9tYXRjaCksDQoNCmJlY29tZXMNCj4gKwkJLm9mX21hdGNoX3RhYmxlID0gYWQyczkw
X29mX21hdGNoLA0KDQo+ICAJfSwNCj4gIAkucHJvYmUgPSBhZDJzOTBfcHJvYmUsDQo+ICAJLmlk
X3RhYmxlID0gYWQyczkwX2lkLA0K

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

* Re: [PATCH v2 3/7] staging:iio:ad2s90: Add max frequency check at probe
  2018-11-18  4:25 ` [PATCH v2 3/7] staging:iio:ad2s90: Add max frequency check at probe Matheus Tavares
@ 2018-11-19  8:18   ` Ardelean, Alexandru
  0 siblings, 0 replies; 14+ messages in thread
From: Ardelean, Alexandru @ 2018-11-19  8:18 UTC (permalink / raw)
  To: lars, robh+dt, knaack.h, jic23, Hennerich, Michael, mark.rutland,
	matheus.bernardino, pmeerw, gregkh
  Cc: victorcolombo, linux-kernel, linux-iio, devel, kernel-usp, devicetree

T24gU3VuLCAyMDE4LTExLTE4IGF0IDAyOjI1IC0wMjAwLCBNYXRoZXVzIFRhdmFyZXMgd3JvdGU6
DQo+IEZyb206IEFsZXhhbmRydSBBcmRlbGVhbiA8YWxleGFuZHJ1LmFyZGVsZWFuQGFuYWxvZy5j
b20+DQo+IA0KPiBUaGlzIHBhdGNoIGFkZHMgYSBtYXggZnJlcXVlbmN5IGNoZWNrIGF0IHRoZSBi
ZWdpbm5pbmcgb2YgYWQyczkwX3Byb2JlDQo+IGZ1bmN0aW9uIHNvIHRoYXQgd2hlbiBpdCBpcyBz
ZXQgdG8gYSB2YWx1ZSBhYm92ZSAwLjgzTWh6LCBkZXZfZXJyIGlzDQo+IGNhbGxlZCB3aXRoIGFu
IGFwcHJvcHJpYXRlIG1lc3NhZ2UgYW5kIC1FSU5WQUwgaXMgcmV0dXJuZWQuDQo+IA0KPiBUaGUg
ZGVmaW5lZCBsaW1pdCBpcyAwLjgzTWh6IGluc3RlYWQgb2YgMk1oeiwgd2hpY2ggaXMgdGhlIGNo
aXAncyBtYXgNCj4gZnJlcXVlbmN5IGFzIHNwZWNpZmllZCBpbiB0aGUgZGF0YXNoZWV0LCBiZWNh
dXNlLCBhcyBhbHNvIHNwZWNpZmllZCBpbg0KPiB0aGUgZGF0YXNoZWV0LCBhIDYwMG5zIGRlbGF5
IGlzIGV4cGVjdGVkIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uIG9mIGENCj4gbG9naWMgTE8gdG8g
Q1MgYW5kIHRoZSBhcHBsaWNhdGlvbiBvZiBTQ0xLLiBTaW5jZSB0aGUgZGVsYXkgaXMgbm90DQo+
IGltcGxlbWVudGVkIGluIHRoZSBzcGkgY29kZSwgdG8gc2F0aXNmeSBpdCwgU0NMSydzIHBlcmlv
ZCBzaG91bGQgYmUgYXQNCj4gbW9zdCAyICogNjAwbnMsIHNvIHRoZSBtYXggZnJlcXVlbmN5IHNo
b3VsZCBiZSAxIC8gKDIgKiA2ZS03KSwgd2hpY2gNCj4gZ2l2ZXMgcm91Z2hseSA4MzAwMDBIei4N
Cj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRydSBBcmRlbGVhbiA8YWxleGFuZHJ1LmFyZGVs
ZWFuQGFuYWxvZy5jb20+DQoNCkkgdGhpbmsgeW91IGNhbiB1c2UgIlN1Z2dlc3RlZC1ieToiIGlu
c3RlYWQuDQpCdXQgdGhpcyBpcyBhbHNvIGZpbmUuDQoNCj4gU2lnbmVkLW9mZi1ieTogTWF0aGV1
cyBUYXZhcmVzIDxtYXRoZXVzLmJlcm5hcmRpbm9AdXNwLmJyPg0KPiAtLS0NCj4gQ2hhbmdlcyBp
biB2MjoNCj4gIC0gQ29ycmVjdGx5IGNyZWRpdCBBbGV4YW5kcnUgYXMgdGhlIHBhdGNoJ3MgYXV0
aG9yDQo+IA0KPiAgZHJpdmVycy9zdGFnaW5nL2lpby9yZXNvbHZlci9hZDJzOTAuYyB8IDEyICsr
KysrKysrKysrKw0KPiAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykNCj4gDQo+IGRp
ZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL3Jlc29sdmVyL2FkMnM5MC5jDQo+IGIvZHJp
dmVycy9zdGFnaW5nL2lpby9yZXNvbHZlci9hZDJzOTAuYw0KPiBpbmRleCA5MTNkNmZhZDJkNGQu
LmZlOTBmMjA1NmJmZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9yZXNvbHZl
ci9hZDJzOTAuYw0KPiArKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL3Jlc29sdmVyL2FkMnM5MC5j
DQo+IEBAIC0xOSw2ICsxOSwxMiBAQA0KPiAgI2luY2x1ZGUgPGxpbnV4L2lpby9paW8uaD4NCj4g
ICNpbmNsdWRlIDxsaW51eC9paW8vc3lzZnMuaD4NCj4gIA0KPiArLyoNCj4gKyAqIEFsdGhvdWdo
IGNoaXAncyBtYXggZnJlcXVlbmN5IGlzIDJNaHosIGl0IG5lZWRzIDYwMG5zIGJldHdlZW4gQ1Mg
YW5kDQo+IHRoZQ0KPiArICogZmlyc3QgZmFsbGluZyBlZGdlIG9mIFNDTEssIHNvIGZyZXF1ZW5j
eSBzaG91bGQgYmUgYXQgbW9zdCAxIC8gKDIgKg0KPiA2ZS03KQ0KPiArICovDQo+ICsjZGVmaW5l
IEFEMlM5MF9NQVhfU1BJX0ZSRVFfSFogIDgzMDAwMA0KPiArDQo+ICBzdHJ1Y3QgYWQyczkwX3N0
YXRlIHsNCj4gIAlzdHJ1Y3QgbXV0ZXggbG9jazsNCj4gIAlzdHJ1Y3Qgc3BpX2RldmljZSAqc2Rl
djsNCj4gQEAgLTc4LDYgKzg0LDEyIEBAIHN0YXRpYyBpbnQgYWQyczkwX3Byb2JlKHN0cnVjdCBz
cGlfZGV2aWNlICpzcGkpDQo+ICAJc3RydWN0IGlpb19kZXYgKmluZGlvX2RldjsNCj4gIAlzdHJ1
Y3QgYWQyczkwX3N0YXRlICpzdDsNCj4gIA0KPiArCWlmIChzcGktPm1heF9zcGVlZF9oeiA+IEFE
MlM5MF9NQVhfU1BJX0ZSRVFfSFopIHsNCj4gKwkJZGV2X2Vycigmc3BpLT5kZXYsICJTUEkgQ0xL
LCAlZCBIeiBleGNlZWRzICVkIEh6XG4iLA0KPiArCQkJc3BpLT5tYXhfc3BlZWRfaHosIEFEMlM5
MF9NQVhfU1BJX0ZSRVFfSFopOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ICsNCj4g
IAlpbmRpb19kZXYgPSBkZXZtX2lpb19kZXZpY2VfYWxsb2MoJnNwaS0+ZGV2LCBzaXplb2YoKnN0
KSk7DQo+ICAJaWYgKCFpbmRpb19kZXYpDQo+ICAJCXJldHVybiAtRU5PTUVNOw0K

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

* Re: [PATCH v2 4/7] dt-bindings:iio:resolver: Add docs for ad2s90
  2018-11-18  4:25 ` [PATCH v2 4/7] dt-bindings:iio:resolver: Add docs for ad2s90 Matheus Tavares
@ 2018-11-19  8:22   ` Ardelean, Alexandru
  2018-11-20 23:34     ` Matheus Tavares Bernardino
  0 siblings, 1 reply; 14+ messages in thread
From: Ardelean, Alexandru @ 2018-11-19  8:22 UTC (permalink / raw)
  To: lars, robh+dt, knaack.h, jic23, Hennerich, Michael, mark.rutland,
	matheus.bernardino, pmeerw, gregkh
  Cc: victorcolombo, linux-kernel, linux-iio, devel, kernel-usp, devicetree

T24gU3VuLCAyMDE4LTExLTE4IGF0IDAyOjI1IC0wMjAwLCBNYXRoZXVzIFRhdmFyZXMgd3JvdGU6
DQo+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgZGV2aWNlIHRyZWUgYmluZGluZyBkb2N1bWVudGF0aW9u
IGZvciB0aGUgYWQyczkwDQo+IHJlc29sdmVyLXRvLWRpZ2l0YWwgY29udmVydGVyLg0KPiANCg0K
T25lIG1pbm9yIGNvbW1lbnQgaW5saW5lLg0KDQo+IFNpZ25lZC1vZmYtYnk6IE1hdGhldXMgVGF2
YXJlcyA8bWF0aGV1cy5iZXJuYXJkaW5vQHVzcC5icj4NCj4gLS0tDQo+IENoYW5nZXMgaW4gdjI6
DQo+ICAtIFJld3JpdHRlbiAnc3BpLWNwb2wgYW5kIHNwaS1jcGhhJyBpdGVtIHRvIHNheSB0aGF0
IHRoZSBkZXZpY2UgY2FuDQo+ICB3b3JrIGluIGVpdGhlciBtb2RlICgwLDApIG9yICgxLDEpIGFu
ZCBleHBsYWluIGhvdyB0aGV5IHNob3VsZCBiZQ0KPiAgc3BlY2lmaWVkIGluIERULg0KPiANCj4g
IC4uLi9iaW5kaW5ncy9paW8vcmVzb2x2ZXIvYWQyczkwLnR4dCAgICAgICAgICB8IDI4ICsrKysr
KysrKysrKysrKysrKysNCj4gIDEgZmlsZSBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspDQo+ICBj
cmVhdGUgbW9kZSAxMDA2NDQNCj4gRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lp
by9yZXNvbHZlci9hZDJzOTAudHh0DQo+IA0KPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9yZXNvbHZlci9hZDJzOTAudHh0DQo+IGIvRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9yZXNvbHZlci9hZDJzOTAudHh0DQo+IG5ldyBm
aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTk0NDE3NTM5OTM4DQo+IC0t
LSAvZGV2L251bGwNCj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lp
by9yZXNvbHZlci9hZDJzOTAudHh0DQo+IEBAIC0wLDAgKzEsMjggQEANCj4gK0FuYWxvZyBEZXZp
Y2VzIEFEMlM5MCBSZXNvbHZlci10by1EaWdpdGFsIENvbnZlcnRlcg0KPiArDQo+ICtodHRwczov
L3d3dy5hbmFsb2cuY29tL2VuL3Byb2R1Y3RzL2FkMnM5MC5odG1sDQo+ICsNCj4gK1JlcXVpcmVk
IHByb3BlcnRpZXM6DQo+ICsgIC0gY29tcGF0aWJsZTogc2hvdWxkIGJlICJhZGksYWQyczkwIg0K
PiArICAtIHJlZzogU1BJIGNoaXAgc2VsZWN0IG51bWJlciBmb3IgdGhlIGRldmljZQ0KPiArICAt
IHNwaS1tYXgtZnJlcXVlbmN5OiBzZXQgbWF4aW11bSBjbG9jayBmcmVxdWVuY3ksIG11c3QgYmUg
ODMwMDAwDQo+ICsgIC0gc3BpLWNwb2wgYW5kIHNwaS1jcGhhOg0KPiArICAgICAgICBFaXRoZXIg
U1BJIG1vZGUgKDAsMCkgb3IgKDEsMSkgbXVzdCBiZSB1c2VkLCBzbyBzcGVjaWZ5IG5vbmUgb3IN
Cj4gYm90aCBvZg0KPiArICAgICAgICBzcGktY3BoYSwgc3BpLWNwb2wuDQpGb3IgU1BJIHByb3Bl
cnRpZXMgaXQncyBhIGdvb2QgaWRlYSB0byBhbHNvIHJlZmVyZW5jZSB0aGUgZG9jdW1lbnQgZm9y
IFNQSQ0KYmluZGluZ3MuDQpTb21ldGhpbmcgbGlrZToNCiAgICBTZWUgZm9yIG1vcmUgZGV0YWls
czoNCiAgICAgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9zcGktYnVzLnR4
dA0KDQo+ICsNCj4gK05vdGUgYWJvdXQgbWF4IGZyZXF1ZW5jeToNCj4gKyAgICBDaGlwJ3MgbWF4
IGZyZXF1ZW5jeSwgYXMgc3BlY2lmaWVkIGluIGl0cyBkYXRhc2hlZXQsIGlzIDJNaHouIEJ1dCBh
DQo+IDYwMG5zDQo+ICsgICAgZGVsYXkgaXMgZXhwZWN0ZWQgYmV0d2VlbiB0aGUgYXBwbGljYXRp
b24gb2YgYSBsb2dpYyBMTyB0byBDUyBhbmQNCj4gdGhlDQo+ICsgICAgYXBwbGljYXRpb24gb2Yg
U0NMSywgYXMgYWxzbyBzcGVjaWZpZWQuIEFuZCBzaW5jZSB0aGUgZGVsYXkgaXMgbm90DQo+ICsg
ICAgaW1wbGVtZW50ZWQgaW4gdGhlIHNwaSBjb2RlLCB0byBzYXRpc2Z5IGl0LCBTQ0xLJ3MgcGVy
aW9kIHNob3VsZCBiZQ0KPiBhdCBtb3N0DQo+ICsgICAgMiAqIDYwMG5zLCBzbyB0aGUgbWF4IGZy
ZXF1ZW5jeSBzaG91bGQgYmUgMSAvICgyICogNmUtNyksIHdoaWNoDQo+IGdpdmVzDQo+ICsgICAg
cm91Z2hseSA4MzAwMDBIei4NCj4gKw0KPiArRXhhbXBsZToNCj4gK3Jlc29sdmVyQDAgew0KPiAr
CWNvbXBhdGlibGUgPSAiYWRpLGFkMnM5MCI7DQo+ICsJcmVnID0gPDA+Ow0KPiArCXNwaS1tYXgt
ZnJlcXVlbmN5ID0gPDgzMDAwMD47DQo+ICsJc3BpLWNwb2w7DQo+ICsJc3BpLWNwaGE7DQo+ICt9
Ow0K

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

* Re: [PATCH v2 4/7] dt-bindings:iio:resolver: Add docs for ad2s90
  2018-11-19  8:22   ` Ardelean, Alexandru
@ 2018-11-20 23:34     ` Matheus Tavares Bernardino
  0 siblings, 0 replies; 14+ messages in thread
From: Matheus Tavares Bernardino @ 2018-11-20 23:34 UTC (permalink / raw)
  To: Alexandru Ardelean
  Cc: Lars-Peter Clausen, Rob Herring, Hartmut Knaack,
	Jonathan Cameron, Michael Hennerich, Mark Rutland,
	Peter Meerwald-Stadler, Greg Kroah-Hartman, Victor Colombo,
	linux-kernel, linux-iio, devel, kernel-usp, devicetree

On Mon, Nov 19, 2018 at 6:22 AM Ardelean, Alexandru
<alexandru.Ardelean@analog.com> wrote:
>
> On Sun, 2018-11-18 at 02:25 -0200, Matheus Tavares wrote:
> > This patch adds the device tree binding documentation for the ad2s90
> > resolver-to-digital converter.
> >
>
> One minor comment inline.
>
> > Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
> > ---
> > Changes in v2:
> >  - Rewritten 'spi-cpol and spi-cpha' item to say that the device can
> >  work in either mode (0,0) or (1,1) and explain how they should be
> >  specified in DT.
> >
> >  .../bindings/iio/resolver/ad2s90.txt          | 28 +++++++++++++++++++
> >  1 file changed, 28 insertions(+)
> >  create mode 100644
> > Documentation/devicetree/bindings/iio/resolver/ad2s90.txt
> >
> > diff --git a/Documentation/devicetree/bindings/iio/resolver/ad2s90.txt
> > b/Documentation/devicetree/bindings/iio/resolver/ad2s90.txt
> > new file mode 100644
> > index 000000000000..594417539938
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/iio/resolver/ad2s90.txt
> > @@ -0,0 +1,28 @@
> > +Analog Devices AD2S90 Resolver-to-Digital Converter
> > +
> > +https://www.analog.com/en/products/ad2s90.html
> > +
> > +Required properties:
> > +  - compatible: should be "adi,ad2s90"
> > +  - reg: SPI chip select number for the device
> > +  - spi-max-frequency: set maximum clock frequency, must be 830000
> > +  - spi-cpol and spi-cpha:
> > +        Either SPI mode (0,0) or (1,1) must be used, so specify none or
> > both of
> > +        spi-cpha, spi-cpol.
> For SPI properties it's a good idea to also reference the document for SPI
> bindings.
> Something like:
>     See for more details:
>      Documentation/devicetree/bindings/spi/spi-bus.txt
>

Thanks, Alex! I'll add that for v3.

Also, can you confirm AD2S90 works in both spi mode 0 and 3? It's not
explicitly stated in the datasheet, but that's what it seemed to me
and some colleagues.

Thanks,
Matheus

> > +
> > +Note about max frequency:
> > +    Chip's max frequency, as specified in its datasheet, is 2Mhz. But a
> > 600ns
> > +    delay is expected between the application of a logic LO to CS and
> > the
> > +    application of SCLK, as also specified. And since the delay is not
> > +    implemented in the spi code, to satisfy it, SCLK's period should be
> > at most
> > +    2 * 600ns, so the max frequency should be 1 / (2 * 6e-7), which
> > gives
> > +    roughly 830000Hz.
> > +
> > +Example:
> > +resolver@0 {
> > +     compatible = "adi,ad2s90";
> > +     reg = <0>;
> > +     spi-max-frequency = <830000>;
> > +     spi-cpol;
> > +     spi-cpha;
> > +};
>
> --
> You received this message because you are subscribed to the Google Groups "Kernel USP" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to kernel-usp+unsubscribe@googlegroups.com.
> To post to this group, send email to kernel-usp@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/kernel-usp/563614e00314ba92b9513645a82fde06504a42d5.camel%40analog.com.
> For more options, visit https://groups.google.com/d/optout.

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

* Re: [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support
  2018-11-19  8:09   ` Ardelean, Alexandru
@ 2018-11-20 23:59     ` Matheus Tavares Bernardino
  2018-11-21 19:12       ` Jonathan Cameron
  0 siblings, 1 reply; 14+ messages in thread
From: Matheus Tavares Bernardino @ 2018-11-20 23:59 UTC (permalink / raw)
  To: Alexandru Ardelean
  Cc: Lars-Peter Clausen, Rob Herring, Hartmut Knaack,
	Jonathan Cameron, Michael Hennerich, Mark Rutland,
	Peter Meerwald-Stadler, Greg Kroah-Hartman, Victor Colombo,
	linux-kernel, linux-iio, devel, kernel-usp, devicetree

On Mon, Nov 19, 2018 at 6:09 AM Ardelean, Alexandru
<alexandru.Ardelean@analog.com> wrote:
>
> On Sun, 2018-11-18 at 02:25 -0200, Matheus Tavares wrote:
> > This patch adds device tree support to ad2s90 with standard
> > device tree id table.
> >
>
> Hey,
>
> Comment inline
>
> > Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
> > ---
> > Changes in v2:
> >  - none
> >
> >  drivers/staging/iio/resolver/ad2s90.c | 7 +++++++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/drivers/staging/iio/resolver/ad2s90.c
> > b/drivers/staging/iio/resolver/ad2s90.c
> > index 3e257ac46f7a..6ffbac66b837 100644
> > --- a/drivers/staging/iio/resolver/ad2s90.c
> > +++ b/drivers/staging/iio/resolver/ad2s90.c
> > @@ -107,6 +107,12 @@ static int ad2s90_probe(struct spi_device *spi)
> >       return devm_iio_device_register(indio_dev->dev.parent, indio_dev);
> >  }
> >
> > +static const struct of_device_id ad2s90_of_match[] = {
> > +     { .compatible = "adi,ad2s90", },
> > +     {}
> > +};
> > +MODULE_DEVICE_TABLE(of, ad2s90_of_match);
> > +
> >  static const struct spi_device_id ad2s90_id[] = {
> >       { "ad2s90" },
> >       {}
> > @@ -116,6 +122,7 @@ MODULE_DEVICE_TABLE(spi, ad2s90_id);
> >  static struct spi_driver ad2s90_driver = {
> >       .driver = {
> >               .name = "ad2s90",
> > +             .of_match_table = of_match_ptr(ad2s90_of_match),
>
> I think you need to remove the of_match_ptr().
> There was a comment from Jonathan on another thread about this.
> See:
>    https://patchwork.kernel.org/patch/10682963/
>

Hm, got it, thanks!

I don't understand much about ACPI yet, and I had understood the
"of_match_ptr" as a guard. Could someone point me in which cases it
should be used? Or is it obsolete?

Matheus

> So,
> +               .of_match_table = of_match_ptr(ad2s90_of_match),
>
> becomes
> > +             .of_match_table = ad2s90_of_match,
>
> >       },
> >       .probe = ad2s90_probe,
> >       .id_table = ad2s90_id,
>
> --
> You received this message because you are subscribed to the Google Groups "Kernel USP" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to kernel-usp+unsubscribe@googlegroups.com.
> To post to this group, send email to kernel-usp@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/kernel-usp/f250fa3a01b51d59979e7a2e3e42cc34d02aa52e.camel%40analog.com.
> For more options, visit https://groups.google.com/d/optout.

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

* Re: [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support
  2018-11-20 23:59     ` Matheus Tavares Bernardino
@ 2018-11-21 19:12       ` Jonathan Cameron
  0 siblings, 0 replies; 14+ messages in thread
From: Jonathan Cameron @ 2018-11-21 19:12 UTC (permalink / raw)
  To: Matheus Tavares Bernardino
  Cc: Alexandru Ardelean, Lars-Peter Clausen, Rob Herring,
	Hartmut Knaack, Michael Hennerich, Mark Rutland,
	Peter Meerwald-Stadler, Greg Kroah-Hartman, Victor Colombo,
	linux-kernel, linux-iio, devel, kernel-usp, devicetree

On Tue, 20 Nov 2018 21:59:19 -0200
Matheus Tavares Bernardino <matheus.bernardino@usp.br> wrote:

> On Mon, Nov 19, 2018 at 6:09 AM Ardelean, Alexandru
> <alexandru.Ardelean@analog.com> wrote:
> >
> > On Sun, 2018-11-18 at 02:25 -0200, Matheus Tavares wrote:  
> > > This patch adds device tree support to ad2s90 with standard
> > > device tree id table.
> > >  
> >
> > Hey,
> >
> > Comment inline
> >  
> > > Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br>
> > > ---
> > > Changes in v2:
> > >  - none
> > >
> > >  drivers/staging/iio/resolver/ad2s90.c | 7 +++++++
> > >  1 file changed, 7 insertions(+)
> > >
> > > diff --git a/drivers/staging/iio/resolver/ad2s90.c
> > > b/drivers/staging/iio/resolver/ad2s90.c
> > > index 3e257ac46f7a..6ffbac66b837 100644
> > > --- a/drivers/staging/iio/resolver/ad2s90.c
> > > +++ b/drivers/staging/iio/resolver/ad2s90.c
> > > @@ -107,6 +107,12 @@ static int ad2s90_probe(struct spi_device *spi)
> > >       return devm_iio_device_register(indio_dev->dev.parent, indio_dev);
> > >  }
> > >
> > > +static const struct of_device_id ad2s90_of_match[] = {
> > > +     { .compatible = "adi,ad2s90", },
> > > +     {}
> > > +};
> > > +MODULE_DEVICE_TABLE(of, ad2s90_of_match);
> > > +
> > >  static const struct spi_device_id ad2s90_id[] = {
> > >       { "ad2s90" },
> > >       {}
> > > @@ -116,6 +122,7 @@ MODULE_DEVICE_TABLE(spi, ad2s90_id);
> > >  static struct spi_driver ad2s90_driver = {
> > >       .driver = {
> > >               .name = "ad2s90",
> > > +             .of_match_table = of_match_ptr(ad2s90_of_match),  
> >
> > I think you need to remove the of_match_ptr().
> > There was a comment from Jonathan on another thread about this.
> > See:
> >    https://patchwork.kernel.org/patch/10682963/
> >  
> 
> Hm, got it, thanks!
> 
> I don't understand much about ACPI yet, and I had understood the
> "of_match_ptr" as a guard. Could someone point me in which cases it
> should be used? Or is it obsolete?
>
It's an odd one.  The ACPI route allows you to basically provide
a temporary (these are really just for debugging purposes)

https://lwn.net/Articles/612062/
https://www.kernel.org/doc/Documentation/acpi/enumeration.txt
search for prp0001

So of_match_ptr is sort of obsolete, but conversely for some
types of driver it might never make sense to use the prp0001
route.  For the stuff I play with in my day job for example
we can just change the firmware to do it right whenever we
need to and have appropriate ACPI ids to be able to issue
unique ones.

Jonathan

> Matheus
> 
> > So,
> > +               .of_match_table = of_match_ptr(ad2s90_of_match),
> >
> > becomes  
> > > +             .of_match_table = ad2s90_of_match,  
> >  
> > >       },
> > >       .probe = ad2s90_probe,
> > >       .id_table = ad2s90_id,  
> >
> > --
> > You received this message because you are subscribed to the Google Groups "Kernel USP" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to kernel-usp+unsubscribe@googlegroups.com.
> > To post to this group, send email to kernel-usp@googlegroups.com.
> > To view this discussion on the web visit https://groups.google.com/d/msgid/kernel-usp/f250fa3a01b51d59979e7a2e3e42cc34d02aa52e.camel%40analog.com.
> > For more options, visit https://groups.google.com/d/optout.  

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

end of thread, other threads:[~2018-11-22  5:48 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-18  4:25 [PATCH v2 0/7] staging:iio:ad2s90: Add dt support and move out of staging Matheus Tavares
2018-11-18  4:25 ` [PATCH v2 1/7] staging:iio:ad2s90: Add device tree support Matheus Tavares
2018-11-19  8:09   ` Ardelean, Alexandru
2018-11-20 23:59     ` Matheus Tavares Bernardino
2018-11-21 19:12       ` Jonathan Cameron
2018-11-18  4:25 ` [PATCH v2 2/7] staging:iio:ad2s90: Remove spi setup that should be done via dt Matheus Tavares
2018-11-18  4:25 ` [PATCH v2 3/7] staging:iio:ad2s90: Add max frequency check at probe Matheus Tavares
2018-11-19  8:18   ` Ardelean, Alexandru
2018-11-18  4:25 ` [PATCH v2 4/7] dt-bindings:iio:resolver: Add docs for ad2s90 Matheus Tavares
2018-11-19  8:22   ` Ardelean, Alexandru
2018-11-20 23:34     ` Matheus Tavares Bernardino
2018-11-18  4:25 ` [PATCH v2 5/7] staging:iio:ad2s90: Replace license text w/ SPDX identifier Matheus Tavares
2018-11-18  4:25 ` [PATCH v2 6/7] staging:iio:ad2s90: Add comment to device state mutex Matheus Tavares
2018-11-18  4:25 ` [PATCH v2 7/7] staging:iio:ad2s90: Move out of staging Matheus Tavares

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