Home | History | Annotate | Download | only in net
      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 */
     62