Re: [PATCH v4 20/20] mfd: adp5585: add support for a reset pin
From: Lee Jones <lee@kernel.org>
Date: 2025-06-12 15:18:31
Also in:
linux-devicetree, linux-gpio, linux-pwm
On Wed, 21 May 2025, Nuno Sá via B4 Relay wrote:
quoted hunk ↗ jump to hunk
From: Nuno Sá <nuno.sa@analog.com> Make sure to perform an Hardware reset during probe if the pin is given in FW. Signed-off-by: Nuno Sá <nuno.sa@analog.com> --- drivers/mfd/adp5585.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)diff --git a/drivers/mfd/adp5585.c b/drivers/mfd/adp5585.c index e8b9a0ef4ee654ac1abc4042152fe0933f1d9f0d..164da0b804c4fce4e3af1ac0c2813020a77f4938 100644 --- a/drivers/mfd/adp5585.c +++ b/drivers/mfd/adp5585.c@@ -12,6 +12,7 @@ #include <linux/device.h> #include <linux/err.h> #include <linux/i2c.h> +#include <linux/gpio/consumer.h> #include <linux/mfd/adp5585.h> #include <linux/mfd/core.h> #include <linux/mod_devicetable.h>@@ -697,6 +698,7 @@ static int adp5585_i2c_probe(struct i2c_client *i2c) { struct regmap_config regmap_config; struct adp5585_dev *adp5585; + struct gpio_desc *gpio; unsigned int id; int ret;@@ -718,6 +720,20 @@ static int adp5585_i2c_probe(struct i2c_client *i2c) if (ret) return ret; + gpio = devm_gpiod_get_optional(&i2c->dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(gpio)) + return PTR_ERR(gpio); + + /* + * Note the timings are not documented anywhere in the DS. They are just
"datasheet"
+ * reasonable values that work.
+ */
+ if (gpio) {
+ fsleep(30);
+ gpiod_set_value_cansleep(gpio, 0);
+ fsleep(60);
+ }
+
adp5585->regmap = devm_regmap_init_i2c(i2c, ®map_config);
if (IS_ERR(adp5585->regmap))
return dev_err_probe(&i2c->dev, PTR_ERR(adp5585->regmap),
--
2.49.0
-- Lee Jones [李琼斯]