[U-Boot] [PATCH] pinctrl: renesas: Fix linker error when PINCTRL_PFC=n

Marek Vasut marek.vasut at gmail.com
Tue Apr 2 13:34:39 UTC 2019


On 4/2/19 3:18 PM, Eugeniu Rosca wrote:
> With CONFIG_PINCTRL_PFC=n, aarch64-linux-gnu-ld reports:
> 
> -----8<-----
>   LD      u-boot
> drivers/gpio/built-in.o: In function `rcar_gpio_request':
> drivers/gpio/gpio-rcar.c:128: undefined reference to `sh_pfc_config_mux_for_gpio'
> -----8<-----
> 
> Fix it in the least intrusive way and *avoid* ifdefs in the *.c code.
> 
> Some recent Linux commits sharing the same approach:
>  - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=23222f8f8dce
>    ("acpi, nfit: Add function to look up nvdimm device and provide SMBIOS handle")
>  - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f143af7501e
>    ("spi: make OF helper available for others")
>  - https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bccd06223f21
>    ("IB/uverbs: Add UVERBS_ATTR_FLAGS_IN to the specs language")
> 
> Fixes: f6e545a73f88 ("pfc: rmobile: Add hook to configure pin as GPIO")
> Reported-by: Dirk Behme <dirk.behme at de.bosch.com>
> Signed-off-by: Eugeniu Rosca <erosca at de.adit-jv.com>

Does CONFIG_PINCTRL_PFC=n produce a bootable binary ?
What is the usecase of CONFIG_PINCTRL_PFC=n ?

I suspect we should rather make sure CONFIG_PINCTRL_PFC=y .

> ---
>  drivers/pinctrl/renesas/sh_pfc.h | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/pinctrl/renesas/sh_pfc.h b/drivers/pinctrl/renesas/sh_pfc.h
> index b98c2f185d26..3d95d3c725cf 100644
> --- a/drivers/pinctrl/renesas/sh_pfc.h
> +++ b/drivers/pinctrl/renesas/sh_pfc.h
> @@ -261,7 +261,15 @@ void sh_pfc_write(struct sh_pfc *pfc, u32 reg, u32 data);
>  const struct pinmux_bias_reg *
>  sh_pfc_pin_to_bias_reg(const struct sh_pfc *pfc, unsigned int pin,
>  		       unsigned int *bit);
> +#if IS_ENABLED(CONFIG_PINCTRL_PFC)
>  int sh_pfc_config_mux_for_gpio(struct udevice *dev, unsigned pin_selector);
> +#else
> +static inline
> +int sh_pfc_config_mux_for_gpio(struct udevice *dev, unsigned pin_selector)
> +{
> +	return -ENODEV;
> +}
> +#endif
>  
>  extern const struct sh_pfc_soc_info r8a7790_pinmux_info;
>  extern const struct sh_pfc_soc_info r8a7791_pinmux_info;
> 


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list