Commit e1aaaf3f authored by Pramod Kumar's avatar Pramod Kumar Committed by Linus Walleij

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: default avatarPramod Kumar <pramodku@broadcom.com>
Reviewed-by: default avatarRay Jui <rjui@broadcom.com>
Reviewed-by: default avatarScott Branden <sbranden@broadcom.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 2652df63
...@@ -641,35 +641,11 @@ static void cygnus_gpio_unregister_pinconf(struct cygnus_gpio *chip) ...@@ -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) ...@@ -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) ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment