Merge tag 'gpio-v4.5-1' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux...
[deliverable/linux.git] / drivers / pinctrl / qcom / pinctrl-spmi-gpio.c
index 23553ecd81154a5a9b7ecc3698d8932048dc4fb5..4e12ded3c773eed0a501fc694c8d53dd6b469ca1 100644 (file)
@@ -14,6 +14,7 @@
 #include <linux/gpio.h>
 #include <linux/module.h>
 #include <linux/of.h>
+#include <linux/of_irq.h>
 #include <linux/pinctrl/pinconf-generic.h>
 #include <linux/pinctrl/pinconf.h>
 #include <linux/pinctrl/pinmux.h>
@@ -688,18 +689,19 @@ static int pmic_gpio_probe(struct platform_device *pdev)
        struct pmic_gpio_pad *pad, *pads;
        struct pmic_gpio_state *state;
        int ret, npins, i;
-       u32 res[2];
+       u32 reg;
 
-       ret = of_property_read_u32_array(dev->of_node, "reg", res, 2);
+       ret = of_property_read_u32(dev->of_node, "reg", &reg);
        if (ret < 0) {
-               dev_err(dev, "missing base address and/or range");
+               dev_err(dev, "missing base address");
                return ret;
        }
 
-       npins = res[1] / PMIC_GPIO_ADDRESS_RANGE;
-
+       npins = platform_irq_count(pdev);
        if (!npins)
                return -EINVAL;
+       if (npins < 0)
+               return npins;
 
        BUG_ON(npins > ARRAY_SIZE(pmic_gpio_groups));
 
@@ -747,7 +749,7 @@ static int pmic_gpio_probe(struct platform_device *pdev)
                if (pad->irq < 0)
                        return pad->irq;
 
-               pad->base = res[0] + i * PMIC_GPIO_ADDRESS_RANGE;
+               pad->base = reg + i * PMIC_GPIO_ADDRESS_RANGE;
 
                ret = pmic_gpio_populate(state, pad);
                if (ret < 0)
@@ -799,6 +801,7 @@ static int pmic_gpio_remove(struct platform_device *pdev)
 static const struct of_device_id pmic_gpio_of_match[] = {
        { .compatible = "qcom,pm8916-gpio" },   /* 4 GPIO's */
        { .compatible = "qcom,pm8941-gpio" },   /* 36 GPIO's */
+       { .compatible = "qcom,pm8994-gpio" },   /* 22 GPIO's */
        { .compatible = "qcom,pma8084-gpio" },  /* 22 GPIO's */
        { },
 };
This page took 0.028137 seconds and 5 git commands to generate.