1*74a4d8c2SCharles.Forsyth typedef struct Conf Conf; 2*74a4d8c2SCharles.Forsyth typedef struct FPU FPU; 3*74a4d8c2SCharles.Forsyth typedef struct FPenv FPenv; 4*74a4d8c2SCharles.Forsyth typedef struct Label Label; 5*74a4d8c2SCharles.Forsyth typedef struct Lock Lock; 6*74a4d8c2SCharles.Forsyth typedef struct Mach Mach; 7*74a4d8c2SCharles.Forsyth typedef struct Ureg Ureg; 8*74a4d8c2SCharles.Forsyth typedef struct ISAConf ISAConf; 9*74a4d8c2SCharles.Forsyth typedef struct PCMmap PCMmap; 10*74a4d8c2SCharles.Forsyth typedef struct PCIcfg PCIcfg; 11*74a4d8c2SCharles.Forsyth typedef struct TouchPnt TouchPnt; 12*74a4d8c2SCharles.Forsyth typedef struct TouchTrans TouchTrans; 13*74a4d8c2SCharles.Forsyth typedef struct TouchCal TouchCal; 14*74a4d8c2SCharles.Forsyth typedef struct Vmode Vmode; 15*74a4d8c2SCharles.Forsyth 16*74a4d8c2SCharles.Forsyth typedef ulong Instr; 17*74a4d8c2SCharles.Forsyth 18*74a4d8c2SCharles.Forsyth #define ISAOPTLEN 16 19*74a4d8c2SCharles.Forsyth #define NISAOPT 8 20*74a4d8c2SCharles.Forsyth struct Conf 21*74a4d8c2SCharles.Forsyth { 22*74a4d8c2SCharles.Forsyth ulong nmach; /* processors */ 23*74a4d8c2SCharles.Forsyth ulong nproc; /* processes */ 24*74a4d8c2SCharles.Forsyth ulong npage0; /* total physical pages of memory */ 25*74a4d8c2SCharles.Forsyth ulong npage1; /* total physical pages of memory */ 26*74a4d8c2SCharles.Forsyth ulong topofmem; /* highest physical address + 1 */ 27*74a4d8c2SCharles.Forsyth ulong npage; /* total physical pages of memory */ 28*74a4d8c2SCharles.Forsyth ulong base0; /* base of bank 0 */ 29*74a4d8c2SCharles.Forsyth ulong base1; /* base of bank 1 */ 30*74a4d8c2SCharles.Forsyth ulong ialloc; /* max interrupt time allocation in bytes */ 31*74a4d8c2SCharles.Forsyth ulong flashbase; 32*74a4d8c2SCharles.Forsyth ulong cpuspeed; 33*74a4d8c2SCharles.Forsyth ulong pagetable; 34*74a4d8c2SCharles.Forsyth 35*74a4d8c2SCharles.Forsyth int useminicache; /* screen.c/lcd.c */ 36*74a4d8c2SCharles.Forsyth int cansetbacklight; /* screen.c/lcd.c */ 37*74a4d8c2SCharles.Forsyth int cansetcontrast; /* screen.c/lcd.c */ 38*74a4d8c2SCharles.Forsyth int remaplo; /* use alt ivec */ 39*74a4d8c2SCharles.Forsyth int textwrite; /* writeable text segment, for debug */ 40*74a4d8c2SCharles.Forsyth }; 41*74a4d8c2SCharles.Forsyth 42*74a4d8c2SCharles.Forsyth struct ISAConf { 43*74a4d8c2SCharles.Forsyth char type[KNAMELEN]; 44*74a4d8c2SCharles.Forsyth ulong port; 45*74a4d8c2SCharles.Forsyth ulong irq; 46*74a4d8c2SCharles.Forsyth ulong sairq; 47*74a4d8c2SCharles.Forsyth ulong dma; 48*74a4d8c2SCharles.Forsyth ulong mem; 49*74a4d8c2SCharles.Forsyth ulong size; 50*74a4d8c2SCharles.Forsyth ulong freq; 51*74a4d8c2SCharles.Forsyth 52*74a4d8c2SCharles.Forsyth int nopt; 53*74a4d8c2SCharles.Forsyth char opt[NISAOPT][ISAOPTLEN]; 54*74a4d8c2SCharles.Forsyth }; 55*74a4d8c2SCharles.Forsyth 56*74a4d8c2SCharles.Forsyth /* 57*74a4d8c2SCharles.Forsyth * FPenv.status 58*74a4d8c2SCharles.Forsyth */ 59*74a4d8c2SCharles.Forsyth enum 60*74a4d8c2SCharles.Forsyth { 61*74a4d8c2SCharles.Forsyth FPINIT, 62*74a4d8c2SCharles.Forsyth FPACTIVE, 63*74a4d8c2SCharles.Forsyth FPINACTIVE, 64*74a4d8c2SCharles.Forsyth }; 65*74a4d8c2SCharles.Forsyth 66*74a4d8c2SCharles.Forsyth struct FPenv 67*74a4d8c2SCharles.Forsyth { 68*74a4d8c2SCharles.Forsyth ulong status; 69*74a4d8c2SCharles.Forsyth ulong control; 70*74a4d8c2SCharles.Forsyth ushort fpistate; /* emulated fp */ 71*74a4d8c2SCharles.Forsyth ulong regs[8][3]; /* emulated fp */ 72*74a4d8c2SCharles.Forsyth }; 73*74a4d8c2SCharles.Forsyth 74*74a4d8c2SCharles.Forsyth /* 75*74a4d8c2SCharles.Forsyth * This structure must agree with fpsave and fprestore asm routines 76*74a4d8c2SCharles.Forsyth */ 77*74a4d8c2SCharles.Forsyth struct FPU 78*74a4d8c2SCharles.Forsyth { 79*74a4d8c2SCharles.Forsyth FPenv env; 80*74a4d8c2SCharles.Forsyth uchar regs[80]; /* floating point registers */ 81*74a4d8c2SCharles.Forsyth }; 82*74a4d8c2SCharles.Forsyth 83*74a4d8c2SCharles.Forsyth struct Label 84*74a4d8c2SCharles.Forsyth { 85*74a4d8c2SCharles.Forsyth ulong sp; 86*74a4d8c2SCharles.Forsyth ulong pc; 87*74a4d8c2SCharles.Forsyth }; 88*74a4d8c2SCharles.Forsyth 89*74a4d8c2SCharles.Forsyth struct Lock 90*74a4d8c2SCharles.Forsyth { 91*74a4d8c2SCharles.Forsyth ulong key; 92*74a4d8c2SCharles.Forsyth ulong sr; 93*74a4d8c2SCharles.Forsyth ulong pc; 94*74a4d8c2SCharles.Forsyth int pri; 95*74a4d8c2SCharles.Forsyth }; 96*74a4d8c2SCharles.Forsyth 97*74a4d8c2SCharles.Forsyth #include "../port/portdat.h" 98*74a4d8c2SCharles.Forsyth 99*74a4d8c2SCharles.Forsyth /* 100*74a4d8c2SCharles.Forsyth * machine dependent definitions not used by ../port/dat.h 101*74a4d8c2SCharles.Forsyth */ 102*74a4d8c2SCharles.Forsyth struct Mach 103*74a4d8c2SCharles.Forsyth { 104*74a4d8c2SCharles.Forsyth ulong ticks; /* of the clock since boot time */ 105*74a4d8c2SCharles.Forsyth Proc *proc; /* current process on this processor */ 106*74a4d8c2SCharles.Forsyth Label sched; /* scheduler wakeup */ 107*74a4d8c2SCharles.Forsyth Lock alarmlock; /* access to alarm list */ 108*74a4d8c2SCharles.Forsyth void *alarm; /* alarms bound to this clock */ 109*74a4d8c2SCharles.Forsyth int machno; 110*74a4d8c2SCharles.Forsyth int nrdy; 111*74a4d8c2SCharles.Forsyth 112*74a4d8c2SCharles.Forsyth int stack[1]; 113*74a4d8c2SCharles.Forsyth }; 114*74a4d8c2SCharles.Forsyth 115*74a4d8c2SCharles.Forsyth #define MACHP(n) (n == 0 ? (Mach*)(MACHADDR) : (Mach*)0) 116*74a4d8c2SCharles.Forsyth 117*74a4d8c2SCharles.Forsyth extern Mach Mach0; 118*74a4d8c2SCharles.Forsyth extern Mach *m; 119*74a4d8c2SCharles.Forsyth extern Proc *up; 120*74a4d8c2SCharles.Forsyth 121*74a4d8c2SCharles.Forsyth typedef struct MemBank { 122*74a4d8c2SCharles.Forsyth uint pbase; 123*74a4d8c2SCharles.Forsyth uint plimit; 124*74a4d8c2SCharles.Forsyth uint vbase; 125*74a4d8c2SCharles.Forsyth uint vlimit; 126*74a4d8c2SCharles.Forsyth } MemBank; 127*74a4d8c2SCharles.Forsyth 128*74a4d8c2SCharles.Forsyth enum { 129*74a4d8c2SCharles.Forsyth // DMA configuration parameters 130*74a4d8c2SCharles.Forsyth 131*74a4d8c2SCharles.Forsyth // DMA Direction 132*74a4d8c2SCharles.Forsyth DmaOUT= 0, 133*74a4d8c2SCharles.Forsyth DmaIN= 1, 134*74a4d8c2SCharles.Forsyth 135*74a4d8c2SCharles.Forsyth // dma endianess 136*74a4d8c2SCharles.Forsyth DmaLittle= 0, 137*74a4d8c2SCharles.Forsyth DmaBig= 1, 138*74a4d8c2SCharles.Forsyth 139*74a4d8c2SCharles.Forsyth // dma devices 140*74a4d8c2SCharles.Forsyth DmaUDC= 0, 141*74a4d8c2SCharles.Forsyth DmaSDLC= 2, 142*74a4d8c2SCharles.Forsyth DmaUART0= 4, 143*74a4d8c2SCharles.Forsyth DmaHSSP= 6, 144*74a4d8c2SCharles.Forsyth DmaUART1= 7, // special case (is really 6) 145*74a4d8c2SCharles.Forsyth DmaUART2= 8, 146*74a4d8c2SCharles.Forsyth DmaMCPaudio= 10, 147*74a4d8c2SCharles.Forsyth DmaMCPtelecom= 12, 148*74a4d8c2SCharles.Forsyth DmaSSP= 14, 149*74a4d8c2SCharles.Forsyth }; 150*74a4d8c2SCharles.Forsyth 151*74a4d8c2SCharles.Forsyth enum touch_source { 152*74a4d8c2SCharles.Forsyth TOUCH_READ_X1, TOUCH_READ_X2, TOUCH_READ_X3, TOUCH_READ_X4, 153*74a4d8c2SCharles.Forsyth TOUCH_READ_Y1, TOUCH_READ_Y2, TOUCH_READ_Y3, TOUCH_READ_Y4, 154*74a4d8c2SCharles.Forsyth TOUCH_READ_P1, TOUCH_READ_P2, 155*74a4d8c2SCharles.Forsyth TOUCH_READ_RX1, TOUCH_READ_RX2, 156*74a4d8c2SCharles.Forsyth TOUCH_READ_RY1, TOUCH_READ_RY2, 157*74a4d8c2SCharles.Forsyth TOUCH_NUMRAWCAL = 10, 158*74a4d8c2SCharles.Forsyth }; 159*74a4d8c2SCharles.Forsyth 160*74a4d8c2SCharles.Forsyth struct TouchPnt { 161*74a4d8c2SCharles.Forsyth int x; 162*74a4d8c2SCharles.Forsyth int y; 163*74a4d8c2SCharles.Forsyth }; 164*74a4d8c2SCharles.Forsyth 165*74a4d8c2SCharles.Forsyth struct TouchTrans { 166*74a4d8c2SCharles.Forsyth int xxm; 167*74a4d8c2SCharles.Forsyth int xym; 168*74a4d8c2SCharles.Forsyth int yxm; 169*74a4d8c2SCharles.Forsyth int yym; 170*74a4d8c2SCharles.Forsyth int xa; 171*74a4d8c2SCharles.Forsyth int ya; 172*74a4d8c2SCharles.Forsyth }; 173*74a4d8c2SCharles.Forsyth 174*74a4d8c2SCharles.Forsyth struct TouchCal { 175*74a4d8c2SCharles.Forsyth TouchPnt p[4]; // screen points 176*74a4d8c2SCharles.Forsyth TouchPnt r[4][4];// raw points 177*74a4d8c2SCharles.Forsyth TouchTrans t[4]; // transformations 178*74a4d8c2SCharles.Forsyth TouchPnt err; // maximum error 179*74a4d8c2SCharles.Forsyth TouchPnt var; // usual maximum variance for readings 180*74a4d8c2SCharles.Forsyth int ptp; // pressure threshold for press 181*74a4d8c2SCharles.Forsyth int ptr; // pressure threshold for release 182*74a4d8c2SCharles.Forsyth }; 183*74a4d8c2SCharles.Forsyth 184*74a4d8c2SCharles.Forsyth extern TouchCal touchcal; 185*74a4d8c2SCharles.Forsyth 186*74a4d8c2SCharles.Forsyth struct Vmode { 187*74a4d8c2SCharles.Forsyth int wid; /* 0 -> default or any match for all fields */ 188*74a4d8c2SCharles.Forsyth int hgt; 189*74a4d8c2SCharles.Forsyth uchar d; 190*74a4d8c2SCharles.Forsyth uchar hz; 191*74a4d8c2SCharles.Forsyth ushort flags; 192*74a4d8c2SCharles.Forsyth }; 193*74a4d8c2SCharles.Forsyth 194*74a4d8c2SCharles.Forsyth enum { 195*74a4d8c2SCharles.Forsyth VMODE_MONO = 0x0001, /* monochrome display */ 196*74a4d8c2SCharles.Forsyth VMODE_COLOR = 0x0002, /* color (RGB) display */ 197*74a4d8c2SCharles.Forsyth VMODE_TFT = 0x0004, /* TFT (active matrix) display */ 198*74a4d8c2SCharles.Forsyth VMODE_STATIC = 0x0010, /* fixed palette */ 199*74a4d8c2SCharles.Forsyth VMODE_PSEUDO = 0x0020, /* changeable palette */ 200*74a4d8c2SCharles.Forsyth VMODE_LINEAR = 0x0100, /* linear frame buffer */ 201*74a4d8c2SCharles.Forsyth VMODE_PAGED = 0x0200, /* paged frame buffer */ 202*74a4d8c2SCharles.Forsyth VMODE_PLANAR = 0x1000, /* pixel bits split between planes */ 203*74a4d8c2SCharles.Forsyth VMODE_PACKED = 0x2000, /* pixel bits packed together */ 204*74a4d8c2SCharles.Forsyth VMODE_LILEND = 0x4000, /* little endian pixel layout */ 205*74a4d8c2SCharles.Forsyth VMODE_BIGEND = 0x8000, /* big endian pixel layout */ 206*74a4d8c2SCharles.Forsyth }; 207*74a4d8c2SCharles.Forsyth 208*74a4d8c2SCharles.Forsyth /* 209*74a4d8c2SCharles.Forsyth * Interface to PCMCIA stubs 210*74a4d8c2SCharles.Forsyth */ 211*74a4d8c2SCharles.Forsyth enum { 212*74a4d8c2SCharles.Forsyth /* argument to pcmpin() */ 213*74a4d8c2SCharles.Forsyth PCMready, 214*74a4d8c2SCharles.Forsyth PCMeject, 215*74a4d8c2SCharles.Forsyth PCMstschng, 216*74a4d8c2SCharles.Forsyth }; 217*74a4d8c2SCharles.Forsyth 218*74a4d8c2SCharles.Forsyth #define swcursor 1 219