pinctrl: use ngpios propety from DT
Since identical hardware is used in several instances and every instance will have different in-use pins. Hence extracting this number from DT via "ngpios" property. Signed-off-by: Pramod Kumar <pramodku@broadcom.com> Reviewed-by: Ray Jui <rjui@broadcom.com> Reviewed-by: Scott Branden <sbranden@broadcom.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
2652df631c
commit
e1aaaf3ff3
|
@ -641,35 +641,11 @@ static void cygnus_gpio_unregister_pinconf(struct cygnus_gpio *chip)
|
||||||
pinctrl_unregister(chip->pctl);
|
pinctrl_unregister(chip->pctl);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct cygnus_gpio_data {
|
|
||||||
unsigned num_gpios;
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct cygnus_gpio_data cygnus_cmm_gpio_data = {
|
|
||||||
.num_gpios = 24,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct cygnus_gpio_data cygnus_asiu_gpio_data = {
|
|
||||||
.num_gpios = 146,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct cygnus_gpio_data cygnus_crmu_gpio_data = {
|
|
||||||
.num_gpios = 6,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct of_device_id cygnus_gpio_of_match[] = {
|
static const struct of_device_id cygnus_gpio_of_match[] = {
|
||||||
{
|
{ .compatible = "brcm,cygnus-ccm-gpio" },
|
||||||
.compatible = "brcm,cygnus-ccm-gpio",
|
{ .compatible = "brcm,cygnus-asiu-gpio" },
|
||||||
.data = &cygnus_cmm_gpio_data,
|
{ .compatible = "brcm,cygnus-crmu-gpio" },
|
||||||
},
|
{ }
|
||||||
{
|
|
||||||
.compatible = "brcm,cygnus-asiu-gpio",
|
|
||||||
.data = &cygnus_asiu_gpio_data,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
.compatible = "brcm,cygnus-crmu-gpio",
|
|
||||||
.data = &cygnus_crmu_gpio_data,
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static int cygnus_gpio_probe(struct platform_device *pdev)
|
static int cygnus_gpio_probe(struct platform_device *pdev)
|
||||||
|
@ -680,14 +656,6 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
|
||||||
struct gpio_chip *gc;
|
struct gpio_chip *gc;
|
||||||
u32 ngpios;
|
u32 ngpios;
|
||||||
int irq, ret;
|
int irq, ret;
|
||||||
const struct of_device_id *match;
|
|
||||||
const struct cygnus_gpio_data *gpio_data;
|
|
||||||
|
|
||||||
match = of_match_device(cygnus_gpio_of_match, dev);
|
|
||||||
if (!match)
|
|
||||||
return -ENODEV;
|
|
||||||
gpio_data = match->data;
|
|
||||||
ngpios = gpio_data->num_gpios;
|
|
||||||
|
|
||||||
chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
|
chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL);
|
||||||
if (!chip)
|
if (!chip)
|
||||||
|
@ -712,6 +680,11 @@ static int cygnus_gpio_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (of_property_read_u32(dev->of_node, "ngpios", &ngpios)) {
|
||||||
|
dev_err(&pdev->dev, "missing ngpios DT property\n");
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
spin_lock_init(&chip->lock);
|
spin_lock_init(&chip->lock);
|
||||||
|
|
||||||
gc = &chip->gc;
|
gc = &chip->gc;
|
||||||
|
|
Loading…
Reference in New Issue