2 |
#define DEVICES_H |
#define DEVICES_H |
3 |
|
|
4 |
/* |
/* |
5 |
* Copyright (C) 2003-2005 Anders Gavare. All rights reserved. |
* Copyright (C) 2003-2006 Anders Gavare. All rights reserved. |
6 |
* |
* |
7 |
* Redistribution and use in source and binary forms, with or without |
* Redistribution and use in source and binary forms, with or without |
8 |
* modification, are permitted provided that the following conditions are met: |
* modification, are permitted provided that the following conditions are met: |
28 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
29 |
* |
* |
30 |
* |
* |
31 |
* $Id: devices.h,v 1.167 2005/05/22 20:05:40 debug Exp $ |
* $Id: devices.h,v 1.218 2006/10/02 09:26:53 debug Exp $ |
32 |
* |
* |
33 |
* Memory mapped devices. |
* Memory mapped devices. |
34 |
* |
* |
43 |
struct machine; |
struct machine; |
44 |
struct memory; |
struct memory; |
45 |
struct pci_data; |
struct pci_data; |
46 |
|
struct timer; |
47 |
|
|
48 |
/* #ifdef WITH_X11 |
/* #ifdef WITH_X11 |
49 |
#include <X11/Xlib.h> |
#include <X11/Xlib.h> |
77 |
int dev_dec_ioasic_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_dec_ioasic_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
78 |
struct dec_ioasic_data *dev_dec_ioasic_init(struct cpu *cpu, struct memory *mem, uint64_t baseaddr, int rackmount_flag); |
struct dec_ioasic_data *dev_dec_ioasic_init(struct cpu *cpu, struct memory *mem, uint64_t baseaddr, int rackmount_flag); |
79 |
|
|
80 |
|
/* dev_algor.c: */ |
81 |
|
struct algor_data { |
82 |
|
uint64_t base_addr; |
83 |
|
}; |
84 |
|
|
85 |
/* dev_asc.c: */ |
/* dev_asc.c: */ |
86 |
#define DEV_ASC_DEC_LENGTH 0x40000 |
#define DEV_ASC_DEC_LENGTH 0x40000 |
87 |
#define DEV_ASC_PICA_LENGTH 0x1000 |
#define DEV_ASC_PICA_LENGTH 0x1000 |
111 |
int dev_au1x00_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_au1x00_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
112 |
struct au1x00_ic_data *dev_au1x00_init(struct machine *machine, struct memory *mem); |
struct au1x00_ic_data *dev_au1x00_init(struct machine *machine, struct memory *mem); |
113 |
|
|
114 |
|
/* dev_bebox.c: */ |
115 |
|
struct bebox_data { |
116 |
|
/* The 5 motherboard registers: */ |
117 |
|
uint32_t cpu0_int_mask; |
118 |
|
uint32_t cpu1_int_mask; |
119 |
|
uint32_t int_status; |
120 |
|
uint32_t xpi; |
121 |
|
uint32_t resets; |
122 |
|
}; |
123 |
|
|
124 |
/* dev_bt431.c: */ |
/* dev_bt431.c: */ |
125 |
#define DEV_BT431_LENGTH 0x20 |
#define DEV_BT431_LENGTH 0x20 |
126 |
#define DEV_BT431_NREGS 0x800 /* ? */ |
#define DEV_BT431_NREGS 0x800 /* ? */ |
149 |
int color_fb_flag, int irq_nr, int type); |
int color_fb_flag, int irq_nr, int type); |
150 |
|
|
151 |
/* dev_cons.c: */ |
/* dev_cons.c: */ |
152 |
#define DEV_CONS_ADDRESS 0x0000000010000000 |
struct cons_data { |
153 |
#define DEV_CONS_LENGTH 0x0000000000000020 |
int console_handle; |
154 |
#define DEV_CONS_PUTGETCHAR 0x0000 |
int irq_nr; |
155 |
#define DEV_CONS_HALT 0x0010 |
int in_use; |
156 |
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); |
|
157 |
|
|
158 |
/* dev_colorplanemask.c: */ |
/* dev_colorplanemask.c: */ |
159 |
#define DEV_COLORPLANEMASK_LENGTH 0x0000000000000010 |
#define DEV_COLORPLANEMASK_LENGTH 0x0000000000000010 |
163 |
void dev_colorplanemask_init(struct memory *mem, uint64_t baseaddr, |
void dev_colorplanemask_init(struct memory *mem, uint64_t baseaddr, |
164 |
unsigned char *color_plane_mask); |
unsigned char *color_plane_mask); |
165 |
|
|
166 |
|
/* dev_cpc700.c: */ |
167 |
|
struct cpc700_data { |
168 |
|
struct pci_data *pci_data; |
169 |
|
uint32_t sr; /* Status register (interrupt) */ |
170 |
|
uint32_t er; /* Enable register */ |
171 |
|
}; |
172 |
|
struct cpc700_data *dev_cpc700_init(struct machine *, struct memory *); |
173 |
|
|
174 |
/* dev_dc7085.c: */ |
/* dev_dc7085.c: */ |
175 |
#define DEV_DC7085_LENGTH 0x0000000000000080 |
#define DEV_DC7085_LENGTH 0x0000000000000080 |
176 |
/* see dc7085.h for more info */ |
/* see dc7085.h for more info */ |
198 |
int dev_decxmi_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_decxmi_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
199 |
void dev_decxmi_init(struct memory *mem, uint64_t baseaddr); |
void dev_decxmi_init(struct memory *mem, uint64_t baseaddr); |
200 |
|
|
201 |
|
/* dev_eagle.c: */ |
202 |
|
struct pci_data *dev_eagle_init(struct machine *machine, struct memory *mem, |
203 |
|
int irqbase, int pciirq); |
204 |
|
|
205 |
/* dev_fb.c: */ |
/* dev_fb.c: */ |
206 |
#define DEV_FB_LENGTH 0x3c0000 /* 3c0000 to not colide with turbochannel rom, otherwise size = (4*1024*1024) */ |
#define DEV_FB_LENGTH 0x3c0000 /* 3c0000 to not colide with */ |
207 |
#define VFB_GENERIC 0 |
/* turbochannel rom, */ |
208 |
#define VFB_HPCMIPS 1 |
/* otherwise size = 4MB */ |
209 |
#define VFB_DEC_VFB01 2 |
/* Type: */ |
210 |
#define VFB_DEC_VFB02 3 |
#define VFB_GENERIC 0 |
211 |
#define VFB_DEC_MAXINE 4 |
#define VFB_HPC 1 |
212 |
#define VFB_PLAYSTATION2 5 |
#define VFB_DEC_VFB01 2 |
213 |
|
#define VFB_DEC_VFB02 3 |
214 |
|
#define VFB_DEC_MAXINE 4 |
215 |
|
#define VFB_PLAYSTATION2 5 |
216 |
|
/* Extra flags: */ |
217 |
|
#define VFB_REVERSE_START 0x10000 |
218 |
struct vfb_data { |
struct vfb_data { |
219 |
|
struct memory *memory; |
220 |
int vfb_type; |
int vfb_type; |
221 |
|
|
222 |
int vfb_scaledown; |
int vfb_scaledown; |
224 |
int xsize; |
int xsize; |
225 |
int ysize; |
int ysize; |
226 |
int bit_depth; |
int bit_depth; |
227 |
int color32k; |
int color32k; /* hack for 16-bit HPCmips */ |
228 |
|
int psp_15bit; /* playstation portable hack */ |
229 |
|
|
230 |
unsigned char color_plane_mask; |
unsigned char color_plane_mask; |
231 |
|
|
242 |
/* RGB palette for <= 8 bit modes: (r,g,b bytes for each) */ |
/* RGB palette for <= 8 bit modes: (r,g,b bytes for each) */ |
243 |
unsigned char rgb_palette[256 * 3]; |
unsigned char rgb_palette[256 * 3]; |
244 |
|
|
245 |
|
char *name; |
246 |
|
char title[100]; |
247 |
|
|
248 |
|
void (*redraw_func)(struct vfb_data *, int, int); |
249 |
|
|
250 |
/* These should always be in sync: */ |
/* These should always be in sync: */ |
251 |
unsigned char *framebuffer; |
unsigned char *framebuffer; |
252 |
struct fb_window *fb_window; |
struct fb_window *fb_window; |
263 |
int fill_g, int fill_b, int x1, int y1, int x2, int y2, |
int fill_g, int fill_b, int x1, int y1, int x2, int y2, |
264 |
int from_x, int from_y); |
int from_x, int from_y); |
265 |
void dev_fb_tick(struct cpu *, void *); |
void dev_fb_tick(struct cpu *, void *); |
266 |
int dev_fb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_fb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
267 |
struct vfb_data *dev_fb_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int vfb_type, |
unsigned char *data, size_t len, int writeflag, void *); |
268 |
int visible_xsize, int visible_ysize, int xsize, int ysize, int bit_depth, char *name, int logo); |
struct vfb_data *dev_fb_init(struct machine *machine, struct memory *mem, |
269 |
|
uint64_t baseaddr, int vfb_type, int visible_xsize, int visible_ysize, |
270 |
|
int xsize, int ysize, int bit_depth, char *name); |
271 |
|
|
272 |
|
/* dev_footbridge: */ |
273 |
|
#define N_FOOTBRIDGE_TIMERS 4 |
274 |
|
struct footbridge_data { |
275 |
|
struct pci_data *pcibus; |
276 |
|
|
277 |
|
int console_handle; |
278 |
|
|
279 |
|
int timer_tick_countdown[N_FOOTBRIDGE_TIMERS]; |
280 |
|
uint32_t timer_load[N_FOOTBRIDGE_TIMERS]; |
281 |
|
uint32_t timer_value[N_FOOTBRIDGE_TIMERS]; |
282 |
|
uint32_t timer_control[N_FOOTBRIDGE_TIMERS]; |
283 |
|
|
284 |
|
struct timer *timer[N_FOOTBRIDGE_TIMERS]; |
285 |
|
int pending_timer_interrupts[N_FOOTBRIDGE_TIMERS]; |
286 |
|
|
287 |
|
uint32_t irq_status; |
288 |
|
uint32_t irq_enable; |
289 |
|
|
290 |
|
uint32_t fiq_status; |
291 |
|
uint32_t fiq_enable; |
292 |
|
}; |
293 |
|
|
294 |
|
/* dev_gc.c: */ |
295 |
|
struct gc_data { |
296 |
|
int reassert_irq; |
297 |
|
uint32_t status_hi; |
298 |
|
uint32_t status_lo; |
299 |
|
uint32_t enable_hi; |
300 |
|
uint32_t enable_lo; |
301 |
|
}; |
302 |
|
struct gc_data *dev_gc_init(struct machine *, struct memory *, uint64_t addr, |
303 |
|
int reassert_irq); |
304 |
|
|
305 |
/* dev_gt.c: */ |
/* dev_gt.c: */ |
306 |
#define DEV_GT_LENGTH 0x0000000000001000 |
#define DEV_GT_LENGTH 0x1000 |
307 |
int dev_gt_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_gt_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
308 |
struct pci_data *dev_gt_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, int pciirq); |
unsigned char *data, size_t len, int writeflag, void *); |
309 |
|
struct pci_data *dev_gt_init(struct machine *machine, struct memory *mem, |
310 |
|
uint64_t baseaddr, int irq_nr, int pciirq, int type); |
311 |
|
|
312 |
|
/* dev_i80321.c: */ |
313 |
|
struct i80321_data { |
314 |
|
/* Interrupt Controller */ |
315 |
|
int reassert_irq; |
316 |
|
uint32_t status; |
317 |
|
uint32_t enable; |
318 |
|
|
319 |
|
uint32_t pci_addr; |
320 |
|
struct pci_data *pci_bus; |
321 |
|
|
322 |
|
/* Memory Controller: */ |
323 |
|
uint32_t mcu_reg[0x100 / sizeof(uint32_t)]; |
324 |
|
}; |
325 |
|
|
326 |
/* dev_jazz.c: */ |
/* dev_jazz.c: */ |
327 |
#define DEV_JAZZ_LENGTH 0x280 |
#define DEV_JAZZ_LENGTH 0x280 |
376 |
/* dev_kn02.c: */ |
/* dev_kn02.c: */ |
377 |
struct kn02_csr { |
struct kn02_csr { |
378 |
uint8_t csr[sizeof(uint32_t)]; |
uint8_t csr[sizeof(uint32_t)]; |
379 |
uint8_t filler[4096 - sizeof(uint32_t)]; /* for bintrans mapping */ |
uint8_t filler[4096 - sizeof(uint32_t)]; /* for dyntrans mapping */ |
380 |
}; |
}; |
381 |
int dev_kn02_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_kn02_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
382 |
struct kn02_csr *dev_kn02_init(struct cpu *cpu, struct memory *mem, |
struct kn02_csr *dev_kn02_init(struct cpu *cpu, struct memory *mem, |
412 |
void dev_m700_fb_init(struct machine *machine, struct memory *mem, |
void dev_m700_fb_init(struct machine *machine, struct memory *mem, |
413 |
uint64_t baseaddr, uint64_t baseaddr2); |
uint64_t baseaddr, uint64_t baseaddr2); |
414 |
|
|
415 |
/* dev_ns16550.c: */ |
/* dev_malta.c: */ |
416 |
#define DEV_NS16550_LENGTH 0x0000000000000008 |
struct malta_data { |
417 |
/* see comreg.h and ns16550reg.h for more info */ |
uint8_t assert_lo; |
418 |
int dev_ns16550_access(struct cpu *cpu, struct memory *mem, |
uint8_t assert_hi; |
419 |
uint64_t relative_addr, unsigned char *data, size_t len, |
uint8_t disable_lo; |
420 |
int writeflag, void *); |
uint8_t disable_hi; |
421 |
int dev_ns16550_init(struct machine *machine, struct memory *mem, |
int poll_mode; |
422 |
uint64_t baseaddr, int irq_nr, int addrmult, int in_use, char *name); |
}; |
423 |
|
|
424 |
/* dev_mc146818.c: */ |
/* dev_mc146818.c: */ |
425 |
#define DEV_MC146818_LENGTH 0x0000000000000100 |
#define DEV_MC146818_LENGTH 0x0000000000000100 |
428 |
#define MC146818_ARC_NEC 2 |
#define MC146818_ARC_NEC 2 |
429 |
#define MC146818_ARC_JAZZ 3 |
#define MC146818_ARC_JAZZ 3 |
430 |
#define MC146818_SGI 4 |
#define MC146818_SGI 4 |
431 |
|
#define MC146818_CATS 5 |
432 |
|
#define MC146818_ALGOR 6 |
433 |
|
#define MC146818_PMPPC 7 |
434 |
/* see mc146818reg.h for more info */ |
/* see mc146818reg.h for more info */ |
435 |
void dev_mc146818_tick(struct cpu *cpu, void *); |
void dev_mc146818_tick(struct cpu *cpu, void *); |
436 |
int dev_mc146818_access(struct cpu *cpu, struct memory *mem, |
int dev_mc146818_access(struct cpu *cpu, struct memory *mem, |
492 |
int dev_pmagja_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_pmagja_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
493 |
void dev_pmagja_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr); |
void dev_pmagja_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr); |
494 |
|
|
495 |
|
/* dev_prep.c: */ |
496 |
|
struct prep_data { |
497 |
|
uint32_t int_status; |
498 |
|
}; |
499 |
|
|
500 |
/* dev_px.c: */ |
/* dev_px.c: */ |
501 |
struct px_data { |
struct px_data { |
502 |
struct memory *fb_mem; |
struct memory *fb_mem; |
517 |
#define DEV_PX_TYPE_PXGPLUS 2 |
#define DEV_PX_TYPE_PXGPLUS 2 |
518 |
#define DEV_PX_TYPE_PXGPLUSTURBO 3 |
#define DEV_PX_TYPE_PXGPLUSTURBO 3 |
519 |
#define DEV_PX_LENGTH 0x3c0000 |
#define DEV_PX_LENGTH 0x3c0000 |
520 |
int dev_px_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_px_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
521 |
void dev_px_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int px_type, int irq_nr); |
unsigned char *data, size_t len, int writeflag, void *); |
522 |
|
void dev_px_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, |
523 |
|
int px_type, int irq_nr); |
524 |
|
|
525 |
/* dev_ram.c: */ |
/* dev_ram.c: */ |
526 |
#define DEV_RAM_RAM 0 |
#define DEV_RAM_RAM 0 |
527 |
#define DEV_RAM_MIRROR 1 |
#define DEV_RAM_MIRROR 1 |
528 |
int dev_ram_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
#define DEV_RAM_MIGHT_POINT_TO_DEVICES 0x10 |
529 |
void dev_ram_init(struct memory *mem, uint64_t baseaddr, uint64_t length, int mode, uint64_t otheraddr); |
int dev_ram_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
530 |
|
unsigned char *data, size_t len, int writeflag, void *); |
531 |
|
void dev_ram_init(struct machine *machine, uint64_t baseaddr, uint64_t length, |
532 |
|
int mode, uint64_t otheraddr); |
533 |
|
|
534 |
/* dev_scc.c: */ |
/* dev_scc.c: */ |
535 |
#define DEV_SCC_LENGTH 0x1000 |
#define DEV_SCC_LENGTH 0x1000 |
536 |
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_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
537 |
int dev_scc_dma_func(struct cpu *cpu, void *extra, uint64_t addr, size_t dma_len, int tx); |
unsigned char *data, size_t len, int writeflag, void *); |
538 |
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_dma_func(struct cpu *cpu, void *extra, uint64_t addr, |
539 |
|
size_t dma_len, int tx); |
540 |
|
void *dev_scc_init(struct machine *machine, struct memory *mem, |
541 |
|
uint64_t baseaddr, int irq_nr, int use_fb, int scc_nr, int addrmul); |
542 |
|
|
543 |
/* dev_sfb.c: */ |
/* dev_sfb.c: */ |
544 |
#define DEV_SFB_LENGTH 0x400000 |
#define DEV_SFB_LENGTH 0x400000 |
545 |
int dev_sfb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_sfb_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
546 |
void dev_sfb_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, struct vfb_data *vfb_data); |
unsigned char *data, size_t len, int writeflag, void *); |
547 |
|
void dev_sfb_init(struct machine *machine, struct memory *mem, |
548 |
|
uint64_t baseaddr, struct vfb_data *vfb_data); |
549 |
|
|
550 |
/* dev_sgi_gbe.c: */ |
/* dev_sgi_gbe.c: */ |
551 |
#define DEV_SGI_GBE_LENGTH 0x1000000 |
#define DEV_SGI_GBE_LENGTH 0x1000000 |
552 |
int dev_sgi_gbe_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_sgi_gbe_access(struct cpu *cpu, struct memory *mem, |
553 |
void dev_sgi_gbe_init(struct machine *machine, struct memory *mem, uint64_t baseaddr); |
uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, |
554 |
|
void *); |
555 |
|
void dev_sgi_gbe_init(struct machine *machine, struct memory *mem, |
556 |
|
uint64_t baseaddr); |
557 |
|
|
558 |
/* dev_sgi_ip20.c: */ |
/* dev_sgi_ip20.c: */ |
559 |
#define DEV_SGI_IP20_LENGTH 0x40 |
#define DEV_SGI_IP20_LENGTH 0x40 |
623 |
struct mace_data *dev_mace_init(struct memory *mem, uint64_t baseaddr, int irqnr); |
struct mace_data *dev_mace_init(struct memory *mem, uint64_t baseaddr, int irqnr); |
624 |
#define DEV_MACEPCI_LENGTH 0x1000 |
#define DEV_MACEPCI_LENGTH 0x1000 |
625 |
int dev_macepci_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_macepci_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
626 |
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); |
627 |
#define DEV_SGI_MEC_LENGTH 0x1000 |
#define DEV_SGI_MEC_LENGTH 0x1000 |
628 |
int dev_sgi_mec_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_sgi_mec_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
629 |
void dev_sgi_mec_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, unsigned char *macaddr); |
void dev_sgi_mec_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int irq_nr, unsigned char *macaddr); |
654 |
int slot_nr, uint64_t baseaddr, uint64_t endaddr, char *device_name, |
int slot_nr, uint64_t baseaddr, uint64_t endaddr, char *device_name, |
655 |
int irq); |
int irq); |
656 |
|
|
657 |
|
/* dev_uninorth.c: */ |
658 |
|
struct pci_data *dev_uninorth_init(struct machine *machine, struct memory *mem, |
659 |
|
uint64_t addr, int irqbase, int pciirq); |
660 |
|
|
661 |
|
/* dev_v3.c: */ |
662 |
|
struct v3_data { |
663 |
|
struct pci_data *pci_data; |
664 |
|
uint16_t lb_map0; |
665 |
|
}; |
666 |
|
struct v3_data *dev_v3_init(struct machine *, struct memory *); |
667 |
|
|
668 |
/* dev_vga.c: */ |
/* dev_vga.c: */ |
669 |
int dev_vga_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
int dev_vga_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, |
670 |
unsigned char *data, size_t len, int writeflag, void *); |
unsigned char *data, size_t len, int writeflag, void *); |
677 |
int cpumodel; |
int cpumodel; |
678 |
|
|
679 |
int kiu_console_handle; |
int kiu_console_handle; |
680 |
int kiu_offset; |
uint32_t kiu_offset; |
681 |
int kiu_irq_nr; |
int kiu_irq_nr; |
682 |
int kiu_int_assert; |
int kiu_int_assert; |
683 |
int d0; |
int d0; |
689 |
int dont_clear_next; |
int dont_clear_next; |
690 |
int escape_state; |
int escape_state; |
691 |
|
|
692 |
|
int pending_timer_interrupts; |
693 |
|
struct timer *timer; |
694 |
|
|
695 |
/* See icureg.h in NetBSD for more info. */ |
/* See icureg.h in NetBSD for more info. */ |
696 |
uint16_t sysint1; |
uint16_t sysint1; |
697 |
uint16_t msysint1; |
uint16_t msysint1; |
707 |
struct vr41xx_data *dev_vr41xx_init(struct machine *machine, |
struct vr41xx_data *dev_vr41xx_init(struct machine *machine, |
708 |
struct memory *mem, int cpumodel); |
struct memory *mem, int cpumodel); |
709 |
|
|
|
/* 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); |
|
|
|
|
710 |
/* dev_wdsc.c: */ |
/* dev_wdsc.c: */ |
711 |
#define DEV_WDSC_NREGS 0x100 /* 8-bit register select */ |
#define DEV_WDSC_NREGS 0x100 /* 8-bit register select */ |
712 |
#define DEV_WDSC_LENGTH 0x10 |
#define DEV_WDSC_LENGTH 0x10 |
713 |
int dev_wdsc_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
int dev_wdsc_access(struct cpu *cpu, struct memory *mem, uint64_t relative_addr, unsigned char *data, size_t len, int writeflag, void *); |
714 |
void dev_wdsc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int controller_nr, int irq_nr); |
void dev_wdsc_init(struct machine *machine, struct memory *mem, uint64_t baseaddr, int controller_nr, int irq_nr); |
715 |
|
|
|
/* 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); |
|
|
|
|
716 |
/* lk201.c: */ |
/* lk201.c: */ |
717 |
struct lk201_data { |
struct lk201_data { |
718 |
int use_fb; |
int use_fb; |
727 |
int mouse_mode; |
int mouse_mode; |
728 |
int mouse_revision; /* 0..15 */ |
int mouse_revision; /* 0..15 */ |
729 |
int mouse_x, mouse_y, mouse_buttons; |
int mouse_x, mouse_y, mouse_buttons; |
|
|
|
|
int old_host_mouse_x; |
|
|
int old_host_mouse_y; |
|
|
int old_host_mouse_stays_put; |
|
|
int mouse_check_interval; |
|
|
int mouse_check_interval_reset; |
|
730 |
}; |
}; |
731 |
void lk201_tick(struct lk201_data *); |
void lk201_tick(struct machine *, struct lk201_data *); |
732 |
void lk201_tx_data(struct lk201_data *, int port, int idata); |
void lk201_tx_data(struct lk201_data *, int port, int idata); |
733 |
void lk201_init(struct lk201_data *d, int use_fb, |
void lk201_init(struct lk201_data *d, int use_fb, |
734 |
void (*add_to_rx_queue)(void *,int,int), int console_handle, void *); |
void (*add_to_rx_queue)(void *,int,int), int console_handle, void *); |