Message ID | 20231130-b4-qcom-dt-compat-v5-4-41500e237ad0@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | Qualcomm PMIC fixes | expand |
On 30/11/2023 21:22, Caleb Connolly wrote: > Remove the (now unused) GPIO driver for the power and resin buttons on > the PMIC. > > Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> > --- > drivers/gpio/Kconfig | 3 +- > drivers/gpio/qcom_pmic_gpio.c | 104 ------------------------------------------ > 2 files changed, 2 insertions(+), 105 deletions(-) > > diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig > index ba42b0768e12..fbf77673c5e0 100644 > --- a/drivers/gpio/Kconfig > +++ b/drivers/gpio/Kconfig > @@ -309,12 +309,13 @@ config CMD_PCA953X > config QCOM_PMIC_GPIO > bool "Qualcomm generic PMIC GPIO/keypad driver" > depends on DM_GPIO && PMIC_QCOM > + select BUTTON > help > Support for GPIO pins and power/reset buttons found on > Qualcomm SoCs PMIC. > Default name for GPIO bank is "pm8916". > Power and reset buttons are placed in "pwkey_qcom" bank and > - have gpio numbers 0 and 1 respectively. > + have gpio numbers 0 and 1 respectively. In a perfect world this should go in a separate commit, but it's not worth it! > > config PCF8575_GPIO > bool "PCF8575 I2C GPIO Expander driver" > diff --git a/drivers/gpio/qcom_pmic_gpio.c b/drivers/gpio/qcom_pmic_gpio.c > index e5841f502953..7b83c67fa464 100644 > --- a/drivers/gpio/qcom_pmic_gpio.c > +++ b/drivers/gpio/qcom_pmic_gpio.c > @@ -275,107 +275,3 @@ U_BOOT_DRIVER(qcom_pmic_gpio) = { > .priv_auto = sizeof(struct qcom_gpio_bank), > }; > > - > -/* Add pmic buttons as GPIO as well - there is no generic way for now */ > -#define PON_INT_RT_STS 0x10 > -#define KPDPWR_ON_INT_BIT 0 > -#define RESIN_ON_INT_BIT 1 > - > -static int qcom_pwrkey_get_function(struct udevice *dev, unsigned offset) > -{ > - return GPIOF_INPUT; > -} > - > -static int qcom_pwrkey_get_value(struct udevice *dev, unsigned offset) > -{ > - struct qcom_gpio_bank *priv = dev_get_priv(dev); > - > - int reg = pmic_reg_read(dev->parent, priv->pid + PON_INT_RT_STS); > - > - if (reg < 0) > - return 0; > - > - switch (offset) { > - case 0: /* Power button */ > - return (reg & BIT(KPDPWR_ON_INT_BIT)) != 0; > - break; > - case 1: /* Reset button */ > - default: > - return (reg & BIT(RESIN_ON_INT_BIT)) != 0; > - break; > - } > -} > - > -/* > - * Since pmic buttons modelled as GPIO, we need empty direction functions > - * to trick u-boot button driver > - */ > -static int qcom_pwrkey_direction_input(struct udevice *dev, unsigned int offset) > -{ > - return 0; > -} > - > -static int qcom_pwrkey_direction_output(struct udevice *dev, unsigned int offset, int value) > -{ > - return -EOPNOTSUPP; > -} > - > -static const struct dm_gpio_ops qcom_pwrkey_ops = { > - .get_value = qcom_pwrkey_get_value, > - .get_function = qcom_pwrkey_get_function, > - .direction_input = qcom_pwrkey_direction_input, > - .direction_output = qcom_pwrkey_direction_output, > -}; > - > -static int qcom_pwrkey_probe(struct udevice *dev) > -{ > - struct qcom_gpio_bank *priv = dev_get_priv(dev); > - int reg; > - u64 pid; > - > - pid = dev_read_addr(dev); > - if (pid == FDT_ADDR_T_NONE) > - return log_msg_ret("bad address", -EINVAL); > - > - priv->pid = pid; > - > - /* Do a sanity check */ > - reg = pmic_reg_read(dev->parent, priv->pid + REG_TYPE); > - if (reg != 0x1) > - return log_msg_ret("bad type", -ENXIO); > - > - reg = pmic_reg_read(dev->parent, priv->pid + REG_SUBTYPE); > - if ((reg & 0x5) == 0) > - return log_msg_ret("bad subtype", -ENXIO); > - > - return 0; > -} > - > -static int qcom_pwrkey_of_to_plat(struct udevice *dev) > -{ > - struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev); > - > - uc_priv->gpio_count = 2; > - uc_priv->bank_name = dev_read_string(dev, "gpio-bank-name"); > - if (uc_priv->bank_name == NULL) > - uc_priv->bank_name = "pwkey_qcom"; > - > - return 0; > -} > - > -static const struct udevice_id qcom_pwrkey_ids[] = { > - { .compatible = "qcom,pm8916-pwrkey" }, > - { .compatible = "qcom,pm8994-pwrkey" }, > - { .compatible = "qcom,pm8998-pwrkey" }, > - { } > -}; > - > -U_BOOT_DRIVER(pwrkey_qcom) = { > - .name = "pwrkey_qcom", > - .id = UCLASS_GPIO, > - .of_match = qcom_pwrkey_ids, > - .of_to_plat = qcom_pwrkey_of_to_plat, > - .probe = qcom_pwrkey_probe, > - .ops = &qcom_pwrkey_ops, > - .priv_auto = sizeof(struct qcom_gpio_bank), > -}; > Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index ba42b0768e12..fbf77673c5e0 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -309,12 +309,13 @@ config CMD_PCA953X config QCOM_PMIC_GPIO bool "Qualcomm generic PMIC GPIO/keypad driver" depends on DM_GPIO && PMIC_QCOM + select BUTTON help Support for GPIO pins and power/reset buttons found on Qualcomm SoCs PMIC. Default name for GPIO bank is "pm8916". Power and reset buttons are placed in "pwkey_qcom" bank and - have gpio numbers 0 and 1 respectively. + have gpio numbers 0 and 1 respectively. config PCF8575_GPIO bool "PCF8575 I2C GPIO Expander driver" diff --git a/drivers/gpio/qcom_pmic_gpio.c b/drivers/gpio/qcom_pmic_gpio.c index e5841f502953..7b83c67fa464 100644 --- a/drivers/gpio/qcom_pmic_gpio.c +++ b/drivers/gpio/qcom_pmic_gpio.c @@ -275,107 +275,3 @@ U_BOOT_DRIVER(qcom_pmic_gpio) = { .priv_auto = sizeof(struct qcom_gpio_bank), }; - -/* Add pmic buttons as GPIO as well - there is no generic way for now */ -#define PON_INT_RT_STS 0x10 -#define KPDPWR_ON_INT_BIT 0 -#define RESIN_ON_INT_BIT 1 - -static int qcom_pwrkey_get_function(struct udevice *dev, unsigned offset) -{ - return GPIOF_INPUT; -} - -static int qcom_pwrkey_get_value(struct udevice *dev, unsigned offset) -{ - struct qcom_gpio_bank *priv = dev_get_priv(dev); - - int reg = pmic_reg_read(dev->parent, priv->pid + PON_INT_RT_STS); - - if (reg < 0) - return 0; - - switch (offset) { - case 0: /* Power button */ - return (reg & BIT(KPDPWR_ON_INT_BIT)) != 0; - break; - case 1: /* Reset button */ - default: - return (reg & BIT(RESIN_ON_INT_BIT)) != 0; - break; - } -} - -/* - * Since pmic buttons modelled as GPIO, we need empty direction functions - * to trick u-boot button driver - */ -static int qcom_pwrkey_direction_input(struct udevice *dev, unsigned int offset) -{ - return 0; -} - -static int qcom_pwrkey_direction_output(struct udevice *dev, unsigned int offset, int value) -{ - return -EOPNOTSUPP; -} - -static const struct dm_gpio_ops qcom_pwrkey_ops = { - .get_value = qcom_pwrkey_get_value, - .get_function = qcom_pwrkey_get_function, - .direction_input = qcom_pwrkey_direction_input, - .direction_output = qcom_pwrkey_direction_output, -}; - -static int qcom_pwrkey_probe(struct udevice *dev) -{ - struct qcom_gpio_bank *priv = dev_get_priv(dev); - int reg; - u64 pid; - - pid = dev_read_addr(dev); - if (pid == FDT_ADDR_T_NONE) - return log_msg_ret("bad address", -EINVAL); - - priv->pid = pid; - - /* Do a sanity check */ - reg = pmic_reg_read(dev->parent, priv->pid + REG_TYPE); - if (reg != 0x1) - return log_msg_ret("bad type", -ENXIO); - - reg = pmic_reg_read(dev->parent, priv->pid + REG_SUBTYPE); - if ((reg & 0x5) == 0) - return log_msg_ret("bad subtype", -ENXIO); - - return 0; -} - -static int qcom_pwrkey_of_to_plat(struct udevice *dev) -{ - struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev); - - uc_priv->gpio_count = 2; - uc_priv->bank_name = dev_read_string(dev, "gpio-bank-name"); - if (uc_priv->bank_name == NULL) - uc_priv->bank_name = "pwkey_qcom"; - - return 0; -} - -static const struct udevice_id qcom_pwrkey_ids[] = { - { .compatible = "qcom,pm8916-pwrkey" }, - { .compatible = "qcom,pm8994-pwrkey" }, - { .compatible = "qcom,pm8998-pwrkey" }, - { } -}; - -U_BOOT_DRIVER(pwrkey_qcom) = { - .name = "pwrkey_qcom", - .id = UCLASS_GPIO, - .of_match = qcom_pwrkey_ids, - .of_to_plat = qcom_pwrkey_of_to_plat, - .probe = qcom_pwrkey_probe, - .ops = &qcom_pwrkey_ops, - .priv_auto = sizeof(struct qcom_gpio_bank), -};
Remove the (now unused) GPIO driver for the power and resin buttons on the PMIC. Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org> --- drivers/gpio/Kconfig | 3 +- drivers/gpio/qcom_pmic_gpio.c | 104 ------------------------------------------ 2 files changed, 2 insertions(+), 105 deletions(-)