Driver_ETH_PHY.h 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /*
  2. * Copyright (c) 2013-2017 ARM Limited. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Licensed under the Apache License, Version 2.0 (the License); you may
  7. * not use this file except in compliance with the License.
  8. * You may obtain a copy of the License at
  9. *
  10. * www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an AS IS BASIS, WITHOUT
  14. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. *
  18. * $Date: 2. Feb 2017
  19. * $Revision: V2.1
  20. *
  21. * Project: Ethernet PHY (Physical Transceiver) Driver definitions
  22. */
  23. /* History:
  24. * Version 2.1
  25. * ARM_ETH_LINK_INFO made volatile
  26. * Version 2.0
  27. * changed parameter "mode" in function ARM_ETH_PHY_SetMode
  28. * Changed prefix ARM_DRV -> ARM_DRIVER
  29. * Changed return values of some functions to int32_t
  30. * Version 1.10
  31. * Namespace prefix ARM_ added
  32. * Version 1.00
  33. * Initial release
  34. */
  35. #ifndef DRIVER_ETH_PHY_H_
  36. #define DRIVER_ETH_PHY_H_
  37. #ifdef __cplusplus
  38. extern "C"
  39. {
  40. #endif
  41. #include "Driver_ETH.h"
  42. #define ARM_ETH_PHY_API_VERSION ARM_DRIVER_VERSION_MAJOR_MINOR(2,1) /* API version */
  43. #define _ARM_Driver_ETH_PHY_(n) Driver_ETH_PHY##n
  44. #define ARM_Driver_ETH_PHY_(n) _ARM_Driver_ETH_PHY_(n)
  45. /****** Ethernet PHY Mode *****/
  46. #define ARM_ETH_PHY_SPEED_Pos 0
  47. #define ARM_ETH_PHY_SPEED_Msk (3UL << ARM_ETH_PHY_SPEED_Pos)
  48. #define ARM_ETH_PHY_SPEED_10M (ARM_ETH_SPEED_10M << ARM_ETH_PHY_SPEED_Pos) ///< 10 Mbps link speed
  49. #define ARM_ETH_PHY_SPEED_100M (ARM_ETH_SPEED_100M << ARM_ETH_PHY_SPEED_Pos) ///< 100 Mbps link speed
  50. #define ARM_ETH_PHY_SPEED_1G (ARM_ETH_SPEED_1G << ARM_ETH_PHY_SPEED_Pos) ///< 1 Gpbs link speed
  51. #define ARM_ETH_PHY_DUPLEX_Pos 2
  52. #define ARM_ETH_PHY_DUPLEX_Msk (1UL << ARM_ETH_PHY_DUPLEX_Pos)
  53. #define ARM_ETH_PHY_DUPLEX_HALF (ARM_ETH_DUPLEX_HALF << ARM_ETH_PHY_DUPLEX_Pos) ///< Half duplex link
  54. #define ARM_ETH_PHY_DUPLEX_FULL (ARM_ETH_DUPLEX_FULL << ARM_ETH_PHY_DUPLEX_Pos) ///< Full duplex link
  55. #define ARM_ETH_PHY_AUTO_NEGOTIATE (1UL << 3) ///< Auto Negotiation mode
  56. #define ARM_ETH_PHY_LOOPBACK (1UL << 4) ///< Loop-back test mode
  57. #define ARM_ETH_PHY_ISOLATE (1UL << 5) ///< Isolate PHY from MII/RMII interface
  58. // Function documentation
  59. /**
  60. \fn ARM_DRIVER_VERSION ARM_ETH_PHY_GetVersion (void)
  61. \brief Get driver version.
  62. \return \ref ARM_DRIVER_VERSION
  63. */
  64. /**
  65. \fn int32_t ARM_ETH_PHY_Initialize (ARM_ETH_PHY_Read_t fn_read,
  66. ARM_ETH_PHY_Write_t fn_write)
  67. \brief Initialize Ethernet PHY Device.
  68. \param[in] fn_read Pointer to \ref ARM_ETH_MAC_PHY_Read
  69. \param[in] fn_write Pointer to \ref ARM_ETH_MAC_PHY_Write
  70. \return \ref execution_status
  71. */
  72. /**
  73. \fn int32_t ARM_ETH_PHY_Uninitialize (void)
  74. \brief De-initialize Ethernet PHY Device.
  75. \return \ref execution_status
  76. */
  77. /**
  78. \fn int32_t ARM_ETH_PHY_PowerControl (ARM_POWER_STATE state)
  79. \brief Control Ethernet PHY Device Power.
  80. \param[in] state Power state
  81. \return \ref execution_status
  82. */
  83. /**
  84. \fn int32_t ARM_ETH_PHY_SetInterface (uint32_t interface)
  85. \brief Set Ethernet Media Interface.
  86. \param[in] interface Media Interface type
  87. \return \ref execution_status
  88. */
  89. /**
  90. \fn int32_t ARM_ETH_PHY_SetMode (uint32_t mode)
  91. \brief Set Ethernet PHY Device Operation mode.
  92. \param[in] mode Operation Mode
  93. \return \ref execution_status
  94. */
  95. /**
  96. \fn ARM_ETH_LINK_STATE ARM_ETH_PHY_GetLinkState (void)
  97. \brief Get Ethernet PHY Device Link state.
  98. \return current link status \ref ARM_ETH_LINK_STATE
  99. */
  100. /**
  101. \fn ARM_ETH_LINK_INFO ARM_ETH_PHY_GetLinkInfo (void)
  102. \brief Get Ethernet PHY Device Link information.
  103. \return current link parameters \ref ARM_ETH_LINK_INFO
  104. */
  105. typedef int32_t (*ARM_ETH_PHY_Read_t) (uint8_t phy_addr, uint8_t reg_addr, uint16_t *data); ///< Pointer to \ref ARM_ETH_MAC_PHY_Read : Read Ethernet PHY Register.
  106. typedef int32_t (*ARM_ETH_PHY_Write_t) (uint8_t phy_addr, uint8_t reg_addr, uint16_t data); ///< Pointer to \ref ARM_ETH_MAC_PHY_Write : Write Ethernet PHY Register.
  107. /**
  108. \brief Access structure of the Ethernet PHY Driver
  109. */
  110. typedef struct _ARM_DRIVER_ETH_PHY {
  111. ARM_DRIVER_VERSION (*GetVersion) (void); ///< Pointer to \ref ARM_ETH_PHY_GetVersion : Get driver version.
  112. int32_t (*Initialize) (ARM_ETH_PHY_Read_t fn_read,
  113. ARM_ETH_PHY_Write_t fn_write); ///< Pointer to \ref ARM_ETH_PHY_Initialize : Initialize PHY Device.
  114. int32_t (*Uninitialize) (void); ///< Pointer to \ref ARM_ETH_PHY_Uninitialize : De-initialize PHY Device.
  115. int32_t (*PowerControl) (ARM_POWER_STATE state); ///< Pointer to \ref ARM_ETH_PHY_PowerControl : Control PHY Device Power.
  116. int32_t (*SetInterface) (uint32_t interface); ///< Pointer to \ref ARM_ETH_PHY_SetInterface : Set Ethernet Media Interface.
  117. int32_t (*SetMode) (uint32_t mode); ///< Pointer to \ref ARM_ETH_PHY_SetMode : Set Ethernet PHY Device Operation mode.
  118. ARM_ETH_LINK_STATE (*GetLinkState) (void); ///< Pointer to \ref ARM_ETH_PHY_GetLinkState : Get Ethernet PHY Device Link state.
  119. ARM_ETH_LINK_INFO (*GetLinkInfo) (void); ///< Pointer to \ref ARM_ETH_PHY_GetLinkInfo : Get Ethernet PHY Device Link information.
  120. } const ARM_DRIVER_ETH_PHY;
  121. #ifdef __cplusplus
  122. }
  123. #endif
  124. #endif /* DRIVER_ETH_PHY_H_ */