00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #if !defined(__PPC_MAC_H__)
00026 #define __PPC_MAC_H__
00027
00028
00029 #define MAX_CPUS 1
00030
00031 #define BIOS_FILENAME "ppc_rom.bin"
00032 #define VGABIOS_FILENAME "video.x"
00033 #define NVRAM_SIZE 0x2000
00034 #define PROM_FILENAME "openbios-ppc"
00035 #define PROM_ADDR 0xfff00000
00036
00037 #define KERNEL_LOAD_ADDR 0x01000000
00038 #define INITRD_LOAD_ADDR 0x01800000
00039
00040 #define ESCC_CLOCK 3686400
00041
00042
00043 void cuda_init (int *cuda_mem_index, qemu_irq irq);
00044
00045
00046 void macio_init (PCIBus *bus, int device_id, int is_oldworld, int pic_mem_index,
00047 int dbdma_mem_index, int cuda_mem_index, void *nvram,
00048 int nb_ide, int *ide_mem_index, int escc_mem_index);
00049
00050
00051 int pmac_ide_init (BlockDriverState **hd_table, qemu_irq irq,
00052 void *dbdma, int channel, qemu_irq dma_irq);
00053
00054
00055 qemu_irq *heathrow_pic_init(int *pmem_index,
00056 int nb_cpus, qemu_irq **irqs);
00057
00058
00059 PCIBus *pci_grackle_init(uint32_t base, qemu_irq *pic);
00060
00061
00062 PCIBus *pci_pmac_init(qemu_irq *pic);
00063
00064
00065 typedef struct MacIONVRAMState MacIONVRAMState;
00066
00067 MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size,
00068 unsigned int it_shift);
00069 void macio_nvram_map (void *opaque, target_phys_addr_t mem_base);
00070 void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len);
00071 uint32_t macio_nvram_read (void *opaque, uint32_t addr);
00072 void macio_nvram_write (void *opaque, uint32_t addr, uint32_t val);
00073
00074
00075
00076 #define MAX_ADB_DEVICES 16
00077
00078 #define ADB_MAX_OUT_LEN 16
00079
00080 typedef struct ADBDevice ADBDevice;
00081
00082
00083 typedef int ADBDeviceRequest(ADBDevice *d, uint8_t *buf_out,
00084 const uint8_t *buf, int len);
00085 typedef int ADBDeviceReset(ADBDevice *d);
00086
00087 struct ADBDevice {
00088 struct ADBBusState *bus;
00089 int devaddr;
00090 int handler;
00091 ADBDeviceRequest *devreq;
00092 ADBDeviceReset *devreset;
00093 void *opaque;
00094 };
00095
00096 typedef struct ADBBusState {
00097 ADBDevice devices[MAX_ADB_DEVICES];
00098 int nb_devices;
00099 int poll_index;
00100 } ADBBusState;
00101
00102 int adb_request(ADBBusState *s, uint8_t *buf_out,
00103 const uint8_t *buf, int len);
00104 int adb_poll(ADBBusState *s, uint8_t *buf_out);
00105
00106 ADBDevice *adb_register_device(ADBBusState *s, int devaddr,
00107 ADBDeviceRequest *devreq,
00108 ADBDeviceReset *devreset,
00109 void *opaque);
00110 void adb_kbd_init(ADBBusState *bus);
00111 void adb_mouse_init(ADBBusState *bus);
00112
00113 extern ADBBusState adb_bus;
00114
00115 #endif