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

Commit aae842a3 authored by Maxime Ripard's avatar Maxime Ripard Committed by Linus Walleij
Browse files

pinctrl: sunxi: Introduce the strict flag



Our pinctrl device should have had strict set all along. However, it wasn't
the case, and most of our old device trees also have a pinctrl group in
addition to the GPIOs properties, which mean that we can't really turn it
on now.

All our new SoCs don't have that group, so we should still enable that mode
on the newer one though.

In order to enable it by default, add a flag that will allow to disable
that mode that should be set by pinctrl drivers that cannot be migrated.

Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 051e1674
Loading
Loading
Loading
Loading
+11 −1
Original line number Original line Diff line number Diff line
@@ -1245,6 +1245,7 @@ int sunxi_pinctrl_init_with_variant(struct platform_device *pdev,
	struct pinctrl_desc *pctrl_desc;
	struct pinctrl_desc *pctrl_desc;
	struct pinctrl_pin_desc *pins;
	struct pinctrl_pin_desc *pins;
	struct sunxi_pinctrl *pctl;
	struct sunxi_pinctrl *pctl;
	struct pinmux_ops *pmxops;
	struct resource *res;
	struct resource *res;
	int i, ret, last_pin, pin_idx;
	int i, ret, last_pin, pin_idx;
	struct clk *clk;
	struct clk *clk;
@@ -1305,7 +1306,16 @@ int sunxi_pinctrl_init_with_variant(struct platform_device *pdev,
	pctrl_desc->npins = pctl->ngroups;
	pctrl_desc->npins = pctl->ngroups;
	pctrl_desc->confops = &sunxi_pconf_ops;
	pctrl_desc->confops = &sunxi_pconf_ops;
	pctrl_desc->pctlops = &sunxi_pctrl_ops;
	pctrl_desc->pctlops = &sunxi_pctrl_ops;
	pctrl_desc->pmxops =  &sunxi_pmx_ops;

	pmxops = devm_kmemdup(&pdev->dev, &sunxi_pmx_ops, sizeof(sunxi_pmx_ops),
			      GFP_KERNEL);
	if (!pmxops)
		return -ENOMEM;

	if (desc->disable_strict_mode)
		pmxops->strict = false;

	pctrl_desc->pmxops = pmxops;


	pctl->pctl_dev = devm_pinctrl_register(&pdev->dev, pctrl_desc, pctl);
	pctl->pctl_dev = devm_pinctrl_register(&pdev->dev, pctrl_desc, pctl);
	if (IS_ERR(pctl->pctl_dev)) {
	if (IS_ERR(pctl->pctl_dev)) {
+1 −0
Original line number Original line Diff line number Diff line
@@ -112,6 +112,7 @@ struct sunxi_pinctrl_desc {
	unsigned			irq_banks;
	unsigned			irq_banks;
	unsigned			irq_bank_base;
	unsigned			irq_bank_base;
	bool				irq_read_needs_mux;
	bool				irq_read_needs_mux;
	bool				disable_strict_mode;
};
};


struct sunxi_pinctrl_function {
struct sunxi_pinctrl_function {