|
|
1.1 ! root 1: /* ! 2: * Constants etc. for the Bochs/Etherboot pseudo-NIC ! 3: * ! 4: * This header file must be valid C and C++. ! 5: * ! 6: * Operation of the pseudo-NIC (PNIC) is pretty simple. To write a ! 7: * command plus data, first write the length of the data to ! 8: * PNIC_REG_LEN, then write the data a byte at a type to ! 9: * PNIC_REG_DATA, then write the command code to PNIC_REG_CMD. The ! 10: * status will be available from PNIC_REG_STAT. The length of any ! 11: * data returned will be in PNIC_REG_LEN and can be read a byte at a ! 12: * time from PNIC_REG_DATA. ! 13: */ ! 14: ! 15: FILE_LICENCE ( GPL2_OR_LATER ); ! 16: ! 17: /* ! 18: * PCI parameters ! 19: */ ! 20: #define PNIC_PCI_VENDOR 0xfefe /* Hopefully these won't clash with */ ! 21: #define PNIC_PCI_DEVICE 0xefef /* any real PCI device IDs. */ ! 22: ! 23: /* ! 24: * 'Hardware' register addresses, offset from io_base ! 25: */ ! 26: #define PNIC_REG_CMD 0x00 /* Command register, 2 bytes, write only */ ! 27: #define PNIC_REG_STAT 0x00 /* Status register, 2 bytes, read only */ ! 28: #define PNIC_REG_LEN 0x02 /* Length register, 2 bytes, read-write */ ! 29: #define PNIC_REG_DATA 0x04 /* Data port, 1 byte, read-write */ ! 30: /* ! 31: * PNIC_MAX_REG used in Bochs to claim i/o space ! 32: */ ! 33: #define PNIC_MAX_REG 0x04 ! 34: ! 35: /* ! 36: * Command code definitions: write these into PNIC_REG_CMD ! 37: */ ! 38: #define PNIC_CMD_NOOP 0x0000 ! 39: #define PNIC_CMD_API_VER 0x0001 ! 40: #define PNIC_CMD_READ_MAC 0x0002 ! 41: #define PNIC_CMD_RESET 0x0003 ! 42: #define PNIC_CMD_XMIT 0x0004 ! 43: #define PNIC_CMD_RECV 0x0005 ! 44: #define PNIC_CMD_RECV_QLEN 0x0006 ! 45: #define PNIC_CMD_MASK_IRQ 0x0007 ! 46: #define PNIC_CMD_FORCE_IRQ 0x0008 ! 47: ! 48: /* ! 49: * Status code definitions: read these from PNIC_REG_STAT ! 50: * ! 51: * We avoid using status codes that might be confused with ! 52: * randomly-read data (e.g. 0x0000, 0xffff etc.) ! 53: */ ! 54: #define PNIC_STATUS_OK 0x4f4b /* 'OK' */ ! 55: #define PNIC_STATUS_UNKNOWN_CMD 0x3f3f /* '??' */ ! 56: ! 57: /* ! 58: * Other miscellaneous information ! 59: */ ! 60: ! 61: #define PNIC_API_VERSION 0x0101 /* 1.1 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.