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

Commit ab663789 authored by Tomasz Figa's avatar Tomasz Figa Committed by Linus Walleij
Browse files

pinctrl: samsung: Match pin banks with their device nodes



This patch is a preparation for converting the pinctrl-samsung driver to
one GPIO chip and IRQ domain per bank. It binds banks defined by
internal driver data with bank nodes in device tree.

Signed-off-by: default avatarTomasz Figa <t.figa@samsung.com>
Reviewed-by: default avatarKyungmin Park <kyungmin.park@samsung.com>
Acked-by: default avatarThomas Abraham <thomas.abraham@linaro.org>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent a7a82415
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -794,6 +794,7 @@ static struct samsung_pin_ctrl *samsung_pinctrl_get_soc_data(
	int id;
	const struct of_device_id *match;
	const struct device_node *node = pdev->dev.of_node;
	struct device_node *np;
	struct samsung_pin_ctrl *ctrl;
	struct samsung_pin_bank *bank;
	int i;
@@ -816,6 +817,18 @@ static struct samsung_pin_ctrl *samsung_pinctrl_get_soc_data(
		}
	}

	for_each_child_of_node(node, np) {
		if (!of_find_property(np, "gpio-controller", NULL))
			continue;
		bank = ctrl->pin_banks;
		for (i = 0; i < ctrl->nr_banks; ++i, ++bank) {
			if (!strcmp(bank->name, np->name)) {
				bank->of_node = np;
				break;
			}
		}
	}

	ctrl->base = pin_base;
	pin_base += ctrl->nr_pins;

+2 −0
Original line number Diff line number Diff line
@@ -111,6 +111,7 @@ struct samsung_pinctrl_drv_data;
 * @eint_type: type of the external interrupt supported by the bank.
 * @irq_base: starting controller local irq number of the bank.
 * @name: name to be prefixed for each pin in this pin bank.
 * @of_node: OF node of the bank.
 */
struct samsung_pin_bank {
	u32		pctl_offset;
@@ -124,6 +125,7 @@ struct samsung_pin_bank {
	enum eint_type	eint_type;
	u32		irq_base;
	char		*name;
	struct device_node *of_node;
};

/**