hv_drv_PLL.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /**
  2. * @file hv_drv_PLL.h
  3. * @brief PHY driver layer interface.
  4. * @verbatim
  5. * ==============================================================================
  6. * ##### How to use this driver #####
  7. * ==============================================================================
  8. * (+) Use Hv_Drv_PLL_SetAudioLaneClock(...) to Select the Audio Rx Reference Lane Clock.
  9. * (+) Use Hv_Drv_PLL_ConfigRxDpllSel(...) to Select the RX Dpll path.
  10. * (+) Use Hv_Drv_PLL_SetDisplayClock(...) to Configure the DPU Clock.
  11. *
  12. * @endverbatim
  13. *
  14. * @author HiView SoC Software Team
  15. * @version 0.0.1
  16. * @date 2022-08-22
  17. */
  18. #ifndef __SDK_DRIVER_PLL_H__
  19. #define __SDK_DRIVER_PLL_H__
  20. #include "hv_comm_DataType.h"
  21. #include "hv_comm_Define.h"
  22. #include "hv_drv_DpuCommon.h"
  23. #include "hv_drv_Ktx.h"
  24. #include "hv_cal_KtxCommon.h"
  25. Status Hv_Drv_PLL_SetAudioLaneClock(LinkPortIndex enAudioRefPortIndex);
  26. Status Hv_Drv_PLL_ConfigRxDpllSel(UINT32 uiRxPllIndex, LinkPortIndex enReleasePortIndex, LinkPortIndex enBindPortIndex);
  27. Status Hv_Drv_PLL_ConfigRxDpllMuteSel(BOOL bSamePll);
  28. Status Hv_Drv_PLL_SetRxdpllPixelClock(ChannelType enChannelCfg, UINT32* puiRxDclockOut, UINT32 uiRxClockDst);
  29. /**
  30. * @brief 计算并生成 Display clock.
  31. * @param[in] uiDisplayDestClock RX D clock.
  32. * @param[out] *puiDClkCfg最终算出来的Display Clock unit Khz
  33. * @return 0: Success or other: Fail.
  34. */
  35. Status Hv_Drv_PLL_SetDisplayClock(UINT32* puiDClkCfg, UINT32 uiDisplayDestClock,VideoConfigParams* pstVideoConfigParams);
  36. /**
  37. * @brief 计算并生成 EDP的F0 - COMBOTX_PHY_0 所使用的参数.
  38. * @param[in] pstKtxInParam KTX输入参数.
  39. * @param[out] pstTxPllCfg 输出COMBOTX_PHY_0需要写入的参数
  40. * @return 0: Success or other: Fail.
  41. */
  42. Status Hv_Drv_EdpTx_PllCalculator(const HvDrvKtxInParam *pstKtxInParam, HvKtxPllCfgParam *pstKtxPllCfgParam);
  43. /**
  44. * @brief 计算并生成 VBO的F0 - COMBOTX_PHY_0 所使用的参数.
  45. * @param[in] pstKtxInParam KTX输入参数.
  46. * @param[out] pstTxPllCfg 输出COMBOTX_PHY_0需要写入的参数
  47. * @return 0: Success or other: Fail.
  48. */
  49. Status Hv_Drv_VboTx_PllCalculator(const HvDrvKtxInParam *pstKtxInParam, HvDrvKtxDesign *pstKtxDesign, HvKtxPllCfgParam *pstKtxPllCfgParam);
  50. Status Hv_Drv_VboTx_TaibaiPllCalculator(const HvDrvKtxInParam *pstKtxInParam, UINT32 uiPixClkFreq, HvKtxPllCfgParam *pstKtxPllCfgParam);
  51. /**
  52. * @brief initialize sscg.
  53. */
  54. VOID Hv_Drv_Sscg_Init(VOID);
  55. /**
  56. * @brief set sscg enable.
  57. * @param[in] enType: vbo/edp/ddr. bEnble: on/off
  58. */
  59. VOID Hv_Drv_Sscg_Enalbe(SscgType enType, BOOL bEnble);
  60. /**
  61. * @brief set sscg freq.
  62. * @param[in] enType: vbo/edp/ddr. uiFreq: modulation frequency: 0-100(k)
  63. */
  64. VOID Hv_Drv_Sscg_SetSscgFreq(SscgType enType, UCHAR8 ucFreq);
  65. /**
  66. * @brief set sscg step.
  67. * @param[in] enType: vbo/edp/ddr. uiFreq: modulation step: 0-30(0%-3%)
  68. */
  69. VOID Hv_Drv_Sscg_SetSscgStep(SscgType enType, UCHAR8 ucStep);
  70. /**
  71. * @brief set sscg spread.
  72. * @param[in] enType: vbo/edp/ddr.
  73. * @param[in] ucFreq: vbo/edp/ddr. uiFreq: modulation frequency: 0-100(k)
  74. * @param[in] ucStep: vbo/edp/ddr. uiFreq: modulation step: 0-20(0%-2%)
  75. */
  76. VOID Hv_Drv_Sscg_SetSscg(SscgType enType, UCHAR8 ucStep, UCHAR8 ucFreq);
  77. /**
  78. * @brief set sscg mode.
  79. * @param[in] enType: vbo/edp/ddr. uiFreq: modulation ucMode: up/down/center
  80. */
  81. VOID Hv_Drv_Sscg_SetSscgMode(SscgType enType, UCHAR8 ucMode);
  82. /**
  83. * @brief initialize pll.
  84. */
  85. VOID Hv_Drv_PLL_Init(VOID);
  86. Status Hv_Drv_PLL_CheckRxDpllLock(UCHAR8 ucPortIndex);
  87. Status Hv_Drv_PLL_CheckPtcdPllLock(VOID);
  88. Status Hv_Drv_PLL_CheckSysPllLock(VOID);
  89. Status Hv_Drv_PLL_CheckTxdPllLock(VOID);
  90. Status Hv_Drv_PLL_CheckAudioPllLock(VOID);
  91. Status Hv_Drv_PLL_CheckFNPllLock(VOID);
  92. VOID Hv_Drv_PLL_ResetRxDpll(UCHAR8 ucPortIndex);
  93. VOID Hv_Drv_PLL_ResetPtcdPll(VOID);
  94. VOID Hv_Drv_PLL_ResetSysPll(VOID);
  95. VOID Hv_Drv_PLL_ResetTxdPll(VOID);
  96. VOID Hv_Drv_PLL_ResetFNPll(VOID);
  97. VOID Hv_Drv_PLL_ResetAudioPll(VOID);
  98. VOID Hv_Drv_PLL_SetPtcdpllSscgPlln(UINT32 uiPtcdFBDivInt, UINT32 uiPtcdFBDivFrac, UINT32 uiPtcdPostDiv);
  99. #endif