All of lore.kernel.org
 help / color / mirror / Atom feed
From: Light Hsieh <light.hsieh@mediatek.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Sean Wang <sean.wang@kernel.org>,
	Linus Walleij <linus.walleij@linaro.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Sean Wang <sean.wang@mediatek.com>, <linux-gpio@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH] pinctrl: mediatek: fix mtk_eint link error
Date: Thu, 30 Apr 2020 14:41:53 +0800	[thread overview]
Message-ID: <1588228913.3817.6.camel@mtkswgap22> (raw)
In-Reply-To: <20200429132443.1295194-1-arnd@arndb.de>

On Wed, 2020-04-29 at 15:24 +0200, Arnd Bergmann wrote:
> In a configuration with CONFIG_PINCTRL_MTK_MOORE=y and CONFIG_PINCTRL_MTK_PARIS=m,
> we end up with the mtk_eint driver as a loadable module that cannot be
> linked from built-in code:

How did you set all MTK-related PINCTRL configs?
and what is the generated result of .config?



> aarch64-linux-ld: drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.o: in function `mtk_build_eint':
> (.text+0x304): undefined reference to `mtk_eint_do_init'
> aarch64-linux-ld: drivers/pinctrl/mediatek/pinctrl-moore.o: in function `mtk_gpio_set_config':
> pinctrl-moore.c:(.text+0xf80): undefined reference to `mtk_eint_set_debounce'
> aarch64-linux-ld: drivers/pinctrl/mediatek/pinctrl-moore.o: in function `mtk_gpio_to_irq':
> pinctrl-moore.c:(.text+0x1028): undefined reference to `mtk_eint_find_irq'
> 
> Simplify the Kconfig logic to always select EINT_MTK when it is needed, and
> remove the 'default' statements.
> 
> Fixes: 8174a8512e3e ("pinctrl: mediatek: make MediaTek pinctrl v2 driver ready for buidling loadable module")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/pinctrl/mediatek/Kconfig    |  4 +---
>  drivers/pinctrl/mediatek/mtk-eint.h | 28 ----------------------------
>  2 files changed, 1 insertion(+), 31 deletions(-)
> 
> diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
> index f32d3644c509..b6a8d91f4885 100644
> --- a/drivers/pinctrl/mediatek/Kconfig
> +++ b/drivers/pinctrl/mediatek/Kconfig
> @@ -7,8 +7,6 @@ config EINT_MTK
>  	depends on PINCTRL_MTK || PINCTRL_MTK_MOORE || PINCTRL_MTK_PARIS || COMPILE_TEST
>  	select GPIOLIB
>  	select IRQ_DOMAIN
> -	default y if PINCTRL_MTK || PINCTRL_MTK_MOORE
> -	default PINCTRL_MTK_PARIS
>  
>  config PINCTRL_MTK
>  	bool
> @@ -20,6 +18,7 @@ config PINCTRL_MTK
>  	select OF_GPIO
>  
>  config PINCTRL_MTK_V2
> +	select EINT_MTK
>  	tristate
>  
>  config PINCTRL_MTK_MOORE
> @@ -38,7 +37,6 @@ config PINCTRL_MTK_PARIS
>  	select PINMUX
>  	select GENERIC_PINCONF
>  	select GPIOLIB
> -	select EINT_MTK
>  	select OF_GPIO
>  	select PINCTRL_MTK_V2

With this modification,PINCTRK_MTK_MOORE always select EINT_MTK
(indirectly via select PINCTRL_MTK_V2).
However, in previous review, Sean Wang said that PINCTRL_MTK_MOORE does
not always use EINT_MTK so PINCTRL_MTK_MOORE shall not select EINT_MTK
un-conditionally.


>  
> diff --git a/drivers/pinctrl/mediatek/mtk-eint.h b/drivers/pinctrl/mediatek/mtk-eint.h
> index 48468d0fae68..f40dab50a5f3 100644
> --- a/drivers/pinctrl/mediatek/mtk-eint.h
> +++ b/drivers/pinctrl/mediatek/mtk-eint.h
> @@ -68,7 +68,6 @@ struct mtk_eint {
>  	const struct mtk_eint_xt *gpio_xlate;
>  };
>  
> -#if IS_ENABLED(CONFIG_EINT_MTK)
>  int mtk_eint_do_init(struct mtk_eint *eint);
>  int mtk_eint_do_suspend(struct mtk_eint *eint);
>  int mtk_eint_do_resume(struct mtk_eint *eint);
> @@ -76,31 +75,4 @@ int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
>  			  unsigned int debounce);
>  int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n);
>  
> -#else
> -static inline int mtk_eint_do_init(struct mtk_eint *eint)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_do_suspend(struct mtk_eint *eint)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_do_resume(struct mtk_eint *eint)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
> -			  unsigned int debounce)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n)
> -{
> -	return -EOPNOTSUPP;
> -}
> -#endif
>  #endif /* __MTK_EINT_H */


WARNING: multiple messages have this Message-ID (diff)
From: Light Hsieh <light.hsieh@mediatek.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Sean Wang <sean.wang@mediatek.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Sean Wang <sean.wang@kernel.org>,
	linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org,
	Matthias Brugger <matthias.bgg@gmail.com>,
	linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] pinctrl: mediatek: fix mtk_eint link error
Date: Thu, 30 Apr 2020 14:41:53 +0800	[thread overview]
Message-ID: <1588228913.3817.6.camel@mtkswgap22> (raw)
In-Reply-To: <20200429132443.1295194-1-arnd@arndb.de>

On Wed, 2020-04-29 at 15:24 +0200, Arnd Bergmann wrote:
> In a configuration with CONFIG_PINCTRL_MTK_MOORE=y and CONFIG_PINCTRL_MTK_PARIS=m,
> we end up with the mtk_eint driver as a loadable module that cannot be
> linked from built-in code:

How did you set all MTK-related PINCTRL configs?
and what is the generated result of .config?



> aarch64-linux-ld: drivers/pinctrl/mediatek/pinctrl-mtk-common-v2.o: in function `mtk_build_eint':
> (.text+0x304): undefined reference to `mtk_eint_do_init'
> aarch64-linux-ld: drivers/pinctrl/mediatek/pinctrl-moore.o: in function `mtk_gpio_set_config':
> pinctrl-moore.c:(.text+0xf80): undefined reference to `mtk_eint_set_debounce'
> aarch64-linux-ld: drivers/pinctrl/mediatek/pinctrl-moore.o: in function `mtk_gpio_to_irq':
> pinctrl-moore.c:(.text+0x1028): undefined reference to `mtk_eint_find_irq'
> 
> Simplify the Kconfig logic to always select EINT_MTK when it is needed, and
> remove the 'default' statements.
> 
> Fixes: 8174a8512e3e ("pinctrl: mediatek: make MediaTek pinctrl v2 driver ready for buidling loadable module")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/pinctrl/mediatek/Kconfig    |  4 +---
>  drivers/pinctrl/mediatek/mtk-eint.h | 28 ----------------------------
>  2 files changed, 1 insertion(+), 31 deletions(-)
> 
> diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
> index f32d3644c509..b6a8d91f4885 100644
> --- a/drivers/pinctrl/mediatek/Kconfig
> +++ b/drivers/pinctrl/mediatek/Kconfig
> @@ -7,8 +7,6 @@ config EINT_MTK
>  	depends on PINCTRL_MTK || PINCTRL_MTK_MOORE || PINCTRL_MTK_PARIS || COMPILE_TEST
>  	select GPIOLIB
>  	select IRQ_DOMAIN
> -	default y if PINCTRL_MTK || PINCTRL_MTK_MOORE
> -	default PINCTRL_MTK_PARIS
>  
>  config PINCTRL_MTK
>  	bool
> @@ -20,6 +18,7 @@ config PINCTRL_MTK
>  	select OF_GPIO
>  
>  config PINCTRL_MTK_V2
> +	select EINT_MTK
>  	tristate
>  
>  config PINCTRL_MTK_MOORE
> @@ -38,7 +37,6 @@ config PINCTRL_MTK_PARIS
>  	select PINMUX
>  	select GENERIC_PINCONF
>  	select GPIOLIB
> -	select EINT_MTK
>  	select OF_GPIO
>  	select PINCTRL_MTK_V2

With this modification,PINCTRK_MTK_MOORE always select EINT_MTK
(indirectly via select PINCTRL_MTK_V2).
However, in previous review, Sean Wang said that PINCTRL_MTK_MOORE does
not always use EINT_MTK so PINCTRL_MTK_MOORE shall not select EINT_MTK
un-conditionally.


>  
> diff --git a/drivers/pinctrl/mediatek/mtk-eint.h b/drivers/pinctrl/mediatek/mtk-eint.h
> index 48468d0fae68..f40dab50a5f3 100644
> --- a/drivers/pinctrl/mediatek/mtk-eint.h
> +++ b/drivers/pinctrl/mediatek/mtk-eint.h
> @@ -68,7 +68,6 @@ struct mtk_eint {
>  	const struct mtk_eint_xt *gpio_xlate;
>  };
>  
> -#if IS_ENABLED(CONFIG_EINT_MTK)
>  int mtk_eint_do_init(struct mtk_eint *eint);
>  int mtk_eint_do_suspend(struct mtk_eint *eint);
>  int mtk_eint_do_resume(struct mtk_eint *eint);
> @@ -76,31 +75,4 @@ int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
>  			  unsigned int debounce);
>  int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n);
>  
> -#else
> -static inline int mtk_eint_do_init(struct mtk_eint *eint)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_do_suspend(struct mtk_eint *eint)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_do_resume(struct mtk_eint *eint)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_set_debounce(struct mtk_eint *eint, unsigned long eint_n,
> -			  unsigned int debounce)
> -{
> -	return -EOPNOTSUPP;
> -}
> -
> -static inline int mtk_eint_find_irq(struct mtk_eint *eint, unsigned long eint_n)
> -{
> -	return -EOPNOTSUPP;
> -}
> -#endif
>  #endif /* __MTK_EINT_H */

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-04-30  6:57 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-29 13:24 [PATCH] pinctrl: mediatek: fix mtk_eint link error Arnd Bergmann
2020-04-29 13:24 ` Arnd Bergmann
2020-04-30  6:41 ` Light Hsieh [this message]
2020-04-30  6:41   ` Light Hsieh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1588228913.3817.6.camel@mtkswgap22 \
    --to=light.hsieh@mediatek.com \
    --cc=arnd@arndb.de \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=matthias.bgg@gmail.com \
    --cc=sean.wang@kernel.org \
    --cc=sean.wang@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.