
On Tue, Dec 30, 2014 at 10:32 AM, Simon Glass sjg@chromium.org wrote:
We shouldn't assume that the VGA ROM can always be loaded at c0000. This is only true on x86 machines.
Signed-off-by: Simon Glass sjg@chromium.org
arch/x86/include/asm/u-boot-x86.h | 2 ++ drivers/pci/pci_rom.c | 6 ++++++ include/pci_rom.h | 1 - 3 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/arch/x86/include/asm/u-boot-x86.h b/arch/x86/include/asm/u-boot-x86.h index 36145cb..b98afa8 100644 --- a/arch/x86/include/asm/u-boot-x86.h +++ b/arch/x86/include/asm/u-boot-x86.h @@ -70,4 +70,6 @@ uint64_t timer_get_tsc(void);
void quick_ram_check(void);
+#define PCI_VGA_RAM_IMAGE_START 0xc0000
#endif /* _U_BOOT_I386_H_ */ diff --git a/drivers/pci/pci_rom.c b/drivers/pci/pci_rom.c index 86f0e95..124b730 100644 --- a/drivers/pci/pci_rom.c +++ b/drivers/pci/pci_rom.c @@ -157,7 +157,13 @@ int pci_rom_load(uint16_t class, struct pci_rom_header *rom_header,
rom_size = rom_header->size * 512;
+#ifdef PCI_VGA_RAM_IMAGE_START target = (void *)PCI_VGA_RAM_IMAGE_START; +#else
target = (void *)malloc(rom_size);
if (!target)
return -ENOMEM;
+#endif if (target != rom_header) { ulong start = get_timer(0);
diff --git a/include/pci_rom.h b/include/pci_rom.h index 8b2674c..4ba36eb 100644 --- a/include/pci_rom.h +++ b/include/pci_rom.h @@ -8,7 +8,6 @@ #define _PCI_ROM_H
#define PCI_ROM_HDR 0xaa55 -#define PCI_VGA_RAM_IMAGE_START 0xc0000
struct pci_rom_header { uint16_t signature; --
Reviewed-by: Bin Meng bmeng.cn@gmail.com