db820c: enable pmic gpios for pm8994
authorJorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
Wed, 10 Jan 2018 10:33:51 +0000 (11:33 +0100)
committerTom Rini <trini@konsulko.com>
Mon, 15 Jan 2018 21:29:02 +0000 (16:29 -0500)
Signed-off-by: Jorge Ramirez-Ortiz <jorge.ramirez-ortiz@linaro.org>
arch/arm/dts/dragonboard820c.dts
configs/dragonboard820c_defconfig
drivers/gpio/pm8916_gpio.c

index 2d49830..6424944 100644 (file)
                         clock = <&gcc 0>;
                        clock-frequency = <200000000>;
                 };
+
+               spmi@400f000 {
+                       compatible = "qcom,spmi-pmic-arb";
+                       reg = <0x400f800 0x200>,
+                             <0x4400000 0x400000>,
+                             <0x4c00000 0x400000>;
+                       #address-cells = <0x1>;
+                       #size-cells = <0x1>;
+
+                       pmic0: pm8994@0 {
+                               compatible = "qcom,spmi-pmic";
+                               reg = <0x0 0x1>;
+                               #address-cells = <0x1>;
+                               #size-cells = <0x1>;
+
+                               pm8994_pon: pm8994_pon@800 {
+                                       compatible = "qcom,pm8994-pwrkey";
+                                       reg = <0x800 0x96>;
+                                       #gpio-cells = <2>;
+                                       gpio-controller;
+                                       gpio-bank-name="pm8994_key.";
+                               };
+
+                               pm8994_gpios: pm8994_gpios@c000 {
+                                       compatible = "qcom,pm8994-gpio";
+                                       reg = <0xc000 0x400>;
+                                       gpio-controller;
+                                       gpio-count = <24>;
+                                       #gpio-cells = <2>;
+                                       gpio-bank-name="pm8994.";
+                               };
+                       };
+
+                       pmic1: pm8994@1 {
+                               compatible = "qcom,spmi-pmic";
+                               reg = <0x1 0x1>;
+                               #address-cells = <0x1>;
+                               #size-cells = <0x1>;
+                       };
+               };
        };
+
 };
+
+#include "dragonboard820c-uboot.dtsi"
index 53f095d..8af54aa 100644 (file)
@@ -23,11 +23,18 @@ CONFIG_CMD_TIMER=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_GPT=y
 CONFIG_CMD_MMC=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_PMIC=y
 CONFIG_OF_CONTROL=y
 CONFIG_MSM_SERIAL=y
+CONFIG_SPMI_MSM=y
 CONFIG_MMC_SDHCI_MSM=y
 CONFIG_MMC_SDHCI=y
 CONFIG_DM_MMC=y
+CONFIG_DM_GPIO=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_PM8916=y
+CONFIG_PM8916_GPIO=y
 CONFIG_CLK=y
 CONFIG_PSCI_RESET=y
 CONFIG_ENV_IS_IN_EXT4=y
index 9ec2a24..42f068e 100644 (file)
@@ -29,7 +29,7 @@ DECLARE_GLOBAL_DATA_PTR;
 #define REG_STATUS_VAL_MASK    0x1
 
 /* MODE_CTL */
-#define REG_CTL           0x40
+#define REG_CTL                0x40
 #define REG_CTL_MODE_MASK       0x70
 #define REG_CTL_MODE_INPUT      0x00
 #define REG_CTL_MODE_INOUT      0x20
@@ -183,7 +183,7 @@ static int pm8916_gpio_probe(struct udevice *dev)
                return -ENODEV;
 
        reg = pmic_reg_read(dev->parent, priv->pid + REG_SUBTYPE);
-       if (reg != 0x5)
+       if (reg != 0x5 && reg != 0x1)
                return -ENODEV;
 
        return 0;
@@ -203,6 +203,7 @@ static int pm8916_gpio_ofdata_to_platdata(struct udevice *dev)
 
 static const struct udevice_id pm8916_gpio_ids[] = {
        { .compatible = "qcom,pm8916-gpio" },
+       { .compatible = "qcom,pm8994-gpio" },   /* 22 GPIO's */
        { }
 };
 
@@ -278,6 +279,7 @@ static int pm8941_pwrkey_ofdata_to_platdata(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 = "pm8916_key";
 
@@ -286,6 +288,7 @@ static int pm8941_pwrkey_ofdata_to_platdata(struct udevice *dev)
 
 static const struct udevice_id pm8941_pwrkey_ids[] = {
        { .compatible = "qcom,pm8916-pwrkey" },
+       { .compatible = "qcom,pm8994-pwrkey" },
        { }
 };