pinctrl: qcom: pmic-gpio/mpp: of_irq_count() == npins
The number of interrupts is always equal to the number of pins provided by the PMIC gpio and MPP hardware blocks. Count the number of irqs to figure out the number of pins instead of adding more compatible strings or doing math on the reg property. This should make the code more generic and ease the number of changes we have to make to the driver for each new pmic revision. Cc: Ivan T. Ivanov <iivanov@mm-sol.com> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Reviewed-by: Andy Gross <agross@codeaurora.org> Reviewed-by: Björn Andersson <bjorn.andersson@sonymobile.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:

committed by
Linus Walleij

parent
beee39099b
commit
ab4256cfea
@@ -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>
|
||||
@@ -693,16 +694,15 @@ 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", ®);
|
||||
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 = of_irq_count(dev->of_node);
|
||||
if (!npins)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -752,7 +752,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)
|
||||
|
Reference in New Issue
Block a user