hdmi_cmdq.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "drv_types.h"
  2. #include <linux/string.h>
  3. #include "hdmi_dbg.h"
  4. #include "hdmi_cmdq.h"
  5. #include "drv_devices.h"
  6. #include "hdmi_time.h"
  7. #ifndef INIT_BY_KMF
  8. extern INT32 DRV_Audio_intcmdqfire(void *);
  9. static BOOL SendAudioCmdq(AUDIO_CMDQ *pCmdq)
  10. {
  11. UINT32 num = 5;
  12. INT32 result = 0;
  13. while ((result = DRV_Audio_intcmdqfire((void*)pCmdq)) && (num--));
  14. return (num != 0) ? true : false;
  15. }
  16. #else
  17. extern BOOL SendAudioCmdq(AUDIO_CMDQ *pCmdq);
  18. extern BOOL ResetAudioENG(AUDIO_CMDQ *pReset);
  19. #endif
  20. BOOL HDMI_AudioSendCmdq(AUDIO_CMDQ* cmdq)
  21. {
  22. BOOL ret = false;
  23. ret = SendAudioCmdq(cmdq);
  24. return ret;
  25. }
  26. BOOL HDMI_AudioSetOffset(UINT32 offset, UINT32 NLdelayCnt)
  27. {
  28. AUDIO_CMDQ offset_cmdq = {0};
  29. hdmidbg("Step2:Send PTS Offset\n");
  30. offset_cmdq.CID = AUDIO_CID;
  31. offset_cmdq.flag = AUDIO_FLAG_SET_PTS_OFFSET;
  32. offset_cmdq.RxType = AUDIO_RX_TYPE_HDMI;
  33. offset_cmdq.PTS_offset = offset;
  34. offset_cmdq.NLdelayCnt = NLdelayCnt;
  35. return HDMI_AudioSendCmdq(&offset_cmdq);
  36. }
  37. BOOL HDMI_AudioResetDecoder(void)
  38. {
  39. AUDIO_CMDQ resetcmdq;
  40. #ifndef INIT_BY_KMF
  41. volatile UINT32 *rp, *wp;
  42. #endif
  43. memset(&resetcmdq, 0, sizeof(AUDIO_CMDQ));
  44. resetcmdq.CID = AUDIO_CID;
  45. resetcmdq.flag = AUDIO_FLAG_RESET_ALL;
  46. resetcmdq.RxType = AUDIO_RX_TYPE_HDMI;
  47. #ifdef INIT_BY_KMF
  48. if (!ResetAudioENG(&resetcmdq))
  49. {
  50. return false;
  51. }
  52. #else
  53. rp = Get_CmdQ_RP();
  54. wp = Get_CmdQ_WP();
  55. if (*rp != *wp)
  56. {
  57. return false;
  58. }
  59. DISABLE_DRV_ENG(DRV_Audio_ENG);
  60. HDMI_DelayMs(1);
  61. ENABLE_DRV_ENG(DRV_Audio_ENG);
  62. if (!HDMI_AudioSendCmdq(&resetcmdq))
  63. {
  64. return false;
  65. }
  66. #endif
  67. hdmidbg("Step1:Reset Audio Decoder\n");
  68. return true;
  69. }