--- trunk/src/include/devices.h 2007/10/08 16:18:38 12 +++ trunk/src/include/devices.h 2007/10/08 16:19:23 20 @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * - * $Id: devices.h,v 1.176 2005/08/05 09:11:49 debug Exp $ + * $Id: devices.h,v 1.194 2005/11/22 02:07:40 debug Exp $ * * Memory mapped devices. * @@ -105,6 +105,16 @@ int dev_au1x00_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); struct au1x00_ic_data *dev_au1x00_init(struct machine *machine, struct memory *mem); +/* dev_bebox.c: */ +struct bebox_data { + /* The 5 motherboard registers: */ + uint32_t cpu0_int_mask; + uint32_t cpu1_int_mask; + uint32_t int_status; + uint32_t xpi; + uint32_t resets; +}; + /* dev_bt431.c: */ #define DEV_BT431_LENGTH 0x20 #define DEV_BT431_NREGS 0x800 /* ? */ @@ -150,6 +160,14 @@ void dev_colorplanemask_init(struct memory *mem, uint64_t baseaddr, unsigned char *color_plane_mask); +/* dev_cpc700.c: */ +struct cpc700_data { + struct pci_data *pci_data; + uint32_t sr; /* Status register (interrupt) */ + uint32_t er; /* Enable register */ +}; +struct cpc700_data *dev_cpc700_init(struct machine *, struct memory *); + /* dev_dc7085.c: */ #define DEV_DC7085_LENGTH 0x0000000000000080 /* see dc7085.h for more info */ @@ -180,6 +198,10 @@ /* dev_disk.c: */ #define DEV_DISK_ADDRESS 0x13000000 +/* dev_eagle.c: */ +struct pci_data *dev_eagle_init(struct machine *machine, struct memory *mem, + int irqbase, int pciirq); + /* dev_ether.c: */ #define DEV_ETHER_ADDRESS 0x14000000 #define DEV_ETHER_LENGTH 0x8000 @@ -190,7 +212,7 @@ /* turbochannel rom, */ /* otherwise size = 4MB */ #define VFB_GENERIC 0 -#define VFB_HPCMIPS 1 +#define VFB_HPC 1 #define VFB_DEC_VFB01 2 #define VFB_DEC_VFB02 3 #define VFB_DEC_MAXINE 4 @@ -243,6 +265,27 @@ uint64_t baseaddr, int vfb_type, int visible_xsize, int visible_ysize, int xsize, int ysize, int bit_depth, char *name); +/* dev_footbridge: */ +#define N_FOOTBRIDGE_TIMERS 4 +struct footbridge_data { + struct pci_data *pcibus; + + int console_handle; + + int timer_tick_countdown[N_FOOTBRIDGE_TIMERS]; + uint32_t timer_load[N_FOOTBRIDGE_TIMERS]; + uint32_t timer_value[N_FOOTBRIDGE_TIMERS]; + uint32_t timer_control[N_FOOTBRIDGE_TIMERS]; + int timer_being_read; + int timer_poll_mode; + + uint32_t irq_status; + uint32_t irq_enable; + + uint32_t fiq_status; + uint32_t fiq_enable; +}; + /* dev_gt.c: */ #define DEV_GT_LENGTH 0x1000 int dev_gt_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, @@ -355,6 +398,9 @@ #define MC146818_ARC_NEC 2 #define MC146818_ARC_JAZZ 3 #define MC146818_SGI 4 +#define MC146818_CATS 5 +#define MC146818_ALGOR 6 +#define MC146818_PMPPC 7 /* see mc146818reg.h for more info */ void dev_mc146818_tick(struct cpu *cpu, void *); int dev_mc146818_access(struct cpu *cpu, struct memory *mem, @@ -416,6 +462,11 @@ int dev_pmagja_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); void dev_pmagja_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr); +/* dev_prep.c: */ +struct prep_data { + uint32_t int_status; +}; + /* dev_px.c: */ struct px_data { struct memory *fb_mem; @@ -436,30 +487,43 @@ #define DEV_PX_TYPE_PXGPLUS 2 #define DEV_PX_TYPE_PXGPLUSTURBO 3 #define DEV_PX_LENGTH 0x3c0000 -int dev_px_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -void dev_px_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int px_type, int irq_nr); +int dev_px_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, + unsigned char *data, size_t len, int writeflag, void *); +void dev_px_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, + int px_type, int irq_nr); /* dev_ram.c: */ -#define DEV_RAM_RAM 0 -#define DEV_RAM_MIRROR 1 -int dev_ram_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -void dev_ram_init(struct memory *mem, uint64_t baseaddr, uint64_t length, int mode, uint64_t otheraddr); +#define DEV_RAM_RAM 0 +#define DEV_RAM_MIRROR 1 +#define DEV_RAM_MIGHT_POINT_TO_DEVICES 0x10 +int dev_ram_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, + unsigned char *data, size_t len, int writeflag, void *); +void dev_ram_init(struct machine *machine, uint64_t baseaddr, uint64_t length, + int mode, uint64_t otheraddr); /* dev_scc.c: */ #define DEV_SCC_LENGTH 0x1000 -int dev_scc_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -int dev_scc_dma_func(struct cpu *cpu, void *extra, uint64_t addr, size_t dma_len, int tx); -void *dev_scc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, int use_fb, int scc_nr, int addrmul); +int dev_scc_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, + unsigned char *data, size_t len, int writeflag, void *); +int dev_scc_dma_func(struct cpu *cpu, void *extra, uint64_t addr, + size_t dma_len, int tx); +void *dev_scc_init(struct machine *machine, struct memory *mem, + uint64_t baseaddr, int irq_nr, int use_fb, int scc_nr, int addrmul); /* dev_sfb.c: */ #define DEV_SFB_LENGTH 0x400000 -int dev_sfb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -void dev_sfb_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, struct vfb_data *vfb_data); +int dev_sfb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, + unsigned char *data, size_t len, int writeflag, void *); +void dev_sfb_init(struct machine *machine, struct memory *mem, + uint64_t baseaddr, struct vfb_data *vfb_data); /* dev_sgi_gbe.c: */ #define DEV_SGI_GBE_LENGTH 0x1000000 -int dev_sgi_gbe_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -void dev_sgi_gbe_init(struct machine *machine, struct memory *mem, uint64_t baseaddr); +int dev_sgi_gbe_access(struct cpu *cpu, struct memory *mem, + uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, + void *); +void dev_sgi_gbe_init(struct machine *machine, struct memory *mem, + uint64_t baseaddr); /* dev_sgi_ip20.c: */ #define DEV_SGI_IP20_LENGTH 0x40 @@ -599,11 +663,6 @@ struct vr41xx_data *dev_vr41xx_init(struct machine *machine, struct memory *mem, int cpumodel); -/* dev_wdc.c: */ -#define DEV_WDC_LENGTH 0x8 -int dev_wdc_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -void dev_wdc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, int base_drive); - /* dev_wdsc.c: */ #define DEV_WDSC_NREGS 0x100 /* 8-bit register select */ #define DEV_WDSC_LENGTH 0x10