From: Light Hsieh <light.hsieh@xxxxxxxxxxxx> In the future we want to be able to build the MediaTek pinctrl driver, based on paris, as kernel module. This patch allows pinctrl-paris.c, the external interrupt controller mtk-eint.c, and pinctrl-mtk-common-v2.c to be loadable as module. The following is the rationale for determining whether mtk-eint.c, pinctrl-mtk-common-v2.c, and pinctrl-paris.c are built as loadable module: 1. drivers/pinctrl/mediatek/Kconfig: 1.1 PINCTRL_MTXXXX: change from bool to tristate. It is specified in defconfig file. MTXXXX can only be the user of pinctrl-paris, which can MT6765 or MT8183. The patch for changing PINCTRL_MT6765 from bool to tristate will be given as the next patch of the patch series. 1.2 PINCTRL_MTK_PARIS: change from bool to tristate and select PINCTRL_MTK_V2. No need to specify in defconfig file. * PINCTRL_MTK_PARIS will be y if any PINCTRL_MTXXXX selecting PINCTRL_MTK_PARIS is y. * PINCTRL_MTK_PARIS will be n if all PINCTRL_MTXXXX selecting PINCTRL_MTK_PARIS is n. * PINCTRL_MTK_PARIS will be m if some PINCTRL_MTXXXX selecting PINCTRL_MTK_PARIS are m and other PINCTRL_MTXXXX selecting PINCTRL_MTK_PARIS are n. 1.3 PINCTRL_MTK_MOORE: select EINT_MTK and PINCTRL_MTK_V2. It is make to be ready for building as loadable kernel module because it is not used on Android kernel. 1.4 PINCTRL_MTK_V2: add this tristate config which depends on PINCTRL_MTK_PARIS and PINCTRL_MTK_MOORE. No need to specify in defconfig file. * PINCTRL_MTK_V2 will be y if either PINCTRL_MTK_PARIS or PINCTRL_MTK_MOORE is y. * PINCTRL_MTK_V2 will be n if both PINCTRL_MTK_PARIS and PINCTRL_MTK_MOORE are n. * PINCTRL_MTK_V2 will be m if PINCTRL_MTK_PARIS is m and PINCTRL_MTK_MOORE is n. 1.5 EINT_MTK: change from bool to tristate and add rule for default. No need to specify in defconfig file. * First rule: determine if EINT_MTK is y or n according to selection of PINCTRL_MTK or PINCTRL_MTK_MORE. * Second rule: determine if EINT_MTK is y, m, or n according to selection of PINCTRL_MTK_PARIS. 2. drivers/pinctrl/mediatek/Makefile: Use PINCTRL_MTK_V2 to determine if pinctrl-mtk-common-v2.c is built as loadable module or built-in. Light Hsieh (2): pinctrl: make MediaTek pinctrl v2 driver ready for buidling loadable module pinctrl: make MediaTek MT6765 pinctrl ready for buidling loadable module drivers/pinctrl/mediatek/Kconfig | 15 ++++++++++++--- drivers/pinctrl/mediatek/Makefile | 5 +++-- drivers/pinctrl/mediatek/mtk-eint.c | 9 +++++++++ drivers/pinctrl/mediatek/pinctrl-mt6765.c | 4 ++++ drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.c | 24 ++++++++++++++++++++++++ drivers/pinctrl/mediatek/pinctrl-paris.c | 6 ++++++ drivers/pinctrl/pinconf-generic.c | 1 + 7 files changed, 59 insertions(+), 5 deletions(-) -- 1.8.1.1.dirty