summaryrefslogtreecommitdiff
path: root/os/ks32/dat.h
diff options
context:
space:
mode:
Diffstat (limited to 'os/ks32/dat.h')
-rw-r--r--os/ks32/dat.h218
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