dt-bindings: iio: accel: kxcjk1013: Document regulator supplies
Subsystems (2)
PATCH 1/2 dt-bindings: iio: accel: kxcjk1013: Document regulator supplies
From: Devajith V S <[email protected]>
kxcjk1013 devices have VDD and VDDIO power lines. Need to make sure the regulators are enabled before any communication with kxcjk1013. Document support for vdd/vddio-supply to implement this.
--- .../devicetree/bindings/iio/accel/kionix,kxcjk1013.yaml | 3 +++ 1 file changed, 3 insertions(+)
Documentation/devicetree/bindings/iio/accel/kionix,kxcjk1013.yaml +3 -0
@@ -20,6 +20,9 @@ properties: reg: maxItems: 1 + vdd-supply: true + vddio-supply: true + mount-matrix: description: an optional 3x3 mounting rotation matrix.
Signature · 1 line
2.17.1
PATCH 2/2 iio: accel: kxcjk1013: Add rudimentary regulator support
From: Devajith V S <[email protected]>
kxcjk1013 devices have VDD and VDDIO power lines. Need to make sure the regulators are enabled before any communication with kxcjk1013. This patch introduces vdd/vddio regulators for kxcjk1013.
--- drivers/iio/accel/kxcjk-1013.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)
drivers/iio/accel/kxcjk-1013.c +31 -0
@@ -14,6 +14,7 @@#include <linux/acpi.h> #include <linux/pm.h> #include <linux/pm_runtime.h> +#include <linux/regulator/consumer.h> #include <linux/iio/iio.h> #include <linux/iio/sysfs.h> #include <linux/iio/buffer.h>
@@ -133,6 +134,7 @@ enum kx_acpi_type { };struct kxcjk1013_data { +struct regulator_bulk_data regulators[2 ];struct i2c_client *client;struct iio_trigger *dready_trig;struct iio_trigger *motion_trig;
@@ -1300,6 +1302,13 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,return dev_name (dev); } +static void kxcjk1013_disable_regulators (void *d) +{ +struct kxcjk1013_data *data = d; + +regulator_bulk_disable (ARRAY_SIZE (data->regulators), data->regulators); +} +static int kxcjk1013_probe (struct i2c_client *client,const struct i2c_device_id *id) {
@@ -1330,6 +1339,28 @@ static int kxcjk1013_probe(struct i2c_client *client,return ret; } + data->regulators[0 ].supply ="vdd" ; + data->regulators[1 ].supply ="vddio" ; + ret =devm_regulator_bulk_get (&client->dev,ARRAY_SIZE (data->regulators), + data->regulators); +if (ret) +return dev_err_probe (&client->dev, ret,"Failed to get regulators\n" ); + + ret =regulator_bulk_enable (ARRAY_SIZE (data->regulators), + data->regulators); +if (ret) +return ret; + + ret =devm_add_action_or_reset (&client->dev, kxcjk1013_disable_regulators, data); +if (ret) +return ret; + +/* +* A typical delay of 10ms is required for powering up +* according to the data sheets of supported chips. +*/ +msleep (20 ); +if (id) { data->chipset = (enum kx_chipset )(id->driver_data); name = id->name;
Signature · 1 line
2.17.1
Jonathan Cameron
maintainerRe: [PATCH 2/2] iio: accel: kxcjk1013: Add rudimentary regulator support
Quoted 8 lines · On Sun, 13 Dec 2020 22:54:36 +0530 devajithvs <[email protected]> wrote:
From: Devajith V S <[email protected]>
kxcjk1013 devices have VDD and VDDIO power lines. Need to make sure the regulators are enabled before any communication with kxcjk1013. This patch introduces vdd/vddio regulators for kxcjk1013.
Signed-off-by Devajith V S <[email protected]>
Looks good to me. Trivial comment on the comment inline that I can fix whilst applying.
I'll let this sit on the list for a little while though in case anyone else spots something I have missed.
Thanks,
Jonathan
Quoted 51 lines
--- drivers/iio/accel/kxcjk-1013.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+)drivers/iio/accel/kxcjk-1013.c +18
-0@@ -14,6 +14,7 @@#include <linux/acpi.h> #include <linux/pm.h> #include <linux/pm_runtime.h> +#include <linux/regulator/consumer.h> #include <linux/iio/iio.h> #include <linux/iio/sysfs.h> #include <linux/iio/buffer.h> @@ -133,6 +134,7 @@ enum kx_acpi_type { };struct kxcjk1013_data { +struct regulator_bulk_data regulators[2 ];struct i2c_client *client;struct iio_trigger *dready_trig;struct iio_trigger *motion_trig;@@ -1300,6 +1302,13 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,return dev_name (dev); } +static void kxcjk1013_disable_regulators (void *d) +{ +struct kxcjk1013_data *data = d; + +regulator_bulk_disable (ARRAY_SIZE (data->regulators), data->regulators); +} +static int kxcjk1013_probe (struct i2c_client *client,const struct i2c_device_id *id) {@@ -1330,6 +1339,28 @@ static int kxcjk1013_probe(struct i2c_client *client,return ret; } + data->regulators[0 ].supply ="vdd" ; + data->regulators[1 ].supply ="vddio" ; + ret =devm_regulator_bulk_get (&client->dev,ARRAY_SIZE (data->regulators), + data->regulators); +if (ret) +return dev_err_probe (&client->dev, ret,"Failed to get regulators\n" ); + + ret =regulator_bulk_enable (ARRAY_SIZE (data->regulators), + data->regulators);
drivers/iio/accel/kxcjk-1013.c static int kxcjk1013_probe(struct i2c_client *client, · line 1360
Quoted 10 lines
drivers/iio/accel/kxcjk-1013.c +10
-0+if (ret) +return ret; + + ret =devm_add_action_or_reset (&client->dev, kxcjk1013_disable_regulators, data); +if (ret) +return ret; + +/* +* A typical delay of 10ms is required for powering up +* according to the data sheets of supported chips.
Probably want to add something like "so double it to play safe."
Quoted 6 lines
drivers/iio/accel/kxcjk-1013.c +3
-0+*/ +msleep (20 ); +if (id) { data->chipset = (enum kx_chipset )(id->driver_data); name = id->name;
Quoted 7 lines · devajithvs
From: Devajith V S <[email protected]>
kxcjk1013 devices have VDD and VDDIO power lines. Need to make sure the regulators are enabled before any communication with kxcjk1013. Document support for vdd/vddio-supply to implement this.
Quoted 5 lines
Signed-off-by Devajith V S <[email protected]>--- .../devicetree/bindings/iio/accel/kionix,kxcjk1013.yaml | 3 +++ 1 file changed, 3 insertions(+)