--- trunk/src/include/devices.h 2007/10/08 16:19:11 18 +++ trunk/src/include/devices.h 2007/10/08 16:20:26 28 @@ -2,7 +2,7 @@ #define DEVICES_H /* - * Copyright (C) 2003-2005 Anders Gavare. All rights reserved. + * Copyright (C) 2003-2006 Anders Gavare. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * - * $Id: devices.h,v 1.188 2005/10/26 14:37:06 debug Exp $ + * $Id: devices.h,v 1.213 2006/07/08 12:30:03 debug Exp $ * * Memory mapped devices. * @@ -76,6 +76,11 @@ int dev_dec_ioasic_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); struct dec_ioasic_data *dev_dec_ioasic_init(struct cpu *cpu, struct memory *mem, uint64_t baseaddr, int rackmount_flag); +/* dev_algor.c: */ +struct algor_data { + uint64_t base_addr; +}; + /* dev_asc.c: */ #define DEV_ASC_DEC_LENGTH 0x40000 #define DEV_ASC_PICA_LENGTH 0x1000 @@ -105,6 +110,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 /* ? */ @@ -133,13 +148,10 @@ int color_fb_flag, int irq_nr, int type); /* dev_cons.c: */ -#define DEV_CONS_ADDRESS 0x0000000010000000 -#define DEV_CONS_LENGTH 0x0000000000000020 -#define DEV_CONS_PUTGETCHAR 0x0000 -#define DEV_CONS_HALT 0x0010 struct cons_data { int console_handle; int irq_nr; + int in_use; }; /* dev_colorplanemask.c: */ @@ -150,6 +162,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 */ @@ -177,25 +197,25 @@ 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_eagle.c: */ +struct pci_data *dev_eagle_init(struct machine *machine, struct memory *mem, + int irqbase, int pciirq); /* dev_fb.c: */ -#define DEV_FB_ADDRESS 0x12000000 /* Default for testmips */ #define DEV_FB_LENGTH 0x3c0000 /* 3c0000 to not colide with */ /* turbochannel rom, */ /* otherwise size = 4MB */ +/* Type: */ #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 +/* Extra flags: */ +#define VFB_REVERSE_START 0x10000 struct vfb_data { + struct memory *memory; int vfb_type; int vfb_scaledown; @@ -204,7 +224,7 @@ int ysize; int bit_depth; int color32k; /* hack for 16-bit HPCmips */ - int psp_15bit; /* plastation portable hack */ + int psp_15bit; /* playstation portable hack */ unsigned char color_plane_mask; @@ -221,6 +241,11 @@ /* RGB palette for <= 8 bit modes: (r,g,b bytes for each) */ unsigned char rgb_palette[256 * 3]; + char *name; + char title[100]; + + void (*redraw_func)(struct vfb_data *, int, int); + /* These should always be in sync: */ unsigned char *framebuffer; struct fb_window *fb_window; @@ -264,6 +289,17 @@ uint32_t fiq_enable; }; +/* dev_gc.c: */ +struct gc_data { + int reassert_irq; + uint32_t status_hi; + uint32_t status_lo; + uint32_t enable_hi; + uint32_t enable_lo; +}; +struct gc_data *dev_gc_init(struct machine *, struct memory *, uint64_t addr, + int reassert_irq); + /* dev_gt.c: */ #define DEV_GT_LENGTH 0x1000 int dev_gt_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, @@ -271,6 +307,20 @@ struct pci_data *dev_gt_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, int pciirq, int type); +/* dev_i80321.c: */ +struct i80321_data { + /* Interrupt Controller */ + int reassert_irq; + uint32_t status; + uint32_t enable; + + uint32_t pci_addr; + struct pci_data *pci_bus; + + /* Memory Controller: */ + uint32_t mcu_reg[0x100 / sizeof(uint32_t)]; +}; + /* dev_jazz.c: */ #define DEV_JAZZ_LENGTH 0x280 struct jazz_data { @@ -324,7 +374,7 @@ /* dev_kn02.c: */ struct kn02_csr { uint8_t csr[sizeof(uint32_t)]; - uint8_t filler[4096 - sizeof(uint32_t)]; /* for bintrans mapping */ + uint8_t filler[4096 - sizeof(uint32_t)]; /* for dyntrans mapping */ }; int dev_kn02_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); struct kn02_csr *dev_kn02_init(struct cpu *cpu, struct memory *mem, @@ -377,6 +427,8 @@ #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, @@ -438,6 +490,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; @@ -564,7 +621,7 @@ struct mace_data *dev_mace_init(struct memory *mem, uint64_t baseaddr, int irqnr); #define DEV_MACEPCI_LENGTH 0x1000 int dev_macepci_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); -struct pci_data *dev_macepci_init(struct memory *mem, uint64_t baseaddr, int pciirq); +struct pci_data *dev_macepci_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int pciirq); #define DEV_SGI_MEC_LENGTH 0x1000 int dev_sgi_mec_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); void dev_sgi_mec_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, unsigned char *macaddr); @@ -595,6 +652,17 @@ int slot_nr, uint64_t baseaddr, uint64_t endaddr, char *device_name, int irq); +/* dev_uninorth.c: */ +struct pci_data *dev_uninorth_init(struct machine *machine, struct memory *mem, + uint64_t addr, int irqbase, int pciirq); + +/* dev_v3.c: */ +struct v3_data { + struct pci_data *pci_data; + uint16_t lb_map0; +}; +struct v3_data *dev_v3_init(struct machine *, struct memory *); + /* dev_vga.c: */ int dev_vga_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); @@ -607,7 +675,7 @@ int cpumodel; int kiu_console_handle; - int kiu_offset; + uint32_t kiu_offset; int kiu_irq_nr; int kiu_int_assert; int d0; @@ -640,13 +708,6 @@ int dev_wdsc_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); void dev_wdsc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int controller_nr, int irq_nr); -/* dev_zs.c: */ -#define DEV_ZS_LENGTH 0x10 -int dev_zs_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, - unsigned char *data, size_t len, int writeflag, void *); -int dev_zs_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, - int irq_nr, int addrmult, char *name); - /* lk201.c: */ struct lk201_data { int use_fb;