All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/4] iio: accel: adxl345: Split driver into core and I2C then add SPI support
@ 2017-02-22 10:22 ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:22 UTC (permalink / raw)
  To: jic23, linux-iio
  Cc: knaack.h, lars, pmeerw, dmitry.torokhov, michael.hennerich,
	daniel.baluta, amsfield22, florian.vaussard, linux-kernel,
	robh+dt, mark.rutland, devicetree, Eva Rachel Retuya

This patchset modifies the adxl345 to use regmap. In doing so, we can
easily introduce SPI support and let regmap handle the rest.

Recap of basic features: read_raw for x, y and z axes, scale. After
applying this series, driver now supports the SPI protocol and enumeration
of device via device tree.

Changes from v2:
* Drop PATCH 4 iio: accel: adxl345: Add ACPI support
* Add OF match table on both I2C and SPI files and document them

Changes from v1:
iio: accel: adxl345: Use I2C regmap instead of direct I2C access
* Move other deletions from patch 2 in here -- make it clear what got deleted
  and/or modified that is hard to see previously
* Introduce the driver header file "adxl345.h" here instead of doing it in the
  next patch
* Completely omit traces of i2c_client and let this file (adxl345.c) mirror the
  core file on the next patch.
* Improve debugging print about invalid device ID in probe.
iio: accel: adxl345: Split driver into core and I2C
* Update Kconfig to Jonathan's preferred style
* Improve similarity index from 78% to 100% (rename detection)
iio: accel: adxl345: Add ACPI support
* Correct acpi_device_id: ADX0345 -> ADS0345

Eva Rachel Retuya (4):
  Documentation: dt-bindings: Document ADXL345 accelerometer binding
  iio: accel: adxl345: Use I2C regmap instead of direct I2C access
  iio: accel: adxl345: Split driver into core and I2C
  iio: accel: adxl345: Add SPI support

 .../devicetree/bindings/iio/accel/adxl345.txt      |  38 ++++
 drivers/iio/accel/Kconfig                          |  18 +-
 drivers/iio/accel/Makefile                         |   4 +-
 drivers/iio/accel/adxl345.c                        | 194 ---------------------
 drivers/iio/accel/adxl345.h                        |  18 ++
 drivers/iio/accel/adxl345_core.c                   | 182 +++++++++++++++++++
 drivers/iio/accel/adxl345_i2c.c                    |  81 +++++++++
 drivers/iio/accel/adxl345_spi.c                    |  86 +++++++++
 8 files changed, 423 insertions(+), 198 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/iio/accel/adxl345.txt
 delete mode 100644 drivers/iio/accel/adxl345.c
 create mode 100644 drivers/iio/accel/adxl345.h
 create mode 100644 drivers/iio/accel/adxl345_core.c
 create mode 100644 drivers/iio/accel/adxl345_i2c.c
 create mode 100644 drivers/iio/accel/adxl345_spi.c

-- 
2.7.4

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

* [PATCH v3 0/4] iio: accel: adxl345: Split driver into core and I2C then add SPI support
@ 2017-02-22 10:22 ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:22 UTC (permalink / raw)
  To: jic23-DgEjT+Ai2ygdnm+yROfE0A, linux-iio-u79uwXL29TY76Z2rM5mHXA
  Cc: knaack.h-Mmb7MZpHnFY, lars-Qo5EllUWu/uELgA04lAiVw,
	pmeerw-jW+XmwGofnusTnJN9+BGXg,
	dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w,
	michael.hennerich-OyLXuOCK7orQT0dZR+AlfA,
	daniel.baluta-Re5JQEeQqe8AvxtiuMwx3w,
	amsfield22-Re5JQEeQqe8AvxtiuMwx3w,
	florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Eva Rachel Retuya

This patchset modifies the adxl345 to use regmap. In doing so, we can
easily introduce SPI support and let regmap handle the rest.

Recap of basic features: read_raw for x, y and z axes, scale. After
applying this series, driver now supports the SPI protocol and enumeration
of device via device tree.

Changes from v2:
* Drop PATCH 4 iio: accel: adxl345: Add ACPI support
* Add OF match table on both I2C and SPI files and document them

Changes from v1:
iio: accel: adxl345: Use I2C regmap instead of direct I2C access
* Move other deletions from patch 2 in here -- make it clear what got deleted
  and/or modified that is hard to see previously
* Introduce the driver header file "adxl345.h" here instead of doing it in the
  next patch
* Completely omit traces of i2c_client and let this file (adxl345.c) mirror the
  core file on the next patch.
* Improve debugging print about invalid device ID in probe.
iio: accel: adxl345: Split driver into core and I2C
* Update Kconfig to Jonathan's preferred style
* Improve similarity index from 78% to 100% (rename detection)
iio: accel: adxl345: Add ACPI support
* Correct acpi_device_id: ADX0345 -> ADS0345

Eva Rachel Retuya (4):
  Documentation: dt-bindings: Document ADXL345 accelerometer binding
  iio: accel: adxl345: Use I2C regmap instead of direct I2C access
  iio: accel: adxl345: Split driver into core and I2C
  iio: accel: adxl345: Add SPI support

 .../devicetree/bindings/iio/accel/adxl345.txt      |  38 ++++
 drivers/iio/accel/Kconfig                          |  18 +-
 drivers/iio/accel/Makefile                         |   4 +-
 drivers/iio/accel/adxl345.c                        | 194 ---------------------
 drivers/iio/accel/adxl345.h                        |  18 ++
 drivers/iio/accel/adxl345_core.c                   | 182 +++++++++++++++++++
 drivers/iio/accel/adxl345_i2c.c                    |  81 +++++++++
 drivers/iio/accel/adxl345_spi.c                    |  86 +++++++++
 8 files changed, 423 insertions(+), 198 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/iio/accel/adxl345.txt
 delete mode 100644 drivers/iio/accel/adxl345.c
 create mode 100644 drivers/iio/accel/adxl345.h
 create mode 100644 drivers/iio/accel/adxl345_core.c
 create mode 100644 drivers/iio/accel/adxl345_i2c.c
 create mode 100644 drivers/iio/accel/adxl345_spi.c

-- 
2.7.4

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

* [PATCH v3 1/4] Documentation: dt-bindings: Document ADXL345 accelerometer binding
@ 2017-02-22 10:22   ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:22 UTC (permalink / raw)
  To: jic23, linux-iio
  Cc: knaack.h, lars, pmeerw, dmitry.torokhov, michael.hennerich,
	daniel.baluta, amsfield22, florian.vaussard, linux-kernel,
	robh+dt, mark.rutland, devicetree, Eva Rachel Retuya

Add the device tree binding documentation for the ADXL345 3-axis digital
accelerometer.

Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
---
Change from v2:
* Add OF match table on both I2C and SPI files and document them

 .../devicetree/bindings/iio/accel/adxl345.txt      | 38 ++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/accel/adxl345.txt

diff --git a/Documentation/devicetree/bindings/iio/accel/adxl345.txt b/Documentation/devicetree/bindings/iio/accel/adxl345.txt
new file mode 100644
index 0000000..e623f4a
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/accel/adxl345.txt
@@ -0,0 +1,38 @@
+Analog Devices ADXL345 3-Axis, +/-(2g/4g/8g/16g) Digital Accelerometer
+
+http://www.analog.com/en/products/mems/accelerometers/adxl345.html
+
+Required properties:
+ - compatible : should be "adi,adxl345"
+ - reg : the I2C address or SPI chip select number of the sensor
+
+Required properties for SPI bus usage:
+ - spi-max-frequency : set maximum clock frequency, must be 5000000
+ - spi-cpol and spi-cpha : must be defined for adxl345 to enable SPI mode 3
+
+Optional properties:
+ - interrupt-parent : phandle to the parent interrupt controller as documented
+   in Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
+ - interrupts: interrupt mapping for IRQ as documented in
+   Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
+
+Example for a I2C device node:
+
+	adxl345@2a {
+		compatible = "adi,adxl345";
+		reg = <0x53>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
+	};
+
+Example for a SPI device node:
+
+	adxl345@0 {
+		compatible = "adi,adxl345";
+		reg = <0>;
+		spi-max-frequency = <5000000>;
+		spi-cpol;
+		spi-cpha;
+		interrupt-parent = <&gpio1>;
+		interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
+	};
-- 
2.7.4

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

* [PATCH v3 1/4] Documentation: dt-bindings: Document ADXL345 accelerometer binding
@ 2017-02-22 10:22   ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:22 UTC (permalink / raw)
  To: jic23-DgEjT+Ai2ygdnm+yROfE0A, linux-iio-u79uwXL29TY76Z2rM5mHXA
  Cc: knaack.h-Mmb7MZpHnFY, lars-Qo5EllUWu/uELgA04lAiVw,
	pmeerw-jW+XmwGofnusTnJN9+BGXg,
	dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w,
	michael.hennerich-OyLXuOCK7orQT0dZR+AlfA,
	daniel.baluta-Re5JQEeQqe8AvxtiuMwx3w,
	amsfield22-Re5JQEeQqe8AvxtiuMwx3w,
	florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Eva Rachel Retuya

Add the device tree binding documentation for the ADXL345 3-axis digital
accelerometer.

Signed-off-by: Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
Change from v2:
* Add OF match table on both I2C and SPI files and document them

 .../devicetree/bindings/iio/accel/adxl345.txt      | 38 ++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/iio/accel/adxl345.txt

diff --git a/Documentation/devicetree/bindings/iio/accel/adxl345.txt b/Documentation/devicetree/bindings/iio/accel/adxl345.txt
new file mode 100644
index 0000000..e623f4a
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/accel/adxl345.txt
@@ -0,0 +1,38 @@
+Analog Devices ADXL345 3-Axis, +/-(2g/4g/8g/16g) Digital Accelerometer
+
+http://www.analog.com/en/products/mems/accelerometers/adxl345.html
+
+Required properties:
+ - compatible : should be "adi,adxl345"
+ - reg : the I2C address or SPI chip select number of the sensor
+
+Required properties for SPI bus usage:
+ - spi-max-frequency : set maximum clock frequency, must be 5000000
+ - spi-cpol and spi-cpha : must be defined for adxl345 to enable SPI mode 3
+
+Optional properties:
+ - interrupt-parent : phandle to the parent interrupt controller as documented
+   in Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
+ - interrupts: interrupt mapping for IRQ as documented in
+   Documentation/devicetree/bindings/interrupt-controller/interrupts.txt
+
+Example for a I2C device node:
+
+	adxl345@2a {
+		compatible = "adi,adxl345";
+		reg = <0x53>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
+	};
+
+Example for a SPI device node:
+
+	adxl345@0 {
+		compatible = "adi,adxl345";
+		reg = <0>;
+		spi-max-frequency = <5000000>;
+		spi-cpol;
+		spi-cpha;
+		interrupt-parent = <&gpio1>;
+		interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
+	};
-- 
2.7.4

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

* [PATCH v3 2/4] iio: accel: adxl345: Use I2C regmap instead of direct I2C access
  2017-02-22 10:22 ` Eva Rachel Retuya
  (?)
  (?)
@ 2017-02-22 10:22 ` Eva Rachel Retuya
  2017-02-23 16:27     ` Andy Shevchenko
  -1 siblings, 1 reply; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:22 UTC (permalink / raw)
  To: jic23, linux-iio
  Cc: knaack.h, lars, pmeerw, dmitry.torokhov, michael.hennerich,
	daniel.baluta, amsfield22, florian.vaussard, linux-kernel,
	robh+dt, mark.rutland, devicetree, Eva Rachel Retuya

Convert the driver to use regmap instead of I2C-specific functions.
Also, introduce the header file "adxl345.h" and export the probe and
remove functions. This is done in preparation for splitting this driver
into core and I2C-specific code as well as introduction of SPI driver.

Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
---
Change from v2:
* None

Changes from v1:
* Move other deletions from patch 2 in here -- make it clear what got deleted
  and/or modified that is hard to see previously
* Introduce the driver header file "adxl345.h" here instead of doing it in the
  next patch
* Completely omit traces of i2c_client and let this file (adxl345.c) mirror the
  core file on the next patch.
* Improve debugging print about invalid device ID in probe.

 drivers/iio/accel/Kconfig   |  1 +
 drivers/iio/accel/adxl345.c | 88 ++++++++++++++++++++-------------------------
 drivers/iio/accel/adxl345.h | 18 ++++++++++
 3 files changed, 57 insertions(+), 50 deletions(-)
 create mode 100644 drivers/iio/accel/adxl345.h

diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
index 2308bac..26b8614 100644
--- a/drivers/iio/accel/Kconfig
+++ b/drivers/iio/accel/Kconfig
@@ -9,6 +9,7 @@ config ADXL345
 	tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
 	depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
 	depends on I2C
+	select REGMAP_I2C
 	help
 	  Say Y here if you want to build support for the Analog Devices
 	  ADXL345 3-axis digital accelerometer.
diff --git a/drivers/iio/accel/adxl345.c b/drivers/iio/accel/adxl345.c
index c34991f..a3bd711 100644
--- a/drivers/iio/accel/adxl345.c
+++ b/drivers/iio/accel/adxl345.c
@@ -7,16 +7,17 @@
  * the GNU General Public License. See the file COPYING in the main
  * directory of this archive for more details.
  *
- * IIO driver for ADXL345
- * 7-bit I2C slave address: 0x1D (ALT ADDRESS pin tied to VDDIO) or
- * 0x53 (ALT ADDRESS pin grounded)
+ * IIO core driver for ADXL345
  */
 
 #include <linux/i2c.h>
 #include <linux/module.h>
+#include <linux/regmap.h>
 
 #include <linux/iio/iio.h>
 
+#include "adxl345.h"
+
 #define ADXL345_REG_DEVID		0x00
 #define ADXL345_REG_POWER_CTL		0x2D
 #define ADXL345_REG_DATA_FORMAT		0x31
@@ -45,7 +46,7 @@
 static const int adxl345_uscale = 38300;
 
 struct adxl345_data {
-	struct i2c_client *client;
+	struct regmap *regmap;
 	u8 data_range;
 };
 
@@ -70,6 +71,7 @@ static int adxl345_read_raw(struct iio_dev *indio_dev,
 {
 	struct adxl345_data *data = iio_priv(indio_dev);
 	int ret;
+	__le16 regval;
 
 	switch (mask) {
 	case IIO_CHAN_INFO_RAW:
@@ -78,11 +80,12 @@ static int adxl345_read_raw(struct iio_dev *indio_dev,
 		 * ADXL345_REG_DATA(X0/Y0/Z0) contain the least significant byte
 		 * and ADXL345_REG_DATA(X0/Y0/Z0) + 1 the most significant byte
 		 */
-		ret = i2c_smbus_read_word_data(data->client, chan->address);
+		ret = regmap_bulk_read(data->regmap, chan->address, &regval,
+				       sizeof(regval));
 		if (ret < 0)
 			return ret;
 
-		*val = sign_extend32(ret, 12);
+		*val = sign_extend32(le16_to_cpu(regval), 12);
 		return IIO_VAL_INT;
 	case IIO_CHAN_INFO_SCALE:
 		*val = 0;
@@ -99,96 +102,81 @@ static const struct iio_info adxl345_info = {
 	.read_raw	= adxl345_read_raw,
 };
 
-static int adxl345_probe(struct i2c_client *client,
-			 const struct i2c_device_id *id)
+int adxl345_common_probe(struct device *dev, struct regmap *regmap,
+			 const char *name)
 {
 	struct adxl345_data *data;
 	struct iio_dev *indio_dev;
 	int ret;
+	u32 regval;
 
-	ret = i2c_smbus_read_byte_data(client, ADXL345_REG_DEVID);
+	ret = regmap_read(regmap, ADXL345_REG_DEVID, &regval);
 	if (ret < 0) {
-		dev_err(&client->dev, "Error reading device ID: %d\n", ret);
+		dev_err(dev, "Error reading device ID: %d\n", ret);
 		return ret;
 	}
 
-	if (ret != ADXL345_DEVID) {
-		dev_err(&client->dev, "Invalid device ID: %d\n", ret);
+	if (regval != ADXL345_DEVID) {
+		dev_err(dev, "Invalid device ID: %x, expected %x\n",
+			regval, ADXL345_DEVID);
 		return -ENODEV;
 	}
 
-	indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
+	indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
 	if (!indio_dev)
 		return -ENOMEM;
 
 	data = iio_priv(indio_dev);
-	i2c_set_clientdata(client, indio_dev);
-	data->client = client;
+	dev_set_drvdata(dev, indio_dev);
+	data->regmap = regmap;
 	/* Enable full-resolution mode */
 	data->data_range = ADXL345_DATA_FORMAT_FULL_RES;
 
-	ret = i2c_smbus_write_byte_data(data->client, ADXL345_REG_DATA_FORMAT,
-					data->data_range);
+	ret = regmap_write(data->regmap, ADXL345_REG_DATA_FORMAT,
+			   data->data_range);
 	if (ret < 0) {
-		dev_err(&client->dev, "Failed to set data range: %d\n", ret);
+		dev_err(dev, "Failed to set data range: %d\n", ret);
 		return ret;
 	}
 
-	indio_dev->dev.parent = &client->dev;
-	indio_dev->name = id->name;
+	indio_dev->dev.parent = dev;
+	indio_dev->name = name;
 	indio_dev->info = &adxl345_info;
 	indio_dev->modes = INDIO_DIRECT_MODE;
 	indio_dev->channels = adxl345_channels;
 	indio_dev->num_channels = ARRAY_SIZE(adxl345_channels);
 
 	/* Enable measurement mode */
-	ret = i2c_smbus_write_byte_data(data->client, ADXL345_REG_POWER_CTL,
-					ADXL345_POWER_CTL_MEASURE);
+	ret = regmap_write(data->regmap, ADXL345_REG_POWER_CTL,
+			   ADXL345_POWER_CTL_MEASURE);
 	if (ret < 0) {
-		dev_err(&client->dev, "Failed to enable measurement mode: %d\n",
-			ret);
+		dev_err(dev, "Failed to enable measurement mode: %d\n", ret);
 		return ret;
 	}
 
 	ret = iio_device_register(indio_dev);
 	if (ret < 0) {
-		dev_err(&client->dev, "iio_device_register failed: %d\n", ret);
-		i2c_smbus_write_byte_data(data->client, ADXL345_REG_POWER_CTL,
-					  ADXL345_POWER_CTL_STANDBY);
+		dev_err(dev, "iio_device_register failed: %d\n", ret);
+		regmap_write(data->regmap, ADXL345_REG_POWER_CTL,
+			     ADXL345_POWER_CTL_STANDBY);
 	}
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(adxl345_common_probe);
 
-static int adxl345_remove(struct i2c_client *client)
+int adxl345_common_remove(struct device *dev)
 {
-	struct iio_dev *indio_dev = i2c_get_clientdata(client);
+	struct iio_dev *indio_dev = dev_get_drvdata(dev);
 	struct adxl345_data *data = iio_priv(indio_dev);
 
 	iio_device_unregister(indio_dev);
 
-	return i2c_smbus_write_byte_data(data->client, ADXL345_REG_POWER_CTL,
-					 ADXL345_POWER_CTL_STANDBY);
+	return regmap_write(data->regmap, ADXL345_REG_POWER_CTL,
+			    ADXL345_POWER_CTL_STANDBY);
 }
-
-static const struct i2c_device_id adxl345_i2c_id[] = {
-	{ "adxl345", 0 },
-	{ }
-};
-
-MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
-
-static struct i2c_driver adxl345_driver = {
-	.driver = {
-		.name	= "adxl345",
-	},
-	.probe		= adxl345_probe,
-	.remove		= adxl345_remove,
-	.id_table	= adxl345_i2c_id,
-};
-
-module_i2c_driver(adxl345_driver);
+EXPORT_SYMBOL_GPL(adxl345_common_remove);
 
 MODULE_AUTHOR("Eva Rachel Retuya <eraretuya@gmail.com>");
-MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer driver");
+MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer core driver");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/iio/accel/adxl345.h b/drivers/iio/accel/adxl345.h
new file mode 100644
index 0000000..fca3e25
--- /dev/null
+++ b/drivers/iio/accel/adxl345.h
@@ -0,0 +1,18 @@
+/*
+ * ADXL345 3-Axis Digital Accelerometer
+ *
+ * Copyright (c) 2017 Eva Rachel Retuya <eraretuya@gmail.com>
+ *
+ * This file is subject to the terms and conditions of version 2 of
+ * the GNU General Public License. See the file COPYING in the main
+ * directory of this archive for more details.
+ */
+
+#ifndef _ADXL345_H_
+#define _ADXL345_H_
+
+int adxl345_common_probe(struct device *dev, struct regmap *regmap,
+			 const char *name);
+int adxl345_common_remove(struct device *dev);
+
+#endif /* _ADXL345_H_ */
-- 
2.7.4

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

* [PATCH v3 3/4] iio: accel: adxl345: Split driver into core and I2C
@ 2017-02-22 10:23   ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:23 UTC (permalink / raw)
  To: jic23, linux-iio
  Cc: knaack.h, lars, pmeerw, dmitry.torokhov, michael.hennerich,
	daniel.baluta, amsfield22, florian.vaussard, linux-kernel,
	robh+dt, mark.rutland, devicetree, Eva Rachel Retuya

Move I2C-specific code into its own file and rely on regmap to access
registers. The core code provides access to x, y, z and scale readings.

Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
---
Change from v2:
* Add OF match table on both I2C and SPI files and document them

Changes from v1:
* Update Kconfig to Jonathan's preferred style
* Improve similarity index from 78% to 100% (rename detection)

 drivers/iio/accel/Kconfig                       | 13 ++--
 drivers/iio/accel/Makefile                      |  3 +-
 drivers/iio/accel/{adxl345.c => adxl345_core.c} |  0
 drivers/iio/accel/adxl345_i2c.c                 | 81 +++++++++++++++++++++++++
 4 files changed, 92 insertions(+), 5 deletions(-)
 rename drivers/iio/accel/{adxl345.c => adxl345_core.c} (100%)
 create mode 100644 drivers/iio/accel/adxl345_i2c.c

diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
index 26b8614..ffb0a63 100644
--- a/drivers/iio/accel/Kconfig
+++ b/drivers/iio/accel/Kconfig
@@ -8,14 +8,19 @@ menu "Accelerometers"
 config ADXL345
 	tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
 	depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
-	depends on I2C
-	select REGMAP_I2C
+	select REGMAP
+	select ADXL345_I2C if I2C
 	help
 	  Say Y here if you want to build support for the Analog Devices
 	  ADXL345 3-axis digital accelerometer.
 
-	  To compile this driver as a module, choose M here: the
-	  module will be called adxl345.
+	  To compile this driver as a module, choose M here: the core
+	  module will be called adxl345_core and you will also get
+	  adxl345_i2c for I2C.
+
+config ADXL345_I2C
+	tristate
+	select REGMAP_I2C
 
 config BMA180
 	tristate "Bosch BMA180/BMA250 3-Axis Accelerometer Driver"
diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile
index 618488d..3f4a6d6 100644
--- a/drivers/iio/accel/Makefile
+++ b/drivers/iio/accel/Makefile
@@ -3,7 +3,8 @@
 #
 
 # When adding new entries keep the list in alphabetical order
-obj-$(CONFIG_ADXL345) += adxl345.o
+obj-$(CONFIG_ADXL345) += adxl345_core.o
+obj-$(CONFIG_ADXL345_I2C) += adxl345_i2c.o
 obj-$(CONFIG_BMA180) += bma180.o
 obj-$(CONFIG_BMA220) += bma220_spi.o
 obj-$(CONFIG_BMC150_ACCEL) += bmc150-accel-core.o
diff --git a/drivers/iio/accel/adxl345.c b/drivers/iio/accel/adxl345_core.c
similarity index 100%
rename from drivers/iio/accel/adxl345.c
rename to drivers/iio/accel/adxl345_core.c
diff --git a/drivers/iio/accel/adxl345_i2c.c b/drivers/iio/accel/adxl345_i2c.c
new file mode 100644
index 0000000..df01bd1
--- /dev/null
+++ b/drivers/iio/accel/adxl345_i2c.c
@@ -0,0 +1,81 @@
+/*
+ * ADXL345 3-Axis Digital Accelerometer
+ *
+ * Copyright (c) 2017 Eva Rachel Retuya <eraretuya@gmail.com>
+ *
+ * This file is subject to the terms and conditions of version 2 of
+ * the GNU General Public License. See the file COPYING in the main
+ * directory of this archive for more details.
+ *
+ * I2C driver for ADXL345
+ * 7-bit I2C slave address: 0x1D (ALT ADDRESS pin tied to VDDIO) or
+ * 0x53 (ALT ADDRESS pin grounded)
+ */
+
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/regmap.h>
+
+#include "adxl345.h"
+
+static const struct regmap_config adxl345_i2c_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+};
+
+static int adxl345_i2c_probe(struct i2c_client *client,
+			     const struct i2c_device_id *id)
+{
+	struct regmap *regmap;
+	const char *name = NULL;
+
+	regmap = devm_regmap_init_i2c(client, &adxl345_i2c_regmap_config);
+	if (IS_ERR(regmap)) {
+		dev_err(&client->dev, "Error initializing i2c regmap: %d\n",
+			(int)PTR_ERR(regmap));
+		return PTR_ERR(regmap);
+	}
+
+	if (id)
+		name = id->name;
+
+	return adxl345_common_probe(&client->dev, regmap, name);
+}
+
+static int adxl345_i2c_remove(struct i2c_client *client)
+{
+	return adxl345_common_remove(&client->dev);
+}
+
+static const struct i2c_device_id adxl345_i2c_id[] = {
+	{ "adxl345", 0 },
+	{ }
+};
+
+MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
+
+#ifdef CONFIG_OF
+static const struct of_device_id adxl345_of_match[] = {
+	{ .compatible = "adi,adxl345" },
+	{ },
+};
+
+MODULE_DEVICE_TABLE(of, adxl345_of_match);
+#endif
+
+static struct i2c_driver adxl345_i2c_driver = {
+	.driver = {
+		.name	= "adxl345_i2c",
+		.of_match_table = of_match_ptr(adxl345_of_match),
+	},
+	.probe		= adxl345_i2c_probe,
+	.remove		= adxl345_i2c_remove,
+	.id_table	= adxl345_i2c_id,
+};
+
+module_i2c_driver(adxl345_i2c_driver);
+
+MODULE_AUTHOR("Eva Rachel Retuya <eraretuya@gmail.com>");
+MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer I2C driver");
+MODULE_LICENSE("GPL v2");
-- 
2.7.4

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

* [PATCH v3 3/4] iio: accel: adxl345: Split driver into core and I2C
@ 2017-02-22 10:23   ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:23 UTC (permalink / raw)
  To: jic23-DgEjT+Ai2ygdnm+yROfE0A, linux-iio-u79uwXL29TY76Z2rM5mHXA
  Cc: knaack.h-Mmb7MZpHnFY, lars-Qo5EllUWu/uELgA04lAiVw,
	pmeerw-jW+XmwGofnusTnJN9+BGXg,
	dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w,
	michael.hennerich-OyLXuOCK7orQT0dZR+AlfA,
	daniel.baluta-Re5JQEeQqe8AvxtiuMwx3w,
	amsfield22-Re5JQEeQqe8AvxtiuMwx3w,
	florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Eva Rachel Retuya

Move I2C-specific code into its own file and rely on regmap to access
registers. The core code provides access to x, y, z and scale readings.

Signed-off-by: Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
Change from v2:
* Add OF match table on both I2C and SPI files and document them

Changes from v1:
* Update Kconfig to Jonathan's preferred style
* Improve similarity index from 78% to 100% (rename detection)

 drivers/iio/accel/Kconfig                       | 13 ++--
 drivers/iio/accel/Makefile                      |  3 +-
 drivers/iio/accel/{adxl345.c => adxl345_core.c} |  0
 drivers/iio/accel/adxl345_i2c.c                 | 81 +++++++++++++++++++++++++
 4 files changed, 92 insertions(+), 5 deletions(-)
 rename drivers/iio/accel/{adxl345.c => adxl345_core.c} (100%)
 create mode 100644 drivers/iio/accel/adxl345_i2c.c

diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
index 26b8614..ffb0a63 100644
--- a/drivers/iio/accel/Kconfig
+++ b/drivers/iio/accel/Kconfig
@@ -8,14 +8,19 @@ menu "Accelerometers"
 config ADXL345
 	tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
 	depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
-	depends on I2C
-	select REGMAP_I2C
+	select REGMAP
+	select ADXL345_I2C if I2C
 	help
 	  Say Y here if you want to build support for the Analog Devices
 	  ADXL345 3-axis digital accelerometer.
 
-	  To compile this driver as a module, choose M here: the
-	  module will be called adxl345.
+	  To compile this driver as a module, choose M here: the core
+	  module will be called adxl345_core and you will also get
+	  adxl345_i2c for I2C.
+
+config ADXL345_I2C
+	tristate
+	select REGMAP_I2C
 
 config BMA180
 	tristate "Bosch BMA180/BMA250 3-Axis Accelerometer Driver"
diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile
index 618488d..3f4a6d6 100644
--- a/drivers/iio/accel/Makefile
+++ b/drivers/iio/accel/Makefile
@@ -3,7 +3,8 @@
 #
 
 # When adding new entries keep the list in alphabetical order
-obj-$(CONFIG_ADXL345) += adxl345.o
+obj-$(CONFIG_ADXL345) += adxl345_core.o
+obj-$(CONFIG_ADXL345_I2C) += adxl345_i2c.o
 obj-$(CONFIG_BMA180) += bma180.o
 obj-$(CONFIG_BMA220) += bma220_spi.o
 obj-$(CONFIG_BMC150_ACCEL) += bmc150-accel-core.o
diff --git a/drivers/iio/accel/adxl345.c b/drivers/iio/accel/adxl345_core.c
similarity index 100%
rename from drivers/iio/accel/adxl345.c
rename to drivers/iio/accel/adxl345_core.c
diff --git a/drivers/iio/accel/adxl345_i2c.c b/drivers/iio/accel/adxl345_i2c.c
new file mode 100644
index 0000000..df01bd1
--- /dev/null
+++ b/drivers/iio/accel/adxl345_i2c.c
@@ -0,0 +1,81 @@
+/*
+ * ADXL345 3-Axis Digital Accelerometer
+ *
+ * Copyright (c) 2017 Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
+ *
+ * This file is subject to the terms and conditions of version 2 of
+ * the GNU General Public License. See the file COPYING in the main
+ * directory of this archive for more details.
+ *
+ * I2C driver for ADXL345
+ * 7-bit I2C slave address: 0x1D (ALT ADDRESS pin tied to VDDIO) or
+ * 0x53 (ALT ADDRESS pin grounded)
+ */
+
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/regmap.h>
+
+#include "adxl345.h"
+
+static const struct regmap_config adxl345_i2c_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+};
+
+static int adxl345_i2c_probe(struct i2c_client *client,
+			     const struct i2c_device_id *id)
+{
+	struct regmap *regmap;
+	const char *name = NULL;
+
+	regmap = devm_regmap_init_i2c(client, &adxl345_i2c_regmap_config);
+	if (IS_ERR(regmap)) {
+		dev_err(&client->dev, "Error initializing i2c regmap: %d\n",
+			(int)PTR_ERR(regmap));
+		return PTR_ERR(regmap);
+	}
+
+	if (id)
+		name = id->name;
+
+	return adxl345_common_probe(&client->dev, regmap, name);
+}
+
+static int adxl345_i2c_remove(struct i2c_client *client)
+{
+	return adxl345_common_remove(&client->dev);
+}
+
+static const struct i2c_device_id adxl345_i2c_id[] = {
+	{ "adxl345", 0 },
+	{ }
+};
+
+MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
+
+#ifdef CONFIG_OF
+static const struct of_device_id adxl345_of_match[] = {
+	{ .compatible = "adi,adxl345" },
+	{ },
+};
+
+MODULE_DEVICE_TABLE(of, adxl345_of_match);
+#endif
+
+static struct i2c_driver adxl345_i2c_driver = {
+	.driver = {
+		.name	= "adxl345_i2c",
+		.of_match_table = of_match_ptr(adxl345_of_match),
+	},
+	.probe		= adxl345_i2c_probe,
+	.remove		= adxl345_i2c_remove,
+	.id_table	= adxl345_i2c_id,
+};
+
+module_i2c_driver(adxl345_i2c_driver);
+
+MODULE_AUTHOR("Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>");
+MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer I2C driver");
+MODULE_LICENSE("GPL v2");
-- 
2.7.4

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

* [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-22 10:23   ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:23 UTC (permalink / raw)
  To: jic23, linux-iio
  Cc: knaack.h, lars, pmeerw, dmitry.torokhov, michael.hennerich,
	daniel.baluta, amsfield22, florian.vaussard, linux-kernel,
	robh+dt, mark.rutland, devicetree, Eva Rachel Retuya

Add SPI driver that initializes SPI regmap for the adxl345 core driver.
The driver supports the same functionality as I2C namely the x, y, z and
scale readings.

Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
---
Change from v2:
* Add OF match table on both I2C and SPI files and document them

 drivers/iio/accel/Kconfig       |  8 +++-
 drivers/iio/accel/Makefile      |  1 +
 drivers/iio/accel/adxl345_spi.c | 86 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 94 insertions(+), 1 deletion(-)
 create mode 100644 drivers/iio/accel/adxl345_spi.c

diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
index ffb0a63..454aeff 100644
--- a/drivers/iio/accel/Kconfig
+++ b/drivers/iio/accel/Kconfig
@@ -8,20 +8,26 @@ menu "Accelerometers"
 config ADXL345
 	tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
 	depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
+	depends on (I2C || SPI)
 	select REGMAP
 	select ADXL345_I2C if I2C
+	select ADXL345_SPI if SPI
 	help
 	  Say Y here if you want to build support for the Analog Devices
 	  ADXL345 3-axis digital accelerometer.
 
 	  To compile this driver as a module, choose M here: the core
 	  module will be called adxl345_core and you will also get
-	  adxl345_i2c for I2C.
+	  adxl345_i2c for I2C and/or adxl345_spi for SPI.
 
 config ADXL345_I2C
 	tristate
 	select REGMAP_I2C
 
+config ADXL345_SPI
+	tristate
+	select REGMAP_SPI
+
 config BMA180
 	tristate "Bosch BMA180/BMA250 3-Axis Accelerometer Driver"
 	depends on I2C
diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile
index 3f4a6d6..31fba19 100644
--- a/drivers/iio/accel/Makefile
+++ b/drivers/iio/accel/Makefile
@@ -5,6 +5,7 @@
 # When adding new entries keep the list in alphabetical order
 obj-$(CONFIG_ADXL345) += adxl345_core.o
 obj-$(CONFIG_ADXL345_I2C) += adxl345_i2c.o
+obj-$(CONFIG_ADXL345_SPI) += adxl345_spi.o
 obj-$(CONFIG_BMA180) += bma180.o
 obj-$(CONFIG_BMA220) += bma220_spi.o
 obj-$(CONFIG_BMC150_ACCEL) += bmc150-accel-core.o
diff --git a/drivers/iio/accel/adxl345_spi.c b/drivers/iio/accel/adxl345_spi.c
new file mode 100644
index 0000000..5b6f01c
--- /dev/null
+++ b/drivers/iio/accel/adxl345_spi.c
@@ -0,0 +1,86 @@
+/*
+ * ADXL345 3-Axis Digital Accelerometer
+ *
+ * Copyright (c) 2017 Eva Rachel Retuya <eraretuya@gmail.com>
+ *
+ * This file is subject to the terms and conditions of version 2 of
+ * the GNU General Public License. See the file COPYING in the main
+ * directory of this archive for more details.
+ *
+ * SPI driver for ADXL345
+ */
+
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/regmap.h>
+#include <linux/spi/spi.h>
+
+#include "adxl345.h"
+
+#define ADXL345_MAX_SPI_FREQ_HZ		5000000
+
+static const struct regmap_config adxl345_spi_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+	 /* Setting bits 7 and 6 enables multiple-byte read */
+	.read_flag_mask = BIT(7) | BIT(6),
+};
+
+static int adxl345_spi_probe(struct spi_device *spi)
+{
+	struct regmap *regmap;
+	const struct spi_device_id *id = spi_get_device_id(spi);
+
+	/* Bail out if max_speed_hz exceeds 5 MHz */
+	if (spi->max_speed_hz > ADXL345_MAX_SPI_FREQ_HZ) {
+		dev_err(&spi->dev, "SPI CLK, %d Hz exceeds 5 MHz\n",
+			spi->max_speed_hz);
+		return -EINVAL;
+	}
+
+	regmap = devm_regmap_init_spi(spi, &adxl345_spi_regmap_config);
+	if (IS_ERR(regmap)) {
+		dev_err(&spi->dev, "Error initializing spi regmap: %d\n",
+			(int)PTR_ERR(regmap));
+		return PTR_ERR(regmap);
+	}
+
+	return adxl345_common_probe(&spi->dev, regmap, id->name);
+}
+
+static int adxl345_spi_remove(struct spi_device *spi)
+{
+	return adxl345_common_remove(&spi->dev);
+}
+
+static const struct spi_device_id adxl345_spi_id[] = {
+	{ "adxl345", 0 },
+	{ }
+};
+
+MODULE_DEVICE_TABLE(spi, adxl345_spi_id);
+
+#ifdef CONFIG_OF
+static const struct of_device_id adxl345_of_match[] = {
+	{ .compatible = "adi,adxl345" },
+	{ },
+};
+
+MODULE_DEVICE_TABLE(of, adxl345_of_match);
+#endif
+
+static struct spi_driver adxl345_spi_driver = {
+	.driver = {
+		.name	= "adxl345_spi",
+		.of_match_table = of_match_ptr(adxl345_of_match),
+	},
+	.probe		= adxl345_spi_probe,
+	.remove		= adxl345_spi_remove,
+	.id_table	= adxl345_spi_id,
+};
+
+module_spi_driver(adxl345_spi_driver);
+
+MODULE_AUTHOR("Eva Rachel Retuya <eraretuya@gmail.com>");
+MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer SPI driver");
+MODULE_LICENSE("GPL v2");
-- 
2.7.4

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

* [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-22 10:23   ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-22 10:23 UTC (permalink / raw)
  To: jic23-DgEjT+Ai2ygdnm+yROfE0A, linux-iio-u79uwXL29TY76Z2rM5mHXA
  Cc: knaack.h-Mmb7MZpHnFY, lars-Qo5EllUWu/uELgA04lAiVw,
	pmeerw-jW+XmwGofnusTnJN9+BGXg,
	dmitry.torokhov-Re5JQEeQqe8AvxtiuMwx3w,
	michael.hennerich-OyLXuOCK7orQT0dZR+AlfA,
	daniel.baluta-Re5JQEeQqe8AvxtiuMwx3w,
	amsfield22-Re5JQEeQqe8AvxtiuMwx3w,
	florian.vaussard-EWQkb/GNqlFyDzI6CaY1VQ,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	robh+dt-DgEjT+Ai2ygdnm+yROfE0A, mark.rutland-5wv7dgnIgG8,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Eva Rachel Retuya

Add SPI driver that initializes SPI regmap for the adxl345 core driver.
The driver supports the same functionality as I2C namely the x, y, z and
scale readings.

Signed-off-by: Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
---
Change from v2:
* Add OF match table on both I2C and SPI files and document them

 drivers/iio/accel/Kconfig       |  8 +++-
 drivers/iio/accel/Makefile      |  1 +
 drivers/iio/accel/adxl345_spi.c | 86 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 94 insertions(+), 1 deletion(-)
 create mode 100644 drivers/iio/accel/adxl345_spi.c

diff --git a/drivers/iio/accel/Kconfig b/drivers/iio/accel/Kconfig
index ffb0a63..454aeff 100644
--- a/drivers/iio/accel/Kconfig
+++ b/drivers/iio/accel/Kconfig
@@ -8,20 +8,26 @@ menu "Accelerometers"
 config ADXL345
 	tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
 	depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
+	depends on (I2C || SPI)
 	select REGMAP
 	select ADXL345_I2C if I2C
+	select ADXL345_SPI if SPI
 	help
 	  Say Y here if you want to build support for the Analog Devices
 	  ADXL345 3-axis digital accelerometer.
 
 	  To compile this driver as a module, choose M here: the core
 	  module will be called adxl345_core and you will also get
-	  adxl345_i2c for I2C.
+	  adxl345_i2c for I2C and/or adxl345_spi for SPI.
 
 config ADXL345_I2C
 	tristate
 	select REGMAP_I2C
 
+config ADXL345_SPI
+	tristate
+	select REGMAP_SPI
+
 config BMA180
 	tristate "Bosch BMA180/BMA250 3-Axis Accelerometer Driver"
 	depends on I2C
diff --git a/drivers/iio/accel/Makefile b/drivers/iio/accel/Makefile
index 3f4a6d6..31fba19 100644
--- a/drivers/iio/accel/Makefile
+++ b/drivers/iio/accel/Makefile
@@ -5,6 +5,7 @@
 # When adding new entries keep the list in alphabetical order
 obj-$(CONFIG_ADXL345) += adxl345_core.o
 obj-$(CONFIG_ADXL345_I2C) += adxl345_i2c.o
+obj-$(CONFIG_ADXL345_SPI) += adxl345_spi.o
 obj-$(CONFIG_BMA180) += bma180.o
 obj-$(CONFIG_BMA220) += bma220_spi.o
 obj-$(CONFIG_BMC150_ACCEL) += bmc150-accel-core.o
diff --git a/drivers/iio/accel/adxl345_spi.c b/drivers/iio/accel/adxl345_spi.c
new file mode 100644
index 0000000..5b6f01c
--- /dev/null
+++ b/drivers/iio/accel/adxl345_spi.c
@@ -0,0 +1,86 @@
+/*
+ * ADXL345 3-Axis Digital Accelerometer
+ *
+ * Copyright (c) 2017 Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
+ *
+ * This file is subject to the terms and conditions of version 2 of
+ * the GNU General Public License. See the file COPYING in the main
+ * directory of this archive for more details.
+ *
+ * SPI driver for ADXL345
+ */
+
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/regmap.h>
+#include <linux/spi/spi.h>
+
+#include "adxl345.h"
+
+#define ADXL345_MAX_SPI_FREQ_HZ		5000000
+
+static const struct regmap_config adxl345_spi_regmap_config = {
+	.reg_bits = 8,
+	.val_bits = 8,
+	 /* Setting bits 7 and 6 enables multiple-byte read */
+	.read_flag_mask = BIT(7) | BIT(6),
+};
+
+static int adxl345_spi_probe(struct spi_device *spi)
+{
+	struct regmap *regmap;
+	const struct spi_device_id *id = spi_get_device_id(spi);
+
+	/* Bail out if max_speed_hz exceeds 5 MHz */
+	if (spi->max_speed_hz > ADXL345_MAX_SPI_FREQ_HZ) {
+		dev_err(&spi->dev, "SPI CLK, %d Hz exceeds 5 MHz\n",
+			spi->max_speed_hz);
+		return -EINVAL;
+	}
+
+	regmap = devm_regmap_init_spi(spi, &adxl345_spi_regmap_config);
+	if (IS_ERR(regmap)) {
+		dev_err(&spi->dev, "Error initializing spi regmap: %d\n",
+			(int)PTR_ERR(regmap));
+		return PTR_ERR(regmap);
+	}
+
+	return adxl345_common_probe(&spi->dev, regmap, id->name);
+}
+
+static int adxl345_spi_remove(struct spi_device *spi)
+{
+	return adxl345_common_remove(&spi->dev);
+}
+
+static const struct spi_device_id adxl345_spi_id[] = {
+	{ "adxl345", 0 },
+	{ }
+};
+
+MODULE_DEVICE_TABLE(spi, adxl345_spi_id);
+
+#ifdef CONFIG_OF
+static const struct of_device_id adxl345_of_match[] = {
+	{ .compatible = "adi,adxl345" },
+	{ },
+};
+
+MODULE_DEVICE_TABLE(of, adxl345_of_match);
+#endif
+
+static struct spi_driver adxl345_spi_driver = {
+	.driver = {
+		.name	= "adxl345_spi",
+		.of_match_table = of_match_ptr(adxl345_of_match),
+	},
+	.probe		= adxl345_spi_probe,
+	.remove		= adxl345_spi_remove,
+	.id_table	= adxl345_spi_id,
+};
+
+module_spi_driver(adxl345_spi_driver);
+
+MODULE_AUTHOR("Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>");
+MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer SPI driver");
+MODULE_LICENSE("GPL v2");
-- 
2.7.4

--
To unsubscribe from this list: send the line "unsubscribe devicetree" 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 related	[flat|nested] 33+ messages in thread

* Re: [PATCH v3 2/4] iio: accel: adxl345: Use I2C regmap instead of direct I2C access
@ 2017-02-23 16:27     ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:27 UTC (permalink / raw)
  To: Eva Rachel Retuya
  Cc: Jonathan Cameron, linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	daniel.baluta, amsfield22, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Wed, Feb 22, 2017 at 12:22 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
> Convert the driver to use regmap instead of I2C-specific functions.
> Also, introduce the header file "adxl345.h" and export the probe and
> remove functions. This is done in preparation for splitting this driver
> into core and I2C-specific code as well as introduction of SPI driver.
>
> Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>

Is it possible to use device just after this very patch?
For me it seems there is bisectability issue.

> -static const struct i2c_device_id adxl345_i2c_id[] = {
> -       { "adxl345", 0 },
> -       { }
> -};
> -
> -MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> -
> -static struct i2c_driver adxl345_driver = {
> -       .driver = {
> -               .name   = "adxl345",
> -       },
> -       .probe          = adxl345_probe,
> -       .remove         = adxl345_remove,
> -       .id_table       = adxl345_i2c_id,
> -};
> -
> -module_i2c_driver(adxl345_driver);
> +EXPORT_SYMBOL_GPL(adxl345_common_remove);

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH v3 2/4] iio: accel: adxl345: Use I2C regmap instead of direct I2C access
@ 2017-02-23 16:27     ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:27 UTC (permalink / raw)
  To: Eva Rachel Retuya
  Cc: Jonathan Cameron, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich,
	daniel.baluta-Re5JQEeQqe8AvxtiuMwx3w,
	amsfield22-Re5JQEeQqe8AvxtiuMwx3w, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Wed, Feb 22, 2017 at 12:22 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Convert the driver to use regmap instead of I2C-specific functions.
> Also, introduce the header file "adxl345.h" and export the probe and
> remove functions. This is done in preparation for splitting this driver
> into core and I2C-specific code as well as introduction of SPI driver.
>
> Signed-off-by: Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

Is it possible to use device just after this very patch?
For me it seems there is bisectability issue.

> -static const struct i2c_device_id adxl345_i2c_id[] = {
> -       { "adxl345", 0 },
> -       { }
> -};
> -
> -MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> -
> -static struct i2c_driver adxl345_driver = {
> -       .driver = {
> -               .name   = "adxl345",
> -       },
> -       .probe          = adxl345_probe,
> -       .remove         = adxl345_remove,
> -       .id_table       = adxl345_i2c_id,
> -};
> -
> -module_i2c_driver(adxl345_driver);
> +EXPORT_SYMBOL_GPL(adxl345_common_remove);

-- 
With Best Regards,
Andy Shevchenko
--
To unsubscribe from this list: send the line "unsubscribe devicetree" 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] 33+ messages in thread

* Re: [PATCH v3 3/4] iio: accel: adxl345: Split driver into core and I2C
@ 2017-02-23 16:36     ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:36 UTC (permalink / raw)
  To: Eva Rachel Retuya
  Cc: Jonathan Cameron, linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
> Move I2C-specific code into its own file and rely on regmap to access
> registers. The core code provides access to x, y, z and scale readings.

Like Lars already pointed to possibility of use of this in ACPI based
platforms, I would add a reference to
commit 01427fe7c4b9 ("Input: adxl34x - make it enumerable in ACPI environment").

Please fix your patches accordingly.


> +static const struct i2c_device_id adxl345_i2c_id[] = {
> +       { "adxl345", 0 },
> +       { }
> +};
> +
> +MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> +
> +#ifdef CONFIG_OF
> +static const struct of_device_id adxl345_of_match[] = {
> +       { .compatible = "adi,adxl345" },
> +       { },
> +};
> +
> +MODULE_DEVICE_TABLE(of, adxl345_of_match);
> +#endif
> +
> +static struct i2c_driver adxl345_i2c_driver = {
> +       .driver = {
> +               .name   = "adxl345_i2c",
> +               .of_match_table = of_match_ptr(adxl345_of_match),
> +       },
> +       .probe          = adxl345_i2c_probe,
> +       .remove         = adxl345_i2c_remove,
> +       .id_table       = adxl345_i2c_id,
> +};
> +
> +module_i2c_driver(adxl345_i2c_driver);
> +
> +MODULE_AUTHOR("Eva Rachel Retuya <eraretuya@gmail.com>");
> +MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer I2C driver");
> +MODULE_LICENSE("GPL v2");


-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH v3 3/4] iio: accel: adxl345: Split driver into core and I2C
@ 2017-02-23 16:36     ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:36 UTC (permalink / raw)
  To: Eva Rachel Retuya
  Cc: Jonathan Cameron, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Move I2C-specific code into its own file and rely on regmap to access
> registers. The core code provides access to x, y, z and scale readings.

Like Lars already pointed to possibility of use of this in ACPI based
platforms, I would add a reference to
commit 01427fe7c4b9 ("Input: adxl34x - make it enumerable in ACPI environment").

Please fix your patches accordingly.


> +static const struct i2c_device_id adxl345_i2c_id[] = {
> +       { "adxl345", 0 },
> +       { }
> +};
> +
> +MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> +
> +#ifdef CONFIG_OF
> +static const struct of_device_id adxl345_of_match[] = {
> +       { .compatible = "adi,adxl345" },
> +       { },
> +};
> +
> +MODULE_DEVICE_TABLE(of, adxl345_of_match);
> +#endif
> +
> +static struct i2c_driver adxl345_i2c_driver = {
> +       .driver = {
> +               .name   = "adxl345_i2c",
> +               .of_match_table = of_match_ptr(adxl345_of_match),
> +       },
> +       .probe          = adxl345_i2c_probe,
> +       .remove         = adxl345_i2c_remove,
> +       .id_table       = adxl345_i2c_id,
> +};
> +
> +module_i2c_driver(adxl345_i2c_driver);
> +
> +MODULE_AUTHOR("Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>");
> +MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer I2C driver");
> +MODULE_LICENSE("GPL v2");


-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-23 16:43     ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:43 UTC (permalink / raw)
  To: Eva Rachel Retuya
  Cc: Jonathan Cameron, linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
> The driver supports the same functionality as I2C namely the x, y, z and
> scale readings.

> --- a/drivers/iio/accel/Kconfig
> +++ b/drivers/iio/accel/Kconfig
> @@ -8,20 +8,26 @@ menu "Accelerometers"
>  config ADXL345
>         tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
>         depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
> +       depends on (I2C || SPI)
>         select REGMAP
>         select ADXL345_I2C if I2C
> +       select ADXL345_SPI if SPI
>         help
>           Say Y here if you want to build support for the Analog Devices
>           ADXL345 3-axis digital accelerometer.
>
>           To compile this driver as a module, choose M here: the core
>           module will be called adxl345_core and you will also get
> -         adxl345_i2c for I2C.
> +         adxl345_i2c for I2C and/or adxl345_spi for SPI.
>
>  config ADXL345_I2C
>         tristate
>         select REGMAP_I2C
>
> +config ADXL345_SPI
> +       tristate
> +       select REGMAP_SPI

Hmm...
I saw another pattern

Library / core part is non-visible to user, while
SPI and I2C parts are selectable by user.

Why do you use inverted pattern? What did I miss?

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-23 16:43     ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:43 UTC (permalink / raw)
  To: Eva Rachel Retuya
  Cc: Jonathan Cameron, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
> The driver supports the same functionality as I2C namely the x, y, z and
> scale readings.

> --- a/drivers/iio/accel/Kconfig
> +++ b/drivers/iio/accel/Kconfig
> @@ -8,20 +8,26 @@ menu "Accelerometers"
>  config ADXL345
>         tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
>         depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
> +       depends on (I2C || SPI)
>         select REGMAP
>         select ADXL345_I2C if I2C
> +       select ADXL345_SPI if SPI
>         help
>           Say Y here if you want to build support for the Analog Devices
>           ADXL345 3-axis digital accelerometer.
>
>           To compile this driver as a module, choose M here: the core
>           module will be called adxl345_core and you will also get
> -         adxl345_i2c for I2C.
> +         adxl345_i2c for I2C and/or adxl345_spi for SPI.
>
>  config ADXL345_I2C
>         tristate
>         select REGMAP_I2C
>
> +config ADXL345_SPI
> +       tristate
> +       select REGMAP_SPI

Hmm...
I saw another pattern

Library / core part is non-visible to user, while
SPI and I2C parts are selectable by user.

Why do you use inverted pattern? What did I miss?

-- 
With Best Regards,
Andy Shevchenko
--
To unsubscribe from this list: send the line "unsubscribe devicetree" 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] 33+ messages in thread

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
  2017-02-23 16:43     ` Andy Shevchenko
  (?)
@ 2017-02-23 16:47     ` Lars-Peter Clausen
  2017-02-23 16:58         ` Andy Shevchenko
  -1 siblings, 1 reply; 33+ messages in thread
From: Lars-Peter Clausen @ 2017-02-23 16:47 UTC (permalink / raw)
  To: Andy Shevchenko, Eva Rachel Retuya
  Cc: Jonathan Cameron, linux-iio, Hartmut Knaack, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard, linux-kernel, Rob Herring,
	Mark Rutland, devicetree

On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
>> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
>> The driver supports the same functionality as I2C namely the x, y, z and
>> scale readings.
> 
>> --- a/drivers/iio/accel/Kconfig
>> +++ b/drivers/iio/accel/Kconfig
>> @@ -8,20 +8,26 @@ menu "Accelerometers"
>>  config ADXL345
>>         tristate "Analog Devices ADXL345 3-Axis Digital Accelerometer Driver"
>>         depends on !(INPUT_ADXL34X=y || INPUT_ADXL34X=m)
>> +       depends on (I2C || SPI)
>>         select REGMAP
>>         select ADXL345_I2C if I2C
>> +       select ADXL345_SPI if SPI
>>         help
>>           Say Y here if you want to build support for the Analog Devices
>>           ADXL345 3-axis digital accelerometer.
>>
>>           To compile this driver as a module, choose M here: the core
>>           module will be called adxl345_core and you will also get
>> -         adxl345_i2c for I2C.
>> +         adxl345_i2c for I2C and/or adxl345_spi for SPI.
>>
>>  config ADXL345_I2C
>>         tristate
>>         select REGMAP_I2C
>>
>> +config ADXL345_SPI
>> +       tristate
>> +       select REGMAP_SPI
> 
> Hmm...
> I saw another pattern
> 
> Library / core part is non-visible to user, while
> SPI and I2C parts are selectable by user.
> 
> Why do you use inverted pattern? What did I miss?

The first version of the patch used the other pattern SPI/I2C visible.
Jonathan suggested this other pattern. I prefer the explicit SPI/I2C visible
pattern, but in the end it doesn't really matter as long as both work.

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-23 16:58         ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:58 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Eva Rachel Retuya, Jonathan Cameron, linux-iio, Hartmut Knaack,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars@metafoo.de> wrote:
> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
>>> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
>>> The driver supports the same functionality as I2C namely the x, y, z and
>>> scale readings.

>>>  config ADXL345_I2C
>>>         tristate
>>>         select REGMAP_I2C
>>>
>>> +config ADXL345_SPI
>>> +       tristate
>>> +       select REGMAP_SPI
>>
>> Hmm...
>> I saw another pattern
>>
>> Library / core part is non-visible to user, while
>> SPI and I2C parts are selectable by user.
>>
>> Why do you use inverted pattern? What did I miss?
>
> The first version of the patch used the other pattern SPI/I2C visible.
> Jonathan suggested this other pattern. I prefer the explicit SPI/I2C visible
> pattern, but in the end it doesn't really matter as long as both work.

Yes, but this pattern makes extra footprint of the kernel and
basically dead code when I would like, for example, to have SPI bus
enabled, I2C module available, but SPI module not compiled.

Other one is when I want to have one compiled in, one as a module by
whatever reason.

At the end I have no strong opinion, though rationale for the opposite is above.

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-23 16:58         ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-23 16:58 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Eva Rachel Retuya, Jonathan Cameron,
	linux-iio-u79uwXL29TY76Z2rM5mHXA, Hartmut Knaack, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
>>> The driver supports the same functionality as I2C namely the x, y, z and
>>> scale readings.

>>>  config ADXL345_I2C
>>>         tristate
>>>         select REGMAP_I2C
>>>
>>> +config ADXL345_SPI
>>> +       tristate
>>> +       select REGMAP_SPI
>>
>> Hmm...
>> I saw another pattern
>>
>> Library / core part is non-visible to user, while
>> SPI and I2C parts are selectable by user.
>>
>> Why do you use inverted pattern? What did I miss?
>
> The first version of the patch used the other pattern SPI/I2C visible.
> Jonathan suggested this other pattern. I prefer the explicit SPI/I2C visible
> pattern, but in the end it doesn't really matter as long as both work.

Yes, but this pattern makes extra footprint of the kernel and
basically dead code when I would like, for example, to have SPI bus
enabled, I2C module available, but SPI module not compiled.

Other one is when I want to have one compiled in, one as a module by
whatever reason.

At the end I have no strong opinion, though rationale for the opposite is above.

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH v3 2/4] iio: accel: adxl345: Use I2C regmap instead of direct I2C access
@ 2017-02-24  9:02       ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24  9:02 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Jonathan Cameron, linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	daniel.baluta, amsfield22, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Thu, Feb 23, 2017 at 06:27:52PM +0200, Andy Shevchenko wrote:
> On Wed, Feb 22, 2017 at 12:22 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
> > Convert the driver to use regmap instead of I2C-specific functions.
> > Also, introduce the header file "adxl345.h" and export the probe and
> > remove functions. This is done in preparation for splitting this driver
> > into core and I2C-specific code as well as introduction of SPI driver.
> >
> > Signed-off-by: Eva Rachel Retuya <eraretuya@gmail.com>
> 
> Is it possible to use device just after this very patch?
> For me it seems there is bisectability issue.
> 

Hello Andy,

Most likely no because of excessive deletion. Sorry for the mistake, I'll
submit another version that hopefully won't cause this issue.

Thanks,
Eva

> > -static const struct i2c_device_id adxl345_i2c_id[] = {
> > -       { "adxl345", 0 },
> > -       { }
> > -};
> > -
> > -MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> > -
> > -static struct i2c_driver adxl345_driver = {
> > -       .driver = {
> > -               .name   = "adxl345",
> > -       },
> > -       .probe          = adxl345_probe,
> > -       .remove         = adxl345_remove,
> > -       .id_table       = adxl345_i2c_id,
> > -};
> > -
> > -module_i2c_driver(adxl345_driver);
> > +EXPORT_SYMBOL_GPL(adxl345_common_remove);
> 
> -- 
> With Best Regards,
> Andy Shevchenko

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

* Re: [PATCH v3 2/4] iio: accel: adxl345: Use I2C regmap instead of direct I2C access
@ 2017-02-24  9:02       ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24  9:02 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Jonathan Cameron, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich,
	daniel.baluta-Re5JQEeQqe8AvxtiuMwx3w,
	amsfield22-Re5JQEeQqe8AvxtiuMwx3w, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Thu, Feb 23, 2017 at 06:27:52PM +0200, Andy Shevchenko wrote:
> On Wed, Feb 22, 2017 at 12:22 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> > Convert the driver to use regmap instead of I2C-specific functions.
> > Also, introduce the header file "adxl345.h" and export the probe and
> > remove functions. This is done in preparation for splitting this driver
> > into core and I2C-specific code as well as introduction of SPI driver.
> >
> > Signed-off-by: Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> 
> Is it possible to use device just after this very patch?
> For me it seems there is bisectability issue.
> 

Hello Andy,

Most likely no because of excessive deletion. Sorry for the mistake, I'll
submit another version that hopefully won't cause this issue.

Thanks,
Eva

> > -static const struct i2c_device_id adxl345_i2c_id[] = {
> > -       { "adxl345", 0 },
> > -       { }
> > -};
> > -
> > -MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> > -
> > -static struct i2c_driver adxl345_driver = {
> > -       .driver = {
> > -               .name   = "adxl345",
> > -       },
> > -       .probe          = adxl345_probe,
> > -       .remove         = adxl345_remove,
> > -       .id_table       = adxl345_i2c_id,
> > -};
> > -
> > -module_i2c_driver(adxl345_driver);
> > +EXPORT_SYMBOL_GPL(adxl345_common_remove);
> 
> -- 
> With Best Regards,
> Andy Shevchenko

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

* Re: [PATCH v3 3/4] iio: accel: adxl345: Split driver into core and I2C
@ 2017-02-24  9:06       ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24  9:06 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Jonathan Cameron, linux-iio, Hartmut Knaack, Lars-Peter Clausen,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Thu, Feb 23, 2017 at 06:36:42PM +0200, Andy Shevchenko wrote:
> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
> > Move I2C-specific code into its own file and rely on regmap to access
> > registers. The core code provides access to x, y, z and scale readings.
> 
> Like Lars already pointed to possibility of use of this in ACPI based
> platforms, I would add a reference to
> commit 01427fe7c4b9 ("Input: adxl34x - make it enumerable in ACPI environment").
> 
> Please fix your patches accordingly.
> 

Ack. Thank you for pointing this out. I'm not aware of the said commit.

Eva

> 
> > +static const struct i2c_device_id adxl345_i2c_id[] = {
> > +       { "adxl345", 0 },
> > +       { }
> > +};
> > +
> > +MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> > +
> > +#ifdef CONFIG_OF
> > +static const struct of_device_id adxl345_of_match[] = {
> > +       { .compatible = "adi,adxl345" },
> > +       { },
> > +};
> > +
> > +MODULE_DEVICE_TABLE(of, adxl345_of_match);
> > +#endif
> > +
> > +static struct i2c_driver adxl345_i2c_driver = {
> > +       .driver = {
> > +               .name   = "adxl345_i2c",
> > +               .of_match_table = of_match_ptr(adxl345_of_match),
> > +       },
> > +       .probe          = adxl345_i2c_probe,
> > +       .remove         = adxl345_i2c_remove,
> > +       .id_table       = adxl345_i2c_id,
> > +};
> > +
> > +module_i2c_driver(adxl345_i2c_driver);
> > +
> > +MODULE_AUTHOR("Eva Rachel Retuya <eraretuya@gmail.com>");
> > +MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer I2C driver");
> > +MODULE_LICENSE("GPL v2");
> 
> 
> -- 
> With Best Regards,
> Andy Shevchenko

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

* Re: [PATCH v3 3/4] iio: accel: adxl345: Split driver into core and I2C
@ 2017-02-24  9:06       ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24  9:06 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Jonathan Cameron, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	Hartmut Knaack, Lars-Peter Clausen, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Thu, Feb 23, 2017 at 06:36:42PM +0200, Andy Shevchenko wrote:
> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> > Move I2C-specific code into its own file and rely on regmap to access
> > registers. The core code provides access to x, y, z and scale readings.
> 
> Like Lars already pointed to possibility of use of this in ACPI based
> platforms, I would add a reference to
> commit 01427fe7c4b9 ("Input: adxl34x - make it enumerable in ACPI environment").
> 
> Please fix your patches accordingly.
> 

Ack. Thank you for pointing this out. I'm not aware of the said commit.

Eva

> 
> > +static const struct i2c_device_id adxl345_i2c_id[] = {
> > +       { "adxl345", 0 },
> > +       { }
> > +};
> > +
> > +MODULE_DEVICE_TABLE(i2c, adxl345_i2c_id);
> > +
> > +#ifdef CONFIG_OF
> > +static const struct of_device_id adxl345_of_match[] = {
> > +       { .compatible = "adi,adxl345" },
> > +       { },
> > +};
> > +
> > +MODULE_DEVICE_TABLE(of, adxl345_of_match);
> > +#endif
> > +
> > +static struct i2c_driver adxl345_i2c_driver = {
> > +       .driver = {
> > +               .name   = "adxl345_i2c",
> > +               .of_match_table = of_match_ptr(adxl345_of_match),
> > +       },
> > +       .probe          = adxl345_i2c_probe,
> > +       .remove         = adxl345_i2c_remove,
> > +       .id_table       = adxl345_i2c_id,
> > +};
> > +
> > +module_i2c_driver(adxl345_i2c_driver);
> > +
> > +MODULE_AUTHOR("Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>");
> > +MODULE_DESCRIPTION("ADXL345 3-Axis Digital Accelerometer I2C driver");
> > +MODULE_LICENSE("GPL v2");
> 
> 
> -- 
> With Best Regards,
> Andy Shevchenko

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-24  9:12           ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24  9:12 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lars-Peter Clausen, Jonathan Cameron, linux-iio, Hartmut Knaack,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars@metafoo.de> wrote:
> > On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
> >> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
> >>> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
> >>> The driver supports the same functionality as I2C namely the x, y, z and
> >>> scale readings.
> 
> >>>  config ADXL345_I2C
> >>>         tristate
> >>>         select REGMAP_I2C
> >>>
> >>> +config ADXL345_SPI
> >>> +       tristate
> >>> +       select REGMAP_SPI
> >>
> >> Hmm...
> >> I saw another pattern
> >>
> >> Library / core part is non-visible to user, while
> >> SPI and I2C parts are selectable by user.
> >>
> >> Why do you use inverted pattern? What did I miss?
> >
> > The first version of the patch used the other pattern SPI/I2C visible.
> > Jonathan suggested this other pattern. I prefer the explicit SPI/I2C visible
> > pattern, but in the end it doesn't really matter as long as both work.
> 
> Yes, but this pattern makes extra footprint of the kernel and
> basically dead code when I would like, for example, to have SPI bus
> enabled, I2C module available, but SPI module not compiled.
> 
> Other one is when I want to have one compiled in, one as a module by
> whatever reason.
> 
> At the end I have no strong opinion, though rationale for the opposite is above.
> 

Hello Lars and Andy,

I'll revert to the explicit SPI/I2C pattern in order to give more
freedom in configuring as per the scenarios previously stated.

Thanks,
Eva

> -- 
> With Best Regards,
> Andy Shevchenko

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-24  9:12           ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24  9:12 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lars-Peter Clausen, Jonathan Cameron,
	linux-iio-u79uwXL29TY76Z2rM5mHXA, Hartmut Knaack, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
> > On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
> >> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> >>> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
> >>> The driver supports the same functionality as I2C namely the x, y, z and
> >>> scale readings.
> 
> >>>  config ADXL345_I2C
> >>>         tristate
> >>>         select REGMAP_I2C
> >>>
> >>> +config ADXL345_SPI
> >>> +       tristate
> >>> +       select REGMAP_SPI
> >>
> >> Hmm...
> >> I saw another pattern
> >>
> >> Library / core part is non-visible to user, while
> >> SPI and I2C parts are selectable by user.
> >>
> >> Why do you use inverted pattern? What did I miss?
> >
> > The first version of the patch used the other pattern SPI/I2C visible.
> > Jonathan suggested this other pattern. I prefer the explicit SPI/I2C visible
> > pattern, but in the end it doesn't really matter as long as both work.
> 
> Yes, but this pattern makes extra footprint of the kernel and
> basically dead code when I would like, for example, to have SPI bus
> enabled, I2C module available, but SPI module not compiled.
> 
> Other one is when I want to have one compiled in, one as a module by
> whatever reason.
> 
> At the end I have no strong opinion, though rationale for the opposite is above.
> 

Hello Lars and Andy,

I'll revert to the explicit SPI/I2C pattern in order to give more
freedom in configuring as per the scenarios previously stated.

Thanks,
Eva

> -- 
> With Best Regards,
> Andy Shevchenko
--
To unsubscribe from this list: send the line "unsubscribe devicetree" 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] 33+ messages in thread

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
  2017-02-24  9:12           ` Eva Rachel Retuya
@ 2017-02-24  9:22             ` Lars-Peter Clausen
  -1 siblings, 0 replies; 33+ messages in thread
From: Lars-Peter Clausen @ 2017-02-24  9:22 UTC (permalink / raw)
  To: Andy Shevchenko, Jonathan Cameron, linux-iio, Hartmut Knaack,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars@metafoo.de> wrote:
>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
>>>>> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
>>>>> The driver supports the same functionality as I2C namely the x, y, z and
>>>>> scale readings.
>>
>>>>>  config ADXL345_I2C
>>>>>         tristate
>>>>>         select REGMAP_I2C
>>>>>
>>>>> +config ADXL345_SPI
>>>>> +       tristate
>>>>> +       select REGMAP_SPI
>>>>
>>>> Hmm...
>>>> I saw another pattern
>>>>
>>>> Library / core part is non-visible to user, while
>>>> SPI and I2C parts are selectable by user.
>>>>
>>>> Why do you use inverted pattern? What did I miss?
>>>
>>> The first version of the patch used the other pattern SPI/I2C visible.
>>> Jonathan suggested this other pattern. I prefer the explicit SPI/I2C visible
>>> pattern, but in the end it doesn't really matter as long as both work.
>>
>> Yes, but this pattern makes extra footprint of the kernel and
>> basically dead code when I would like, for example, to have SPI bus
>> enabled, I2C module available, but SPI module not compiled.
>>
>> Other one is when I want to have one compiled in, one as a module by
>> whatever reason.
>>
>> At the end I have no strong opinion, though rationale for the opposite is above.
>>
> 
> Hello Lars and Andy,
> 
> I'll revert to the explicit SPI/I2C pattern in order to give more
> freedom in configuring as per the scenarios previously stated.

Please check with Jonathan before you do, in the end he'll have to apply the
patch.

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-24  9:22             ` Lars-Peter Clausen
  0 siblings, 0 replies; 33+ messages in thread
From: Lars-Peter Clausen @ 2017-02-24  9:22 UTC (permalink / raw)
  To: Andy Shevchenko, Jonathan Cameron,
	linux-iio-u79uwXL29TY76Z2rM5mHXA, Hartmut Knaack, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>>>> Add SPI driver that initializes SPI regmap for the adxl345 core driver.
>>>>> The driver supports the same functionality as I2C namely the x, y, z and
>>>>> scale readings.
>>
>>>>>  config ADXL345_I2C
>>>>>         tristate
>>>>>         select REGMAP_I2C
>>>>>
>>>>> +config ADXL345_SPI
>>>>> +       tristate
>>>>> +       select REGMAP_SPI
>>>>
>>>> Hmm...
>>>> I saw another pattern
>>>>
>>>> Library / core part is non-visible to user, while
>>>> SPI and I2C parts are selectable by user.
>>>>
>>>> Why do you use inverted pattern? What did I miss?
>>>
>>> The first version of the patch used the other pattern SPI/I2C visible.
>>> Jonathan suggested this other pattern. I prefer the explicit SPI/I2C visible
>>> pattern, but in the end it doesn't really matter as long as both work.
>>
>> Yes, but this pattern makes extra footprint of the kernel and
>> basically dead code when I would like, for example, to have SPI bus
>> enabled, I2C module available, but SPI module not compiled.
>>
>> Other one is when I want to have one compiled in, one as a module by
>> whatever reason.
>>
>> At the end I have no strong opinion, though rationale for the opposite is above.
>>
> 
> Hello Lars and Andy,
> 
> I'll revert to the explicit SPI/I2C pattern in order to give more
> freedom in configuring as per the scenarios previously stated.

Please check with Jonathan before you do, in the end he'll have to apply the
patch.

--
To unsubscribe from this list: send the line "unsubscribe devicetree" 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] 33+ messages in thread

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-24 11:48               ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-24 11:48 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Jonathan Cameron, linux-iio, Hartmut Knaack, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard, linux-kernel, Rob Herring,
	Mark Rutland, devicetree

On Fri, Feb 24, 2017 at 11:22 AM, Lars-Peter Clausen <lars@metafoo.de> wrote:
> On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
>> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
>>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars@metafoo.de> wrote:
>>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:

>> I'll revert to the explicit SPI/I2C pattern in order to give more
>> freedom in configuring as per the scenarios previously stated.
>
> Please check with Jonathan before you do, in the end he'll have to apply the
> patch.

+1. I will be fine with either just need to make sure maintainer
understands pros and cons.

-- 
With Best Regards,
Andy Shevchenko

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-24 11:48               ` Andy Shevchenko
  0 siblings, 0 replies; 33+ messages in thread
From: Andy Shevchenko @ 2017-02-24 11:48 UTC (permalink / raw)
  To: Lars-Peter Clausen
  Cc: Jonathan Cameron, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	Hartmut Knaack, Peter Meerwald, Dmitry Torokhov,
	Michael Hennerich, Daniel Baluta, Alison Schofield,
	Florian Vaussard, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	Rob Herring, Mark Rutland, devicetree

On Fri, Feb 24, 2017 at 11:22 AM, Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
> On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
>> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
>>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
>>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:

>> I'll revert to the explicit SPI/I2C pattern in order to give more
>> freedom in configuring as per the scenarios previously stated.
>
> Please check with Jonathan before you do, in the end he'll have to apply the
> patch.

+1. I will be fine with either just need to make sure maintainer
understands pros and cons.

-- 
With Best Regards,
Andy Shevchenko
--
To unsubscribe from this list: send the line "unsubscribe devicetree" 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] 33+ messages in thread

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-24 14:30                 ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24 14:30 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lars-Peter Clausen, Jonathan Cameron, linux-iio, Hartmut Knaack,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree

On Fri, Feb 24, 2017 at 01:48:39PM +0200, Andy Shevchenko wrote:
> On Fri, Feb 24, 2017 at 11:22 AM, Lars-Peter Clausen <lars@metafoo.de> wrote:
> > On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
> >> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
> >>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars@metafoo.de> wrote:
> >>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
> >>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
> 
> >> I'll revert to the explicit SPI/I2C pattern in order to give more
> >> freedom in configuring as per the scenarios previously stated.
> >
> > Please check with Jonathan before you do, in the end he'll have to apply the
> > patch.
> 
> +1. I will be fine with either just need to make sure maintainer
> understands pros and cons.
> 

OK.

Jonathan, please let me know whether to continue with your preferred
configuration or go with the "explicit" pattern that was discussed here.

Thanks,
Eva

> -- 
> With Best Regards,
> Andy Shevchenko
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-24 14:30                 ` Eva Rachel Retuya
  0 siblings, 0 replies; 33+ messages in thread
From: Eva Rachel Retuya @ 2017-02-24 14:30 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Lars-Peter Clausen, Jonathan Cameron,
	linux-iio-u79uwXL29TY76Z2rM5mHXA, Hartmut Knaack, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland,
	devicetree

On Fri, Feb 24, 2017 at 01:48:39PM +0200, Andy Shevchenko wrote:
> On Fri, Feb 24, 2017 at 11:22 AM, Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
> > On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
> >> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
> >>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
> >>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
> >>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> 
> >> I'll revert to the explicit SPI/I2C pattern in order to give more
> >> freedom in configuring as per the scenarios previously stated.
> >
> > Please check with Jonathan before you do, in the end he'll have to apply the
> > patch.
> 
> +1. I will be fine with either just need to make sure maintainer
> understands pros and cons.
> 

OK.

Jonathan, please let me know whether to continue with your preferred
configuration or go with the "explicit" pattern that was discussed here.

Thanks,
Eva

> -- 
> With Best Regards,
> Andy Shevchenko
> --
> 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
--
To unsubscribe from this list: send the line "unsubscribe devicetree" 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] 33+ messages in thread

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
  2017-02-24 14:30                 ` Eva Rachel Retuya
  (?)
@ 2017-02-24 19:46                 ` Jonathan Cameron
  2017-02-25 15:09                     ` Jonathan Cameron
  -1 siblings, 1 reply; 33+ messages in thread
From: Jonathan Cameron @ 2017-02-24 19:46 UTC (permalink / raw)
  To: Eva Rachel Retuya, Andy Shevchenko
  Cc: Lars-Peter Clausen, Jonathan Cameron, linux-iio, Hartmut Knaack,
	Peter Meerwald, Dmitry Torokhov, Michael Hennerich,
	Daniel Baluta, Alison Schofield, Florian Vaussard, linux-kernel,
	Rob Herring, Mark Rutland, devicetree



On 24 February 2017 14:30:35 GMT+00:00, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
>On Fri, Feb 24, 2017 at 01:48:39PM +0200, Andy Shevchenko wrote:
>> On Fri, Feb 24, 2017 at 11:22 AM, Lars-Peter Clausen
><lars@metafoo.de> wrote:
>> > On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
>> >> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
>> >>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen
><lars@metafoo.de> wrote:
>> >>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>> >>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya
><eraretuya@gmail.com> wrote:
>> 
>> >> I'll revert to the explicit SPI/I2C pattern in order to give more
>> >> freedom in configuring as per the scenarios previously stated.
>> >
>> > Please check with Jonathan before you do, in the end he'll have to
>apply the
>> > patch.
>> 
>> +1. I will be fine with either just need to make sure maintainer
>> understands pros and cons.
>> 
>
>OK.
>
>Jonathan, please let me know whether to continue with your preferred
>configuration or go with the "explicit" pattern that was discussed
>here.
>
Have lost track. Will catch up with thread tomorrow and get back to you.

J
>Thanks,
>Eva
>
>> -- 
>> With Best Regards,
>> Andy Shevchenko
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>--
>To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>the body of a message to majordomo@vger.kernel.org
>More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-25 15:09                     ` Jonathan Cameron
  0 siblings, 0 replies; 33+ messages in thread
From: Jonathan Cameron @ 2017-02-25 15:09 UTC (permalink / raw)
  To: Jonathan Cameron, Eva Rachel Retuya, Andy Shevchenko
  Cc: Lars-Peter Clausen, linux-iio, Hartmut Knaack, Peter Meerwald,
	Dmitry Torokhov, Michael Hennerich, Daniel Baluta,
	Alison Schofield, Florian Vaussard, linux-kernel, Rob Herring,
	Mark Rutland, devicetree

On 24/02/17 19:46, Jonathan Cameron wrote:
> 
> 
> On 24 February 2017 14:30:35 GMT+00:00, Eva Rachel Retuya <eraretuya@gmail.com> wrote:
>> On Fri, Feb 24, 2017 at 01:48:39PM +0200, Andy Shevchenko wrote:
>>> On Fri, Feb 24, 2017 at 11:22 AM, Lars-Peter Clausen
>> <lars@metafoo.de> wrote:
>>>> On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
>>>>> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
>>>>>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen
>> <lars@metafoo.de> wrote:
>>>>>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>>>>>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya
>> <eraretuya@gmail.com> wrote:
>>>
>>>>> I'll revert to the explicit SPI/I2C pattern in order to give more
>>>>> freedom in configuring as per the scenarios previously stated.
>>>>
>>>> Please check with Jonathan before you do, in the end he'll have to
>> apply the
>>>> patch.
>>>
>>> +1. I will be fine with either just need to make sure maintainer
>>> understands pros and cons.
>>>
>>
>> OK.
>>
>> Jonathan, please let me know whether to continue with your preferred
>> configuration or go with the "explicit" pattern that was discussed
>> here.
>>
> Have lost track. Will catch up with thread tomorrow and get back to you.
> 
Ah, now I have caught up, I'll go with the same no strong opinions.
Looks like it is 2 to one in favour of the explicit i2c / spi bits so
lets go with the original form.

Sorry for wasting your time on this Eva!

Divide is always between simplifying configurability of the kernel
vs minimising the extra code built that isn't needed.  Never entirely
obvious where that boundary falls and it really doesn't make that
much difference on either side.

Anyhow, at least you know the options and arguments either way now
so not completely wasted time.

Thanks,

Jonathan
> J
>> Thanks,
>> Eva
>>
>>> -- 
>>> With Best Regards,
>>> Andy Shevchenko
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-iio"
>> in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

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

* Re: [PATCH v3 4/4] iio: accel: adxl345: Add SPI support
@ 2017-02-25 15:09                     ` Jonathan Cameron
  0 siblings, 0 replies; 33+ messages in thread
From: Jonathan Cameron @ 2017-02-25 15:09 UTC (permalink / raw)
  To: Jonathan Cameron, Eva Rachel Retuya, Andy Shevchenko
  Cc: Lars-Peter Clausen, linux-iio-u79uwXL29TY76Z2rM5mHXA,
	Hartmut Knaack, Peter Meerwald, Dmitry Torokhov,
	Michael Hennerich, Daniel Baluta, Alison Schofield,
	Florian Vaussard, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	Rob Herring, Mark Rutland, devicetree

On 24/02/17 19:46, Jonathan Cameron wrote:
> 
> 
> On 24 February 2017 14:30:35 GMT+00:00, Eva Rachel Retuya <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>> On Fri, Feb 24, 2017 at 01:48:39PM +0200, Andy Shevchenko wrote:
>>> On Fri, Feb 24, 2017 at 11:22 AM, Lars-Peter Clausen
>> <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
>>>> On 02/24/2017 10:12 AM, Eva Rachel Retuya wrote:
>>>>> On Thu, Feb 23, 2017 at 06:58:12PM +0200, Andy Shevchenko wrote:
>>>>>> On Thu, Feb 23, 2017 at 6:47 PM, Lars-Peter Clausen
>> <lars-Qo5EllUWu/uELgA04lAiVw@public.gmane.org> wrote:
>>>>>>> On 02/23/2017 05:43 PM, Andy Shevchenko wrote:
>>>>>>>> On Wed, Feb 22, 2017 at 12:23 PM, Eva Rachel Retuya
>> <eraretuya-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>>>
>>>>> I'll revert to the explicit SPI/I2C pattern in order to give more
>>>>> freedom in configuring as per the scenarios previously stated.
>>>>
>>>> Please check with Jonathan before you do, in the end he'll have to
>> apply the
>>>> patch.
>>>
>>> +1. I will be fine with either just need to make sure maintainer
>>> understands pros and cons.
>>>
>>
>> OK.
>>
>> Jonathan, please let me know whether to continue with your preferred
>> configuration or go with the "explicit" pattern that was discussed
>> here.
>>
> Have lost track. Will catch up with thread tomorrow and get back to you.
> 
Ah, now I have caught up, I'll go with the same no strong opinions.
Looks like it is 2 to one in favour of the explicit i2c / spi bits so
lets go with the original form.

Sorry for wasting your time on this Eva!

Divide is always between simplifying configurability of the kernel
vs minimising the extra code built that isn't needed.  Never entirely
obvious where that boundary falls and it really doesn't make that
much difference on either side.

Anyhow, at least you know the options and arguments either way now
so not completely wasted time.

Thanks,

Jonathan
> J
>> Thanks,
>> Eva
>>
>>> -- 
>>> With Best Regards,
>>> Andy Shevchenko
>>> --
>>> 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
>> --
>> 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] 33+ messages in thread

end of thread, other threads:[~2017-02-25 15:09 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-22 10:22 [PATCH v3 0/4] iio: accel: adxl345: Split driver into core and I2C then add SPI support Eva Rachel Retuya
2017-02-22 10:22 ` Eva Rachel Retuya
2017-02-22 10:22 ` [PATCH v3 1/4] Documentation: dt-bindings: Document ADXL345 accelerometer binding Eva Rachel Retuya
2017-02-22 10:22   ` Eva Rachel Retuya
2017-02-22 10:22 ` [PATCH v3 2/4] iio: accel: adxl345: Use I2C regmap instead of direct I2C access Eva Rachel Retuya
2017-02-23 16:27   ` Andy Shevchenko
2017-02-23 16:27     ` Andy Shevchenko
2017-02-24  9:02     ` Eva Rachel Retuya
2017-02-24  9:02       ` Eva Rachel Retuya
2017-02-22 10:23 ` [PATCH v3 3/4] iio: accel: adxl345: Split driver into core and I2C Eva Rachel Retuya
2017-02-22 10:23   ` Eva Rachel Retuya
2017-02-23 16:36   ` Andy Shevchenko
2017-02-23 16:36     ` Andy Shevchenko
2017-02-24  9:06     ` Eva Rachel Retuya
2017-02-24  9:06       ` Eva Rachel Retuya
2017-02-22 10:23 ` [PATCH v3 4/4] iio: accel: adxl345: Add SPI support Eva Rachel Retuya
2017-02-22 10:23   ` Eva Rachel Retuya
2017-02-23 16:43   ` Andy Shevchenko
2017-02-23 16:43     ` Andy Shevchenko
2017-02-23 16:47     ` Lars-Peter Clausen
2017-02-23 16:58       ` Andy Shevchenko
2017-02-23 16:58         ` Andy Shevchenko
2017-02-24  9:12         ` Eva Rachel Retuya
2017-02-24  9:12           ` Eva Rachel Retuya
2017-02-24  9:22           ` Lars-Peter Clausen
2017-02-24  9:22             ` Lars-Peter Clausen
2017-02-24 11:48             ` Andy Shevchenko
2017-02-24 11:48               ` Andy Shevchenko
2017-02-24 14:30               ` Eva Rachel Retuya
2017-02-24 14:30                 ` Eva Rachel Retuya
2017-02-24 19:46                 ` Jonathan Cameron
2017-02-25 15:09                   ` Jonathan Cameron
2017-02-25 15:09                     ` Jonathan Cameron

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.