From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dirk Behme Date: Tue, 2 Apr 2019 17:17:13 +0200 Subject: [U-Boot] [PATCH] pinctrl: renesas: Fix linker error when PINCTRL_PFC=n In-Reply-To: <1a61e450-6c59-56b2-2efa-ff2bce58d369@gmail.com> References: <20190402131823.15841-1-erosca@de.adit-jv.com> <1a61e450-6c59-56b2-2efa-ff2bce58d369@gmail.com> Message-ID: <47a77b99-711a-fde1-220f-057bdb08ca6a@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 02.04.19 15:34, Marek Vasut wrote: > 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 >> Signed-off-by: Eugeniu Rosca > > Does CONFIG_PINCTRL_PFC=n produce a bootable binary ? Why not? Main memory, boot device and UART are configured before U-Boot, no? Best regards Dirk > 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; >> > >