pinctrl: imx: add generic pin config core support
authorDong Aisheng <aisheng.dong@nxp.com>
Fri, 19 May 2017 07:05:42 +0000 (15:05 +0800)
committerLinus Walleij <linus.walleij@linaro.org>
Mon, 22 May 2017 09:03:47 +0000 (11:03 +0200)
commita5cadbbb081cb84a9fdb14391fb461a41f089a0a
treee9999bdde75f877b3bdf0e2ac36438851a7c78ef
parent66b54e3a5a64925d9819eae86b8f36e90e60037f
pinctrl: imx: add generic pin config core support

The design is based on the exist architecture that the core will
provide a uniformed way to decode the generic pin config into platform
config register raw data according to the imx_cfg_params_decode maps
registered by platform.

Two useful macros, IMX_CFG_PARAMS_DECODE and IMX_CFG_PARAMS_DECODE_INVERT,
are created for platform to register decode map conveniently.

In order to cope with some special case, a platform specific fixup()
function is also available to use.

Note that rather than fully utilizing the generic pinconf support
provided by pinctrl core, IMX only adopts the device tree bindings
of generic pinconf. The config used in .pin_config_get[set] are raw
register data instead of generic one which makes us align the exist
using. And that's also why we cannot set pinconf_ops.is_generic.

Cc: Bai Ping <ping.bai@nxp.com>
Signed-off-by: Dong Aisheng <aisheng.dong@nxp.com>
Acked-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/freescale/Kconfig
drivers/pinctrl/freescale/pinctrl-imx.c
drivers/pinctrl/freescale/pinctrl-imx.h