Correct NAND erase block size. Misc fixes in Spitz code.
[qemu] / hw / spitz.c
index 84cd305..72b049e 100644 (file)
@@ -992,26 +992,28 @@ enum spitz_model_e { spitz, akita, borzoi, terrier };
 static void spitz_common_init(int ram_size, int vga_ram_size,
                 DisplayState *ds, const char *kernel_filename,
                 const char *kernel_cmdline, const char *initrd_filename,
-                enum spitz_model_e model, int arm_id)
+                const char *cpu_model, enum spitz_model_e model, int arm_id)
 {
     uint32_t spitz_ram = 0x04000000;
     uint32_t spitz_rom = 0x00800000;
     struct pxa2xx_state_s *cpu;
     struct scoop_info_s *scp;
 
-    cpu = pxa270_init(ds, (model == terrier) ? "c5" : "c0");
+    if (!cpu_model)
+        cpu_model = (model == terrier) ? "pxa270-c5" : "pxa270-c0";
 
-    /* Setup memory */
-    if (ram_size < spitz_ram + spitz_rom) {
+    /* Setup CPU & memory */
+    if (ram_size < spitz_ram + spitz_rom + PXA2XX_INTERNAL_SIZE) {
         fprintf(stderr, "This platform requires %i bytes of memory\n",
-                        spitz_ram + spitz_rom);
+                        spitz_ram + spitz_rom + PXA2XX_INTERNAL_SIZE);
         exit(1);
     }
-    cpu_register_physical_memory(PXA2XX_RAM_BASE, spitz_ram, IO_MEM_RAM);
+    cpu = pxa270_init(spitz_ram, ds, cpu_model);
 
     sl_flash_register(cpu, (model == spitz) ? FLASH_128M : FLASH_1024M);
 
-    cpu_register_physical_memory(0, spitz_rom, spitz_ram | IO_MEM_ROM);
+    cpu_register_physical_memory(0, spitz_rom,
+                    qemu_ram_alloc(spitz_rom) | IO_MEM_ROM);
 
     /* Setup peripherals */
     spitz_keyboard_register(cpu);
@@ -1032,11 +1034,11 @@ static void spitz_common_init(int ram_size, int vga_ram_size,
         spitz_microdrive_attach(cpu);
 
     /* Setup initial (reset) machine state */
-    cpu->env->regs[15] = PXA2XX_RAM_BASE;
+    cpu->env->regs[15] = PXA2XX_SDRAM_BASE;
 
-    arm_load_kernel(cpu->env, ram_size, kernel_filename, kernel_cmdline,
-                    initrd_filename, arm_id);
-    sl_bootparam_write(SL_PXA_PARAM_BASE - PXA2XX_RAM_BASE);
+    arm_load_kernel(cpu->env, spitz_ram, kernel_filename, kernel_cmdline,
+                    initrd_filename, arm_id, PXA2XX_SDRAM_BASE);
+    sl_bootparam_write(SL_PXA_PARAM_BASE - PXA2XX_SDRAM_BASE);
 }
 
 static void spitz_init(int ram_size, int vga_ram_size, int boot_device,
@@ -1045,7 +1047,7 @@ static void spitz_init(int ram_size, int vga_ram_size, int boot_device,
                 const char *initrd_filename, const char *cpu_model)
 {
     spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename,
-                kernel_cmdline, initrd_filename, spitz, 0x2c9);
+                kernel_cmdline, initrd_filename, cpu_model, spitz, 0x2c9);
 }
 
 static void borzoi_init(int ram_size, int vga_ram_size, int boot_device,
@@ -1054,7 +1056,7 @@ static void borzoi_init(int ram_size, int vga_ram_size, int boot_device,
                 const char *initrd_filename, const char *cpu_model)
 {
     spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename,
-                kernel_cmdline, initrd_filename, borzoi, 0x33f);
+                kernel_cmdline, initrd_filename, cpu_model, borzoi, 0x33f);
 }
 
 static void akita_init(int ram_size, int vga_ram_size, int boot_device,
@@ -1063,7 +1065,7 @@ static void akita_init(int ram_size, int vga_ram_size, int boot_device,
                 const char *initrd_filename, const char *cpu_model)
 {
     spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename,
-                kernel_cmdline, initrd_filename, akita, 0x2e8);
+                kernel_cmdline, initrd_filename, cpu_model, akita, 0x2e8);
 }
 
 static void terrier_init(int ram_size, int vga_ram_size, int boot_device,
@@ -1072,7 +1074,7 @@ static void terrier_init(int ram_size, int vga_ram_size, int boot_device,
                 const char *initrd_filename, const char *cpu_model)
 {
     spitz_common_init(ram_size, vga_ram_size, ds, kernel_filename,
-                kernel_cmdline, initrd_filename, terrier, 0x33f);
+                kernel_cmdline, initrd_filename, cpu_model, terrier, 0x33f);
 }
 
 QEMUMachine akitapda_machine = {