From: Chuanhong Guo Date: Tue, 8 Oct 2024 06:16:15 +0000 (+0800) Subject: siflower: add ngpios property to gpio-siflower X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=274df8eedb5863900934a8c5bda3e376f2d7c144;p=openwrt%2Fstaging%2Fsvanheule.git siflower: add ngpios property to gpio-siflower The same GPIO controller is found on all current Siflower SoCs, with different number of GPIOs. Add ngpios property instead of specifying it with dt match data. Link: https://github.com/openwrt/openwrt/pull/17115 Signed-off-by: Chuanhong Guo --- diff --git a/target/linux/siflower/dts/sf19a2890.dtsi b/target/linux/siflower/dts/sf19a2890.dtsi index b8f1cec83e..645cb8beb2 100644 --- a/target/linux/siflower/dts/sf19a2890.dtsi +++ b/target/linux/siflower/dts/sf19a2890.dtsi @@ -232,6 +232,7 @@ gpio-controller; #gpio-cells = <2>; + ngpios = <49>; gpio-ranges = <&pinctrl 0 0 49>; interrupt-controller; diff --git a/target/linux/siflower/files-6.6/drivers/gpio/gpio-siflower.c b/target/linux/siflower/files-6.6/drivers/gpio/gpio-siflower.c index bd3d8906b4..4253a84bf4 100644 --- a/target/linux/siflower/files-6.6/drivers/gpio/gpio-siflower.c +++ b/target/linux/siflower/files-6.6/drivers/gpio/gpio-siflower.c @@ -255,7 +255,10 @@ static int sf_gpio_probe(struct platform_device *pdev) u32 ngpios, ngroups; int ret, i; - ngpios = (unsigned int) device_get_match_data(dev); + ret = of_property_read_u32(pdev->dev.of_node, "ngpios", &ngpios); + if (ret) + return ret; + ngroups = DIV_ROUND_UP(ngpios, GPIOS_PER_GROUP); priv = devm_kzalloc(dev, struct_size(priv, irq, ngroups), GFP_KERNEL); if (!priv) @@ -323,7 +326,7 @@ static int sf_gpio_remove(struct platform_device *pdev) } static const struct of_device_id sf_gpio_ids[] = { - { .compatible = "siflower,sf19a2890-gpio", .data = (void *)49 }, + { .compatible = "siflower,sf19a2890-gpio" }, {}, }; MODULE_DEVICE_TABLE(of, sf_gpio_ids);