syslinux/gpxe/src/drivers/net/pnic_api.h
<<
>>
Prefs
   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
  15FILE_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
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.