diff options
| author | Charles.Forsyth <devnull@localhost> | 2006-12-22 21:39:35 +0000 |
|---|---|---|
| committer | Charles.Forsyth <devnull@localhost> | 2006-12-22 21:39:35 +0000 |
| commit | 74a4d8c26dd3c1e9febcb717cfd6cb6512991a7a (patch) | |
| tree | c6e220ba61db3a6ea4052e6841296d829654e664 /os/ks32/dat.h | |
| parent | 46439007cf417cbd9ac8049bb4122c890097a0fa (diff) | |
20060303
Diffstat (limited to 'os/ks32/dat.h')
| -rw-r--r-- | os/ks32/dat.h | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/os/ks32/dat.h b/os/ks32/dat.h new file mode 100644 index 00000000..70422b63 --- /dev/null +++ b/os/ks32/dat.h @@ -0,0 +1,218 @@ +typedef struct Conf Conf; +typedef struct FPU FPU; +typedef struct FPenv FPenv; +typedef struct Label Label; +typedef struct Lock Lock; +typedef struct Mach Mach; +typedef struct Ureg Ureg; +typedef struct ISAConf ISAConf; +typedef struct PCMmap PCMmap; +typedef struct PCIcfg PCIcfg; +typedef struct TouchPnt TouchPnt; +typedef struct TouchTrans TouchTrans; +typedef struct TouchCal TouchCal; +typedef struct Vmode Vmode; + +typedef ulong Instr; + +#define ISAOPTLEN 16 +#define NISAOPT 8 +struct Conf +{ + ulong nmach; /* processors */ + ulong nproc; /* processes */ + ulong npage0; /* total physical pages of memory */ + ulong npage1; /* total physical pages of memory */ + ulong topofmem; /* highest physical address + 1 */ + ulong npage; /* total physical pages of memory */ + ulong base0; /* base of bank 0 */ + ulong base1; /* base of bank 1 */ + ulong ialloc; /* max interrupt time allocation in bytes */ + ulong flashbase; + ulong cpuspeed; + ulong pagetable; + + int useminicache; /* screen.c/lcd.c */ + int cansetbacklight; /* screen.c/lcd.c */ + int cansetcontrast; /* screen.c/lcd.c */ + int remaplo; /* use alt ivec */ + int textwrite; /* writeable text segment, for debug */ +}; + +struct ISAConf { + char type[KNAMELEN]; + ulong port; + ulong irq; + ulong sairq; + ulong dma; + ulong mem; + ulong size; + ulong freq; + + int nopt; + char opt[NISAOPT][ISAOPTLEN]; +}; + +/* + * FPenv.status + */ +enum +{ + FPINIT, + FPACTIVE, + FPINACTIVE, +}; + +struct FPenv +{ + ulong status; + ulong control; + ushort fpistate; /* emulated fp */ + ulong regs[8][3]; /* emulated fp */ +}; + +/* + * This structure must agree with fpsave and fprestore asm routines + */ +struct FPU +{ + FPenv env; + uchar regs[80]; /* floating point registers */ +}; + +struct Label +{ + ulong sp; + ulong pc; +}; + +struct Lock +{ + ulong key; + ulong sr; + ulong pc; + int pri; +}; + +#include "../port/portdat.h" + +/* + * machine dependent definitions not used by ../port/dat.h + */ +struct Mach +{ + ulong ticks; /* of the clock since boot time */ + Proc *proc; /* current process on this processor */ + Label sched; /* scheduler wakeup */ + Lock alarmlock; /* access to alarm list */ + void *alarm; /* alarms bound to this clock */ + int machno; + int nrdy; + + int stack[1]; +}; + +#define MACHP(n) (n == 0 ? (Mach*)(MACHADDR) : (Mach*)0) + +extern Mach Mach0; +extern Mach *m; +extern Proc *up; + +typedef struct MemBank { + uint pbase; + uint plimit; + uint vbase; + uint vlimit; +} MemBank; + +enum { + // DMA configuration parameters + + // DMA Direction + DmaOUT= 0, + DmaIN= 1, + + // dma endianess + DmaLittle= 0, + DmaBig= 1, + + // dma devices + DmaUDC= 0, + DmaSDLC= 2, + DmaUART0= 4, + DmaHSSP= 6, + DmaUART1= 7, // special case (is really 6) + DmaUART2= 8, + DmaMCPaudio= 10, + DmaMCPtelecom= 12, + DmaSSP= 14, +}; + +enum touch_source { + TOUCH_READ_X1, TOUCH_READ_X2, TOUCH_READ_X3, TOUCH_READ_X4, + TOUCH_READ_Y1, TOUCH_READ_Y2, TOUCH_READ_Y3, TOUCH_READ_Y4, + TOUCH_READ_P1, TOUCH_READ_P2, + TOUCH_READ_RX1, TOUCH_READ_RX2, + TOUCH_READ_RY1, TOUCH_READ_RY2, + TOUCH_NUMRAWCAL = 10, +}; + +struct TouchPnt { + int x; + int y; +}; + +struct TouchTrans { + int xxm; + int xym; + int yxm; + int yym; + int xa; + int ya; +}; + +struct TouchCal { + TouchPnt p[4]; // screen points + TouchPnt r[4][4];// raw points + TouchTrans t[4]; // transformations + TouchPnt err; // maximum error + TouchPnt var; // usual maximum variance for readings + int ptp; // pressure threshold for press + int ptr; // pressure threshold for release +}; + +extern TouchCal touchcal; + +struct Vmode { + int wid; /* 0 -> default or any match for all fields */ + int hgt; + uchar d; + uchar hz; + ushort flags; +}; + +enum { + VMODE_MONO = 0x0001, /* monochrome display */ + VMODE_COLOR = 0x0002, /* color (RGB) display */ + VMODE_TFT = 0x0004, /* TFT (active matrix) display */ + VMODE_STATIC = 0x0010, /* fixed palette */ + VMODE_PSEUDO = 0x0020, /* changeable palette */ + VMODE_LINEAR = 0x0100, /* linear frame buffer */ + VMODE_PAGED = 0x0200, /* paged frame buffer */ + VMODE_PLANAR = 0x1000, /* pixel bits split between planes */ + VMODE_PACKED = 0x2000, /* pixel bits packed together */ + VMODE_LILEND = 0x4000, /* little endian pixel layout */ + VMODE_BIGEND = 0x8000, /* big endian pixel layout */ +}; + +/* + * Interface to PCMCIA stubs + */ +enum { + /* argument to pcmpin() */ + PCMready, + PCMeject, + PCMstschng, +}; + +#define swcursor 1 |
