pinctrl: rockchip: Add iomux-route switching support
authorDavid Wu <david.wu@rock-chips.com>
Fri, 26 May 2017 07:20:20 +0000 (15:20 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 29 May 2017 12:24:37 +0000 (14:24 +0200)
commitbd35b9bf8284338db35b3ff0d391b95d67b90444
tree9601c54f70296d98e6bcbf47abfe8219fa53b561
parentc504985e3be8ab4d232d7ff63e773948e06f2da6
pinctrl: rockchip: Add iomux-route switching support

On the some rockchip SOCS, some things like rk3399 specific uart2 can use
multiple pins. Somewhere between the pin io-cells and the uart it seems
to have some sort of switch to decide to which pin to actually route the
data.

+-------+    +--------+  /- GPIO4_B0 (pinmux 2)

| uart2 | -- | switch | --- GPIO4_C0 (pinmux 2)

+-------+    +--------+  \- GPIO4_C3 (pinmux 2)
(switch selects one of the 3 pins base on the GRF_SOC_CON7[BIT0, BIT1])

The routing switch is determined by one pin of a specific group to be set
to its special pinmux function. If the pinmux setting is wrong for that
pin the ip block won't work correctly anyway.

Signed-off-by: David Wu <david.wu@rock-chips.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-rockchip.c