usb_phy.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /*
  2. * Copyright (c) 2015, Freescale Semiconductor, Inc.
  3. * Copyright 2016 - 2017 NXP
  4. *
  5. * Redistribution and use in source and binary forms, with or without modification,
  6. * are permitted provided that the following conditions are met:
  7. *
  8. * o Redistributions of source code must retain the above copyright notice, this list
  9. * of conditions and the following disclaimer.
  10. *
  11. * o Redistributions in binary form must reproduce the above copyright notice, this
  12. * list of conditions and the following disclaimer in the documentation and/or
  13. * other materials provided with the distribution.
  14. *
  15. * o Neither the name of the copyright holder nor the names of its
  16. * contributors may be used to endorse or promote products derived from this
  17. * software without specific prior written permission.
  18. *
  19. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
  20. * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
  21. * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  22. * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
  23. * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  24. * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  25. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  26. * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  27. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  28. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  29. */
  30. #ifndef __USB_PHY_H__
  31. #define __USB_PHY_H__
  32. /*******************************************************************************
  33. * Definitions
  34. ******************************************************************************/
  35. typedef struct _usb_phy_config_struct
  36. {
  37. uint8_t D_CAL; /* Decode to trim the nominal 17.78mA current source */
  38. uint8_t TXCAL45DP; /* Decode to trim the nominal 45-Ohm series termination resistance to the USB_DP output pin */
  39. uint8_t TXCAL45DM; /* Decode to trim the nominal 45-Ohm series termination resistance to the USB_DM output pin */
  40. } usb_phy_config_struct_t;
  41. #if defined(__cplusplus)
  42. extern "C" {
  43. #endif
  44. /*******************************************************************************
  45. * API
  46. ******************************************************************************/
  47. /*!
  48. * @brief EHCI PHY get USB phy bass address.
  49. *
  50. * This function is used to get USB phy bass address.
  51. *
  52. * @param[in] controllerId EHCI controller ID; See the #usb_controller_index_t.
  53. *
  54. * @retval USB phy bass address.
  55. */
  56. extern void *USB_EhciPhyGetBase(uint8_t controllerId);
  57. /*!
  58. * @brief EHCI PHY initialization.
  59. *
  60. * This function initializes the EHCI PHY IP.
  61. *
  62. * @param[in] controllerId EHCI controller ID; See the #usb_controller_index_t.
  63. * @param[in] freq The external input clock.
  64. *
  65. * @retval kStatus_USB_Success Cancel successfully.
  66. * @retval kStatus_USB_Error The freq value is incorrect.
  67. */
  68. extern uint32_t USB_EhciPhyInit(uint8_t controllerId, uint32_t freq, usb_phy_config_struct_t *phyConfig);
  69. /*!
  70. * @brief ehci phy initialization for suspend and resume.
  71. *
  72. * This function initialize ehci phy IP for suspend and resume.
  73. *
  74. * @param[in] controllerId ehci controller id, please reference to #usb_controller_index_t.
  75. * @param[in] freq the external input clock.
  76. * for example: if the external input clock is 16M, the parameter freq should be 16000000.
  77. *
  78. * @retval kStatus_USB_Success cancel successfully.
  79. * @retval kStatus_USB_Error the freq value is incorrect.
  80. */
  81. extern uint32_t USB_EhciLowPowerPhyInit(uint8_t controllerId, uint32_t freq, usb_phy_config_struct_t *phyConfig);
  82. /*!
  83. * @brief EHCI PHY deinitialization.
  84. *
  85. * This function deinitializes the EHCI PHY IP.
  86. *
  87. * @param[in] controllerId EHCI controller ID; See #usb_controller_index_t.
  88. */
  89. extern void USB_EhciPhyDeinit(uint8_t controllerId);
  90. /*!
  91. * @brief EHCI PHY disconnect detection enable or disable.
  92. *
  93. * This function enable/disable the host EHCI disconnect detection.
  94. *
  95. * @param[in] controllerId EHCI controller ID; See #usb_controller_index_t.
  96. * @param[in] enable
  97. * 1U - enable;
  98. * 0U - disable;
  99. */
  100. extern void USB_EhcihostPhyDisconnectDetectCmd(uint8_t controllerId, uint8_t enable);
  101. #if defined(__cplusplus)
  102. }
  103. #endif
  104. #endif /* __USB_PHY_H__ */