From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniu Rosca Date: Tue, 2 Apr 2019 17:40:20 +0200 Subject: [U-Boot] [PATCH] pinctrl: renesas: Fix linker error when PINCTRL_PFC=n In-Reply-To: <2e9e3d57-2690-4c64-f4cf-c0832f3e74b4@gmail.com> References: <20190402131823.15841-1-erosca@de.adit-jv.com> <1a61e450-6c59-56b2-2efa-ff2bce58d369@gmail.com> <47a77b99-711a-fde1-220f-057bdb08ca6a@gmail.com> <2e9e3d57-2690-4c64-f4cf-c0832f3e74b4@gmail.com> Message-ID: <20190402154020.GA21698@vmlxhi-102.adit-jv.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de 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 > >>> 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? > > 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. 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. [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.