Modules/PRO100 - Implimenting, still untested
[tpg/acess2.git] / KernelLand / Modules / Network / PRO100 / pro100_hw.h
1 /*
2  * Acess2 PRO/100 Driver
3  * - By John Hodge (thePowersGang)
4  *
5  * pro100_hw.h
6  * - Hardware header
7  */
8 #ifndef _PRO100_HW_H_
9 #define _PRO100_HW_H_
10
11 enum ePro100_Regs {
12         REG_Status,
13         REG_Ack,
14         REG_Command,
15         REG_IntMask,
16         
17         REG_GenPtr = 4,
18         REG_Port = 8,
19         
20         REG_FlashCtrl = 12,
21         REG_EEPROMCtrl = 14,
22         
23         REG_MDICtrl = 16,
24         REG_RXDMACnt = 20,
25 };
26 struct sCSR
27 {
28         Uint16  Status;
29         Uint16  Command;
30         
31         Uint32  GenPtr;
32         Uint32  Port;
33         
34         Uint16  FlashCtrl;
35         Uint16  EEPROMCtrl;
36         
37         Uint32  MDICtrl;
38         Uint32  RXDMACount;
39 };
40
41 #define STATUS_RUS_MASK 0x003C  // Receive Unit Status
42 #define STATUS_CUS_MASK 0x00C0  // Comamnd Unit Status
43 #define STATUS_FCP      0x0100  // Flow Control Pause
44 #define STATUS_ER       0x0200  // Early Recieve
45 #define STATUS_SWI      0x0400  // Software Interrupt
46 #define STATUS_MDI      0x0800  // Management Data Interrupt
47 #define STATUS_RNR      0x1000  // Receive Not Ready
48 #define STATUS_CNA      0x2000  // Command Unit not active
49 #define STATUS_FR       0x4000  // Frame Recieved
50 #define STATUS_CX       0x8000  // Command Unit executed
51
52 #define CMD_RUC 0x0007
53 #define CMD_CUC 0x00F0
54 #define CMD_M   0x0100  // Interrupt Mask
55 #define CMD_SI  0x0200  // Software Interrupt
56
57 #define MDI_IE  (1 << 29)
58 #define MDI_RDY (1 << 28)
59
60 #define EEPROM_CTRL_SK  0x01    // 
61 #define EEPROM_CTRL_CS  0x02
62 #define EEPROM_CTRL_DI  0x04
63 #define EEPROM_CTRL_DO  0x08
64
65 #define EEPROM_OP_READ  0x06
66
67 enum ePortCommands {
68         PORT_SOFTWARERESET      = 0,
69         PORT_SELFTEST   = 1,
70         PORT_SELECTIVERESET     = 2,
71 };
72
73 enum eRXCommands {
74         RX_CMD_NOP,
75         RX_CMD_START,
76         RX_CMD_RESUME,
77         _RX_CMD_3,
78         RX_CMD_ABORT,
79         _RX_CMD_5,
80         RX_CMD_ADDR_LOAD,
81         RX_CMD_RESUMENR,
82 };
83 enum eCUCommands {
84         CU_CMD_NOP      = 0<<4,
85         CU_CMD_START    = 1<<4,
86         CU_CMD_RESUME   = 2<<4,
87         CU_CMD_BASE     = 6<<4,
88 };
89
90 enum eCommands {
91         CMD_Nop,
92         CMD_IAddrSetup,
93         CMD_Configure,
94         CMD_MulticastList,
95         CMD_Tx,
96 };
97
98 typedef struct sCommandUnit
99 {
100         Uint16  Status;
101         Uint16  Command;
102         Uint32  Link;
103 };
104
105 typedef struct sRXBuffer        tRXBuffer;
106
107 struct sRXBuffer
108 {
109         Uint16  Status;
110         Uint16  Command;
111         Uint32  Link;   // Base from RX base
112
113         Uint32  RXBufAddr;      // Unused according to qemu source
114         Uint16  Count;
115         Uint16  Size;
116 } ALIGN(4);
117
118 #endif
119

UCC git Repository :: git.ucc.asn.au