Patch "regulator: pca9450: Add SD_VSEL GPIO for LDO5" has been added to the 5.11-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    regulator: pca9450: Add SD_VSEL GPIO for LDO5

to the 5.11-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     regulator-pca9450-add-sd_vsel-gpio-for-ldo5.patch
and it can be found in the queue-5.11 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4e620727ba444ef5ccf38d5012b6a0a4eaea039c
Author: Frieder Schrempf <frieder.schrempf@xxxxxxxxxx>
Date:   Thu Feb 11 11:55:28 2021 +0100

    regulator: pca9450: Add SD_VSEL GPIO for LDO5
    
    [ Upstream commit 8c67a11bae889f51fe5054364c3c789dfae3ad73 ]
    
    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 <frieder.schrempf@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20210211105534.38972-1-frieder.schrempf@xxxxxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

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");
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux