Commit 59d2d28f authored by Linus Walleij's avatar Linus Walleij
Browse files

pinctrl: cix: sky1: Provide pin control dummy states



This exports and calls the pinctrl_provide_dummies() function from
the CIX SKY1 driver.

The reasons are explained in a comment in the commit, in essence the
two pin controllers need to go through explicit state transitions
default->sleep->default despite they only handle one single state
each.

Reviewed-by: default avatarHans Zhang <hans.zhang@cixtech.com>
Reviewed-by: default avatarFugang Duan <fugang.duan@cixtech.com>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 99224c15
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -560,6 +560,21 @@ int sky1_base_pinctrl_probe(struct platform_device *pdev,
		return ret;
	}

	/*
	 * The SKY1 SoC has two pin controllers: one for normal working state
	 * and one for sleep state. Since one controller only has working
	 * states and the other only sleep states, it will seem to the
	 * controller is always in the first configured state, so no
	 * transitions between default->sleep->default are detected and no
	 * new pin states are applied when we go in and out of sleep state.
	 *
	 * To counter this, provide dummies, so that the sleep-only pin
	 * controller still get some default states, and the working state pin
	 * controller get some sleep states, so that state transitions occur
	 * and we re-configure pins for default and sleep states.
	 */
	pinctrl_provide_dummies();

	dev_dbg(&pdev->dev, "initialized SKY1 pinctrl driver\n");

	return pinctrl_enable(spctl->pctl);
+1 −0
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ void pinctrl_provide_dummies(void)
{
	pinctrl_dummy_state = true;
}
EXPORT_SYMBOL_GPL(pinctrl_provide_dummies);

const char *pinctrl_dev_get_name(struct pinctrl_dev *pctldev)
{