[U-Boot] spl: fix build failure with !CONFIG_SPL_PCI_SUPPORT

Message ID 20181206101008.11250-1-nsekhar@ti.com
State Under Review
Delegated to: Tom Rini
Headers show
Series
  • [U-Boot] spl: fix build failure with !CONFIG_SPL_PCI_SUPPORT
Related show

Commit Message

Sekhar Nori Dec. 6, 2018, 10:10 a.m.
Building U-Boot with CONFIG_PCI and CONFIG_DM_PCI enabled, but
CONFIG_SPL_PCI_SUPPORT disabled, results in following linker
error:

lib/built-in.o: In function `fdtdec_get_pci_bar32':
lib/fdtdec.c:305: undefined reference to `dm_pci_read_bar32'
fdtdec.c:305:(.text.fdtdec_get_pci_bar32+0x24): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dm_pci_read_bar32'

This is because reference to dm_pci_read_bar32() remains in lib/fdtdec.c
while SPL build does not descend into drivers/pci directory in
drivers/Makefile if CONFIG_SPL_PCI_SUPPORT is not enabled.

Fix this by applying appropriate #define guards in lib/fdtdec.c.
It looks like ns16550.c has the same problem, so fixed that too.

To simplify this, CONFIG_SPL_PCI_SUPPORT is renamed to CONFIG_SPL_PCI
(enables use of CONFIG_IS_ENABLED() macro).

Suggested-by: Vignesh R <vigneshr@ti.com>
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
---
 Makefile                            | 1 -
 common/spl/Kconfig                  | 4 ++--
 configs/chromebook_link64_defconfig | 2 +-
 configs/qemu-x86_64_defconfig       | 2 +-
 drivers/Makefile                    | 2 +-
 drivers/serial/ns16550.c            | 2 +-
 lib/fdtdec.c                        | 2 +-
 7 files changed, 7 insertions(+), 8 deletions(-)

Comments

Lokesh Vutla Dec. 6, 2018, 10:55 a.m. | #1
On 06/12/18 3:40 PM, Sekhar Nori wrote:
> Building U-Boot with CONFIG_PCI and CONFIG_DM_PCI enabled, but
> CONFIG_SPL_PCI_SUPPORT disabled, results in following linker
> error:
> 
> lib/built-in.o: In function `fdtdec_get_pci_bar32':
> lib/fdtdec.c:305: undefined reference to `dm_pci_read_bar32'
> fdtdec.c:305:(.text.fdtdec_get_pci_bar32+0x24): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dm_pci_read_bar32'
> 
> This is because reference to dm_pci_read_bar32() remains in lib/fdtdec.c
> while SPL build does not descend into drivers/pci directory in
> drivers/Makefile if CONFIG_SPL_PCI_SUPPORT is not enabled.
> 
> Fix this by applying appropriate #define guards in lib/fdtdec.c.
> It looks like ns16550.c has the same problem, so fixed that too.
> 
> To simplify this, CONFIG_SPL_PCI_SUPPORT is renamed to CONFIG_SPL_PCI
> (enables use of CONFIG_IS_ENABLED() macro).
> 
> Suggested-by: Vignesh R <vigneshr@ti.com>
> Signed-off-by: Sekhar Nori <nsekhar@ti.com>


Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>

Thanks and regards,
Lokesh
Tom Rini Dec. 6, 2018, 9:41 p.m. | #2
On Thu, Dec 06, 2018 at 03:40:08PM +0530, Sekhar Nori wrote:

> Building U-Boot with CONFIG_PCI and CONFIG_DM_PCI enabled, but
> CONFIG_SPL_PCI_SUPPORT disabled, results in following linker
> error:
> 
> lib/built-in.o: In function `fdtdec_get_pci_bar32':
> lib/fdtdec.c:305: undefined reference to `dm_pci_read_bar32'
> fdtdec.c:305:(.text.fdtdec_get_pci_bar32+0x24): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dm_pci_read_bar32'
> 
> This is because reference to dm_pci_read_bar32() remains in lib/fdtdec.c
> while SPL build does not descend into drivers/pci directory in
> drivers/Makefile if CONFIG_SPL_PCI_SUPPORT is not enabled.
> 
> Fix this by applying appropriate #define guards in lib/fdtdec.c.
> It looks like ns16550.c has the same problem, so fixed that too.
> 
> To simplify this, CONFIG_SPL_PCI_SUPPORT is renamed to CONFIG_SPL_PCI
> (enables use of CONFIG_IS_ENABLED() macro).
> 
> Suggested-by: Vignesh R <vigneshr@ti.com>
> Signed-off-by: Sekhar Nori <nsekhar@ti.com>

Reviewed-by: Tom Rini <trini@konsulko.com>
Tom Rini Dec. 13, 2018, 12:47 a.m. | #3
On Thu, Dec 06, 2018 at 03:40:08PM +0530, Sekhar Nori wrote:

> Building U-Boot with CONFIG_PCI and CONFIG_DM_PCI enabled, but
> CONFIG_SPL_PCI_SUPPORT disabled, results in following linker
> error:
> 
> lib/built-in.o: In function `fdtdec_get_pci_bar32':
> lib/fdtdec.c:305: undefined reference to `dm_pci_read_bar32'
> fdtdec.c:305:(.text.fdtdec_get_pci_bar32+0x24): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `dm_pci_read_bar32'
> 
> This is because reference to dm_pci_read_bar32() remains in lib/fdtdec.c
> while SPL build does not descend into drivers/pci directory in
> drivers/Makefile if CONFIG_SPL_PCI_SUPPORT is not enabled.
> 
> Fix this by applying appropriate #define guards in lib/fdtdec.c.
> It looks like ns16550.c has the same problem, so fixed that too.
> 
> To simplify this, CONFIG_SPL_PCI_SUPPORT is renamed to CONFIG_SPL_PCI
> (enables use of CONFIG_IS_ENABLED() macro).
> 
> Suggested-by: Vignesh R <vigneshr@ti.com>
> Signed-off-by: Sekhar Nori <nsekhar@ti.com>
> Reviewed-by: Lokesh Vutla <lokeshvutla@ti.com>
> Reviewed-by: Tom Rini <trini@konsulko.com>

Applied to u-boot/master, thanks!

Patch

diff --git a/Makefile b/Makefile
index 0d11ff97971a..6be95760f7ac 100644
--- a/Makefile
+++ b/Makefile
@@ -695,7 +695,6 @@  libs-$(CONFIG_CMD_UBI) += drivers/mtd/ubi/
 libs-y += drivers/mtd/spi/
 libs-y += drivers/net/
 libs-y += drivers/net/phy/
-libs-y += drivers/pci/
 libs-y += drivers/power/ \
 	drivers/power/domain/ \
 	drivers/power/fuel_gauge/ \
diff --git a/common/spl/Kconfig b/common/spl/Kconfig
index 0ddbffc7d1c6..84e9f62e992d 100644
--- a/common/spl/Kconfig
+++ b/common/spl/Kconfig
@@ -610,7 +610,7 @@  config SPL_PAYLOAD
 	  TPL, tpl/u-boot-with-tpl.bin. For new boards, suggest to
 	  use u-boot.img.
 
-config SPL_PCI_SUPPORT
+config SPL_PCI
 	bool "Support PCI drivers"
 	help
 	  Enable support for PCI in SPL. For platforms that need PCI to boot,
@@ -1023,7 +1023,7 @@  config TPL_NAND_SUPPORT
 	help
 	  Enable support for NAND in TPL. See SPL_NAND_SUPPORT for details.
 
-config TPL_PCI_SUPPORT
+config TPL_PCI
 	bool "Support PCI drivers"
 	help
 	  Enable support for PCI in TPL. For platforms that need PCI to boot,
diff --git a/configs/chromebook_link64_defconfig b/configs/chromebook_link64_defconfig
index 13b90a13f6cc..074d333dd4e5 100644
--- a/configs/chromebook_link64_defconfig
+++ b/configs/chromebook_link64_defconfig
@@ -33,7 +33,7 @@  CONFIG_SPL_CPU_SUPPORT=y
 CONFIG_SPL_ENV_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_NET_SUPPORT=y
-CONFIG_SPL_PCI_SUPPORT=y
+CONFIG_SPL_PCI=y
 CONFIG_SPL_PCH_SUPPORT=y
 CONFIG_SPL_RTC_SUPPORT=y
 CONFIG_HUSH_PARSER=y
diff --git a/configs/qemu-x86_64_defconfig b/configs/qemu-x86_64_defconfig
index 32922b84ffa1..8d43acd4802e 100644
--- a/configs/qemu-x86_64_defconfig
+++ b/configs/qemu-x86_64_defconfig
@@ -31,7 +31,7 @@  CONFIG_SPL_SYS_MALLOC_SIMPLE=y
 CONFIG_SPL_CPU_SUPPORT=y
 CONFIG_SPL_ENV_SUPPORT=y
 CONFIG_SPL_NET_SUPPORT=y
-CONFIG_SPL_PCI_SUPPORT=y
+CONFIG_SPL_PCI=y
 CONFIG_SPL_PCH_SUPPORT=y
 CONFIG_SPL_RTC_SUPPORT=y
 CONFIG_HUSH_PARSER=y
diff --git a/drivers/Makefile b/drivers/Makefile
index 55de10926ef4..ad60a504ba05 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -10,7 +10,7 @@  obj-$(CONFIG_$(SPL_TPL_)LED) += led/
 obj-$(CONFIG_$(SPL_TPL_)MMC_SUPPORT) += mmc/
 obj-$(CONFIG_$(SPL_TPL_)NAND_SUPPORT) += mtd/nand/raw/
 obj-$(CONFIG_$(SPL_TPL_)PCH_SUPPORT) += pch/
-obj-$(CONFIG_$(SPL_TPL_)PCI_SUPPORT) += pci/
+obj-$(CONFIG_$(SPL_TPL_)PCI) += pci/
 obj-$(CONFIG_$(SPL_TPL_)PHY) += phy/
 obj-$(CONFIG_$(SPL_TPL_)PINCTRL) += pinctrl/
 obj-$(CONFIG_$(SPL_TPL_)RAM) += ram/
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 25b9d1724334..5087c99f4f35 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -406,7 +406,7 @@  int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
 
 	/* try Processor Local Bus device first */
 	addr = dev_read_addr(dev);
-#if defined(CONFIG_PCI) && defined(CONFIG_DM_PCI)
+#if CONFIG_IS_ENABLED(PCI) && defined(CONFIG_DM_PCI)
 	if (addr == FDT_ADDR_T_NONE) {
 		/* then try pci device */
 		struct fdt_pci_addr pci_addr;
diff --git a/lib/fdtdec.c b/lib/fdtdec.c
index cbdc0778258b..4c70b8881783 100644
--- a/lib/fdtdec.c
+++ b/lib/fdtdec.c
@@ -200,7 +200,7 @@  fdt_addr_t fdtdec_get_addr(const void *blob, int node, const char *prop_name)
 	return fdtdec_get_addr_size(blob, node, prop_name, NULL);
 }
 
-#if defined(CONFIG_PCI) && defined(CONFIG_DM_PCI)
+#if CONFIG_IS_ENABLED(PCI) && defined(CONFIG_DM_PCI)
 int fdtdec_get_pci_addr(const void *blob, int node, enum fdt_pci_space type,
 			const char *prop_name, struct fdt_pci_addr *addr)
 {