Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+9 −36
Original line number Original line Diff line number Diff line
@@ -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;