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/io.h | |
| parent | 46439007cf417cbd9ac8049bb4122c890097a0fa (diff) | |
20060303
Diffstat (limited to 'os/ks32/io.h')
| -rw-r--r-- | os/ks32/io.h | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/os/ks32/io.h b/os/ks32/io.h new file mode 100644 index 00000000..5e172140 --- /dev/null +++ b/os/ks32/io.h @@ -0,0 +1,168 @@ +/* + * Memory Map for Samsung ks32c50100 + */ + +#define SFRbase 0x7ff0000 + +#define SYSCFG (*(ulong *)(SFRbase + 0)) + +#define IOPbase (SFRbase + 0x5000) +#define IOPMOD (*(ulong *)(IOPbase + 0)) +#define IOPCON (*(ulong *)(IOPbase + 4)) +#define IOPDATA (*(ulong *)(IOPbase + 8)) + +#define MaxIRQbit 20 /* Maximum IRQ */ +#define EXT0bit 0 +#define EXT1bit 1 +#define EXT2bit 2 +#define EXT3bit 3 +#define UART0TXbit 4 +#define UART0RXbit 5 +#define UART1TXbit 6 +#define UART1RXbit 7 +#define GDMA0 8 +#define GDMA1 9 +#define TIMER0bit 10 +#define TIMER1bit 11 +#define HDLCATXbit 12 +#define HDLCARXbit 13 +#define HDLCBTXbit 14 +#define HDLCBRXbit 15 +#define ETHBDMATXbit 16 +#define ETHBDMARXbit 17 +#define ETHMACRXint 18 +#define ETHMAXTXint 19 +#define IICbit 20 + +#define TIMERbit(n) (TIMER0bit + n) +#define UARTTXbit(n) (UART0TXbit + (n) * 2) +#define UARTRXbit(n) (UART0RXbit + (n) * 2) + +/* + * Interrupt controller + */ + +#define INTbase (SFRbase + 0x4000) +#define INTREG ((IntReg *)INTbase) + +typedef struct IntReg IntReg; +struct IntReg { + ulong mod; /* 00 */ + ulong pnd; /* 04 */ + ulong msk; /* 08 */ + ulong pri[6]; /* 0c */ + ulong offset; /* 24 */ + ulong pndpri; /* 28 */ + ulong pndtst; /* 2c */ + ulong oset_fiq; /* 30 */ + ulong oset_irq; /* 34 */ +}; + +/* + * UARTs + */ +#define UART0base (SFRbase + 0xd000) +#define UART1base (SFRbase + 0xe000) +#define UARTREG ((UartReg *)UART0base) + +typedef struct UartReg UartReg; +struct UartReg { + ulong lcon; /* 00 */ + ulong con; /* 04 */ + ulong stat; /* 08 */ + ulong txbuf; /* 0c */ + ulong rxbuf; /* 10 */ + ulong brdiv; /* 14 */ + ulong pad[(UART1base - UART0base - 0x18) / 4]; +}; + +#define ULCON_WLMASK 0x03 +#define ULCON_WL5 0x00 +#define ULCON_WL6 0x01 +#define ULCON_WL7 0x02 +#define ULCON_WL8 0x03 + +#define ULCON_STOPMASK 0x04 +#define ULCON_STOP1 0x00 +#define ULCON_STOP2 0x04 + +#define ULCON_PMDMASK 0x38 +#define ULCON_PMDNONE 0x00 +#define ULCON_PMDODD (4 << 3) +#define ULCON_PMDEVEN (5 << 3) +#define ULCON_PMDFORCE1 (6 << 3) +#define ULCON_PMDFORCE0 (7 << 3) + +#define ULCON_CLOCKMASK 0x40 +#define ULCON_CLOCKMCLK 0x00 +#define ULCON_CLOCKUCLK (1 << 6) + +#define ULCON_IRMASK 0x80 +#define ULCON_IROFF 0x00 +#define ULCON_IRON 0x80 + +#define UCON_RXMDMASK 0x03 +#define UCON_RXMDOFF 0x00 +#define UCON_RXMDINT 0x01 +#define UCON_RXMDGDMA0 0x02 +#define UCON_RXMDGDMA1 0x03 + +#define UCON_SINTMASK 0x04 +#define UCON_SINTOFF 0x00 +#define UCON_SINTON 0x04 + +#define UCON_TXMDMASK 0x18 +#define UCON_TXMDOFF (0 << 3) +#define UCON_TXMDINT (1 << 3) +#define UCON_TXMDGDMA0 (2 << 3) +#define UCON_TXMDGDMA1 (3 << 3) + +#define UCON_DSRMASK 0x20 +#define UCON_DSRON (1 << 5) +#define UCON_DSROFF (0 << 5) + +#define UCON_BRKMASK 0x40 +#define UCON_BRKON (1 << 6) +#define UCON_BRKOFF (0 << 6) + +#define UCON_LOOPMASK 0x80 +#define UCON_LOOPON 0x80 +#define UCON_LOOPOFF 0x00 + +#define USTAT_OV 0x01 +#define USTAT_PE 0x02 +#define USTAT_FE 0x04 +#define USTAT_BKD 0x08 +#define USTAT_DTR 0x10 +#define USTAT_RDR 0x20 +#define USTAT_TBE 0x40 +#define USTAT_TC 0x80 + +/* + * Timers + */ +#define TIMERbase (SFRbase + 0x6000) +#define TIMERREG ((TimerReg *)TIMERbase) + +typedef struct TimerReg TimerReg; +struct TimerReg { + ulong mod; + ulong data[2]; + ulong cnt[2]; +}; + +/* + * PC compatibility support for PCMCIA drivers + */ + +extern ulong ins(ulong); /* return ulong to prevent unecessary compiler shifting */ +void outs(ulong, int); +#define inb(addr) (*((uchar*)(addr))) +#define inl(addr) (*((ulong*)(addr))) +ulong ins(ulong); +#define outb(addr, val) *((uchar*)(addr)) = (val) +#define outl(addr, val) *((ulong*)(addr)) = (val) + +void inss(ulong, void*, int); +void outss(ulong, void*, int); + |
