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 <gch981213@gmail.com>
This commit is contained in:
Chuanhong Guo 2024-10-08 14:16:15 +08:00
parent bbde170ec6
commit 274df8eedb
2 changed files with 6 additions and 2 deletions

View File

@ -232,6 +232,7 @@
gpio-controller;
#gpio-cells = <2>;
ngpios = <49>;
gpio-ranges = <&pinctrl 0 0 49>;
interrupt-controller;

View File

@ -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);