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

Dirk Behme dirk.behme at gmail.com
Tue Apr 2 15:17:13 UTC 2019


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 <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 ?


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;
>>
> 
> 



More information about the U-Boot mailing list