st_lsm6dsx: add vdd-vddio power regulator
Subsystems (3)
Lorenzo Bianconi
maintainercover st_lsm6dsx: add vdd-vddio power regulator
Introduce support to control VDD and VDDIO power lines available on st_lsm6dsx devices
Lorenzo Bianconi (2):
iio: imu: st_lsm6dsx: add vdd-vddio voltage regulator
dt-bindings: iio: imu: st_lsm6dsx: introduce vdd-vddio regulators
bindings
.../bindings/iio/imu/st_lsm6dsx.txt | 4 ++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 3 ++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 42 +++++++++++++++++++ 3 files changed, 49 insertions(+)
Signature · 1 line
2.26.2
Lorenzo Bianconi
maintainerPATCH 1/2 iio: imu: st_lsm6dsx: add vdd-vddio voltage regulator
Like all other ST sensors, st_lsm6dsx devices have VDD and VDDIO power lines. Introduce voltage regulators to control them.
--- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 3 ++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 42 ++++++++++++++++++++ 2 files changed, 45 insertions(+)
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h +3 -0
@@ -13,6 +13,7 @@#include <linux/device.h> #include <linux/iio/iio.h> +#include <linux/regulator/consumer.h> #define ST_LSM6DS3_DEV_NAME "lsm6ds3"#define ST_LSM6DS3H_DEV_NAME "lsm6ds3h"
@@ -368,6 +369,7 @@ struct st_lsm6dsx_sensor {* struct st_lsm6dsx_hw - ST IMU MEMS hw instance * @dev: Pointer to instance of struct device (I2C or SPI). * @regmap: Register map of the device. +* @regulators: VDD/VDDIO voltage regulators. * @irq: Device interrupt line (I2C or SPI). * @fifo_lock: Mutex to prevent concurrent access to the hw FIFO. * @conf_lock: Mutex to prevent concurrent FIFO configuration update.
@@ -390,6 +392,7 @@ struct st_lsm6dsx_sensor {struct st_lsm6dsx_hw {struct device *dev;struct regmap *regmap; +struct regulator_bulk_data regulators[2 ];int irq;struct mutex fifo_lock;
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +42 -0
54 lines not on this page · raw message
Signature · 1 line
2.26.2
Re: [PATCH 1/2] iio: imu: st_lsm6dsx: add vdd-vddio voltage regulator
Quoted 4 lines · On Tue, 17 Nov 2020 16:11:37 +0100 Lorenzo Bianconi <[email protected]> wrote:
Like all other ST sensors,
st_lsm6dsxdevices have VDD and VDDIO power lines. Introduce voltage regulators to control them.Signed-off-by Lorenzo Bianconi <[email protected]>
Looks good to me.
Quoted 93 lines
--- drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h | 3 ++ drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 42 ++++++++++++++++++++ 2 files changed, 45 insertions(+)drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h +3
-0@@ -13,6 +13,7 @@#include <linux/device.h> #include <linux/iio/iio.h> +#include <linux/regulator/consumer.h> #define ST_LSM6DS3_DEV_NAME "lsm6ds3"#define ST_LSM6DS3H_DEV_NAME "lsm6ds3h"@@ -368,6 +369,7 @@ struct st_lsm6dsx_sensor {* struct st_lsm6dsx_hw - ST IMU MEMS hw instance * @dev: Pointer to instance of struct device (I2C or SPI). * @regmap: Register map of the device. +* @regulators: VDD/VDDIO voltage regulators. * @irq: Device interrupt line (I2C or SPI). * @fifo_lock: Mutex to prevent concurrent access to the hw FIFO. * @conf_lock: Mutex to prevent concurrent FIFO configuration update. @@ -390,6 +392,7 @@ struct st_lsm6dsx_sensor {struct st_lsm6dsx_hw {struct device *dev;struct regmap *regmap; +struct regulator_bulk_data regulators[2 ];int irq;struct mutex fifo_lock;drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c +42
-0@@ -2549,6 +2549,40 @@ static int st_lsm6dsx_irq_setup(struct st_lsm6dsx_hw *hw)return 0 ; } +static int st_lsm6dsx_init_regulators (struct device *dev) +{ +struct st_lsm6dsx_hw *hw =dev_get_drvdata (dev); +int err; + +/* vdd-vddio power regulators */ + hw->regulators[0 ].supply ="vdd" ; + hw->regulators[1 ].supply ="vddio" ; + err =devm_regulator_bulk_get (dev,ARRAY_SIZE (hw->regulators), + hw->regulators); +if (err) { +dev_err (dev,"failed to get regulators: %d\n" , err); +return err; + } + + err =regulator_bulk_enable (ARRAY_SIZE (hw->regulators), + hw->regulators); +if (err) { +dev_err (dev,"failed to enable regulators: %d\n" , err); +return err; + } + +msleep (50 ); + +return 0 ; +} + +static void st_lsm6dsx_chip_uninit (void *data) +{ +struct st_lsm6dsx_hw *hw = data; + +regulator_bulk_disable (ARRAY_SIZE (hw->regulators), hw->regulators); +} +int st_lsm6dsx_probe (struct device *dev,int irq,int hw_id,struct regmap *regmap) {@@ -2568,6 +2602,14 @@ int st_lsm6dsx_probe(struct device *dev, int irq, int hw_id,mutex_init (&hw->conf_lock);mutex_init (&hw->page_lock); + err =st_lsm6dsx_init_regulators (dev); +if (err) +return err; + + err =devm_add_action_or_reset (dev, st_lsm6dsx_chip_uninit, hw); +if (err) +return err; + hw->buff =devm_kzalloc (dev,ST_LSM6DSX_BUFF_SIZE ,GFP_KERNEL );if (!hw->buff)return -ENOMEM ;
Lorenzo Bianconi
maintainerPATCH 2/2 dt-bindings: iio: imu: st_lsm6dsx: introduce vdd-vddio regulators bindings
In reply to Lorenzo Bianconi--- Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt | 4 ++++ 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt +4 -0
@@ -20,6 +20,10 @@ Required properties: - reg: i2c address of the sensor / spi cs line Optional properties: +- vdd-supply: an optional regulator that needs to be on to provide VDD + power to the sensor. +- vddio-supply: an optional regulator that needs to be on to provide the + VDD IO power to the sensor. - st,drdy-int-pin: the pin on the package that will be used to signal "data ready" (valid values: 1 or 2). - st,pullups : enable/disable internal i2c controller pullup resistors.
Signature · 1 line
2.26.2
Re: [PATCH 2/2] dt-bindings: iio: imu: st_lsm6dsx: introduce vdd-vddio regulators bindings
Quoted 10 lines · On Tue, 17 Nov 2020 16:11:38 +0100 Lorenzo Bianconi <[email protected]> wrote:
Signed-off-by Lorenzo Bianconi <[email protected]>--- Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt | 4 ++++ 1 file changed, 4 insertions(+)Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt +0
-0
Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt Required properties: · line 29
Quoted 10 lines
Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt +4
-0@@ -20,6 +20,10 @@ Required properties: - reg: i2c address of the sensor / spi cs line Optional properties: +- vdd-supply: an optional regulator that needs to be on to provide VDD + power to the sensor. +- vddio-supply: an optional regulator that needs to be on to provide the + VDD IO power to the sensor. - st,drdy-int-pin: the pin on the package that will be used to signal "data ready" (valid values: 1 or 2). - st,pullups : enable/disable internal i2c controller pullup resistors.
Hi Lorenzo,
Please could you rebase this on top of
https://lore.kernel.org/linux-iio/[email protected]/
Which does a yaml conversion of this file.
I'm working my way through backlog of those this week so will pick that up at some point very soon.
I'll resend a v2 of some patches in those series, but only those where there are outstanding comments that aren't trivial.
(Rob's acked most with a few requested tweaks).
Thanks,
Jonathan
Lorenzo Bianconi
maintainerRe: [PATCH 2/2] dt-bindings: iio: imu: st_lsm6dsx: introduce vdd-vddio regulators bindings
Quoted 26 lines
Quoted 10 lines · On Tue, 17 Nov 2020 16:11:38 +0100 Lorenzo Bianconi <[email protected]> wrote:
Signed-off-by Lorenzo Bianconi <[email protected]>--- Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt | 4 ++++ 1 file changed, 4 insertions(+)Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt +0
-0Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt Required properties: · line 29
Quoted 10 lines
Documentation/devicetree/bindings/iio/imu/st_lsm6dsx.txt +4
-0@@ -20,6 +20,10 @@ Required properties: - reg: i2c address of the sensor / spi cs line Optional properties: +- vdd-supply: an optional regulator that needs to be on to provide VDD + power to the sensor. +- vddio-supply: an optional regulator that needs to be on to provide the + VDD IO power to the sensor. - st,drdy-int-pin: the pin on the package that will be used to signal "data ready" (valid values: 1 or 2). - st,pullups : enable/disable internal i2c controller pullup resistors.Hi Lorenzo,
Quoted 4 lines
Please could you rebase this on top of
https://lore.kernel.org/linux-iio/[email protected]/Which does a yaml conversion of this file.
Hi Jonathan,
sure, no worries. I was quite sure the yaml conversion was merged but then I discovered it was not :) I will post v2 soon.
Regards,
Lorenzo
Quoted 12 lines
I'm working my way through backlog of those this week so will pick that up at some point very soon.
I'll resend a v2 of some patches in those series, but only those where there are outstanding comments that aren't trivial.
(Rob's acked most with a few requested tweaks).
Thanks,
Jonathan