drv_eth.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. /*
  2. * Copyright (c) 2006-2022, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2022-10-20 luobeihai first version
  9. */
  10. #ifndef __DRV_ETH_H__
  11. #define __DRV_ETH_H__
  12. #include <rtthread.h>
  13. #include <rthw.h>
  14. #include <rtdevice.h>
  15. #include <board.h>
  16. #ifndef LOG_TAG
  17. #define DBG_TAG "drv"
  18. #else
  19. #define DBG_TAG LOG_TAG
  20. #endif /* LOG_TAG */
  21. #ifdef DRV_DEBUG
  22. #define DBG_LVL DBG_LOG
  23. #else
  24. #define DBG_LVL DBG_INFO
  25. #endif /* DRV_DEBUG */
  26. #include <rtdbg.h>
  27. /* The PHY ID one register */
  28. #define PHY_ID1_REG 0x02U
  29. #ifdef PHY_USING_LAN8720A
  30. /* The PHY interrupt source flag register. */
  31. #define PHY_INTERRUPT_FLAG_REG 0x1DU
  32. /* The PHY interrupt mask register. */
  33. #define PHY_INTERRUPT_MASK_REG 0x1EU
  34. #define PHY_LINK_DOWN_MASK (1<<4)
  35. #define PHY_AUTO_NEGO_COMPLETE_MASK (1<<6)
  36. /* The PHY status register. */
  37. #define PHY_Status_REG 0x1FU
  38. #define PHY_10M_MASK (1<<2)
  39. #define PHY_100M_MASK (1<<3)
  40. #define PHY_FULL_DUPLEX_MASK (1<<4)
  41. #define PHY_Status_SPEED_10M(sr) ((sr) & PHY_10M_MASK)
  42. #define PHY_Status_SPEED_100M(sr) ((sr) & PHY_100M_MASK)
  43. #define PHY_Status_FULL_DUPLEX(sr) ((sr) & PHY_FULL_DUPLEX_MASK)
  44. #elif defined(PHY_USING_DM9161CEP)
  45. #define PHY_Status_REG 0x11U
  46. #define PHY_10M_MASK ((1<<12) || (1<<13))
  47. #define PHY_100M_MASK ((1<<14) || (1<<15))
  48. #define PHY_FULL_DUPLEX_MASK ((1<<15) || (1<<13))
  49. #define PHY_Status_SPEED_10M(sr) ((sr) & PHY_10M_MASK)
  50. #define PHY_Status_SPEED_100M(sr) ((sr) & PHY_100M_MASK)
  51. #define PHY_Status_FULL_DUPLEX(sr) ((sr) & PHY_FULL_DUPLEX_MASK)
  52. /* The PHY interrupt source flag register. */
  53. #define PHY_INTERRUPT_FLAG_REG 0x15U
  54. /* The PHY interrupt mask register. */
  55. #define PHY_INTERRUPT_MASK_REG 0x15U
  56. #define PHY_LINK_CHANGE_FLAG (1<<2)
  57. #define PHY_LINK_CHANGE_MASK (1<<9)
  58. #define PHY_INT_MASK 0
  59. #elif defined(PHY_USING_DP83848C)
  60. #define PHY_Status_REG 0x10U
  61. #define PHY_10M_MASK (1<<1)
  62. #define PHY_FULL_DUPLEX_MASK (1<<2)
  63. #define PHY_Status_SPEED_10M(sr) ((sr) & PHY_10M_MASK)
  64. #define PHY_Status_SPEED_100M(sr) (!PHY_Status_SPEED_10M(sr))
  65. #define PHY_Status_FULL_DUPLEX(sr) ((sr) & PHY_FULL_DUPLEX_MASK)
  66. /* The PHY interrupt source flag register. */
  67. #define PHY_INTERRUPT_FLAG_REG 0x12U
  68. #define PHY_LINK_CHANGE_FLAG (1<<13)
  69. /* The PHY interrupt control register. */
  70. #define PHY_INTERRUPT_CTRL_REG 0x11U
  71. #define PHY_INTERRUPT_EN ((1<<0)|(1<<1))
  72. /* The PHY interrupt mask register. */
  73. #define PHY_INTERRUPT_MASK_REG 0x12U
  74. #define PHY_INT_MASK (1<<5)
  75. #endif
  76. #ifdef PHY_USING_LAN8742A
  77. /* The PHY interrupt source flag register. */
  78. #define PHY_INTERRUPT_FLAG_REG 0x1DU
  79. /* The PHY interrupt mask register. */
  80. #define PHY_INTERRUPT_MASK_REG 0x1EU
  81. #define PHY_LINK_DOWN_MASK (1<<4)
  82. #define PHY_AUTO_NEGO_COMPLETE_MASK (1<<6)
  83. /* The PHY status register. */
  84. #define PHY_Status_REG 0x1FU
  85. #define PHY_10M_MASK (1<<2)
  86. #define PHY_100M_MASK (1<<3)
  87. #define PHY_FULL_DUPLEX_MASK (1<<4)
  88. #define PHY_Status_SPEED_10M(sr) ((sr) & PHY_10M_MASK)
  89. #define PHY_Status_SPEED_100M(sr) ((sr) & PHY_100M_MASK)
  90. #define PHY_Status_FULL_DUPLEX(sr) ((sr) & PHY_FULL_DUPLEX_MASK)
  91. #endif /* PHY_USING_LAN8742A */
  92. #endif /* __DRV_ETH_H__ */