Commit 7fa9ae1aaab87bd197a34623a1c264dca51d6217

Authored by blueswir1
1 parent b4ed08e0

Use ESCC for PowerMac serial

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6271 c046a42c-6fe2-441c-8c8c-71466251a162
Makefile.target
@@ -646,7 +646,7 @@ OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o @@ -646,7 +646,7 @@ OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
646 OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o 646 OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
647 OBJS+= prep_pci.o ppc_prep.o 647 OBJS+= prep_pci.o ppc_prep.o
648 # Mac shared devices 648 # Mac shared devices
649 -OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o 649 +OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o
650 # OldWorld PowerMac 650 # OldWorld PowerMac
651 OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o 651 OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
652 # NewWorld PowerMac 652 # NewWorld PowerMac
hw/macio.c
@@ -25,6 +25,7 @@ @@ -25,6 +25,7 @@
25 #include "hw.h" 25 #include "hw.h"
26 #include "ppc_mac.h" 26 #include "ppc_mac.h"
27 #include "pci.h" 27 #include "pci.h"
  28 +#include "escc.h"
28 29
29 typedef struct macio_state_t macio_state_t; 30 typedef struct macio_state_t macio_state_t;
30 struct macio_state_t { 31 struct macio_state_t {
@@ -32,6 +33,7 @@ struct macio_state_t { @@ -32,6 +33,7 @@ struct macio_state_t {
32 int pic_mem_index; 33 int pic_mem_index;
33 int dbdma_mem_index; 34 int dbdma_mem_index;
34 int cuda_mem_index; 35 int cuda_mem_index;
  36 + int escc_mem_index;
35 void *nvram; 37 void *nvram;
36 int nb_ide; 38 int nb_ide;
37 int ide_mem_index[4]; 39 int ide_mem_index[4];
@@ -59,6 +61,10 @@ static void macio_map (PCIDevice *pci_dev, int region_num, @@ -59,6 +61,10 @@ static void macio_map (PCIDevice *pci_dev, int region_num,
59 cpu_register_physical_memory(addr + 0x08000, 0x1000, 61 cpu_register_physical_memory(addr + 0x08000, 0x1000,
60 macio_state->dbdma_mem_index); 62 macio_state->dbdma_mem_index);
61 } 63 }
  64 + if (macio_state->escc_mem_index >= 0) {
  65 + cpu_register_physical_memory(addr + 0x13000, ESCC_SIZE << 4,
  66 + macio_state->escc_mem_index);
  67 + }
62 if (macio_state->cuda_mem_index >= 0) { 68 if (macio_state->cuda_mem_index >= 0) {
63 cpu_register_physical_memory(addr + 0x16000, 0x2000, 69 cpu_register_physical_memory(addr + 0x16000, 0x2000,
64 macio_state->cuda_mem_index); 70 macio_state->cuda_mem_index);
@@ -75,7 +81,7 @@ static void macio_map (PCIDevice *pci_dev, int region_num, @@ -75,7 +81,7 @@ static void macio_map (PCIDevice *pci_dev, int region_num,
75 81
76 void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index, 82 void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
77 int dbdma_mem_index, int cuda_mem_index, void *nvram, 83 int dbdma_mem_index, int cuda_mem_index, void *nvram,
78 - int nb_ide, int *ide_mem_index) 84 + int nb_ide, int *ide_mem_index, int escc_mem_index)
79 { 85 {
80 PCIDevice *d; 86 PCIDevice *d;
81 macio_state_t *macio_state; 87 macio_state_t *macio_state;
@@ -89,6 +95,7 @@ void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index, @@ -89,6 +95,7 @@ void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
89 macio_state->pic_mem_index = pic_mem_index; 95 macio_state->pic_mem_index = pic_mem_index;
90 macio_state->dbdma_mem_index = dbdma_mem_index; 96 macio_state->dbdma_mem_index = dbdma_mem_index;
91 macio_state->cuda_mem_index = cuda_mem_index; 97 macio_state->cuda_mem_index = cuda_mem_index;
  98 + macio_state->escc_mem_index = escc_mem_index;
92 macio_state->nvram = nvram; 99 macio_state->nvram = nvram;
93 if (nb_ide > 4) 100 if (nb_ide > 4)
94 nb_ide = 4; 101 nb_ide = 4;
hw/ppc_chrp.c
@@ -31,6 +31,7 @@ @@ -31,6 +31,7 @@
31 #include "net.h" 31 #include "net.h"
32 #include "sysemu.h" 32 #include "sysemu.h"
33 #include "boards.h" 33 #include "boards.h"
  34 +#include "escc.h"
34 35
35 #define MAX_IDE_BUS 2 36 #define MAX_IDE_BUS 2
36 37
@@ -80,7 +81,7 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size, @@ -80,7 +81,7 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size,
80 m48t59_t *m48t59; 81 m48t59_t *m48t59;
81 int vga_bios_size, bios_size; 82 int vga_bios_size, bios_size;
82 qemu_irq *dummy_irq; 83 qemu_irq *dummy_irq;
83 - int pic_mem_index, dbdma_mem_index, cuda_mem_index; 84 + int pic_mem_index, dbdma_mem_index, cuda_mem_index, escc_mem_index;
84 int ide_mem_index[2]; 85 int ide_mem_index[2];
85 int ppc_boot_device; 86 int ppc_boot_device;
86 int index; 87 int index;
@@ -262,8 +263,8 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size, @@ -262,8 +263,8 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size,
262 /* XXX: suppress that */ 263 /* XXX: suppress that */
263 dummy_irq = i8259_init(NULL); 264 dummy_irq = i8259_init(NULL);
264 265
265 - /* XXX: use Mac Serial port */  
266 - serial_init(0x3f8, dummy_irq[4], 115200, serial_hds[0]); 266 + escc_mem_index = escc_init(0x80013000, dummy_irq[4], serial_hds[0],
  267 + serial_hds[1], ESCC_CLOCK, 4);
267 for(i = 0; i < nb_nics; i++) { 268 for(i = 0; i < nb_nics; i++) {
268 if (!nd_table[i].model) 269 if (!nd_table[i].model)
269 nd_table[i].model = "ne2k_pci"; 270 nd_table[i].model = "ne2k_pci";
@@ -295,7 +296,7 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size, @@ -295,7 +296,7 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size,
295 dbdma_init(&dbdma_mem_index); 296 dbdma_init(&dbdma_mem_index);
296 297
297 macio_init(pci_bus, 0x0022, 0, pic_mem_index, dbdma_mem_index, 298 macio_init(pci_bus, 0x0022, 0, pic_mem_index, dbdma_mem_index,
298 - cuda_mem_index, NULL, 2, ide_mem_index); 299 + cuda_mem_index, NULL, 2, ide_mem_index, escc_mem_index);
299 300
300 if (usb_enabled) { 301 if (usb_enabled) {
301 usb_ohci_init_pci(pci_bus, 3, -1); 302 usb_ohci_init_pci(pci_bus, 3, -1);
hw/ppc_mac.h
@@ -37,6 +37,8 @@ @@ -37,6 +37,8 @@
37 #define KERNEL_LOAD_ADDR 0x01000000 37 #define KERNEL_LOAD_ADDR 0x01000000
38 #define INITRD_LOAD_ADDR 0x01800000 38 #define INITRD_LOAD_ADDR 0x01800000
39 39
  40 +#define ESCC_CLOCK 3686400
  41 +
40 /* DBDMA */ 42 /* DBDMA */
41 void dbdma_init (int *dbdma_mem_index); 43 void dbdma_init (int *dbdma_mem_index);
42 44
@@ -46,7 +48,7 @@ void cuda_init (int *cuda_mem_index, qemu_irq irq); @@ -46,7 +48,7 @@ void cuda_init (int *cuda_mem_index, qemu_irq irq);
46 /* MacIO */ 48 /* MacIO */
47 void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index, 49 void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
48 int dbdma_mem_index, int cuda_mem_index, void *nvram, 50 int dbdma_mem_index, int cuda_mem_index, void *nvram,
49 - int nb_ide, int *ide_mem_index); 51 + int nb_ide, int *ide_mem_index, int escc_mem_index);
50 52
51 /* NewWorld PowerMac IDE */ 53 /* NewWorld PowerMac IDE */
52 int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq); 54 int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq);
hw/ppc_oldworld.c
@@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
33 #include "pci.h" 33 #include "pci.h"
34 #include "boards.h" 34 #include "boards.h"
35 #include "fw_cfg.h" 35 #include "fw_cfg.h"
  36 +#include "escc.h"
36 37
37 #define MAX_IDE_BUS 2 38 #define MAX_IDE_BUS 2
38 #define VGA_BIOS_SIZE 65536 39 #define VGA_BIOS_SIZE 65536
@@ -126,7 +127,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, @@ -126,7 +127,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size,
126 int vga_bios_size, bios_size; 127 int vga_bios_size, bios_size;
127 qemu_irq *dummy_irq; 128 qemu_irq *dummy_irq;
128 int pic_mem_index, nvram_mem_index, dbdma_mem_index, cuda_mem_index; 129 int pic_mem_index, nvram_mem_index, dbdma_mem_index, cuda_mem_index;
129 - int ide_mem_index[2]; 130 + int escc_mem_index, ide_mem_index[2];
130 int ppc_boot_device; 131 int ppc_boot_device;
131 BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS]; 132 BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
132 int index; 133 int index;
@@ -296,8 +297,8 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, @@ -296,8 +297,8 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size,
296 /* XXX: suppress that */ 297 /* XXX: suppress that */
297 dummy_irq = i8259_init(NULL); 298 dummy_irq = i8259_init(NULL);
298 299
299 - /* XXX: use Mac Serial port */  
300 - serial_init(0x3f8, dummy_irq[4], 115200, serial_hds[0]); 300 + escc_mem_index = escc_init(0x80013000, pic[0x10], serial_hds[0],
  301 + serial_hds[1], ESCC_CLOCK, 4);
301 302
302 for(i = 0; i < nb_nics; i++) { 303 for(i = 0; i < nb_nics; i++) {
303 if (!nd_table[i].model) 304 if (!nd_table[i].model)
@@ -350,7 +351,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, @@ -350,7 +351,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size,
350 dbdma_init(&dbdma_mem_index); 351 dbdma_init(&dbdma_mem_index);
351 352
352 macio_init(pci_bus, 0x0010, 1, pic_mem_index, dbdma_mem_index, 353 macio_init(pci_bus, 0x0010, 1, pic_mem_index, dbdma_mem_index,
353 - cuda_mem_index, nvr, 2, ide_mem_index); 354 + cuda_mem_index, nvr, 2, ide_mem_index, escc_mem_index);
354 355
355 if (usb_enabled) { 356 if (usb_enabled) {
356 usb_ohci_init_pci(pci_bus, 3, -1); 357 usb_ohci_init_pci(pci_bus, 3, -1);