Modules/PRO100 - Implimenting, still untested
[tpg/acess2.git] / KernelLand / Modules / Network / PRO100 / pro100_hw.h
diff --git a/KernelLand/Modules/Network/PRO100/pro100_hw.h b/KernelLand/Modules/Network/PRO100/pro100_hw.h
new file mode 100644 (file)
index 0000000..cc665c3
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Acess2 PRO/100 Driver
+ * - By John Hodge (thePowersGang)
+ *
+ * pro100_hw.h
+ * - Hardware header
+ */
+#ifndef _PRO100_HW_H_
+#define _PRO100_HW_H_
+
+enum ePro100_Regs {
+       REG_Status,
+       REG_Ack,
+       REG_Command,
+       REG_IntMask,
+       
+       REG_GenPtr = 4,
+       REG_Port = 8,
+       
+       REG_FlashCtrl = 12,
+       REG_EEPROMCtrl = 14,
+       
+       REG_MDICtrl = 16,
+       REG_RXDMACnt = 20,
+};
+struct sCSR
+{
+       Uint16  Status;
+       Uint16  Command;
+       
+       Uint32  GenPtr;
+       Uint32  Port;
+       
+       Uint16  FlashCtrl;
+       Uint16  EEPROMCtrl;
+       
+       Uint32  MDICtrl;
+       Uint32  RXDMACount;
+};
+
+#define STATUS_RUS_MASK        0x003C  // Receive Unit Status
+#define STATUS_CUS_MASK        0x00C0  // Comamnd Unit Status
+#define STATUS_FCP     0x0100  // Flow Control Pause
+#define STATUS_ER      0x0200  // Early Recieve
+#define STATUS_SWI     0x0400  // Software Interrupt
+#define STATUS_MDI     0x0800  // Management Data Interrupt
+#define STATUS_RNR     0x1000  // Receive Not Ready
+#define STATUS_CNA     0x2000  // Command Unit not active
+#define STATUS_FR      0x4000  // Frame Recieved
+#define STATUS_CX      0x8000  // Command Unit executed
+
+#define CMD_RUC        0x0007
+#define CMD_CUC        0x00F0
+#define CMD_M  0x0100  // Interrupt Mask
+#define CMD_SI 0x0200  // Software Interrupt
+
+#define MDI_IE (1 << 29)
+#define MDI_RDY        (1 << 28)
+
+#define EEPROM_CTRL_SK 0x01    // 
+#define EEPROM_CTRL_CS 0x02
+#define EEPROM_CTRL_DI 0x04
+#define EEPROM_CTRL_DO 0x08
+
+#define EEPROM_OP_READ 0x06
+
+enum ePortCommands {
+       PORT_SOFTWARERESET      = 0,
+       PORT_SELFTEST   = 1,
+       PORT_SELECTIVERESET     = 2,
+};
+
+enum eRXCommands {
+       RX_CMD_NOP,
+       RX_CMD_START,
+       RX_CMD_RESUME,
+       _RX_CMD_3,
+       RX_CMD_ABORT,
+       _RX_CMD_5,
+       RX_CMD_ADDR_LOAD,
+       RX_CMD_RESUMENR,
+};
+enum eCUCommands {
+       CU_CMD_NOP      = 0<<4,
+       CU_CMD_START    = 1<<4,
+       CU_CMD_RESUME   = 2<<4,
+       CU_CMD_BASE     = 6<<4,
+};
+
+enum eCommands {
+       CMD_Nop,
+       CMD_IAddrSetup,
+       CMD_Configure,
+       CMD_MulticastList,
+       CMD_Tx,
+};
+
+typedef struct sCommandUnit
+{
+       Uint16  Status;
+       Uint16  Command;
+       Uint32  Link;
+};
+
+typedef struct sRXBuffer       tRXBuffer;
+
+struct sRXBuffer
+{
+       Uint16  Status;
+       Uint16  Command;
+       Uint32  Link;   // Base from RX base
+
+       Uint32  RXBufAddr;      // Unused according to qemu source
+       Uint16  Count;
+       Uint16  Size;
+} ALIGN(4);
+
+#endif
+

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