linux-iio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/4] iio: imu: bmi160: added regulator and mount-matrix support
@ 2020-05-19  7:50 Jonathan Albrieux
  2020-05-19  7:50 ` [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml Jonathan Albrieux
                   ` (3 more replies)
  0 siblings, 4 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-19  7:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jonathan Albrieux,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler

v2: fixed missing description for iio: imu: bmi160: added regulator
support

Convert txt format documentation to yaml.
Add documentation about vdd-supply, vddio-supply and mount-matrix.

Add vdd-supply and vddio-supply support. Without this support, vdd and
vddio should be set to always-on in device tree.

Add mount-matrix binding support. As chip could have different
orientations a mount matrix support is needed to correctly translate
these differences

Jonathan Albrieux (4):
  dt-bindings: iio: imu: bmi160: convert txt format to yaml
  dt-bindings: iio: imu: bmi160: add regulators and mount-matrix
  iio: imu: bmi160: added regulator support
  iio: imu: bmi160: added mount-matrix support

 .../devicetree/bindings/iio/imu/bmi160.txt    |  37 ------
 .../devicetree/bindings/iio/imu/bmi160.yaml   | 105 ++++++++++++++++++
 drivers/iio/imu/bmi160/bmi160.h               |   3 +
 drivers/iio/imu/bmi160/bmi160_core.c          |  47 +++++++-
 4 files changed, 154 insertions(+), 38 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
 create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml

-- 
2.17.1


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

* [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-19  7:50 [PATCH v2 0/4] iio: imu: bmi160: added regulator and mount-matrix support Jonathan Albrieux
@ 2020-05-19  7:50 ` Jonathan Albrieux
  2020-05-19 17:37   ` Rob Herring
                     ` (2 more replies)
  2020-05-19  7:50 ` [PATCH v2 2/4] dt-bindings: iio: imu: bmi160: add regulators and mount-matrix Jonathan Albrieux
                   ` (2 subsequent siblings)
  3 siblings, 3 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-19  7:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jonathan Albrieux,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron, Rob Herring

Converts documentation from txt format to yaml 

Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
---
 .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
 .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
 2 files changed, 84 insertions(+), 37 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
 create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml

diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.txt b/Documentation/devicetree/bindings/iio/imu/bmi160.txt
deleted file mode 100644
index 900c169de00f..000000000000
--- a/Documentation/devicetree/bindings/iio/imu/bmi160.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Bosch BMI160 - Inertial Measurement Unit with Accelerometer, Gyroscope
-and externally connectable Magnetometer
-
-https://www.bosch-sensortec.com/bst/products/all_products/bmi160
-
-Required properties:
- - compatible : should be "bosch,bmi160"
- - reg : the I2C address or SPI chip select number of the sensor
- - spi-max-frequency : set maximum clock frequency (only for SPI)
-
-Optional properties:
- - interrupts : interrupt mapping for IRQ
- - interrupt-names : set to "INT1" if INT1 pin should be used as interrupt
-   input, set to "INT2" if INT2 pin should be used instead
- - drive-open-drain : set if the specified interrupt pin should be configured as
-   open drain. If not set, defaults to push-pull.
-
-Examples:
-
-bmi160@68 {
-	compatible = "bosch,bmi160";
-	reg = <0x68>;
-
-	interrupt-parent = <&gpio4>;
-	interrupts = <12 IRQ_TYPE_EDGE_RISING>;
-	interrupt-names = "INT1";
-};
-
-bmi160@0 {
-	compatible = "bosch,bmi160";
-	reg = <0>;
-	spi-max-frequency = <10000000>;
-
-	interrupt-parent = <&gpio2>;
-	interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
-	interrupt-names = "INT2";
-};
diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
new file mode 100644
index 000000000000..6b464ce5ed0b
--- /dev/null
+++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
@@ -0,0 +1,84 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/iio/imu/bmi160.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Bosch BMI160
+
+maintainers:
+  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>
+
+description: |
+  Inertial Measurement Unit with Accelerometer, Gyroscope and externally
+  connectable Magnetometer
+  https://www.bosch-sensortec.com/bst/products/all_products/bmi160
+
+properties:
+  compatible:
+    const: bosch,bmi160
+
+  reg:
+    maxItems: 1
+    description: the I2C address or SPI chip select number of the sensor
+
+  spi-max-frequency:
+    maxItems: 1
+    description: set maximum clock frequency (required only for SPI)
+
+  interrupts:
+    maxItems: 1
+    description: interrupt mapping for IRQ
+
+  interrupt-names:
+    minItems: 1
+    maxItems: 1
+    items:
+      enum:
+        - INT1
+        - INT2
+    description: |
+      set to "INT1" if INT1 pin should be used as interrupt input, set
+      to "INT2" if INT2 pin should be used instead
+
+  drive-open-drain:
+    description: |
+      set if the specified interrupt pin should be configured as
+      open drain. If not set, defaults to push-pull.
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    // Example for I2C
+    i2c@78b7000 {
+        reg = <0x78b6000 0x600>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        bmi160@68 {
+                compatible = "bosch,bmi160";
+                reg = <0x68>;
+                interrupt-parent = <&gpio4>;
+                interrupts = <12 1>;
+                interrupt-names = "INT1";
+        };
+  - |
+    // Example for SPI
+    spi@78b7000 {
+        reg = <0x78b7000 0x600>,
+              <0x7884000 0x23000>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        bmi160@0 {
+                compatible = "bosch,bmi160";
+                reg = <0>;
+                spi-max-frequency = <10000000>;
+                interrupt-parent = <&gpio2>;
+                interrupts = <12 1>;
+                interrupt-names = "INT2";
+        };
+    };
-- 
2.17.1


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

* [PATCH v2 2/4] dt-bindings: iio: imu: bmi160: add regulators and mount-matrix
  2020-05-19  7:50 [PATCH v2 0/4] iio: imu: bmi160: added regulator and mount-matrix support Jonathan Albrieux
  2020-05-19  7:50 ` [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml Jonathan Albrieux
@ 2020-05-19  7:50 ` Jonathan Albrieux
  2020-05-19 17:51   ` Jonathan Cameron
  2020-05-19  7:50 ` [PATCH v2 3/4] iio: imu: bmi160: added regulator support Jonathan Albrieux
  2020-05-19  7:51 ` [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support Jonathan Albrieux
  3 siblings, 1 reply; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-19  7:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jonathan Albrieux,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron, Rob Herring

Add vdd-supply and vddio-supply support.
Add mount-matrix support.

Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
---
 .../devicetree/bindings/iio/imu/bmi160.yaml   | 21 +++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
index 6b464ce5ed0b..5b13af7a209f 100644
--- a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
+++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
@@ -46,6 +46,21 @@ properties:
       set if the specified interrupt pin should be configured as
       open drain. If not set, defaults to push-pull.
 
+  vdd-supply:
+    maxItems: 1
+    description: |
+      an optional regulator that needs to be on to provide VDD power to
+      the sensor.
+
+  vddio-supply:
+    maxItems: 1
+    description: |
+      an optional regulator that needs to be on to provide the VDD IO power to
+      the sensor.
+
+  mount-matrix:
+    description: an optional 3x3 mounting rotation matrix
+
 required:
   - compatible
   - reg
@@ -61,9 +76,15 @@ examples:
         bmi160@68 {
                 compatible = "bosch,bmi160";
                 reg = <0x68>;
+                vdd-supply = <&pm8916_l17>;
+                vddio-supply = <&pm8916_l6>;
                 interrupt-parent = <&gpio4>;
                 interrupts = <12 1>;
                 interrupt-names = "INT1";
+                mount-matrix = "0", "1", "0",
+                               "-1", "0", "0",
+                               "0", "0", "1";
+                };
         };
   - |
     // Example for SPI
-- 
2.17.1


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

* [PATCH v2 3/4] iio: imu: bmi160: added regulator support
  2020-05-19  7:50 [PATCH v2 0/4] iio: imu: bmi160: added regulator and mount-matrix support Jonathan Albrieux
  2020-05-19  7:50 ` [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml Jonathan Albrieux
  2020-05-19  7:50 ` [PATCH v2 2/4] dt-bindings: iio: imu: bmi160: add regulators and mount-matrix Jonathan Albrieux
@ 2020-05-19  7:50 ` Jonathan Albrieux
  2020-05-19 17:55   ` Jonathan Cameron
  2020-05-19  7:51 ` [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support Jonathan Albrieux
  3 siblings, 1 reply; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-19  7:50 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jonathan Albrieux,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

v2: fixed missing description

Add vdd-supply and vddio-supply support. Without this support vdd and vddio
should be set to always-on in device tree

Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
---
 drivers/iio/imu/bmi160/bmi160.h      |  2 ++
 drivers/iio/imu/bmi160/bmi160_core.c | 27 ++++++++++++++++++++++++++-
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
index 621f5309d735..923c3b274fde 100644
--- a/drivers/iio/imu/bmi160/bmi160.h
+++ b/drivers/iio/imu/bmi160/bmi160.h
@@ -3,10 +3,12 @@
 #define BMI160_H_
 
 #include <linux/iio/iio.h>
+#include <linux/regulator/consumer.h>
 
 struct bmi160_data {
 	struct regmap *regmap;
 	struct iio_trigger *trig;
+	struct regulator_bulk_data supplies[2];
 };
 
 extern const struct regmap_config bmi160_regmap_config;
diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
index 6af65d6f1d28..9bbe0d8e6720 100644
--- a/drivers/iio/imu/bmi160/bmi160_core.c
+++ b/drivers/iio/imu/bmi160/bmi160_core.c
@@ -15,6 +15,7 @@
 #include <linux/delay.h>
 #include <linux/irq.h>
 #include <linux/of_irq.h>
+#include <linux/regulator/consumer.h>
 
 #include <linux/iio/iio.h>
 #include <linux/iio/triggered_buffer.h>
@@ -709,6 +710,12 @@ static int bmi160_chip_init(struct bmi160_data *data, bool use_spi)
 	unsigned int val;
 	struct device *dev = regmap_get_device(data->regmap);
 
+	ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
+	if (ret) {
+		dev_err(dev, "Failed to enable regulators: %d\n", ret);
+		return ret;
+	}
+
 	ret = regmap_write(data->regmap, BMI160_REG_CMD, BMI160_CMD_SOFTRESET);
 	if (ret)
 		return ret;
@@ -793,9 +800,17 @@ int bmi160_probe_trigger(struct iio_dev *indio_dev, int irq, u32 irq_type)
 static void bmi160_chip_uninit(void *data)
 {
 	struct bmi160_data *bmi_data = data;
+	struct device *dev = regmap_get_device(bmi_data->regmap);
+	int ret;
 
 	bmi160_set_mode(bmi_data, BMI160_GYRO, false);
 	bmi160_set_mode(bmi_data, BMI160_ACCEL, false);
+
+	ret = regulator_bulk_disable(ARRAY_SIZE(bmi_data->supplies),
+				     bmi_data->supplies);
+	if (ret) {
+		dev_err(dev, "Failed to disable regulators: %d\n", ret);
+	}
 }
 
 int bmi160_core_probe(struct device *dev, struct regmap *regmap,
@@ -815,6 +830,16 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
 	dev_set_drvdata(dev, indio_dev);
 	data->regmap = regmap;
 
+	data->supplies[0].supply = "vdd";
+	data->supplies[1].supply = "vddio";
+	ret = devm_regulator_bulk_get(dev,
+				      ARRAY_SIZE(data->supplies),
+				      data->supplies);
+	if (ret) {
+		dev_err(dev, "Failed to get regulators: %d\n", ret);
+		return ret;
+	}
+
 	ret = bmi160_chip_init(data, use_spi);
 	if (ret)
 		return ret;
@@ -853,6 +878,6 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
 }
 EXPORT_SYMBOL_GPL(bmi160_core_probe);
 
-MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com");
+MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com>");
 MODULE_DESCRIPTION("Bosch BMI160 driver");
 MODULE_LICENSE("GPL v2");
-- 
2.17.1


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

* [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support
  2020-05-19  7:50 [PATCH v2 0/4] iio: imu: bmi160: added regulator and mount-matrix support Jonathan Albrieux
                   ` (2 preceding siblings ...)
  2020-05-19  7:50 ` [PATCH v2 3/4] iio: imu: bmi160: added regulator support Jonathan Albrieux
@ 2020-05-19  7:51 ` Jonathan Albrieux
  2020-05-19 17:57   ` Jonathan Cameron
  3 siblings, 1 reply; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-19  7:51 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jonathan Albrieux,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

Add mount-matrix binding support. As chip could have different orientations
a mount matrix support is needed to correctly translate these differences

Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
---
 drivers/iio/imu/bmi160/bmi160.h      |  1 +
 drivers/iio/imu/bmi160/bmi160_core.c | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
index 923c3b274fde..a82e040bd109 100644
--- a/drivers/iio/imu/bmi160/bmi160.h
+++ b/drivers/iio/imu/bmi160/bmi160.h
@@ -9,6 +9,7 @@ struct bmi160_data {
 	struct regmap *regmap;
 	struct iio_trigger *trig;
 	struct regulator_bulk_data supplies[2];
+	struct iio_mount_matrix orientation;
 };
 
 extern const struct regmap_config bmi160_regmap_config;
diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
index 9bbe0d8e6720..78c8ca962359 100644
--- a/drivers/iio/imu/bmi160/bmi160_core.c
+++ b/drivers/iio/imu/bmi160/bmi160_core.c
@@ -110,6 +110,7 @@
 		.storagebits = 16,				\
 		.endianness = IIO_LE,				\
 	},							\
+	.ext_info = bmi160_ext_info,				\
 }
 
 /* scan indexes follow DATA register order */
@@ -265,6 +266,20 @@ static const struct  bmi160_odr_item bmi160_odr_table[] = {
 	},
 };
 
+static const struct iio_mount_matrix *
+bmi160_get_mount_matrix(const struct iio_dev *indio_dev,
+			const struct iio_chan_spec *chan)
+{
+	struct bmi160_data *data = iio_priv(indio_dev);
+
+	return &data->orientation;
+}
+
+static const struct iio_chan_spec_ext_info bmi160_ext_info[] = {
+	IIO_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bmi160_get_mount_matrix),
+	{ }
+};
+
 static const struct iio_chan_spec bmi160_channels[] = {
 	BMI160_CHANNEL(IIO_ACCEL, X, BMI160_SCAN_ACCEL_X),
 	BMI160_CHANNEL(IIO_ACCEL, Y, BMI160_SCAN_ACCEL_Y),
@@ -840,6 +855,11 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
 		return ret;
 	}
 
+	ret = iio_read_mount_matrix(dev, "mount-matrix",
+				    &data->orientation);
+	if (ret)
+		return ret;
+
 	ret = bmi160_chip_init(data, use_spi);
 	if (ret)
 		return ret;
-- 
2.17.1


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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-19  7:50 ` [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml Jonathan Albrieux
@ 2020-05-19 17:37   ` Rob Herring
  2020-05-20  7:06     ` Jonathan Albrieux
  2020-05-19 17:49   ` Jonathan Cameron
  2020-05-19 18:20   ` Rob Herring
  2 siblings, 1 reply; 25+ messages in thread
From: Rob Herring @ 2020-05-19 17:37 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: Rob Herring, open list:IIO SUBSYSTEM AND DRIVERS,
	Peter Meerwald-Stadler,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	linux-kernel, Lars-Peter Clausen, Jonathan Cameron,
	Hartmut Knaack

On Tue, 19 May 2020 09:50:57 +0200, Jonathan Albrieux wrote:
> Converts documentation from txt format to yaml
> 
> Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> ---
>  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
>  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
>  2 files changed, 84 insertions(+), 37 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
>  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> 


My bot found errors running 'make dt_binding_check' on your patch:

Error: Documentation/devicetree/bindings/iio/imu/bmi160.example.dts:37.1-2 syntax error
FATAL ERROR: Unable to parse input tree
scripts/Makefile.lib:312: recipe for target 'Documentation/devicetree/bindings/iio/imu/bmi160.example.dt.yaml' failed
make[1]: *** [Documentation/devicetree/bindings/iio/imu/bmi160.example.dt.yaml] Error 1
Makefile:1300: recipe for target 'dt_binding_check' failed
make: *** [dt_binding_check] Error 2

See https://patchwork.ozlabs.org/patch/1293085

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure dt-schema is up to date:

pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade

Please check and re-submit.


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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-19  7:50 ` [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml Jonathan Albrieux
  2020-05-19 17:37   ` Rob Herring
@ 2020-05-19 17:49   ` Jonathan Cameron
  2020-05-20  7:24     ` Jonathan Albrieux
  2020-05-19 18:20   ` Rob Herring
  2 siblings, 1 reply; 25+ messages in thread
From: Jonathan Cameron @ 2020-05-19 17:49 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron, Rob Herring, Daniel Baluta

On Tue, 19 May 2020 09:50:57 +0200
Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:

> Converts documentation from txt format to yaml 
> 
> Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> ---
>  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
>  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
>  2 files changed, 84 insertions(+), 37 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
>  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> 
> diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.txt b/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> deleted file mode 100644
> index 900c169de00f..000000000000
> --- a/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -Bosch BMI160 - Inertial Measurement Unit with Accelerometer, Gyroscope
> -and externally connectable Magnetometer
> -
> -https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> -
> -Required properties:
> - - compatible : should be "bosch,bmi160"
> - - reg : the I2C address or SPI chip select number of the sensor
> - - spi-max-frequency : set maximum clock frequency (only for SPI)
> -
> -Optional properties:
> - - interrupts : interrupt mapping for IRQ
> - - interrupt-names : set to "INT1" if INT1 pin should be used as interrupt
> -   input, set to "INT2" if INT2 pin should be used instead
> - - drive-open-drain : set if the specified interrupt pin should be configured as
> -   open drain. If not set, defaults to push-pull.
> -
> -Examples:
> -
> -bmi160@68 {
> -	compatible = "bosch,bmi160";
> -	reg = <0x68>;
> -
> -	interrupt-parent = <&gpio4>;
> -	interrupts = <12 IRQ_TYPE_EDGE_RISING>;
> -	interrupt-names = "INT1";
> -};
> -
> -bmi160@0 {
> -	compatible = "bosch,bmi160";
> -	reg = <0>;
> -	spi-max-frequency = <10000000>;
> -
> -	interrupt-parent = <&gpio2>;
> -	interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
> -	interrupt-names = "INT2";
> -};
> diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> new file mode 100644
> index 000000000000..6b464ce5ed0b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> @@ -0,0 +1,84 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/imu/bmi160.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Bosch BMI160
> +
> +maintainers:
> +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>

Daniel is still active in the kernel, just not at Intel any more. +CC

> +
> +description: |
> +  Inertial Measurement Unit with Accelerometer, Gyroscope and externally
> +  connectable Magnetometer
> +  https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> +
> +properties:
> +  compatible:
> +    const: bosch,bmi160
> +
> +  reg:
> +    maxItems: 1
> +    description: the I2C address or SPI chip select number of the sensor

As standard for i2c and spi, usually no need to have a description line for
this element.

> +
> +  spi-max-frequency:
> +    maxItems: 1
> +    description: set maximum clock frequency (required only for SPI)

Standard spi binding.  Probably doesn't need to be included here.

> +
> +  interrupts:
> +    maxItems: 1
> +    description: interrupt mapping for IRQ
> +
> +  interrupt-names:
> +    minItems: 1
> +    maxItems: 1
> +    items:
> +      enum:
> +        - INT1
> +        - INT2
> +    description: |
> +      set to "INT1" if INT1 pin should be used as interrupt input, set
> +      to "INT2" if INT2 pin should be used instead
> +
> +  drive-open-drain:
> +    description: |
> +      set if the specified interrupt pin should be configured as
> +      open drain. If not set, defaults to push-pull.

> +
> +required:
> +  - compatible
> +  - reg
> +
> +examples:
> +  - |
> +    // Example for I2C
> +    i2c@78b7000 {
> +        reg = <0x78b6000 0x600>;
> +        #address-cells = <1>;
> +        #size-cells = <0>;

Take a look at some of the other binding examples.  We normally
just focus on the driver so don't supply details for the bus.

e.g. https://elixir.bootlin.com/linux/v5.7-rc6/source/Documentation/devicetree/bindings/iio/adc/maxim,max1363.yaml#L39

> +
> +        bmi160@68 {
> +                compatible = "bosch,bmi160";
> +                reg = <0x68>;
> +                interrupt-parent = <&gpio4>;
> +                interrupts = <12 1>;
> +                interrupt-names = "INT1";
> +        };
> +  - |
> +    // Example for SPI
> +    spi@78b7000 {
> +        reg = <0x78b7000 0x600>,
> +              <0x7884000 0x23000>;
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        bmi160@0 {
> +                compatible = "bosch,bmi160";
> +                reg = <0>;
> +                spi-max-frequency = <10000000>;
> +                interrupt-parent = <&gpio2>;
> +                interrupts = <12 1>;
> +                interrupt-names = "INT2";
> +        };
> +    };



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

* Re: [PATCH v2 2/4] dt-bindings: iio: imu: bmi160: add regulators and mount-matrix
  2020-05-19  7:50 ` [PATCH v2 2/4] dt-bindings: iio: imu: bmi160: add regulators and mount-matrix Jonathan Albrieux
@ 2020-05-19 17:51   ` Jonathan Cameron
  2020-05-20  7:11     ` Jonathan Albrieux
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Cameron @ 2020-05-19 17:51 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron, Rob Herring

On Tue, 19 May 2020 09:50:58 +0200
Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:

> Add vdd-supply and vddio-supply support.
> Add mount-matrix support.
> 
> Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>

A few minor comments inline.

> ---
>  .../devicetree/bindings/iio/imu/bmi160.yaml   | 21 +++++++++++++++++++
>  1 file changed, 21 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> index 6b464ce5ed0b..5b13af7a209f 100644
> --- a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> @@ -46,6 +46,21 @@ properties:
>        set if the specified interrupt pin should be configured as
>        open drain. If not set, defaults to push-pull.
>  
> +  vdd-supply:
> +    maxItems: 1
> +    description: |
> +      an optional regulator that needs to be on to provide VDD power to
> +      the sensor.

They aren't optional.  Whether we specify them or rely on stub regulators
being provided because they aren't controllable is the optional bit.
That's clearly defined by them not being in the required list below.
So say something li.e

   description: |
      provide VDD power to the sensor.

> +
> +  vddio-supply:
> +    maxItems: 1
> +    description: |
> +      an optional regulator that needs to be on to provide the VDD IO power to
> +      the sensor.
> +
> +  mount-matrix:
> +    description: an optional 3x3 mounting rotation matrix
> +
>  required:
>    - compatible
>    - reg
> @@ -61,9 +76,15 @@ examples:
>          bmi160@68 {
>                  compatible = "bosch,bmi160";
>                  reg = <0x68>;
> +                vdd-supply = <&pm8916_l17>;
> +                vddio-supply = <&pm8916_l6>;
>                  interrupt-parent = <&gpio4>;
>                  interrupts = <12 1>;
>                  interrupt-names = "INT1";
> +                mount-matrix = "0", "1", "0",
> +                               "-1", "0", "0",
> +                               "0", "0", "1";
> +                };
>          };
>    - |
>      // Example for SPI



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

* Re: [PATCH v2 3/4] iio: imu: bmi160: added regulator support
  2020-05-19  7:50 ` [PATCH v2 3/4] iio: imu: bmi160: added regulator support Jonathan Albrieux
@ 2020-05-19 17:55   ` Jonathan Cameron
  2020-05-20  7:17     ` Jonathan Albrieux
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Cameron @ 2020-05-19 17:55 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

On Tue, 19 May 2020 09:50:59 +0200
Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:

> v2: fixed missing description

Don't put change log here....
> 
> Add vdd-supply and vddio-supply support. Without this support vdd and vddio
> should be set to always-on in device tree

Kind of the opposite.  If they are always on we don't have to provide them
in the device tree.

A few trivial things inline.

> 
> Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> ---

Change log goes here so we don't end up keeping it in the git log.

>  drivers/iio/imu/bmi160/bmi160.h      |  2 ++
>  drivers/iio/imu/bmi160/bmi160_core.c | 27 ++++++++++++++++++++++++++-
>  2 files changed, 28 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
> index 621f5309d735..923c3b274fde 100644
> --- a/drivers/iio/imu/bmi160/bmi160.h
> +++ b/drivers/iio/imu/bmi160/bmi160.h
> @@ -3,10 +3,12 @@
>  #define BMI160_H_
>  
>  #include <linux/iio/iio.h>
> +#include <linux/regulator/consumer.h>
>  
>  struct bmi160_data {
>  	struct regmap *regmap;
>  	struct iio_trigger *trig;
> +	struct regulator_bulk_data supplies[2];
>  };
>  
>  extern const struct regmap_config bmi160_regmap_config;
> diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
> index 6af65d6f1d28..9bbe0d8e6720 100644
> --- a/drivers/iio/imu/bmi160/bmi160_core.c
> +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> @@ -15,6 +15,7 @@
>  #include <linux/delay.h>
>  #include <linux/irq.h>
>  #include <linux/of_irq.h>
> +#include <linux/regulator/consumer.h>
>  
>  #include <linux/iio/iio.h>
>  #include <linux/iio/triggered_buffer.h>
> @@ -709,6 +710,12 @@ static int bmi160_chip_init(struct bmi160_data *data, bool use_spi)
>  	unsigned int val;
>  	struct device *dev = regmap_get_device(data->regmap);
>  
> +	ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
> +	if (ret) {
> +		dev_err(dev, "Failed to enable regulators: %d\n", ret);
> +		return ret;
> +	}
> +
>  	ret = regmap_write(data->regmap, BMI160_REG_CMD, BMI160_CMD_SOFTRESET);
>  	if (ret)
>  		return ret;
> @@ -793,9 +800,17 @@ int bmi160_probe_trigger(struct iio_dev *indio_dev, int irq, u32 irq_type)
>  static void bmi160_chip_uninit(void *data)
>  {
>  	struct bmi160_data *bmi_data = data;
> +	struct device *dev = regmap_get_device(bmi_data->regmap);
> +	int ret;
>  
>  	bmi160_set_mode(bmi_data, BMI160_GYRO, false);
>  	bmi160_set_mode(bmi_data, BMI160_ACCEL, false);
> +
> +	ret = regulator_bulk_disable(ARRAY_SIZE(bmi_data->supplies),
> +				     bmi_data->supplies);
> +	if (ret) {
> +		dev_err(dev, "Failed to disable regulators: %d\n", ret);
> +	}
No need for brackets around a 1 line if block

	if (ret)
		dev_err(dev, "failed to disable regulators: %d\n", ret);

>  }
>  
>  int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> @@ -815,6 +830,16 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
>  	dev_set_drvdata(dev, indio_dev);
>  	data->regmap = regmap;
>  
> +	data->supplies[0].supply = "vdd";
> +	data->supplies[1].supply = "vddio";
> +	ret = devm_regulator_bulk_get(dev,
> +				      ARRAY_SIZE(data->supplies),
> +				      data->supplies);
> +	if (ret) {
> +		dev_err(dev, "Failed to get regulators: %d\n", ret);
> +		return ret;
> +	}
> +
>  	ret = bmi160_chip_init(data, use_spi);
>  	if (ret)
>  		return ret;
> @@ -853,6 +878,6 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
>  }
>  EXPORT_SYMBOL_GPL(bmi160_core_probe);
>  
> -MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com");
> +MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com>");

Good fix but shouldn't be in this patch.   Put it a separate patch on it's own.

>  MODULE_DESCRIPTION("Bosch BMI160 driver");
>  MODULE_LICENSE("GPL v2");



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

* Re: [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support
  2020-05-19  7:51 ` [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support Jonathan Albrieux
@ 2020-05-19 17:57   ` Jonathan Cameron
  2020-05-20  7:20     ` Jonathan Albrieux
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Cameron @ 2020-05-19 17:57 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

On Tue, 19 May 2020 09:51:00 +0200
Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:

> Add mount-matrix binding support. As chip could have different orientations
> a mount matrix support is needed to correctly translate these differences
> 
> Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
Hi Jonathan,

Looks good to me. I'll pick this up once 1-3 are tidied up and
we have a device tree review in for the binding doc.  I'm rubbish
at reviewing those as Rob will certify so may well have missed something!

Jonathan



> ---
>  drivers/iio/imu/bmi160/bmi160.h      |  1 +
>  drivers/iio/imu/bmi160/bmi160_core.c | 20 ++++++++++++++++++++
>  2 files changed, 21 insertions(+)
> 
> diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
> index 923c3b274fde..a82e040bd109 100644
> --- a/drivers/iio/imu/bmi160/bmi160.h
> +++ b/drivers/iio/imu/bmi160/bmi160.h
> @@ -9,6 +9,7 @@ struct bmi160_data {
>  	struct regmap *regmap;
>  	struct iio_trigger *trig;
>  	struct regulator_bulk_data supplies[2];
> +	struct iio_mount_matrix orientation;
>  };
>  
>  extern const struct regmap_config bmi160_regmap_config;
> diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
> index 9bbe0d8e6720..78c8ca962359 100644
> --- a/drivers/iio/imu/bmi160/bmi160_core.c
> +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> @@ -110,6 +110,7 @@
>  		.storagebits = 16,				\
>  		.endianness = IIO_LE,				\
>  	},							\
> +	.ext_info = bmi160_ext_info,				\
>  }
>  
>  /* scan indexes follow DATA register order */
> @@ -265,6 +266,20 @@ static const struct  bmi160_odr_item bmi160_odr_table[] = {
>  	},
>  };
>  
> +static const struct iio_mount_matrix *
> +bmi160_get_mount_matrix(const struct iio_dev *indio_dev,
> +			const struct iio_chan_spec *chan)
> +{
> +	struct bmi160_data *data = iio_priv(indio_dev);
> +
> +	return &data->orientation;
> +}
> +
> +static const struct iio_chan_spec_ext_info bmi160_ext_info[] = {
> +	IIO_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bmi160_get_mount_matrix),
> +	{ }
> +};
> +
>  static const struct iio_chan_spec bmi160_channels[] = {
>  	BMI160_CHANNEL(IIO_ACCEL, X, BMI160_SCAN_ACCEL_X),
>  	BMI160_CHANNEL(IIO_ACCEL, Y, BMI160_SCAN_ACCEL_Y),
> @@ -840,6 +855,11 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
>  		return ret;
>  	}
>  
> +	ret = iio_read_mount_matrix(dev, "mount-matrix",
> +				    &data->orientation);
> +	if (ret)
> +		return ret;
> +
>  	ret = bmi160_chip_init(data, use_spi);
>  	if (ret)
>  		return ret;



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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-19  7:50 ` [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml Jonathan Albrieux
  2020-05-19 17:37   ` Rob Herring
  2020-05-19 17:49   ` Jonathan Cameron
@ 2020-05-19 18:20   ` Rob Herring
  2020-05-20  7:29     ` Jonathan Albrieux
  2 siblings, 1 reply; 25+ messages in thread
From: Rob Herring @ 2020-05-19 18:20 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

On Tue, May 19, 2020 at 09:50:57AM +0200, Jonathan Albrieux wrote:
> Converts documentation from txt format to yaml 
> 
> Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> ---
>  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
>  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
>  2 files changed, 84 insertions(+), 37 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
>  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml

Use compatible string for filename: bosch,bmi160.yaml

> 
> diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.txt b/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> deleted file mode 100644
> index 900c169de00f..000000000000
> --- a/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -Bosch BMI160 - Inertial Measurement Unit with Accelerometer, Gyroscope
> -and externally connectable Magnetometer
> -
> -https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> -
> -Required properties:
> - - compatible : should be "bosch,bmi160"
> - - reg : the I2C address or SPI chip select number of the sensor
> - - spi-max-frequency : set maximum clock frequency (only for SPI)
> -
> -Optional properties:
> - - interrupts : interrupt mapping for IRQ
> - - interrupt-names : set to "INT1" if INT1 pin should be used as interrupt
> -   input, set to "INT2" if INT2 pin should be used instead
> - - drive-open-drain : set if the specified interrupt pin should be configured as
> -   open drain. If not set, defaults to push-pull.
> -
> -Examples:
> -
> -bmi160@68 {
> -	compatible = "bosch,bmi160";
> -	reg = <0x68>;
> -
> -	interrupt-parent = <&gpio4>;
> -	interrupts = <12 IRQ_TYPE_EDGE_RISING>;
> -	interrupt-names = "INT1";
> -};
> -
> -bmi160@0 {
> -	compatible = "bosch,bmi160";
> -	reg = <0>;
> -	spi-max-frequency = <10000000>;
> -
> -	interrupt-parent = <&gpio2>;
> -	interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
> -	interrupt-names = "INT2";
> -};
> diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> new file mode 100644
> index 000000000000..6b464ce5ed0b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> @@ -0,0 +1,84 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/imu/bmi160.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Bosch BMI160
> +
> +maintainers:
> +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>

Would help to Cc him perhaps.

> +
> +description: |
> +  Inertial Measurement Unit with Accelerometer, Gyroscope and externally
> +  connectable Magnetometer
> +  https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> +
> +properties:
> +  compatible:
> +    const: bosch,bmi160
> +
> +  reg:
> +    maxItems: 1
> +    description: the I2C address or SPI chip select number of the sensor
> +
> +  spi-max-frequency:
> +    maxItems: 1
> +    description: set maximum clock frequency (required only for SPI)
> +
> +  interrupts:
> +    maxItems: 1
> +    description: interrupt mapping for IRQ

No need for description if not adding anything unique for this device.

> +
> +  interrupt-names:
> +    minItems: 1
> +    maxItems: 1
> +    items:
> +      enum:
> +        - INT1
> +        - INT2

Just the enum is enough.

> +    description: |
> +      set to "INT1" if INT1 pin should be used as interrupt input, set
> +      to "INT2" if INT2 pin should be used instead
> +
> +  drive-open-drain:
> +    description: |
> +      set if the specified interrupt pin should be configured as
> +      open drain. If not set, defaults to push-pull.
> +
> +required:
> +  - compatible
> +  - reg
> +
> +examples:
> +  - |
> +    // Example for I2C
> +    i2c@78b7000 {
> +        reg = <0x78b6000 0x600>;
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        bmi160@68 {
> +                compatible = "bosch,bmi160";
> +                reg = <0x68>;
> +                interrupt-parent = <&gpio4>;
> +                interrupts = <12 1>;
> +                interrupt-names = "INT1";
> +        };
> +  - |
> +    // Example for SPI
> +    spi@78b7000 {
> +        reg = <0x78b7000 0x600>,
> +              <0x7884000 0x23000>;
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        bmi160@0 {
> +                compatible = "bosch,bmi160";
> +                reg = <0>;
> +                spi-max-frequency = <10000000>;
> +                interrupt-parent = <&gpio2>;
> +                interrupts = <12 1>;
> +                interrupt-names = "INT2";
> +        };
> +    };
> -- 
> 2.17.1
> 

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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-19 17:37   ` Rob Herring
@ 2020-05-20  7:06     ` Jonathan Albrieux
  0 siblings, 0 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-20  7:06 UTC (permalink / raw)
  To: Rob Herring
  Cc: Rob Herring, open list:IIO SUBSYSTEM AND DRIVERS,
	Peter Meerwald-Stadler,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	linux-kernel, Lars-Peter Clausen, Jonathan Cameron,
	Hartmut Knaack

On Tue, May 19, 2020 at 11:37:38AM -0600, Rob Herring wrote:
> On Tue, 19 May 2020 09:50:57 +0200, Jonathan Albrieux wrote:
> > Converts documentation from txt format to yaml
> > 
> > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > ---
> >  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
> >  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
> >  2 files changed, 84 insertions(+), 37 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
> >  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > 
> 
> 
> My bot found errors running 'make dt_binding_check' on your patch:
> 
> Error: Documentation/devicetree/bindings/iio/imu/bmi160.example.dts:37.1-2 syntax error
> FATAL ERROR: Unable to parse input tree
> scripts/Makefile.lib:312: recipe for target 'Documentation/devicetree/bindings/iio/imu/bmi160.example.dt.yaml' failed
> make[1]: *** [Documentation/devicetree/bindings/iio/imu/bmi160.example.dt.yaml] Error 1
> Makefile:1300: recipe for target 'dt_binding_check' failed
> make: *** [dt_binding_check] Error 2
> 
> See https://patchwork.ozlabs.org/patch/1293085
> 
> If you already ran 'make dt_binding_check' and didn't see the above
> error(s), then make sure dt-schema is up to date:
> 
> pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade
> 
> Please check and re-submit.
> 

Uhm I don't get that error, will try to update to see if it gives me the same error,
Thank you,

Best regards,
Jonathan Albrieux

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

* Re: [PATCH v2 2/4] dt-bindings: iio: imu: bmi160: add regulators and mount-matrix
  2020-05-19 17:51   ` Jonathan Cameron
@ 2020-05-20  7:11     ` Jonathan Albrieux
  0 siblings, 0 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-20  7:11 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron, Rob Herring

On Tue, May 19, 2020 at 06:51:59PM +0100, Jonathan Cameron wrote:
> On Tue, 19 May 2020 09:50:58 +0200
> Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> 
> > Add vdd-supply and vddio-supply support.
> > Add mount-matrix support.
> > 
> > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> 
> A few minor comments inline.
> 
> > ---
> >  .../devicetree/bindings/iio/imu/bmi160.yaml   | 21 +++++++++++++++++++
> >  1 file changed, 21 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > index 6b464ce5ed0b..5b13af7a209f 100644
> > --- a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > @@ -46,6 +46,21 @@ properties:
> >        set if the specified interrupt pin should be configured as
> >        open drain. If not set, defaults to push-pull.
> >  
> > +  vdd-supply:
> > +    maxItems: 1
> > +    description: |
> > +      an optional regulator that needs to be on to provide VDD power to
> > +      the sensor.
> 
> They aren't optional.  Whether we specify them or rely on stub regulators
> being provided because they aren't controllable is the optional bit.
> That's clearly defined by them not being in the required list below.
> So say something li.e
> 
>    description: |
>       provide VDD power to the sensor.
>

Oh ok thank you, will work on that

> > +
> > +  vddio-supply:
> > +    maxItems: 1
> > +    description: |
> > +      an optional regulator that needs to be on to provide the VDD IO power to
> > +      the sensor.
> > +
> > +  mount-matrix:
> > +    description: an optional 3x3 mounting rotation matrix
> > +
> >  required:
> >    - compatible
> >    - reg
> > @@ -61,9 +76,15 @@ examples:
> >          bmi160@68 {
> >                  compatible = "bosch,bmi160";
> >                  reg = <0x68>;
> > +                vdd-supply = <&pm8916_l17>;
> > +                vddio-supply = <&pm8916_l6>;
> >                  interrupt-parent = <&gpio4>;
> >                  interrupts = <12 1>;
> >                  interrupt-names = "INT1";
> > +                mount-matrix = "0", "1", "0",
> > +                               "-1", "0", "0",
> > +                               "0", "0", "1";
> > +                };
> >          };
> >    - |
> >      // Example for SPI
> 
> 

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

* Re: [PATCH v2 3/4] iio: imu: bmi160: added regulator support
  2020-05-19 17:55   ` Jonathan Cameron
@ 2020-05-20  7:17     ` Jonathan Albrieux
  2020-05-21 18:30       ` Jonathan Cameron
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-20  7:17 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

On Tue, May 19, 2020 at 06:55:35PM +0100, Jonathan Cameron wrote:
> On Tue, 19 May 2020 09:50:59 +0200
> Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> 
> > v2: fixed missing description
> 
> Don't put change log here....

Yep I will put it in the cover letter

> > 
> > Add vdd-supply and vddio-supply support. Without this support vdd and vddio
> > should be set to always-on in device tree
> 
> Kind of the opposite.  If they are always on we don't have to provide them
> in the device tree.
> 

I wrote that because, testing on msm8916, without setting the regulators to
always on they were controlled by other components and it happened that
the line wasn't ready during probe causing failure to load the module.

I will try to reword based on your comment, thank you.

> A few trivial things inline.
> 
> > 
> > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > ---
> 
> Change log goes here so we don't end up keeping it in the git log.
> 
> >  drivers/iio/imu/bmi160/bmi160.h      |  2 ++
> >  drivers/iio/imu/bmi160/bmi160_core.c | 27 ++++++++++++++++++++++++++-
> >  2 files changed, 28 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
> > index 621f5309d735..923c3b274fde 100644
> > --- a/drivers/iio/imu/bmi160/bmi160.h
> > +++ b/drivers/iio/imu/bmi160/bmi160.h
> > @@ -3,10 +3,12 @@
> >  #define BMI160_H_
> >  
> >  #include <linux/iio/iio.h>
> > +#include <linux/regulator/consumer.h>
> >  
> >  struct bmi160_data {
> >  	struct regmap *regmap;
> >  	struct iio_trigger *trig;
> > +	struct regulator_bulk_data supplies[2];
> >  };
> >  
> >  extern const struct regmap_config bmi160_regmap_config;
> > diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
> > index 6af65d6f1d28..9bbe0d8e6720 100644
> > --- a/drivers/iio/imu/bmi160/bmi160_core.c
> > +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> > @@ -15,6 +15,7 @@
> >  #include <linux/delay.h>
> >  #include <linux/irq.h>
> >  #include <linux/of_irq.h>
> > +#include <linux/regulator/consumer.h>
> >  
> >  #include <linux/iio/iio.h>
> >  #include <linux/iio/triggered_buffer.h>
> > @@ -709,6 +710,12 @@ static int bmi160_chip_init(struct bmi160_data *data, bool use_spi)
> >  	unsigned int val;
> >  	struct device *dev = regmap_get_device(data->regmap);
> >  
> > +	ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
> > +	if (ret) {
> > +		dev_err(dev, "Failed to enable regulators: %d\n", ret);
> > +		return ret;
> > +	}
> > +
> >  	ret = regmap_write(data->regmap, BMI160_REG_CMD, BMI160_CMD_SOFTRESET);
> >  	if (ret)
> >  		return ret;
> > @@ -793,9 +800,17 @@ int bmi160_probe_trigger(struct iio_dev *indio_dev, int irq, u32 irq_type)
> >  static void bmi160_chip_uninit(void *data)
> >  {
> >  	struct bmi160_data *bmi_data = data;
> > +	struct device *dev = regmap_get_device(bmi_data->regmap);
> > +	int ret;
> >  
> >  	bmi160_set_mode(bmi_data, BMI160_GYRO, false);
> >  	bmi160_set_mode(bmi_data, BMI160_ACCEL, false);
> > +
> > +	ret = regulator_bulk_disable(ARRAY_SIZE(bmi_data->supplies),
> > +				     bmi_data->supplies);
> > +	if (ret) {
> > +		dev_err(dev, "Failed to disable regulators: %d\n", ret);
> > +	}
> No need for brackets around a 1 line if block
> 

Thank you, I didn't noticed that :-)

> 	if (ret)
> 		dev_err(dev, "failed to disable regulators: %d\n", ret);
> 
> >  }
> >  
> >  int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> > @@ -815,6 +830,16 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> >  	dev_set_drvdata(dev, indio_dev);
> >  	data->regmap = regmap;
> >  
> > +	data->supplies[0].supply = "vdd";
> > +	data->supplies[1].supply = "vddio";
> > +	ret = devm_regulator_bulk_get(dev,
> > +				      ARRAY_SIZE(data->supplies),
> > +				      data->supplies);
> > +	if (ret) {
> > +		dev_err(dev, "Failed to get regulators: %d\n", ret);
> > +		return ret;
> > +	}
> > +
> >  	ret = bmi160_chip_init(data, use_spi);
> >  	if (ret)
> >  		return ret;
> > @@ -853,6 +878,6 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> >  }
> >  EXPORT_SYMBOL_GPL(bmi160_core_probe);
> >  
> > -MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com");
> > +MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com>");
> 
> Good fix but shouldn't be in this patch.   Put it a separate patch on it's own.
> 

Ok will separate this fix into another patch, thank you!

> >  MODULE_DESCRIPTION("Bosch BMI160 driver");
> >  MODULE_LICENSE("GPL v2");
> 
> 

Best regards,
Jonathan Albrieux

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

* Re: [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support
  2020-05-19 17:57   ` Jonathan Cameron
@ 2020-05-20  7:20     ` Jonathan Albrieux
  0 siblings, 0 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-20  7:20 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

On Tue, May 19, 2020 at 06:57:11PM +0100, Jonathan Cameron wrote:
> On Tue, 19 May 2020 09:51:00 +0200
> Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> 
> > Add mount-matrix binding support. As chip could have different orientations
> > a mount matrix support is needed to correctly translate these differences
> > 
> > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> Hi Jonathan,
> 
> Looks good to me. I'll pick this up once 1-3 are tidied up and
> we have a device tree review in for the binding doc.  I'm rubbish
> at reviewing those as Rob will certify so may well have missed something!
> 
> Jonathan
> 
>

Thank you! I'm going to work on suggestions now,

Best regards,
Jonathan Albrieux
 
> 
> > ---
> >  drivers/iio/imu/bmi160/bmi160.h      |  1 +
> >  drivers/iio/imu/bmi160/bmi160_core.c | 20 ++++++++++++++++++++
> >  2 files changed, 21 insertions(+)
> > 
> > diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
> > index 923c3b274fde..a82e040bd109 100644
> > --- a/drivers/iio/imu/bmi160/bmi160.h
> > +++ b/drivers/iio/imu/bmi160/bmi160.h
> > @@ -9,6 +9,7 @@ struct bmi160_data {
> >  	struct regmap *regmap;
> >  	struct iio_trigger *trig;
> >  	struct regulator_bulk_data supplies[2];
> > +	struct iio_mount_matrix orientation;
> >  };
> >  
> >  extern const struct regmap_config bmi160_regmap_config;
> > diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
> > index 9bbe0d8e6720..78c8ca962359 100644
> > --- a/drivers/iio/imu/bmi160/bmi160_core.c
> > +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> > @@ -110,6 +110,7 @@
> >  		.storagebits = 16,				\
> >  		.endianness = IIO_LE,				\
> >  	},							\
> > +	.ext_info = bmi160_ext_info,				\
> >  }
> >  
> >  /* scan indexes follow DATA register order */
> > @@ -265,6 +266,20 @@ static const struct  bmi160_odr_item bmi160_odr_table[] = {
> >  	},
> >  };
> >  
> > +static const struct iio_mount_matrix *
> > +bmi160_get_mount_matrix(const struct iio_dev *indio_dev,
> > +			const struct iio_chan_spec *chan)
> > +{
> > +	struct bmi160_data *data = iio_priv(indio_dev);
> > +
> > +	return &data->orientation;
> > +}
> > +
> > +static const struct iio_chan_spec_ext_info bmi160_ext_info[] = {
> > +	IIO_MOUNT_MATRIX(IIO_SHARED_BY_DIR, bmi160_get_mount_matrix),
> > +	{ }
> > +};
> > +
> >  static const struct iio_chan_spec bmi160_channels[] = {
> >  	BMI160_CHANNEL(IIO_ACCEL, X, BMI160_SCAN_ACCEL_X),
> >  	BMI160_CHANNEL(IIO_ACCEL, Y, BMI160_SCAN_ACCEL_Y),
> > @@ -840,6 +855,11 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> >  		return ret;
> >  	}
> >  
> > +	ret = iio_read_mount_matrix(dev, "mount-matrix",
> > +				    &data->orientation);
> > +	if (ret)
> > +		return ret;
> > +
> >  	ret = bmi160_chip_init(data, use_spi);
> >  	if (ret)
> >  		return ret;
> 
> 

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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-19 17:49   ` Jonathan Cameron
@ 2020-05-20  7:24     ` Jonathan Albrieux
  2020-05-21 18:27       ` Jonathan Cameron
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-20  7:24 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron, Rob Herring, Daniel Baluta

On Tue, May 19, 2020 at 06:49:33PM +0100, Jonathan Cameron wrote:
> On Tue, 19 May 2020 09:50:57 +0200
> Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> 
> > Converts documentation from txt format to yaml 
> > 
> > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > ---
> >  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
> >  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
> >  2 files changed, 84 insertions(+), 37 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
> >  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.txt b/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > deleted file mode 100644
> > index 900c169de00f..000000000000
> > --- a/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > +++ /dev/null
> > @@ -1,37 +0,0 @@
> > -Bosch BMI160 - Inertial Measurement Unit with Accelerometer, Gyroscope
> > -and externally connectable Magnetometer
> > -
> > -https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > -
> > -Required properties:
> > - - compatible : should be "bosch,bmi160"
> > - - reg : the I2C address or SPI chip select number of the sensor
> > - - spi-max-frequency : set maximum clock frequency (only for SPI)
> > -
> > -Optional properties:
> > - - interrupts : interrupt mapping for IRQ
> > - - interrupt-names : set to "INT1" if INT1 pin should be used as interrupt
> > -   input, set to "INT2" if INT2 pin should be used instead
> > - - drive-open-drain : set if the specified interrupt pin should be configured as
> > -   open drain. If not set, defaults to push-pull.
> > -
> > -Examples:
> > -
> > -bmi160@68 {
> > -	compatible = "bosch,bmi160";
> > -	reg = <0x68>;
> > -
> > -	interrupt-parent = <&gpio4>;
> > -	interrupts = <12 IRQ_TYPE_EDGE_RISING>;
> > -	interrupt-names = "INT1";
> > -};
> > -
> > -bmi160@0 {
> > -	compatible = "bosch,bmi160";
> > -	reg = <0>;
> > -	spi-max-frequency = <10000000>;
> > -
> > -	interrupt-parent = <&gpio2>;
> > -	interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
> > -	interrupt-names = "INT2";
> > -};
> > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > new file mode 100644
> > index 000000000000..6b464ce5ed0b
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > @@ -0,0 +1,84 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/iio/imu/bmi160.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Bosch BMI160
> > +
> > +maintainers:
> > +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>
> 
> Daniel is still active in the kernel, just not at Intel any more. +CC
> 

Oh ok thank you! Daniel are you still maintaining this driver?

> > +
> > +description: |
> > +  Inertial Measurement Unit with Accelerometer, Gyroscope and externally
> > +  connectable Magnetometer
> > +  https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > +
> > +properties:
> > +  compatible:
> > +    const: bosch,bmi160
> > +
> > +  reg:
> > +    maxItems: 1
> > +    description: the I2C address or SPI chip select number of the sensor
> 
> As standard for i2c and spi, usually no need to have a description line for
> this element.
> 

Thank you, will remove the description then.

> > +
> > +  spi-max-frequency:
> > +    maxItems: 1
> > +    description: set maximum clock frequency (required only for SPI)
> 
> Standard spi binding.  Probably doesn't need to be included here.
> 

So should I completely remove it from properties?

> > +
> > +  interrupts:
> > +    maxItems: 1
> > +    description: interrupt mapping for IRQ
> > +
> > +  interrupt-names:
> > +    minItems: 1
> > +    maxItems: 1
> > +    items:
> > +      enum:
> > +        - INT1
> > +        - INT2
> > +    description: |
> > +      set to "INT1" if INT1 pin should be used as interrupt input, set
> > +      to "INT2" if INT2 pin should be used instead
> > +
> > +  drive-open-drain:
> > +    description: |
> > +      set if the specified interrupt pin should be configured as
> > +      open drain. If not set, defaults to push-pull.
> 
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +
> > +examples:
> > +  - |
> > +    // Example for I2C
> > +    i2c@78b7000 {
> > +        reg = <0x78b6000 0x600>;
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> 
> Take a look at some of the other binding examples.  We normally
> just focus on the driver so don't supply details for the bus.
> 
> e.g. https://elixir.bootlin.com/linux/v5.7-rc6/source/Documentation/devicetree/bindings/iio/adc/maxim,max1363.yaml#L39
> 

Will check :-)

> > +
> > +        bmi160@68 {
> > +                compatible = "bosch,bmi160";
> > +                reg = <0x68>;
> > +                interrupt-parent = <&gpio4>;
> > +                interrupts = <12 1>;
> > +                interrupt-names = "INT1";
> > +        };
> > +  - |
> > +    // Example for SPI
> > +    spi@78b7000 {
> > +        reg = <0x78b7000 0x600>,
> > +              <0x7884000 0x23000>;
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        bmi160@0 {
> > +                compatible = "bosch,bmi160";
> > +                reg = <0>;
> > +                spi-max-frequency = <10000000>;
> > +                interrupt-parent = <&gpio2>;
> > +                interrupts = <12 1>;
> > +                interrupt-names = "INT2";
> > +        };
> > +    };
> 
> 

Thank you,

Best regards,
Jonathan Albrieux

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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-19 18:20   ` Rob Herring
@ 2020-05-20  7:29     ` Jonathan Albrieux
  0 siblings, 0 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-20  7:29 UTC (permalink / raw)
  To: Rob Herring
  Cc: linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Jonathan Cameron

On Tue, May 19, 2020 at 12:20:28PM -0600, Rob Herring wrote:
> On Tue, May 19, 2020 at 09:50:57AM +0200, Jonathan Albrieux wrote:
> > Converts documentation from txt format to yaml 
> > 
> > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > ---
> >  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
> >  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
> >  2 files changed, 84 insertions(+), 37 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
> >  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> 
> Use compatible string for filename: bosch,bmi160.yaml
>

Ok thank you, will change filename.
 
> > 
> > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.txt b/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > deleted file mode 100644
> > index 900c169de00f..000000000000
> > --- a/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > +++ /dev/null
> > @@ -1,37 +0,0 @@
> > -Bosch BMI160 - Inertial Measurement Unit with Accelerometer, Gyroscope
> > -and externally connectable Magnetometer
> > -
> > -https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > -
> > -Required properties:
> > - - compatible : should be "bosch,bmi160"
> > - - reg : the I2C address or SPI chip select number of the sensor
> > - - spi-max-frequency : set maximum clock frequency (only for SPI)
> > -
> > -Optional properties:
> > - - interrupts : interrupt mapping for IRQ
> > - - interrupt-names : set to "INT1" if INT1 pin should be used as interrupt
> > -   input, set to "INT2" if INT2 pin should be used instead
> > - - drive-open-drain : set if the specified interrupt pin should be configured as
> > -   open drain. If not set, defaults to push-pull.
> > -
> > -Examples:
> > -
> > -bmi160@68 {
> > -	compatible = "bosch,bmi160";
> > -	reg = <0x68>;
> > -
> > -	interrupt-parent = <&gpio4>;
> > -	interrupts = <12 IRQ_TYPE_EDGE_RISING>;
> > -	interrupt-names = "INT1";
> > -};
> > -
> > -bmi160@0 {
> > -	compatible = "bosch,bmi160";
> > -	reg = <0>;
> > -	spi-max-frequency = <10000000>;
> > -
> > -	interrupt-parent = <&gpio2>;
> > -	interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
> > -	interrupt-names = "INT2";
> > -};
> > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > new file mode 100644
> > index 000000000000..6b464ce5ed0b
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > @@ -0,0 +1,84 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/iio/imu/bmi160.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Bosch BMI160
> > +
> > +maintainers:
> > +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>
> 
> Would help to Cc him perhaps.
> 

Thank you, I will add him too on the next version.

> > +
> > +description: |
> > +  Inertial Measurement Unit with Accelerometer, Gyroscope and externally
> > +  connectable Magnetometer
> > +  https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > +
> > +properties:
> > +  compatible:
> > +    const: bosch,bmi160
> > +
> > +  reg:
> > +    maxItems: 1
> > +    description: the I2C address or SPI chip select number of the sensor
> > +
> > +  spi-max-frequency:
> > +    maxItems: 1
> > +    description: set maximum clock frequency (required only for SPI)
> > +
> > +  interrupts:
> > +    maxItems: 1
> > +    description: interrupt mapping for IRQ
> 
> No need for description if not adding anything unique for this device.
> 

Will remove it then.

> > +
> > +  interrupt-names:
> > +    minItems: 1
> > +    maxItems: 1
> > +    items:
> > +      enum:
> > +        - INT1
> > +        - INT2
> 
> Just the enum is enough.
> 

Ok, will clean this.

> > +    description: |
> > +      set to "INT1" if INT1 pin should be used as interrupt input, set
> > +      to "INT2" if INT2 pin should be used instead
> > +
> > +  drive-open-drain:
> > +    description: |
> > +      set if the specified interrupt pin should be configured as
> > +      open drain. If not set, defaults to push-pull.
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +
> > +examples:
> > +  - |
> > +    // Example for I2C
> > +    i2c@78b7000 {
> > +        reg = <0x78b6000 0x600>;
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        bmi160@68 {
> > +                compatible = "bosch,bmi160";
> > +                reg = <0x68>;
> > +                interrupt-parent = <&gpio4>;
> > +                interrupts = <12 1>;
> > +                interrupt-names = "INT1";
> > +        };
> > +  - |
> > +    // Example for SPI
> > +    spi@78b7000 {
> > +        reg = <0x78b7000 0x600>,
> > +              <0x7884000 0x23000>;
> > +        #address-cells = <1>;
> > +        #size-cells = <0>;
> > +
> > +        bmi160@0 {
> > +                compatible = "bosch,bmi160";
> > +                reg = <0>;
> > +                spi-max-frequency = <10000000>;
> > +                interrupt-parent = <&gpio2>;
> > +                interrupts = <12 1>;
> > +                interrupt-names = "INT2";
> > +        };
> > +    };
> > -- 
> > 2.17.1
> > 

Thank you for your help,

Best regards,
Jonathan Albrieux

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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-20  7:24     ` Jonathan Albrieux
@ 2020-05-21 18:27       ` Jonathan Cameron
  2020-05-22  8:22         ` Jonathan Albrieux
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Cameron @ 2020-05-21 18:27 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Rob Herring, Daniel Baluta

On Wed, 20 May 2020 09:24:23 +0200
Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:

> On Tue, May 19, 2020 at 06:49:33PM +0100, Jonathan Cameron wrote:
> > On Tue, 19 May 2020 09:50:57 +0200
> > Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> >   
> > > Converts documentation from txt format to yaml 
> > > 
> > > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > > ---
> > >  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
> > >  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
> > >  2 files changed, 84 insertions(+), 37 deletions(-)
> > >  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > >  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > > 
> > > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.txt b/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > > deleted file mode 100644
> > > index 900c169de00f..000000000000
> > > --- a/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > > +++ /dev/null
> > > @@ -1,37 +0,0 @@
> > > -Bosch BMI160 - Inertial Measurement Unit with Accelerometer, Gyroscope
> > > -and externally connectable Magnetometer
> > > -
> > > -https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > > -
> > > -Required properties:
> > > - - compatible : should be "bosch,bmi160"
> > > - - reg : the I2C address or SPI chip select number of the sensor
> > > - - spi-max-frequency : set maximum clock frequency (only for SPI)
> > > -
> > > -Optional properties:
> > > - - interrupts : interrupt mapping for IRQ
> > > - - interrupt-names : set to "INT1" if INT1 pin should be used as interrupt
> > > -   input, set to "INT2" if INT2 pin should be used instead
> > > - - drive-open-drain : set if the specified interrupt pin should be configured as
> > > -   open drain. If not set, defaults to push-pull.
> > > -
> > > -Examples:
> > > -
> > > -bmi160@68 {
> > > -	compatible = "bosch,bmi160";
> > > -	reg = <0x68>;
> > > -
> > > -	interrupt-parent = <&gpio4>;
> > > -	interrupts = <12 IRQ_TYPE_EDGE_RISING>;
> > > -	interrupt-names = "INT1";
> > > -};
> > > -
> > > -bmi160@0 {
> > > -	compatible = "bosch,bmi160";
> > > -	reg = <0>;
> > > -	spi-max-frequency = <10000000>;
> > > -
> > > -	interrupt-parent = <&gpio2>;
> > > -	interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
> > > -	interrupt-names = "INT2";
> > > -};
> > > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > > new file mode 100644
> > > index 000000000000..6b464ce5ed0b
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > > @@ -0,0 +1,84 @@
> > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/iio/imu/bmi160.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Bosch BMI160
> > > +
> > > +maintainers:
> > > +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>  
> > 
> > Daniel is still active in the kernel, just not at Intel any more. +CC
> >   
> 
> Oh ok thank you! Daniel are you still maintaining this driver?
> 
> > > +
> > > +description: |
> > > +  Inertial Measurement Unit with Accelerometer, Gyroscope and externally
> > > +  connectable Magnetometer
> > > +  https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > > +
> > > +properties:
> > > +  compatible:
> > > +    const: bosch,bmi160
> > > +
> > > +  reg:
> > > +    maxItems: 1
> > > +    description: the I2C address or SPI chip select number of the sensor  
> > 
> > As standard for i2c and spi, usually no need to have a description line for
> > this element.
> >   
> 
> Thank you, will remove the description then.
> 
> > > +
> > > +  spi-max-frequency:
> > > +    maxItems: 1
> > > +    description: set maximum clock frequency (required only for SPI)  
> > 
> > Standard spi binding.  Probably doesn't need to be included here.
> >   
> 
> So should I completely remove it from properties?

Yes


Thanks,

Jonathan

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

* Re: [PATCH v2 3/4] iio: imu: bmi160: added regulator support
  2020-05-20  7:17     ` Jonathan Albrieux
@ 2020-05-21 18:30       ` Jonathan Cameron
  2020-05-22  8:25         ` Jonathan Albrieux
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Cameron @ 2020-05-21 18:30 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler

On Wed, 20 May 2020 09:17:51 +0200
Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:

> On Tue, May 19, 2020 at 06:55:35PM +0100, Jonathan Cameron wrote:
> > On Tue, 19 May 2020 09:50:59 +0200
> > Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> >   
> > > v2: fixed missing description  
> > 
> > Don't put change log here....  
> 
> Yep I will put it in the cover letter
> 
> > > 
> > > Add vdd-supply and vddio-supply support. Without this support vdd and vddio
> > > should be set to always-on in device tree  
> > 
> > Kind of the opposite.  If they are always on we don't have to provide them
> > in the device tree.
> >   
> 
> I wrote that because, testing on msm8916, without setting the regulators to
> always on they were controlled by other components and it happened that
> the line wasn't ready during probe causing failure to load the module.
> 
> I will try to reword based on your comment, thank you.

Ah. Understood.  I'd give that explicit example in the patch description.
I'd assumed this was the normal case of they weren't being described
at all in DT, whereas you case is more complex.

Jonathan

> 
> > A few trivial things inline.
> >   
> > > 
> > > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > > ---  
> > 
> > Change log goes here so we don't end up keeping it in the git log.
> >   
> > >  drivers/iio/imu/bmi160/bmi160.h      |  2 ++
> > >  drivers/iio/imu/bmi160/bmi160_core.c | 27 ++++++++++++++++++++++++++-
> > >  2 files changed, 28 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
> > > index 621f5309d735..923c3b274fde 100644
> > > --- a/drivers/iio/imu/bmi160/bmi160.h
> > > +++ b/drivers/iio/imu/bmi160/bmi160.h
> > > @@ -3,10 +3,12 @@
> > >  #define BMI160_H_
> > >  
> > >  #include <linux/iio/iio.h>
> > > +#include <linux/regulator/consumer.h>
> > >  
> > >  struct bmi160_data {
> > >  	struct regmap *regmap;
> > >  	struct iio_trigger *trig;
> > > +	struct regulator_bulk_data supplies[2];
> > >  };
> > >  
> > >  extern const struct regmap_config bmi160_regmap_config;
> > > diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
> > > index 6af65d6f1d28..9bbe0d8e6720 100644
> > > --- a/drivers/iio/imu/bmi160/bmi160_core.c
> > > +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> > > @@ -15,6 +15,7 @@
> > >  #include <linux/delay.h>
> > >  #include <linux/irq.h>
> > >  #include <linux/of_irq.h>
> > > +#include <linux/regulator/consumer.h>
> > >  
> > >  #include <linux/iio/iio.h>
> > >  #include <linux/iio/triggered_buffer.h>
> > > @@ -709,6 +710,12 @@ static int bmi160_chip_init(struct bmi160_data *data, bool use_spi)
> > >  	unsigned int val;
> > >  	struct device *dev = regmap_get_device(data->regmap);
> > >  
> > > +	ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
> > > +	if (ret) {
> > > +		dev_err(dev, "Failed to enable regulators: %d\n", ret);
> > > +		return ret;
> > > +	}
> > > +
> > >  	ret = regmap_write(data->regmap, BMI160_REG_CMD, BMI160_CMD_SOFTRESET);
> > >  	if (ret)
> > >  		return ret;
> > > @@ -793,9 +800,17 @@ int bmi160_probe_trigger(struct iio_dev *indio_dev, int irq, u32 irq_type)
> > >  static void bmi160_chip_uninit(void *data)
> > >  {
> > >  	struct bmi160_data *bmi_data = data;
> > > +	struct device *dev = regmap_get_device(bmi_data->regmap);
> > > +	int ret;
> > >  
> > >  	bmi160_set_mode(bmi_data, BMI160_GYRO, false);
> > >  	bmi160_set_mode(bmi_data, BMI160_ACCEL, false);
> > > +
> > > +	ret = regulator_bulk_disable(ARRAY_SIZE(bmi_data->supplies),
> > > +				     bmi_data->supplies);
> > > +	if (ret) {
> > > +		dev_err(dev, "Failed to disable regulators: %d\n", ret);
> > > +	}  
> > No need for brackets around a 1 line if block
> >   
> 
> Thank you, I didn't noticed that :-)
> 
> > 	if (ret)
> > 		dev_err(dev, "failed to disable regulators: %d\n", ret);
> >   
> > >  }
> > >  
> > >  int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> > > @@ -815,6 +830,16 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> > >  	dev_set_drvdata(dev, indio_dev);
> > >  	data->regmap = regmap;
> > >  
> > > +	data->supplies[0].supply = "vdd";
> > > +	data->supplies[1].supply = "vddio";
> > > +	ret = devm_regulator_bulk_get(dev,
> > > +				      ARRAY_SIZE(data->supplies),
> > > +				      data->supplies);
> > > +	if (ret) {
> > > +		dev_err(dev, "Failed to get regulators: %d\n", ret);
> > > +		return ret;
> > > +	}
> > > +
> > >  	ret = bmi160_chip_init(data, use_spi);
> > >  	if (ret)
> > >  		return ret;
> > > @@ -853,6 +878,6 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> > >  }
> > >  EXPORT_SYMBOL_GPL(bmi160_core_probe);
> > >  
> > > -MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com");
> > > +MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com>");  
> > 
> > Good fix but shouldn't be in this patch.   Put it a separate patch on it's own.
> >   
> 
> Ok will separate this fix into another patch, thank you!
> 
> > >  MODULE_DESCRIPTION("Bosch BMI160 driver");
> > >  MODULE_LICENSE("GPL v2");  
> > 
> >   
> 
> Best regards,
> Jonathan Albrieux


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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-21 18:27       ` Jonathan Cameron
@ 2020-05-22  8:22         ` Jonathan Albrieux
  2020-05-22 10:47           ` Daniel Baluta
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-22  8:22 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Rob Herring, Daniel Baluta

On Thu, May 21, 2020 at 07:27:36PM +0100, Jonathan Cameron wrote:
> On Wed, 20 May 2020 09:24:23 +0200
> Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> 
> > On Tue, May 19, 2020 at 06:49:33PM +0100, Jonathan Cameron wrote:
> > > On Tue, 19 May 2020 09:50:57 +0200
> > > Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> > >   
> > > > Converts documentation from txt format to yaml 
> > > > 
> > > > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > > > ---
> > > >  .../devicetree/bindings/iio/imu/bmi160.txt    | 37 --------
> > > >  .../devicetree/bindings/iio/imu/bmi160.yaml   | 84 +++++++++++++++++++
> > > >  2 files changed, 84 insertions(+), 37 deletions(-)
> > > >  delete mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > > >  create mode 100644 Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > > > 
> > > > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.txt b/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > > > deleted file mode 100644
> > > > index 900c169de00f..000000000000
> > > > --- a/Documentation/devicetree/bindings/iio/imu/bmi160.txt
> > > > +++ /dev/null
> > > > @@ -1,37 +0,0 @@
> > > > -Bosch BMI160 - Inertial Measurement Unit with Accelerometer, Gyroscope
> > > > -and externally connectable Magnetometer
> > > > -
> > > > -https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > > > -
> > > > -Required properties:
> > > > - - compatible : should be "bosch,bmi160"
> > > > - - reg : the I2C address or SPI chip select number of the sensor
> > > > - - spi-max-frequency : set maximum clock frequency (only for SPI)
> > > > -
> > > > -Optional properties:
> > > > - - interrupts : interrupt mapping for IRQ
> > > > - - interrupt-names : set to "INT1" if INT1 pin should be used as interrupt
> > > > -   input, set to "INT2" if INT2 pin should be used instead
> > > > - - drive-open-drain : set if the specified interrupt pin should be configured as
> > > > -   open drain. If not set, defaults to push-pull.
> > > > -
> > > > -Examples:
> > > > -
> > > > -bmi160@68 {
> > > > -	compatible = "bosch,bmi160";
> > > > -	reg = <0x68>;
> > > > -
> > > > -	interrupt-parent = <&gpio4>;
> > > > -	interrupts = <12 IRQ_TYPE_EDGE_RISING>;
> > > > -	interrupt-names = "INT1";
> > > > -};
> > > > -
> > > > -bmi160@0 {
> > > > -	compatible = "bosch,bmi160";
> > > > -	reg = <0>;
> > > > -	spi-max-frequency = <10000000>;
> > > > -
> > > > -	interrupt-parent = <&gpio2>;
> > > > -	interrupts = <12 IRQ_TYPE_LEVEL_LOW>;
> > > > -	interrupt-names = "INT2";
> > > > -};
> > > > diff --git a/Documentation/devicetree/bindings/iio/imu/bmi160.yaml b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > > > new file mode 100644
> > > > index 000000000000..6b464ce5ed0b
> > > > --- /dev/null
> > > > +++ b/Documentation/devicetree/bindings/iio/imu/bmi160.yaml
> > > > @@ -0,0 +1,84 @@
> > > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > > > +%YAML 1.2
> > > > +---
> > > > +$id: http://devicetree.org/schemas/iio/imu/bmi160.yaml#
> > > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > > +
> > > > +title: Bosch BMI160
> > > > +
> > > > +maintainers:
> > > > +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>  
> > > 
> > > Daniel is still active in the kernel, just not at Intel any more. +CC
> > >   
> > 
> > Oh ok thank you! Daniel are you still maintaining this driver?
> > 
> > > > +
> > > > +description: |
> > > > +  Inertial Measurement Unit with Accelerometer, Gyroscope and externally
> > > > +  connectable Magnetometer
> > > > +  https://www.bosch-sensortec.com/bst/products/all_products/bmi160
> > > > +
> > > > +properties:
> > > > +  compatible:
> > > > +    const: bosch,bmi160
> > > > +
> > > > +  reg:
> > > > +    maxItems: 1
> > > > +    description: the I2C address or SPI chip select number of the sensor  
> > > 
> > > As standard for i2c and spi, usually no need to have a description line for
> > > this element.
> > >   
> > 
> > Thank you, will remove the description then.
> > 
> > > > +
> > > > +  spi-max-frequency:
> > > > +    maxItems: 1
> > > > +    description: set maximum clock frequency (required only for SPI)  
> > > 
> > > Standard spi binding.  Probably doesn't need to be included here.
> > >   
> > 
> > So should I completely remove it from properties?
> 
> Yes
> 
> 
> Thanks,
> 
> Jonathan

Ok I will remove it completely in next patch,
Thank you,

Best regards,
Jonathan Albrieux

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

* Re: [PATCH v2 3/4] iio: imu: bmi160: added regulator support
  2020-05-21 18:30       ` Jonathan Cameron
@ 2020-05-22  8:25         ` Jonathan Albrieux
  0 siblings, 0 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-22  8:25 UTC (permalink / raw)
  To: Jonathan Cameron
  Cc: Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler

On Thu, May 21, 2020 at 07:30:55PM +0100, Jonathan Cameron wrote:
> On Wed, 20 May 2020 09:17:51 +0200
> Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> 
> > On Tue, May 19, 2020 at 06:55:35PM +0100, Jonathan Cameron wrote:
> > > On Tue, 19 May 2020 09:50:59 +0200
> > > Jonathan Albrieux <jonathan.albrieux@gmail.com> wrote:
> > >   
> > > > v2: fixed missing description  
> > > 
> > > Don't put change log here....  
> > 
> > Yep I will put it in the cover letter
> > 
> > > > 
> > > > Add vdd-supply and vddio-supply support. Without this support vdd and vddio
> > > > should be set to always-on in device tree  
> > > 
> > > Kind of the opposite.  If they are always on we don't have to provide them
> > > in the device tree.
> > >   
> > 
> > I wrote that because, testing on msm8916, without setting the regulators to
> > always on they were controlled by other components and it happened that
> > the line wasn't ready during probe causing failure to load the module.
> > 
> > I will try to reword based on your comment, thank you.
> 
> Ah. Understood.  I'd give that explicit example in the patch description.
> I'd assumed this was the normal case of they weren't being described
> at all in DT, whereas you case is more complex.
> 
> Jonathan
>

Yep, I omitted to describe the case I was in. I'll add it to next patch, thank
you,
 
> > 
> > > A few trivial things inline.
> > >   
> > > > 
> > > > Signed-off-by: Jonathan Albrieux <jonathan.albrieux@gmail.com>
> > > > ---  
> > > 
> > > Change log goes here so we don't end up keeping it in the git log.
> > >   
> > > >  drivers/iio/imu/bmi160/bmi160.h      |  2 ++
> > > >  drivers/iio/imu/bmi160/bmi160_core.c | 27 ++++++++++++++++++++++++++-
> > > >  2 files changed, 28 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/drivers/iio/imu/bmi160/bmi160.h b/drivers/iio/imu/bmi160/bmi160.h
> > > > index 621f5309d735..923c3b274fde 100644
> > > > --- a/drivers/iio/imu/bmi160/bmi160.h
> > > > +++ b/drivers/iio/imu/bmi160/bmi160.h
> > > > @@ -3,10 +3,12 @@
> > > >  #define BMI160_H_
> > > >  
> > > >  #include <linux/iio/iio.h>
> > > > +#include <linux/regulator/consumer.h>
> > > >  
> > > >  struct bmi160_data {
> > > >  	struct regmap *regmap;
> > > >  	struct iio_trigger *trig;
> > > > +	struct regulator_bulk_data supplies[2];
> > > >  };
> > > >  
> > > >  extern const struct regmap_config bmi160_regmap_config;
> > > > diff --git a/drivers/iio/imu/bmi160/bmi160_core.c b/drivers/iio/imu/bmi160/bmi160_core.c
> > > > index 6af65d6f1d28..9bbe0d8e6720 100644
> > > > --- a/drivers/iio/imu/bmi160/bmi160_core.c
> > > > +++ b/drivers/iio/imu/bmi160/bmi160_core.c
> > > > @@ -15,6 +15,7 @@
> > > >  #include <linux/delay.h>
> > > >  #include <linux/irq.h>
> > > >  #include <linux/of_irq.h>
> > > > +#include <linux/regulator/consumer.h>
> > > >  
> > > >  #include <linux/iio/iio.h>
> > > >  #include <linux/iio/triggered_buffer.h>
> > > > @@ -709,6 +710,12 @@ static int bmi160_chip_init(struct bmi160_data *data, bool use_spi)
> > > >  	unsigned int val;
> > > >  	struct device *dev = regmap_get_device(data->regmap);
> > > >  
> > > > +	ret = regulator_bulk_enable(ARRAY_SIZE(data->supplies), data->supplies);
> > > > +	if (ret) {
> > > > +		dev_err(dev, "Failed to enable regulators: %d\n", ret);
> > > > +		return ret;
> > > > +	}
> > > > +
> > > >  	ret = regmap_write(data->regmap, BMI160_REG_CMD, BMI160_CMD_SOFTRESET);
> > > >  	if (ret)
> > > >  		return ret;
> > > > @@ -793,9 +800,17 @@ int bmi160_probe_trigger(struct iio_dev *indio_dev, int irq, u32 irq_type)
> > > >  static void bmi160_chip_uninit(void *data)
> > > >  {
> > > >  	struct bmi160_data *bmi_data = data;
> > > > +	struct device *dev = regmap_get_device(bmi_data->regmap);
> > > > +	int ret;
> > > >  
> > > >  	bmi160_set_mode(bmi_data, BMI160_GYRO, false);
> > > >  	bmi160_set_mode(bmi_data, BMI160_ACCEL, false);
> > > > +
> > > > +	ret = regulator_bulk_disable(ARRAY_SIZE(bmi_data->supplies),
> > > > +				     bmi_data->supplies);
> > > > +	if (ret) {
> > > > +		dev_err(dev, "Failed to disable regulators: %d\n", ret);
> > > > +	}  
> > > No need for brackets around a 1 line if block
> > >   
> > 
> > Thank you, I didn't noticed that :-)
> > 
> > > 	if (ret)
> > > 		dev_err(dev, "failed to disable regulators: %d\n", ret);
> > >   
> > > >  }
> > > >  
> > > >  int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> > > > @@ -815,6 +830,16 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> > > >  	dev_set_drvdata(dev, indio_dev);
> > > >  	data->regmap = regmap;
> > > >  
> > > > +	data->supplies[0].supply = "vdd";
> > > > +	data->supplies[1].supply = "vddio";
> > > > +	ret = devm_regulator_bulk_get(dev,
> > > > +				      ARRAY_SIZE(data->supplies),
> > > > +				      data->supplies);
> > > > +	if (ret) {
> > > > +		dev_err(dev, "Failed to get regulators: %d\n", ret);
> > > > +		return ret;
> > > > +	}
> > > > +
> > > >  	ret = bmi160_chip_init(data, use_spi);
> > > >  	if (ret)
> > > >  		return ret;
> > > > @@ -853,6 +878,6 @@ int bmi160_core_probe(struct device *dev, struct regmap *regmap,
> > > >  }
> > > >  EXPORT_SYMBOL_GPL(bmi160_core_probe);
> > > >  
> > > > -MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com");
> > > > +MODULE_AUTHOR("Daniel Baluta <daniel.baluta@intel.com>");  
> > > 
> > > Good fix but shouldn't be in this patch.   Put it a separate patch on it's own.
> > >   
> > 
> > Ok will separate this fix into another patch, thank you!
> > 
> > > >  MODULE_DESCRIPTION("Bosch BMI160 driver");
> > > >  MODULE_LICENSE("GPL v2");  
> > > 
> > >   
> > 
> > Best regards,
> > Jonathan Albrieux
> 

Best regards,
Jonathan Albrieux

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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-22  8:22         ` Jonathan Albrieux
@ 2020-05-22 10:47           ` Daniel Baluta
  2020-05-22 14:26             ` Jonathan Albrieux
  0 siblings, 1 reply; 25+ messages in thread
From: Daniel Baluta @ 2020-05-22 10:47 UTC (permalink / raw)
  To: Jonathan Albrieux, Jonathan Cameron
  Cc: Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Rob Herring


>>>>> +
>>>>> +maintainers:
>>>>> +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>
>>>> Daniel is still active in the kernel, just not at Intel any more. +CC
>>>>    
>>> Oh ok thank you! Daniel are you still maintaining this driver?

I can do reviews if requested but I'm not actively maintaining this 
driver. If anyone wants

to take this over, will be more than happy.


Other than that we can add my gmail address: Daniel Baluta 
<daniel.baluta@gmail.com>




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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-22 10:47           ` Daniel Baluta
@ 2020-05-22 14:26             ` Jonathan Albrieux
  2020-05-22 14:59               ` Daniel Baluta
  0 siblings, 1 reply; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-22 14:26 UTC (permalink / raw)
  To: Daniel Baluta
  Cc: Jonathan Cameron, Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Rob Herring

On Fri, May 22, 2020 at 01:47:21PM +0300, Daniel Baluta wrote:
> 
> > > > > > +
> > > > > > +maintainers:
> > > > > > +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>
> > > > > Daniel is still active in the kernel, just not at Intel any more. +CC
> > > > Oh ok thank you! Daniel are you still maintaining this driver?
> 
> I can do reviews if requested but I'm not actively maintaining this driver.
> If anyone wants
> 
> to take this over, will be more than happy.
> 
> 
> Other than that we can add my gmail address: Daniel Baluta
> <daniel.baluta@gmail.com>
> 
> 
> 

Well if you'd like to review this patch I'd really appreciate :-)
Forgive me for not having understood your answer regarding the maintainer
field, can I add you to this binding as maintainer or are you saying to
not add you? Thank you and sorry for the repeated question,

Best regards,
Jonathan Albrieux

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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-22 14:26             ` Jonathan Albrieux
@ 2020-05-22 14:59               ` Daniel Baluta
  2020-05-22 15:44                 ` Jonathan Albrieux
  0 siblings, 1 reply; 25+ messages in thread
From: Daniel Baluta @ 2020-05-22 14:59 UTC (permalink / raw)
  To: Jonathan Albrieux
  Cc: Jonathan Cameron, Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Rob Herring


On 22.05.2020 17:26, Jonathan Albrieux wrote:
> On Fri, May 22, 2020 at 01:47:21PM +0300, Daniel Baluta wrote:
>>>>>>> +
>>>>>>> +maintainers:
>>>>>>> +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>
>>>>>> Daniel is still active in the kernel, just not at Intel any more. +CC
>>>>> Oh ok thank you! Daniel are you still maintaining this driver?
>> I can do reviews if requested but I'm not actively maintaining this driver.
>> If anyone wants
>>
>> to take this over, will be more than happy.
>>
>>
>> Other than that we can add my gmail address: Daniel Baluta
>> <daniel.baluta@gmail.com>
>>
>>
>>
> Well if you'd like to review this patch I'd really appreciate :-)
> Forgive me for not having understood your answer regarding the maintainer
> field, can I add you to this binding as maintainer or are you saying to
> not add you? Thank you and sorry for the repeated question,
>
>

OK, so I think would be better not to add me as a maintainer because

this would set some expecation from people, and I most likely won't

have time to met them.


Can you instead add the linux-iio mailing list as a maintainer, not sure

if this is a common practice though.



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

* Re: [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml
  2020-05-22 14:59               ` Daniel Baluta
@ 2020-05-22 15:44                 ` Jonathan Albrieux
  0 siblings, 0 replies; 25+ messages in thread
From: Jonathan Albrieux @ 2020-05-22 15:44 UTC (permalink / raw)
  To: Daniel Baluta
  Cc: Jonathan Cameron, Jonathan Cameron, linux-kernel,
	open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS,
	Hartmut Knaack, Lars-Peter Clausen,
	open list:IIO SUBSYSTEM AND DRIVERS, Peter Meerwald-Stadler,
	Rob Herring

On Fri, May 22, 2020 at 05:59:11PM +0300, Daniel Baluta wrote:
> 
> On 22.05.2020 17:26, Jonathan Albrieux wrote:
> > On Fri, May 22, 2020 at 01:47:21PM +0300, Daniel Baluta wrote:
> > > > > > > > +
> > > > > > > > +maintainers:
> > > > > > > > +  - can't find a mantainer, author is Daniel Baluta <daniel.baluta@intel.com>
> > > > > > > Daniel is still active in the kernel, just not at Intel any more. +CC
> > > > > > Oh ok thank you! Daniel are you still maintaining this driver?
> > > I can do reviews if requested but I'm not actively maintaining this driver.
> > > If anyone wants
> > > 
> > > to take this over, will be more than happy.
> > > 
> > > 
> > > Other than that we can add my gmail address: Daniel Baluta
> > > <daniel.baluta@gmail.com>
> > > 
> > > 
> > > 
> > Well if you'd like to review this patch I'd really appreciate :-)
> > Forgive me for not having understood your answer regarding the maintainer
> > field, can I add you to this binding as maintainer or are you saying to
> > not add you? Thank you and sorry for the repeated question,
> > 
> > 
> 
> OK, so I think would be better not to add me as a maintainer because
> 
> this would set some expecation from people, and I most likely won't
> 
> have time to met them.
> 
> 
> Can you instead add the linux-iio mailing list as a maintainer, not sure
> 
> if this is a common practice though.
> 
> 

Ok thank you! I don't know, maybe someone else could point out
the right direction to take, it would be sad to drop yaml documentation
format just for this.

Best regards,
Jonathan Albrieux

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

end of thread, other threads:[~2020-05-22 15:44 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-19  7:50 [PATCH v2 0/4] iio: imu: bmi160: added regulator and mount-matrix support Jonathan Albrieux
2020-05-19  7:50 ` [PATCH v2 1/4] dt-bindings: iio: imu: bmi160: convert txt format to yaml Jonathan Albrieux
2020-05-19 17:37   ` Rob Herring
2020-05-20  7:06     ` Jonathan Albrieux
2020-05-19 17:49   ` Jonathan Cameron
2020-05-20  7:24     ` Jonathan Albrieux
2020-05-21 18:27       ` Jonathan Cameron
2020-05-22  8:22         ` Jonathan Albrieux
2020-05-22 10:47           ` Daniel Baluta
2020-05-22 14:26             ` Jonathan Albrieux
2020-05-22 14:59               ` Daniel Baluta
2020-05-22 15:44                 ` Jonathan Albrieux
2020-05-19 18:20   ` Rob Herring
2020-05-20  7:29     ` Jonathan Albrieux
2020-05-19  7:50 ` [PATCH v2 2/4] dt-bindings: iio: imu: bmi160: add regulators and mount-matrix Jonathan Albrieux
2020-05-19 17:51   ` Jonathan Cameron
2020-05-20  7:11     ` Jonathan Albrieux
2020-05-19  7:50 ` [PATCH v2 3/4] iio: imu: bmi160: added regulator support Jonathan Albrieux
2020-05-19 17:55   ` Jonathan Cameron
2020-05-20  7:17     ` Jonathan Albrieux
2020-05-21 18:30       ` Jonathan Cameron
2020-05-22  8:25         ` Jonathan Albrieux
2020-05-19  7:51 ` [PATCH v2 4/4] iio: imu: bmi160: added mount-matrix support Jonathan Albrieux
2020-05-19 17:57   ` Jonathan Cameron
2020-05-20  7:20     ` Jonathan Albrieux

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).