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

Marek Vasut marek.vasut at gmail.com
Tue Apr 2 16:02:46 UTC 2019


On 4/2/19 5:40 PM, Eugeniu Rosca wrote:
> On Tue, Apr 02, 2019 at 05:28:43PM +0200, Marek Vasut wrote:
>> On 4/2/19 5:17 PM, Dirk Behme wrote:
>>> 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?
>>
>> It depends on what is running before U-Boot, so not necessarily.
>>
>> And speaking of boot device, consider the case where the system runs
>> from eMMC and uses the HS200/HS400 modes, which need to switch bus mode
>> using the pinmux driver.
>>
>> Is there a real-world use case where you would want to disable the
>> pinmux driver ? And what is the benefit of that, except that it would
>> cause all kinds of weird problems.
> 
> My H3ULCB-KF boots just fine [1] with CONFIG_PINCTRL_PFC=n, but I
> personally don't have any use-case which I need to fulfill on a
> Renesas reference design by disabling PFC.

And the eMMC and SDHI both work fine too in HS400/SDR104 modes ?
They cannot, since you cannot switch the pinmux properties of the bus.
What about the errors in the log below, they don't look quite fine.

> Rather, the motivation here is to ensure U-Boot builds fine with as
> many randconfig results as possible, which is a standard practice in
> Linux. I personally favor my solution, but I am also open minded if
> the linker error is avoided by introducing a direct/reverse dependency
> between PFC and another relevant R-Car3 Kconfig symbol.

I am fine with fixing randconfig build errors. My question here is
whether it makes sense to allow U-Boot build without PFC support,
since that would cause all kinds of problems. I am banking toward
playing it safe and not allowing such an option at all. Thoughts ?

> [1] U-Boot 2019.04-rc4-00100-g03ece61db8 (Apr 02 2019 - 17:23:57 +0200)
> 
> CPU: Renesas Electronics R8A7795 rev 2.0
> Model: Renesas H3ULCB board based on r8a7795 ES2.0+
> DRAM:  3.9 GiB
> MMC:   gpio at e6055000: set_value: error: gpio gpio at e60550001 not reserved
> Can't set regulator : regulator-vccq-sdhi0 gpio to: 1
> sd at ee100000: 0, sd at ee140000: 1
> Loading Environment from MMC... OK
> In:    serial at e6e88000
> Out:   serial at e6e88000
> Err:   serial at e6e88000
> Net:   gpio at e6052000: set_value: error: gpio gpio at e605200010 not reserved
> gpio at e6052000: set_value: error: gpio gpio at e605200010 not reserved
> eth0: ethernet at e6800000
> Hit any key to stop autoboot:  0 
> 
>> -- 
>> Best regards,
>> Marek Vasut
> 
> Best regards,
> Eugeniu.
> 


-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list