From 8ace65a8460dd1926635550818ff3c0e39886590 Mon Sep 17 00:00:00 2001 From: Ahmad Fatoum Date: Fri, 17 Sep 2021 11:41:51 +0200 Subject: pinctrl: bcm2835: Probe driver earlier MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit coredevice is too late for the console driver and all other pinctrl drivers are using "core", too. Signed-off-by: Uwe Kleine-König Signed-off-by: Ahmad Fatoum Link: https://lore.barebox.org/20210917094152.210494-1-u.kleine-koenig@pengutronix.de Signed-off-by: Sascha Hauer --- drivers/pinctrl/pinctrl-bcm2835.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'drivers/pinctrl') diff --git a/drivers/pinctrl/pinctrl-bcm2835.c b/drivers/pinctrl/pinctrl-bcm2835.c index d62c735181..38c788c829 100644 --- a/drivers/pinctrl/pinctrl-bcm2835.c +++ b/drivers/pinctrl/pinctrl-bcm2835.c @@ -205,4 +205,4 @@ static struct driver_d bcm2835_gpio_driver = { .of_compatible = DRV_OF_COMPAT(bcm2835_gpio_dt_ids), }; -coredevice_platform_driver(bcm2835_gpio_driver); +core_platform_driver(bcm2835_gpio_driver); -- cgit v1.2.3 From 4a471f0360e67e8e6696c0cd86dd1af6eb92e5be Mon Sep 17 00:00:00 2001 From: Ahmad Fatoum Date: Fri, 17 Sep 2021 11:41:52 +0200 Subject: pinctrl: bcm2835: Add support for bcm2711 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bcm2711-rpi-4-b.dts lists 58 gpio names and the linux driver also uses 58 GPIOs for bcm2711. Signed-off-by: Uwe Kleine-König Signed-off-by: Ahmad Fatoum Link: https://lore.barebox.org/20210917094152.210494-2-u.kleine-koenig@pengutronix.de Signed-off-by: Sascha Hauer --- drivers/pinctrl/pinctrl-bcm2835.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'drivers/pinctrl') diff --git a/drivers/pinctrl/pinctrl-bcm2835.c b/drivers/pinctrl/pinctrl-bcm2835.c index 38c788c829..684ead2f8e 100644 --- a/drivers/pinctrl/pinctrl-bcm2835.c +++ b/drivers/pinctrl/pinctrl-bcm2835.c @@ -52,6 +52,10 @@ struct bcm2835_gpio_chip { struct pinctrl_device pctl; }; +struct plat_data { + unsigned ngpios; +}; + static int bcm2835_set_function(struct gpio_chip *chip, unsigned gpio, int function) { struct bcm2835_gpio_chip *bcmgpio = container_of(chip, struct bcm2835_gpio_chip, chip); @@ -149,10 +153,13 @@ static struct pinctrl_ops bcm2835_pinctrl_ops = { static int bcm2835_gpio_probe(struct device_d *dev) { + const struct plat_data *plat_data; struct resource *iores; struct bcm2835_gpio_chip *bcmgpio; int ret; + plat_data = device_get_match_data(dev); + bcmgpio = xzalloc(sizeof(*bcmgpio)); iores = dev_request_mem_resource(dev, 0); if (IS_ERR(iores)) @@ -160,7 +167,8 @@ static int bcm2835_gpio_probe(struct device_d *dev) bcmgpio->base = IOMEM(iores->start); bcmgpio->chip.ops = &bcm2835_gpio_ops; bcmgpio->chip.base = 0; - bcmgpio->chip.ngpio = 54; + bcmgpio->chip.ngpio = plat_data->ngpios; + bcmgpio->chip.dev = dev; bcmgpio->pctl.ops = &bcm2835_pinctrl_ops; bcmgpio->pctl.dev = dev; @@ -191,9 +199,21 @@ err: return ret; } +static const struct plat_data bcm2835_plat_data = { + .ngpios = 54, +}; + +static const struct plat_data bcm2711_plat_data = { + .ngpios = 58, +}; + static __maybe_unused struct of_device_id bcm2835_gpio_dt_ids[] = { { .compatible = "brcm,bcm2835-gpio", + .data = &bcm2835_plat_data, + }, { + .compatible = "brcm,bcm2711-gpio", + .data = &bcm2711_plat_data, }, { /* sentinel */ } -- cgit v1.2.3