Use ESCC for PowerMac serial
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6271 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
b4ed08e09e
commit
7fa9ae1aaa
@ -646,7 +646,7 @@ OBJS+= ppc.o ide.o vga.o $(SOUND_HW) dma.o openpic.o
|
|||||||
OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
|
OBJS+= pckbd.o ps2.o serial.o i8259.o i8254.o fdc.o m48t59.o mc146818rtc.o
|
||||||
OBJS+= prep_pci.o ppc_prep.o
|
OBJS+= prep_pci.o ppc_prep.o
|
||||||
# Mac shared devices
|
# Mac shared devices
|
||||||
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o
|
OBJS+= macio.o cuda.o adb.o mac_nvram.o mac_dbdma.o escc.o
|
||||||
# OldWorld PowerMac
|
# OldWorld PowerMac
|
||||||
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
|
OBJS+= heathrow_pic.o grackle_pci.o ppc_oldworld.o
|
||||||
# NewWorld PowerMac
|
# NewWorld PowerMac
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "hw.h"
|
#include "hw.h"
|
||||||
#include "ppc_mac.h"
|
#include "ppc_mac.h"
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
|
#include "escc.h"
|
||||||
|
|
||||||
typedef struct macio_state_t macio_state_t;
|
typedef struct macio_state_t macio_state_t;
|
||||||
struct macio_state_t {
|
struct macio_state_t {
|
||||||
@ -32,6 +33,7 @@ struct macio_state_t {
|
|||||||
int pic_mem_index;
|
int pic_mem_index;
|
||||||
int dbdma_mem_index;
|
int dbdma_mem_index;
|
||||||
int cuda_mem_index;
|
int cuda_mem_index;
|
||||||
|
int escc_mem_index;
|
||||||
void *nvram;
|
void *nvram;
|
||||||
int nb_ide;
|
int nb_ide;
|
||||||
int ide_mem_index[4];
|
int ide_mem_index[4];
|
||||||
@ -59,6 +61,10 @@ static void macio_map (PCIDevice *pci_dev, int region_num,
|
|||||||
cpu_register_physical_memory(addr + 0x08000, 0x1000,
|
cpu_register_physical_memory(addr + 0x08000, 0x1000,
|
||||||
macio_state->dbdma_mem_index);
|
macio_state->dbdma_mem_index);
|
||||||
}
|
}
|
||||||
|
if (macio_state->escc_mem_index >= 0) {
|
||||||
|
cpu_register_physical_memory(addr + 0x13000, ESCC_SIZE << 4,
|
||||||
|
macio_state->escc_mem_index);
|
||||||
|
}
|
||||||
if (macio_state->cuda_mem_index >= 0) {
|
if (macio_state->cuda_mem_index >= 0) {
|
||||||
cpu_register_physical_memory(addr + 0x16000, 0x2000,
|
cpu_register_physical_memory(addr + 0x16000, 0x2000,
|
||||||
macio_state->cuda_mem_index);
|
macio_state->cuda_mem_index);
|
||||||
@ -75,7 +81,7 @@ static void macio_map (PCIDevice *pci_dev, int region_num,
|
|||||||
|
|
||||||
void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
|
void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
|
||||||
int dbdma_mem_index, int cuda_mem_index, void *nvram,
|
int dbdma_mem_index, int cuda_mem_index, void *nvram,
|
||||||
int nb_ide, int *ide_mem_index)
|
int nb_ide, int *ide_mem_index, int escc_mem_index)
|
||||||
{
|
{
|
||||||
PCIDevice *d;
|
PCIDevice *d;
|
||||||
macio_state_t *macio_state;
|
macio_state_t *macio_state;
|
||||||
@ -89,6 +95,7 @@ void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
|
|||||||
macio_state->pic_mem_index = pic_mem_index;
|
macio_state->pic_mem_index = pic_mem_index;
|
||||||
macio_state->dbdma_mem_index = dbdma_mem_index;
|
macio_state->dbdma_mem_index = dbdma_mem_index;
|
||||||
macio_state->cuda_mem_index = cuda_mem_index;
|
macio_state->cuda_mem_index = cuda_mem_index;
|
||||||
|
macio_state->escc_mem_index = escc_mem_index;
|
||||||
macio_state->nvram = nvram;
|
macio_state->nvram = nvram;
|
||||||
if (nb_ide > 4)
|
if (nb_ide > 4)
|
||||||
nb_ide = 4;
|
nb_ide = 4;
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "net.h"
|
#include "net.h"
|
||||||
#include "sysemu.h"
|
#include "sysemu.h"
|
||||||
#include "boards.h"
|
#include "boards.h"
|
||||||
|
#include "escc.h"
|
||||||
|
|
||||||
#define MAX_IDE_BUS 2
|
#define MAX_IDE_BUS 2
|
||||||
|
|
||||||
@ -80,7 +81,7 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size,
|
|||||||
m48t59_t *m48t59;
|
m48t59_t *m48t59;
|
||||||
int vga_bios_size, bios_size;
|
int vga_bios_size, bios_size;
|
||||||
qemu_irq *dummy_irq;
|
qemu_irq *dummy_irq;
|
||||||
int pic_mem_index, dbdma_mem_index, cuda_mem_index;
|
int pic_mem_index, dbdma_mem_index, cuda_mem_index, escc_mem_index;
|
||||||
int ide_mem_index[2];
|
int ide_mem_index[2];
|
||||||
int ppc_boot_device;
|
int ppc_boot_device;
|
||||||
int index;
|
int index;
|
||||||
@ -262,8 +263,8 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size,
|
|||||||
/* XXX: suppress that */
|
/* XXX: suppress that */
|
||||||
dummy_irq = i8259_init(NULL);
|
dummy_irq = i8259_init(NULL);
|
||||||
|
|
||||||
/* XXX: use Mac Serial port */
|
escc_mem_index = escc_init(0x80013000, dummy_irq[4], serial_hds[0],
|
||||||
serial_init(0x3f8, dummy_irq[4], 115200, serial_hds[0]);
|
serial_hds[1], ESCC_CLOCK, 4);
|
||||||
for(i = 0; i < nb_nics; i++) {
|
for(i = 0; i < nb_nics; i++) {
|
||||||
if (!nd_table[i].model)
|
if (!nd_table[i].model)
|
||||||
nd_table[i].model = "ne2k_pci";
|
nd_table[i].model = "ne2k_pci";
|
||||||
@ -295,7 +296,7 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size,
|
|||||||
dbdma_init(&dbdma_mem_index);
|
dbdma_init(&dbdma_mem_index);
|
||||||
|
|
||||||
macio_init(pci_bus, 0x0022, 0, pic_mem_index, dbdma_mem_index,
|
macio_init(pci_bus, 0x0022, 0, pic_mem_index, dbdma_mem_index,
|
||||||
cuda_mem_index, NULL, 2, ide_mem_index);
|
cuda_mem_index, NULL, 2, ide_mem_index, escc_mem_index);
|
||||||
|
|
||||||
if (usb_enabled) {
|
if (usb_enabled) {
|
||||||
usb_ohci_init_pci(pci_bus, 3, -1);
|
usb_ohci_init_pci(pci_bus, 3, -1);
|
||||||
|
@ -37,6 +37,8 @@
|
|||||||
#define KERNEL_LOAD_ADDR 0x01000000
|
#define KERNEL_LOAD_ADDR 0x01000000
|
||||||
#define INITRD_LOAD_ADDR 0x01800000
|
#define INITRD_LOAD_ADDR 0x01800000
|
||||||
|
|
||||||
|
#define ESCC_CLOCK 3686400
|
||||||
|
|
||||||
/* DBDMA */
|
/* DBDMA */
|
||||||
void dbdma_init (int *dbdma_mem_index);
|
void dbdma_init (int *dbdma_mem_index);
|
||||||
|
|
||||||
@ -46,7 +48,7 @@ void cuda_init (int *cuda_mem_index, qemu_irq irq);
|
|||||||
/* MacIO */
|
/* MacIO */
|
||||||
void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
|
void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
|
||||||
int dbdma_mem_index, int cuda_mem_index, void *nvram,
|
int dbdma_mem_index, int cuda_mem_index, void *nvram,
|
||||||
int nb_ide, int *ide_mem_index);
|
int nb_ide, int *ide_mem_index, int escc_mem_index);
|
||||||
|
|
||||||
/* NewWorld PowerMac IDE */
|
/* NewWorld PowerMac IDE */
|
||||||
int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq);
|
int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq);
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
#include "boards.h"
|
#include "boards.h"
|
||||||
#include "fw_cfg.h"
|
#include "fw_cfg.h"
|
||||||
|
#include "escc.h"
|
||||||
|
|
||||||
#define MAX_IDE_BUS 2
|
#define MAX_IDE_BUS 2
|
||||||
#define VGA_BIOS_SIZE 65536
|
#define VGA_BIOS_SIZE 65536
|
||||||
@ -126,7 +127,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size,
|
|||||||
int vga_bios_size, bios_size;
|
int vga_bios_size, bios_size;
|
||||||
qemu_irq *dummy_irq;
|
qemu_irq *dummy_irq;
|
||||||
int pic_mem_index, nvram_mem_index, dbdma_mem_index, cuda_mem_index;
|
int pic_mem_index, nvram_mem_index, dbdma_mem_index, cuda_mem_index;
|
||||||
int ide_mem_index[2];
|
int escc_mem_index, ide_mem_index[2];
|
||||||
int ppc_boot_device;
|
int ppc_boot_device;
|
||||||
BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
BlockDriverState *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
|
||||||
int index;
|
int index;
|
||||||
@ -296,8 +297,8 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size,
|
|||||||
/* XXX: suppress that */
|
/* XXX: suppress that */
|
||||||
dummy_irq = i8259_init(NULL);
|
dummy_irq = i8259_init(NULL);
|
||||||
|
|
||||||
/* XXX: use Mac Serial port */
|
escc_mem_index = escc_init(0x80013000, pic[0x10], serial_hds[0],
|
||||||
serial_init(0x3f8, dummy_irq[4], 115200, serial_hds[0]);
|
serial_hds[1], ESCC_CLOCK, 4);
|
||||||
|
|
||||||
for(i = 0; i < nb_nics; i++) {
|
for(i = 0; i < nb_nics; i++) {
|
||||||
if (!nd_table[i].model)
|
if (!nd_table[i].model)
|
||||||
@ -350,7 +351,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size,
|
|||||||
dbdma_init(&dbdma_mem_index);
|
dbdma_init(&dbdma_mem_index);
|
||||||
|
|
||||||
macio_init(pci_bus, 0x0010, 1, pic_mem_index, dbdma_mem_index,
|
macio_init(pci_bus, 0x0010, 1, pic_mem_index, dbdma_mem_index,
|
||||||
cuda_mem_index, nvr, 2, ide_mem_index);
|
cuda_mem_index, nvr, 2, ide_mem_index, escc_mem_index);
|
||||||
|
|
||||||
if (usb_enabled) {
|
if (usb_enabled) {
|
||||||
usb_ohci_init_pci(pci_bus, 3, -1);
|
usb_ohci_init_pci(pci_bus, 3, -1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user