2021-02-11 11:32:15

by Frieder Schrempf

[permalink] [raw]
Subject: [PATCH 1/3] regulator: pca9450: Add SD_VSEL GPIO for LDO5

From: Frieder Schrempf <[email protected]>

LDO5 has two separate control registers. LDO5CTRL_L is used if the
input signal SD_VSEL is low and LDO5CTRL_H if it is high.
The current driver implementation only uses LDO5CTRL_H. To make this
work on boards that have SD_VSEL connected to a GPIO, we add support
for specifying an optional GPIO and setting it to high at probe time.

In the future we might also want to add support for boards that have
SD_VSEL set to a fixed low level. In this case we need to change the
driver to be able to use the LDO5CTRL_L register.

Signed-off-by: Frieder Schrempf <[email protected]>
---
drivers/regulator/pca9450-regulator.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/drivers/regulator/pca9450-regulator.c b/drivers/regulator/pca9450-regulator.c
index cb29421d745a..1bba8fdcb7b7 100644
--- a/drivers/regulator/pca9450-regulator.c
+++ b/drivers/regulator/pca9450-regulator.c
@@ -5,6 +5,7 @@
*/

#include <linux/err.h>
+#include <linux/gpio/consumer.h>
#include <linux/i2c.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
@@ -32,6 +33,7 @@ struct pca9450_regulator_desc {
struct pca9450 {
struct device *dev;
struct regmap *regmap;
+ struct gpio_desc *sd_vsel_gpio;
enum pca9450_chip_type type;
unsigned int rcnt;
int irq;
@@ -795,6 +797,18 @@ static int pca9450_i2c_probe(struct i2c_client *i2c,
return ret;
}

+ /*
+ * The driver uses the LDO5CTRL_H register to control the LDO5 regulator.
+ * This is only valid if the SD_VSEL input of the PMIC is high. Let's
+ * check if the pin is available as GPIO and set it to high.
+ */
+ pca9450->sd_vsel_gpio = gpiod_get_optional(pca9450->dev, "sd-vsel", GPIOD_OUT_HIGH);
+
+ if (IS_ERR(pca9450->sd_vsel_gpio)) {
+ dev_err(&i2c->dev, "Failed to get SD_VSEL GPIO\n");
+ return ret;
+ }
+
dev_info(&i2c->dev, "%s probed.\n",
type == PCA9450_TYPE_PCA9450A ? "pca9450a" : "pca9450bc");

--
2.25.1


2021-02-11 13:28:21

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 1/3] regulator: pca9450: Add SD_VSEL GPIO for LDO5

On Thu, Feb 11, 2021 at 11:55:28AM +0100, Schrempf Frieder wrote:

> + if (IS_ERR(pca9450->sd_vsel_gpio)) {
> + dev_err(&i2c->dev, "Failed to get SD_VSEL GPIO\n");

Not critical but it's generally better to display the error code when
logging an error to aid in diagnostics.


Attachments:
(No filename) (283.00 B)
signature.asc (499.00 B)
Download all attachments

2021-02-11 16:58:15

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH 1/3] regulator: pca9450: Add SD_VSEL GPIO for LDO5

On Thu, 11 Feb 2021 11:55:28 +0100, Schrempf Frieder wrote:
> LDO5 has two separate control registers. LDO5CTRL_L is used if the
> input signal SD_VSEL is low and LDO5CTRL_H if it is high.
> The current driver implementation only uses LDO5CTRL_H. To make this
> work on boards that have SD_VSEL connected to a GPIO, we add support
> for specifying an optional GPIO and setting it to high at probe time.
>
> In the future we might also want to add support for boards that have
> SD_VSEL set to a fixed low level. In this case we need to change the
> driver to be able to use the LDO5CTRL_L register.

Applied to

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next

Thanks!

[1/3] regulator: pca9450: Add SD_VSEL GPIO for LDO5
commit: 8c67a11bae889f51fe5054364c3c789dfae3ad73
[2/3] dt-bindings: regulator: pca9450: Add sd-vsel GPIO
commit: 27866e3e8a7e93494f8374f48061aa73ee46ceb2
[3/3] regulator: pca9450: Enable system reset on WDOG_B assertion
commit: f7684f5a048febd2a7bc98ee81d6dce52f7268b8

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark