1 1.1 bjh21 /* $NetBSD: nec71071reg.h,v 1.1 2006/10/01 12:39:35 bjh21 Exp $ */ 2 1.1 bjh21 3 1.1 bjh21 /* 4 1.1 bjh21 * Ben Harris 2006 5 1.1 bjh21 * 6 1.1 bjh21 * This file is in the public domain. 7 1.1 bjh21 */ 8 1.1 bjh21 9 1.1 bjh21 /* 10 1.1 bjh21 * NEC uPD71071 DMA Controller 11 1.1 bjh21 * register definitions 12 1.1 bjh21 */ 13 1.1 bjh21 14 1.1 bjh21 /* 15 1.1 bjh21 * This chip is suspiciously much like the Intel 8237, but not actually 16 1.1 bjh21 * compatible with it. 17 1.1 bjh21 */ 18 1.1 bjh21 19 1.1 bjh21 /* Register offsets */ 20 1.1 bjh21 21 1.1 bjh21 #define NEC71071_INIT 0x0 /* Initialize */ 22 1.1 bjh21 #define INIT_RES 0x01 /* Reset */ 23 1.1 bjh21 #define INIT_16B 0x02 /* 16-bit data bus */ 24 1.1 bjh21 #define NEC71071_CHANNEL 0x1 /* Channel Register Read/Write */ 25 1.1 bjh21 #define CHANNEL_SEL0 0x01 /* Channel 0 selected (R) */ 26 1.1 bjh21 #define CHANNEL_SEL1 0x02 /* Channel 1 selected (R) */ 27 1.1 bjh21 #define CHANNEL_SEL2 0x04 /* Channel 2 selected (R) */ 28 1.1 bjh21 #define CHANNEL_SEL3 0x08 /* Channel 3 selected (R) */ 29 1.1 bjh21 #define CHANNEL_RBASE 0x10 /* Only base registers may be accessed */ 30 1.1 bjh21 #define CHANNEL_SELCH 0x03 /* Channel to select (W) */ 31 1.1 bjh21 #define CHANNEL_WBASE 0x04 /* Only base registers may be accessed */ 32 1.1 bjh21 #define NEC71071_COUNTLO 0x2 /* Count register, low byte */ 33 1.1 bjh21 #define NEC71071_COUNTHI 0x3 /* Count register, high byte */ 34 1.1 bjh21 #define NEC71071_ADDRLO 0x4 /* Address register, low byte */ 35 1.1 bjh21 #define NEC71071_ADDRMID 0x5 /* Address register, middle byte */ 36 1.1 bjh21 #define NEC71071_ADDRHI 0x6 /* Address register, high byte */ 37 1.1 bjh21 #define NEC71071_DCTRL1 0x8 /* Device control register, low byte */ 38 1.1 bjh21 #define DCTRL1_MTM 0x01 /* Memory-to-Memory */ 39 1.1 bjh21 #define DCTRL1_AHLD 0x02 /* Fixed Address */ 40 1.1 bjh21 #define DCTRL1_DDMA 0x04 /* Disable DMA Operation */ 41 1.1 bjh21 #define DCTRL1_CMP 0x08 /* Compressed Timing */ 42 1.1 bjh21 #define DCTRL1_ROT 0x10 /* Rotational Priority */ 43 1.1 bjh21 #define DCTRL1_EXW 0x20 /* Extended Writing */ 44 1.1 bjh21 #define DCTRL1_RQL 0x40 /* DMARQ active low */ 45 1.1 bjh21 #define DCTRL1_AKL 0x80 /* DMAAK active high */ 46 1.1 bjh21 #define NEC71071_DCTRL2 0x9 /* Device control register, high byte */ 47 1.1 bjh21 #define DCTRL2_BHLD 0x01 /* Bus Hold mode */ 48 1.1 bjh21 #define DCTRL2_WEV 0x02 /* Write Enable During Verify */ 49 1.1 bjh21 #define NEC71071_MODE 0xA /* Mode control register */ 50 1.1 bjh21 #define MODE_WNB 0x01 /* Word (not byte) transfer */ 51 1.1 bjh21 #define MODE_TDIR 0x0c /* Transfer direction */ 52 1.1 bjh21 #define MODE_TDIR_VRFY 0x00 /* Verify */ 53 1.1 bjh21 #define MODE_TDIR_IOTM 0x04 /* I/O to memory */ 54 1.1 bjh21 #define MODE_TDIR_MTIO 0x08 /* memory to I/O */ 55 1.1 bjh21 #define MODE_AUTI 0x10 /* Autoinitialize */ 56 1.1 bjh21 #define MODE_ADIR 0x20 /* Address direction (decrement) */ 57 1.1 bjh21 #define MODE_TMODE 0xc0 /* Transfer mode */ 58 1.1 bjh21 #define MODE_TMODE_DMD 0x00 /* Demand mode */ 59 1.1 bjh21 #define MODE_TMODE_SGL 0x40 /* Single mode */ 60 1.1 bjh21 #define MODE_TMODE_BLK 0x80 /* Block mode */ 61 1.1 bjh21 #define MODE_TMODE_CAS 0xc0 /* Cascade mode */ 62 1.1 bjh21 #define NEC71071_STATUS 0xB /* Status register */ 63 1.1 bjh21 #define STATUS_TC 0x0f /* Terminal count (one per channel) */ 64 1.1 bjh21 #define STATUS_RQ 0xf0 /* DMA Request active (one per channel) */ 65 1.1 bjh21 #define NEC71071_TEMPLO 0xC /* Temporary register (low byte) */ 66 1.1 bjh21 #define NEC71071_TEMPHI 0xD /* Temporary register (high byte) */ 67 1.1 bjh21 #define NEC71071_REQUEST 0xE /* Request register (one bit/channel) */ 68 1.1 bjh21 #define NEC71071_MASK 0xF /* Mask register (one bit/channel) */ 69 1.1 bjh21 70