The changes introduced in commit cc22b4c18540e5e8bf55c7d124044f9317527d3c "ARM: set vga memory base at run-time" Makes the Integrator/AP freeze completely. I appears that this is due to the VGA base address being assigned at PCI init time, while this base is needed earlier than that. Moving the initialization of the base address to the .map_io function solves this problem.
Unified · Split
| @@ -32,6 +32,7 @@ · 31 unmodified lines | ||
| 32 | 32 | #include <linux/interrupt.h> |
| 33 | 33 | #include <linux/io.h> |
| 34 | 34 | #include <linux/mtd/physmap.h> |
| 35 | +#include <video/vga.h> | |
| 35 | 36 | |
| 36 | 37 | #include <mach/hardware.h> |
| 37 | 38 | #include <mach/platform.h> |
| @@ -154,6 +155,7 @@ static struct map_desc ap_io_desc[] __initdata = { · 116 unmodified lines | ||
| 154 | 155 | static void __init ap_map_io(void) |
| 155 | 156 | { |
| 156 | 157 | iotable_init(ap_io_desc, ARRAY_SIZE(ap_io_desc)); |
| 158 | + vga_base = PCI_MEMORY_VADDR; | |
| 157 | 159 | } |
| 158 | 160 | |
| 159 | 161 | #define INTEGRATOR_SC_VALID_INT 0x003fffff |
| @@ -27,7 +27,6 @@ · 26 unmodified lines | ||
| 27 | 27 | #include <linux/spinlock.h> |
| 28 | 28 | #include <linux/init.h> |
| 29 | 29 | #include <linux/io.h> |
| 30 | −#include <video/vga.h> | |
| 31 | 30 | |
| 32 | 31 | #include <mach/hardware.h> |
| 33 | 32 | #include <mach/platform.h> |
| @@ -505,7 +504,6 @@ void __init pci_v3_preinit(void) · 471 unmodified lines | ||
| 505 | 504 | |
| 506 | 505 | pcibios_min_io = 0x6000; |
| 507 | 506 | pcibios_min_mem = 0x00100000; |
| 508 | − vga_base = PCI_MEMORY_VADDR; | |
| 509 | 507 | |
| 510 | 508 | /* |
| 511 | 509 | * Hook in our fault handler for PCI errors |