[U-Boot] [PATCH v0 4/7] x86: Provide more configuration granularity

Graeme Russ
2011-11-05T02:21:48Z

Planned future ports requires more granularity for some options

Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
---
arch/x86/lib/Makefile | 18 +++++++++---------
arch/x86/lib/board.c | 9 +++++++++
arch/x86/lib/bootm.c | 4 +++-
arch/x86/lib/pci.c | 37 +++++++++++++++++++++++++++++++++++++
arch/x86/lib/video_bios.c | 42 ------------------------------------------
common/cmd_bdinfo.c | 3 ++-
include/configs/eNET.h | 5 +++++
include/serial.h | 2 +-
8 files changed, 66 insertions(+), 54 deletions(-)

diff --git a/arch/x86/lib/Makefile b/arch/x86/lib/Makefile
index 71e94f7..eb5fa10 100644
--- a/arch/x86/lib/Makefile
+++ b/arch/x86/lib/Makefile
@@ -25,11 +25,11 @@ include $(TOPDIR)/config.mk

LIB = $(obj)lib$(ARCH).o

-SOBJS-y += bios.o
-SOBJS-y += bios_pci.o
-SOBJS-y += realmode_switch.o
+SOBJS-$(CONFIG_SYS_PC_BIOS) += bios.o
+SOBJS-$(CONFIG_SYS_PCI_BIOS) += bios_pci.o
+SOBJS-$(CONFIG_SYS_X86_REALMODE) += realmode_switch.o

-COBJS-y += bios_setup.o
+COBJS-$(CONFIG_SYS_PC_BIOS) += bios_setup.o
COBJS-y += board.o
COBJS-y += bootm.o
COBJS-y += interrupts.o
@@ -37,11 +37,11 @@ COBJS-$(CONFIG_SYS_PCAT_INTERRUPTS) += pcat_interrupts.o
COBJS-$(CONFIG_SYS_GENERIC_TIMER) += pcat_timer.o
COBJS-$(CONFIG_PCI) += pci.o
COBJS-$(CONFIG_PCI) += pci_type1.o
-COBJS-y += realmode.o
-COBJS-y += timer.o
-COBJS-y += video_bios.o
-COBJS-y += video.o
-COBJS-y += zimage.o
+COBJS-$(CONFIG_SYS_X86_REALMODE) += realmode.o
+COBJS-$(CONFIG_SYS_X86_ISR_TIMER) += timer.o
+COBJS-$(CONFIG_VIDEO) += video_bios.o
+COBJS-$(CONFIG_VIDEO) += video.o
+COBJS-$(CONFIG_CMD_ZBOOT) += zimage.o

SRCS := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c
index 8963580..0938104 100644
--- a/arch/x86/lib/board.c
+++ b/arch/x86/lib/board.c
@@ -110,11 +110,13 @@ static int display_dram_config (void)
return (0);
}

+#ifndef CONFIG_SYS_NO_FLASH
static void display_flash_config (ulong size)
{
puts ("Flash: ");
print_size (size, "\n");
}
+#endif

/*
* Breath some life into the board...
@@ -259,8 +261,12 @@ void board_init_f(ulong boot_flags)

void board_init_r(gd_t *id, ulong dest_addr)
{
+#if defined(CONFIG_CMD_NET)
char *s;
+#endif
+#ifndef CONFIG_SYS_NO_FLASH
ulong size;
+#endif
static bd_t bd_data;
static gd_t gd_data;
init_fnc_t **init_fnc_ptr;
@@ -292,10 +298,13 @@ void board_init_r(gd_t *id, ulong dest_addr)
#ifdef CONFIG_SERIAL_MULTI
serial_initialize();
#endif
+
+#ifndef CONFIG_SYS_NO_FLASH
/* configure available FLASH banks */
size = flash_init();
display_flash_config(size);
show_boot_progress(0x24);
+#endif

show_boot_progress(0x25);

diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c
index a21a21f..fc6a359 100644
--- a/arch/x86/lib/bootm.c
+++ b/arch/x86/lib/bootm.c
@@ -34,7 +34,7 @@
/*cmd_boot.c*/
int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *images)
{
- void *base_ptr;
+ void *base_ptr = NULL;
ulong os_data, os_len;
image_header_t *hdr;

@@ -72,8 +72,10 @@ int do_bootm_linux(int flag, int argc, char * const argv[], bootm_headers_t *ima
goto error;
}

+#ifdef CONFIG_CMD_ZBOOT
base_ptr = load_zimage ((void*)os_data, os_len,
images->rd_start, images->rd_end - images->rd_start, 0);
+#endif

if (NULL == base_ptr) {
printf ("## Kernel loading failed ...\n");
diff --git a/arch/x86/lib/pci.c b/arch/x86/lib/pci.c
index 593a7db..077a3f7 100644
--- a/arch/x86/lib/pci.c
+++ b/arch/x86/lib/pci.c
@@ -148,3 +148,40 @@ int pci_shadow_rom(pci_dev_t dev, unsigned char *dest)

return res;
}
+
+#ifdef PCI_BIOS_DEBUG
+#define RELOC_16(seg, off) *(u32*)(seg << 4 | (u32)&off)
+extern u32 num_pci_bios_present;
+extern u32 num_pci_bios_find_device;
+extern u32 num_pci_bios_find_class;
+extern u32 num_pci_bios_generate_special_cycle;
+extern u32 num_pci_bios_read_cfg_byte;
+extern u32 num_pci_bios_read_cfg_word;
+extern u32 num_pci_bios_read_cfg_dword;
+extern u32 num_pci_bios_write_cfg_byte;
+extern u32 num_pci_bios_write_cfg_word;
+extern u32 num_pci_bios_write_cfg_dword;
+extern u32 num_pci_bios_get_irq_routing;
+extern u32 num_pci_bios_set_irq;
+extern u32 num_pci_bios_unknown_function;
+
+void print_bios_bios_stat(void)
+{
+ printf("16 bit functions:\n");
+ printf("pci_bios_present: %d\n", RELOC_16(0xf000, num_pci_bios_present));
+ printf("pci_bios_find_device: %d\n", RELOC_16(0xf000, num_pci_bios_find_device));
+ printf("pci_bios_find_class: %d\n", RELOC_16(0xf000, num_pci_bios_find_class));
+ printf("pci_bios_generate_special_cycle: %d\n", RELOC_16(0xf000, num_pci_bios_generate_special_cycle));
+ printf("pci_bios_read_cfg_byte: %d\n", RELOC_16(0xf000, num_pci_bios_read_cfg_byte));
+ printf("pci_bios_read_cfg_word: %d\n", RELOC_16(0xf000, num_pci_bios_read_cfg_word));
+ printf("pci_bios_read_cfg_dword: %d\n", RELOC_16(0xf000, num_pci_bios_read_cfg_dword));
+ printf("pci_bios_write_cfg_byte: %d\n", RELOC_16(0xf000, num_pci_bios_write_cfg_byte));
+ printf("pci_bios_write_cfg_word: %d\n", RELOC_16(0xf000, num_pci_bios_write_cfg_word));
+ printf("pci_bios_write_cfg_dword: %d\n", RELOC_16(0xf000, num_pci_bios_write_cfg_dword));
+ printf("pci_bios_get_irq_routing: %d\n", RELOC_16(0xf000, num_pci_bios_get_irq_routing));
+ printf("pci_bios_set_irq: %d\n", RELOC_16(0xf000, num_pci_bios_set_irq));
+ printf("pci_bios_unknown_function: %d\n", RELOC_16(0xf000, num_pci_bios_unknown_function));
+
+}
+#endif
+
diff --git a/arch/x86/lib/video_bios.c b/arch/x86/lib/video_bios.c
index 7574f77..9d87280 100644
--- a/arch/x86/lib/video_bios.c
+++ b/arch/x86/lib/video_bios.c
@@ -38,46 +38,6 @@
#define PRINTF(fmt,args...)
#endif

-#ifdef CONFIG_PCI
-
-#ifdef PCI_BIOS_DEBUG
-#define RELOC_16(seg, off) *(u32*)(seg << 4 | (u32)&off)
-extern u32 num_pci_bios_present;
-extern u32 num_pci_bios_find_device;
-extern u32 num_pci_bios_find_class;
-extern u32 num_pci_bios_generate_special_cycle;
-extern u32 num_pci_bios_read_cfg_byte;
-extern u32 num_pci_bios_read_cfg_word;
-extern u32 num_pci_bios_read_cfg_dword;
-extern u32 num_pci_bios_write_cfg_byte;
-extern u32 num_pci_bios_write_cfg_word;
-extern u32 num_pci_bios_write_cfg_dword;
-extern u32 num_pci_bios_get_irq_routing;
-extern u32 num_pci_bios_set_irq;
-extern u32 num_pci_bios_unknown_function;
-
-void print_bios_bios_stat(void)
-{
- printf("16 bit functions:\n");
- printf("pci_bios_present: %d\n", RELOC_16(0xf000, num_pci_bios_present));
- printf("pci_bios_find_device: %d\n", RELOC_16(0xf000, num_pci_bios_find_device));
- printf("pci_bios_find_class: %d\n", RELOC_16(0xf000, num_pci_bios_find_class));
- printf("pci_bios_generate_special_cycle: %d\n", RELOC_16(0xf000, num_pci_bios_generate_special_cycle));
- printf("pci_bios_read_cfg_byte: %d\n", RELOC_16(0xf000, num_pci_bios_read_cfg_byte));
- printf("pci_bios_read_cfg_word: %d\n", RELOC_16(0xf000, num_pci_bios_read_cfg_word));
- printf("pci_bios_read_cfg_dword: %d\n", RELOC_16(0xf000, num_pci_bios_read_cfg_dword));
- printf("pci_bios_write_cfg_byte: %d\n", RELOC_16(0xf000, num_pci_bios_write_cfg_byte));
- printf("pci_bios_write_cfg_word: %d\n", RELOC_16(0xf000, num_pci_bios_write_cfg_word));
- printf("pci_bios_write_cfg_dword: %d\n", RELOC_16(0xf000, num_pci_bios_write_cfg_dword));
- printf("pci_bios_get_irq_routing: %d\n", RELOC_16(0xf000, num_pci_bios_get_irq_routing));
- printf("pci_bios_set_irq: %d\n", RELOC_16(0xf000, num_pci_bios_set_irq));
- printf("pci_bios_unknown_function: %d\n", RELOC_16(0xf000, num_pci_bios_unknown_function));
-
-}
-#endif
-
-#ifdef CONFIG_VIDEO
-
#define PCI_CLASS_VIDEO 3
#define PCI_CLASS_VIDEO_STD 0
#define PCI_CLASS_VIDEO_PROG_IF_VGA 0
@@ -218,5 +178,3 @@ int video_bios_init(void)
return 1;

}
-#endif
-#endif
diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
index 688b238..6c48594 100644
--- a/common/cmd_bdinfo.c
+++ b/common/cmd_bdinfo.c
@@ -31,7 +31,8 @@ DECLARE_GLOBAL_DATA_PTR;

static void print_num(const char *, ulong);

-#if !(defined(CONFIG_ARM) || defined(CONFIG_M68K) || defined(CONFIG_SANDBOX)) \
+#if !(defined(CONFIG_ARM) || defined(CONFIG_M68K) || \
+ defined(CONFIG_SANDBOX) || defined(CONFIG_X86)) \
|| defined(CONFIG_CMD_NET)
#define HAVE_PRINT_ETH
static void print_eth(int idx);
diff --git a/include/configs/eNET.h b/include/configs/eNET.h
index 70c74f6..d5c9cad 100644
--- a/include/configs/eNET.h
+++ b/include/configs/eNET.h
@@ -105,6 +105,7 @@
#define CONFIG_CMD_SETGETDCR
#define CONFIG_CMD_SOURCE
#define CONFIG_CMD_XIMG
+#define CONFIG_CMD_ZBOOT

#define CONFIG_BOOTDELAY 15
#define CONFIG_BOOTARGS "root=/dev/mtdblock0 console=ttyS0,9600"
@@ -153,6 +154,10 @@
#undef CONFIG_SYS_GENERIC_TIMER
#define CONFIG_SYS_PCAT_INTERRUPTS
#define CONFIG_SYS_NUM_IRQS 16
+#define CONFIG_SYS_PC_BIOS
+#define CONFIG_SYS_PCI_BIOS
+#define CONFIG_SYS_X86_REALMODE
+#define CONFIG_SYS_X86_ISR_TIMER

/*-----------------------------------------------------------------------
* Memory organization:
diff --git a/include/serial.h b/include/serial.h
index 5926244..8396e61 100644
--- a/include/serial.h
+++ b/include/serial.h
@@ -31,7 +31,7 @@ extern struct serial_device * default_serial_console (void);
defined(CONFIG_MB86R0x) || defined(CONFIG_MPC5xxx) || \
defined(CONFIG_MPC83xx) || defined(CONFIG_MPC85xx) || \
defined(CONFIG_MPC86xx) || defined(CONFIG_SYS_SC520) || \
- defined(CONFIG_TEGRA2)
+ defined(CONFIG_SYS_E660) || defined(CONFIG_TEGRA2)
extern struct serial_device serial0_device;
extern struct serial_device serial1_device;
#if defined(CONFIG_SYS_NS16550_SERIAL)
--
1.7.5.2.317.g391b14