12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include "drv_types.h"
- #include <linux/string.h>
- #include "hdmi_dbg.h"
- #include "hdmi_cmdq.h"
- #include "drv_devices.h"
- #include "hdmi_time.h"
- #ifndef INIT_BY_KMF
- extern INT32 DRV_Audio_intcmdqfire(void *);
- static BOOL SendAudioCmdq(AUDIO_CMDQ *pCmdq)
- {
- UINT32 num = 5;
- INT32 result = 0;
- while ((result = DRV_Audio_intcmdqfire((void*)pCmdq)) && (num--));
- return (num != 0) ? true : false;
- }
- #else
- extern BOOL SendAudioCmdq(AUDIO_CMDQ *pCmdq);
- extern BOOL ResetAudioENG(AUDIO_CMDQ *pReset);
- #endif
- BOOL HDMI_AudioSendCmdq(AUDIO_CMDQ* cmdq)
- {
- BOOL ret = false;
- ret = SendAudioCmdq(cmdq);
- return ret;
- }
- BOOL HDMI_AudioSetOffset(UINT32 offset, UINT32 NLdelayCnt)
- {
- AUDIO_CMDQ offset_cmdq = {0};
- hdmidbg("Step2:Send PTS Offset\n");
- offset_cmdq.CID = AUDIO_CID;
- offset_cmdq.flag = AUDIO_FLAG_SET_PTS_OFFSET;
- offset_cmdq.RxType = AUDIO_RX_TYPE_HDMI;
- offset_cmdq.PTS_offset = offset;
- offset_cmdq.NLdelayCnt = NLdelayCnt;
- return HDMI_AudioSendCmdq(&offset_cmdq);
- }
- BOOL HDMI_AudioResetDecoder(void)
- {
- AUDIO_CMDQ resetcmdq;
- #ifndef INIT_BY_KMF
- volatile UINT32 *rp, *wp;
- #endif
-
- memset(&resetcmdq, 0, sizeof(AUDIO_CMDQ));
- resetcmdq.CID = AUDIO_CID;
- resetcmdq.flag = AUDIO_FLAG_RESET_ALL;
- resetcmdq.RxType = AUDIO_RX_TYPE_HDMI;
- #ifdef INIT_BY_KMF
- if (!ResetAudioENG(&resetcmdq))
- {
- return false;
- }
- #else
- rp = Get_CmdQ_RP();
- wp = Get_CmdQ_WP();
- if (*rp != *wp)
- {
- return false;
- }
- DISABLE_DRV_ENG(DRV_Audio_ENG);
- HDMI_DelayMs(1);
- ENABLE_DRV_ENG(DRV_Audio_ENG);
- if (!HDMI_AudioSendCmdq(&resetcmdq))
- {
- return false;
- }
- #endif
- hdmidbg("Step1:Reset Audio Decoder\n");
- return true;
- }
|