--- trunk/src/include/devices.h 2007/10/08 16:18:11 6 +++ trunk/src/include/devices.h 2007/10/08 16:19:11 18 @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * - * $Id: devices.h,v 1.167 2005/05/22 20:05:40 debug Exp $ + * $Id: devices.h,v 1.188 2005/10/26 14:37:06 debug Exp $ * * Memory mapped devices. * @@ -137,11 +137,10 @@ #define DEV_CONS_LENGTH 0x0000000000000020 #define DEV_CONS_PUTGETCHAR 0x0000 #define DEV_CONS_HALT 0x0010 -int dev_cons_access(struct cpu *cpu, struct memory *mem, - uint64_t relative_addr, unsigned char *data, size_t len, - int writeflag, void *); -int dev_cons_init(struct machine *machine, struct memory *mem, - uint64_t baseaddr, char *name, int irq_nr); +struct cons_data { + int console_handle; + int irq_nr; +}; /* dev_colorplanemask.c: */ #define DEV_COLORPLANEMASK_LENGTH 0x0000000000000010 @@ -178,14 +177,24 @@ int dev_decxmi_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); void dev_decxmi_init(struct memory *mem, uint64_t baseaddr); +/* dev_disk.c: */ +#define DEV_DISK_ADDRESS 0x13000000 + +/* dev_ether.c: */ +#define DEV_ETHER_ADDRESS 0x14000000 +#define DEV_ETHER_LENGTH 0x8000 + /* dev_fb.c: */ -#define DEV_FB_LENGTH 0x3c0000 /* 3c0000 to not colide with turbochannel rom, otherwise size = (4*1024*1024) */ -#define VFB_GENERIC 0 -#define VFB_HPCMIPS 1 -#define VFB_DEC_VFB01 2 -#define VFB_DEC_VFB02 3 -#define VFB_DEC_MAXINE 4 -#define VFB_PLAYSTATION2 5 +#define DEV_FB_ADDRESS 0x12000000 /* Default for testmips */ +#define DEV_FB_LENGTH 0x3c0000 /* 3c0000 to not colide with */ + /* turbochannel rom, */ + /* otherwise size = 4MB */ +#define VFB_GENERIC 0 +#define VFB_HPC 1 +#define VFB_DEC_VFB01 2 +#define VFB_DEC_VFB02 3 +#define VFB_DEC_MAXINE 4 +#define VFB_PLAYSTATION2 5 struct vfb_data { int vfb_type; @@ -194,7 +203,8 @@ int xsize; int ysize; int bit_depth; - int color32k; + int color32k; /* hack for 16-bit HPCmips */ + int psp_15bit; /* plastation portable hack */ unsigned char color_plane_mask; @@ -227,14 +237,39 @@ int fill_g, int fill_b, int x1, int y1, int x2, int y2, int from_x, int from_y); void dev_fb_tick(struct cpu *, void *); -int dev_fb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -struct vfb_data *dev_fb_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int vfb_type, - int visible_xsize, int visible_ysize, int xsize, int ysize, int bit_depth, char *name, int logo); +int dev_fb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, + unsigned char *data, size_t len, int writeflag, void *); +struct vfb_data *dev_fb_init(struct machine *machine, struct memory *mem, + 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 0x0000000000001000 -int dev_gt_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -struct pci_data *dev_gt_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, int pciirq); +#define DEV_GT_LENGTH 0x1000 +int dev_gt_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, + unsigned char *data, size_t len, int writeflag, void *); +struct pci_data *dev_gt_init(struct machine *machine, struct memory *mem, + uint64_t baseaddr, int irq_nr, int pciirq, int type); /* dev_jazz.c: */ #define DEV_JAZZ_LENGTH 0x280 @@ -325,14 +360,14 @@ void dev_m700_fb_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, uint64_t baseaddr2); -/* dev_ns16550.c: */ -#define DEV_NS16550_LENGTH 0x0000000000000008 -/* see comreg.h and ns16550reg.h for more info */ -int dev_ns16550_access(struct cpu *cpu, struct memory *mem, - uint64_t relative_addr, unsigned char *data, size_t len, - int writeflag, void *); -int dev_ns16550_init(struct machine *machine, struct memory *mem, - uint64_t baseaddr, int irq_nr, int addrmult, int in_use, char *name); +/* dev_malta.c: */ +struct malta_data { + uint8_t assert_lo; + uint8_t assert_hi; + uint8_t disable_lo; + uint8_t disable_hi; + int poll_mode; +}; /* dev_mc146818.c: */ #define DEV_MC146818_LENGTH 0x0000000000000100 @@ -341,6 +376,7 @@ #define MC146818_ARC_NEC 2 #define MC146818_ARC_JAZZ 3 #define MC146818_SGI 4 +#define MC146818_CATS 5 /* see mc146818reg.h for more info */ void dev_mc146818_tick(struct cpu *cpu, void *); int dev_mc146818_access(struct cpu *cpu, struct memory *mem, @@ -422,30 +458,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 @@ -585,11 +634,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