ethermii.h 980 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. typedef struct Mii Mii;
  2. typedef struct MiiPhy MiiPhy;
  3. enum { /* registers */
  4. Bmcr = 0x00, /* Basic Mode Control */
  5. Bmsr = 0x01, /* Basic Mode Status */
  6. Phyidr1 = 0x02, /* PHY Identifier #1 */
  7. Phyidr2 = 0x03, /* PHY Identifier #2 */
  8. Anar = 0x04, /* Auto-Negotiation Advertisement */
  9. Anlpar = 0x05, /* AN Link Partner Ability */
  10. Aner = 0x06, /* AN Expansion */
  11. Annptr = 0x07, /* AN Next Page TX */
  12. Annprr = 0x08, /* AN Next Page RX */
  13. Gbtcr = 0x09, /* 1000BASE-T Control */
  14. Gbtsr = 0x0A, /* 1000BASE-T Status */
  15. Gbscr = 0x0F, /* 1000BASE-T Extended Status */
  16. NMiiPhyr = 32,
  17. NMiiPhy = 32,
  18. };
  19. typedef struct Mii {
  20. Lock;
  21. int nphy;
  22. int mask;
  23. MiiPhy* phy[NMiiPhy];
  24. MiiPhy* curphy;
  25. void* ctlr;
  26. int (*mir)(Mii*, int, int);
  27. void (*miw)(Mii*, int, int, int);
  28. } Mii;
  29. typedef struct MiiPhy {
  30. Mii* mii;
  31. int oui;
  32. int phy;
  33. ushort r[NMiiPhyr];
  34. int valid;
  35. int link;
  36. int speed;
  37. int duplex;
  38. int pause;
  39. };
  40. extern int mii(Mii*, int);