You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pnic_api.h 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. * PCI parameters
  16. */
  17. #define PNIC_PCI_VENDOR 0xfefe /* Hopefully these won't clash with */
  18. #define PNIC_PCI_DEVICE 0xefef /* any real PCI device IDs. */
  19. /*
  20. * 'Hardware' register addresses, offset from io_base
  21. */
  22. #define PNIC_REG_CMD 0x00 /* Command register, 2 bytes, write only */
  23. #define PNIC_REG_STAT 0x00 /* Status register, 2 bytes, read only */
  24. #define PNIC_REG_LEN 0x02 /* Length register, 2 bytes, read-write */
  25. #define PNIC_REG_DATA 0x04 /* Data port, 1 byte, read-write */
  26. /*
  27. * PNIC_MAX_REG used in Bochs to claim i/o space
  28. */
  29. #define PNIC_MAX_REG 0x04
  30. /*
  31. * Command code definitions: write these into PNIC_REG_CMD
  32. */
  33. #define PNIC_CMD_NOOP 0x0000
  34. #define PNIC_CMD_API_VER 0x0001
  35. #define PNIC_CMD_READ_MAC 0x0002
  36. #define PNIC_CMD_RESET 0x0003
  37. #define PNIC_CMD_XMIT 0x0004
  38. #define PNIC_CMD_RECV 0x0005
  39. #define PNIC_CMD_RECV_QLEN 0x0006
  40. #define PNIC_CMD_MASK_IRQ 0x0007
  41. #define PNIC_CMD_FORCE_IRQ 0x0008
  42. /*
  43. * Status code definitions: read these from PNIC_REG_STAT
  44. *
  45. * We avoid using status codes that might be confused with
  46. * randomly-read data (e.g. 0x0000, 0xffff etc.)
  47. */
  48. #define PNIC_STATUS_OK 0x4f4b /* 'OK' */
  49. #define PNIC_STATUS_UNKNOWN_CMD 0x3f3f /* '??' */
  50. /*
  51. * Other miscellaneous information
  52. */
  53. #define PNIC_API_VERSION 0x0101 /* 1.1 */