hdmi_hw.c 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841
  1. #include <linux/kernel.h> /* printk */
  2. #include "sysreg.h"
  3. #include "hdmi_hw.h"
  4. #include "hdmi_dbg.h"
  5. #include "drv_hdmi_internal.h"
  6. #include "hdmi_hpd.h"
  7. #include "hdmi_time.h"
  8. #include "drv_hdmi_external.h"
  9. #include "hdmi_infoframe_api.h"
  10. #ifdef CONFIG_HDMI_SUPPORT_MHL
  11. #include "cbus_drv.h"
  12. #endif
  13. #define HDMI_MMIO_BASE 0xBE0E0000
  14. #define HDMIPhy_MMIO_BASE 0xBE0E1000
  15. #define CEC_MMIO_BASE 0xBE1E0000
  16. #define HDMI_CBUS_MMIO_BASE 0xBE290000
  17. #define HDMI_GetRegisterStartBit(ulRegisterName) ((ulRegisterName >> 16) & 0x00000003F)
  18. #define HDMI_GetRegisterEndBit(ulRegisterName) ((ulRegisterName >> 22) & 0x00000003F)
  19. #define GET_VALUE_BITS(ulRegisterName, ulValue) ((UINT32)(ulValue << (32 - HDMI_GetRegisterEndBit(ulRegisterName)))) >> ((32 - HDMI_GetRegisterEndBit(ulRegisterName)))
  20. #define POSITION_VALUE(ulRegisterName, ulValue) (ulValue << HDMI_GetRegisterStartBit(ulRegisterName))
  21. #define HDMI_GetStartAndEndBits(ulRegisterName) (ulRegisterName & 0x0FFF0000)
  22. #define ALL_BITS 0x08000000
  23. #define WIDTH_BIT_8 0x02000000
  24. #define REGISTER_ADDRESS_MASK 0x0000FFFF
  25. #define REGISTER_TYPE_MASK 0xF0000000
  26. extern BOOL MHL_CABLE_IN;
  27. extern BOOL MHL_CTS;
  28. extern BOOL SWITCH_FIX_EQ;
  29. HDMI_EQ_INDEX_e HDMI_EQ_MODE_INDEX=HDMI_EQ_INDEX_DEFAULT;
  30. UINT32 HDMI_GetRegisterType(UINT32 ulRegisterType)
  31. {
  32. switch (ulRegisterType)
  33. {
  34. case 0x40000000: //HDMIRX
  35. return HDMI_MMIO_BASE;
  36. case 0x50000000: //CEC
  37. return CEC_MMIO_BASE;
  38. case 0x60000000: //HDMIRX CBUS
  39. return HDMI_CBUS_MMIO_BASE;
  40. default:
  41. return HDMI_MMIO_BASE;
  42. }
  43. }
  44. //****************************************************************************
  45. //
  46. // Function : HDMI_RegisterWrite
  47. // Params : ulRegisterName -address of the index register
  48. // ulValue - value to program to the given bits of the register
  49. // Description: Sets the given bits of the given index register to the given value
  50. // ulRegisterName data format: TTTT WWWW WWSS SSSS AAAA AAAA AAAA AAAA
  51. // 0:reserved
  52. // T:register type 4=HDMIRX_register (offset 0xBE0E)
  53. // W:register used width
  54. // S:register start bit
  55. // A:register address
  56. // Returns : void
  57. //****************************************************************************
  58. void HDMI_RegisterWrite(UINT32 ulRegisterName, UINT32 ulValue)
  59. {
  60. UINT32 ulData, ulBitMask, ulRegisterType, ulRegisterAddr;
  61. BOOL fUseByteAccess;
  62. volatile UINT32 *pdRegAddr32;
  63. volatile UINT8 *pbRegAddr8;
  64. ulRegisterType = HDMI_GetRegisterType(ulRegisterName & REGISTER_TYPE_MASK);
  65. ulBitMask = GET_VALUE_BITS(ulRegisterName, 0xFFFFFFFF);
  66. ulBitMask <<= HDMI_GetRegisterStartBit(ulRegisterName);
  67. ulValue <<= HDMI_GetRegisterStartBit(ulRegisterName);
  68. fUseByteAccess = (HDMI_GetStartAndEndBits(ulRegisterName) <= WIDTH_BIT_8)?TRUE:FALSE;
  69. ulRegisterAddr = (ulRegisterName & REGISTER_ADDRESS_MASK);
  70. ulRegisterAddr |= ulRegisterType; //offset address
  71. pdRegAddr32 = (UINT32 *)ulRegisterAddr;
  72. pbRegAddr8 = (UINT8 *)ulRegisterAddr;
  73. if(fUseByteAccess)
  74. {
  75. ulData = *pbRegAddr8;
  76. }
  77. else
  78. {
  79. ulData = *pdRegAddr32;
  80. }
  81. ulData &= ~ulBitMask;
  82. ulData |= (ulValue & ulBitMask);
  83. if(fUseByteAccess)
  84. {
  85. *pbRegAddr8 = ulData;
  86. }
  87. else
  88. {
  89. *pdRegAddr32 = ulData;
  90. }
  91. }
  92. //****************************************************************************
  93. //
  94. // Function : HDMI_RegisterRead
  95. // Params : ulRegisterName -address of the index register
  96. // Description: read the given bits of the given index register to the value
  97. // ulRegisterName data format: TTTT WWWW WWSS SSSS AAAA AAAA AAAA AAAA
  98. // 0:reserved
  99. // T:register type 4=HDMIRX_register (offset 0xBE0E)
  100. // W:register used width
  101. // S:register start bit
  102. // A:register address
  103. // Returns : register data
  104. //****************************************************************************
  105. UINT32 HDMI_RegisterRead(UINT32 ulRegisterName)
  106. {
  107. UINT32 ulData, ulBitMask, ulRegisterType, ulRegisterNameTmp;
  108. volatile UINT32 *pdRegAddr32;
  109. ulRegisterNameTmp = ulRegisterName;
  110. ulRegisterType = HDMI_GetRegisterType(ulRegisterName & REGISTER_TYPE_MASK);
  111. ulRegisterNameTmp &= REGISTER_ADDRESS_MASK;
  112. ulRegisterNameTmp |= ulRegisterType; //offset address
  113. pdRegAddr32 = (UINT32 *)ulRegisterNameTmp;
  114. ulData = *pdRegAddr32;
  115. if (HDMI_GetStartAndEndBits(ulRegisterName) != ALL_BITS)
  116. {
  117. ulBitMask = GET_VALUE_BITS(ulRegisterName, 0xFFFFFFFF);
  118. ulBitMask <<= HDMI_GetRegisterStartBit(ulRegisterName);
  119. ulData &= ulBitMask;
  120. ulData >>= (HDMI_GetRegisterStartBit(ulRegisterName));
  121. }
  122. return ulData;
  123. }
  124. void HDMI_Interrupt_Enable(UINT32 ulIntr)
  125. {
  126. UINT32 ulCurIntEn;
  127. ulCurIntEn = HDMI_RegisterRead(HDMIRX_R_INTR_en);
  128. ulCurIntEn |= ulIntr;
  129. HDMI_RegisterWrite(HDMIRX_R_INTR_en, ulCurIntEn);
  130. }
  131. void HDMI_Interrupt_Disable(UINT32 ulIntr)
  132. {
  133. UINT32 ulCurIntEn;
  134. ulCurIntEn = HDMI_RegisterRead(HDMIRX_R_INTR_en);
  135. ulCurIntEn &= ~(ulIntr);
  136. HDMI_RegisterWrite(HDMIRX_R_INTR_en, ulCurIntEn);
  137. }
  138. void HDMI_PHY_Enable(BOOL fEn)
  139. {
  140. if(fEn)
  141. {
  142. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_ENABLE);
  143. #ifdef CONFIG_HDMI_SUPPORT_MHL
  144. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet()==CONFIG_HDMI_MHL_PORT))
  145. HDMI_MHL_RxSense_Term_Debug(FALSE); //auto HDMI or MHL mode
  146. else
  147. HDMI_MHL_RxSense_Term_Debug(TRUE); //force HDMI mode for debug(not MHL mode)
  148. #else
  149. HDMI_MHL_RxSense_Term_Debug(TRUE); //force HDMI mode for debug(not MHL mode)
  150. #endif
  151. }
  152. else //Power Down for CEC
  153. {
  154. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_DISABLE);
  155. }
  156. #ifdef USE_HW_ADAPTIVE_EQ
  157. #ifdef CONFIG_HDMI_SUPPORT_MHL
  158. if((MHL_CABLE_IN != TRUE)||( DrvHDMIPortSelectBitsGet() != CONFIG_HDMI_MHL_PORT))
  159. #endif
  160. {
  161. HDMI_Adaptive_EQ_Init();
  162. }
  163. #endif
  164. }
  165. void HDMI_PLL_Init(void)
  166. {
  167. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_INIT);
  168. }
  169. void HDMI_SetPLL_ByFreq(void)
  170. {
  171. UINT8 bRefFreq = HDMI_RegisterRead(HDMIRX_ref_freq_cnt);
  172. HDMI_RegisterWrite(HDMIRX_TMDSCLK_PP_SEL, 0);
  173. if(bRefFreq <= 0x6)
  174. {
  175. hdmidbg("bRefFreq ?~0x6\n");
  176. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_FREQ_6);
  177. }
  178. else if(bRefFreq >= 0x7 && bRefFreq <= 0xF)
  179. {
  180. hdmidbg("bRefFreq 0x7~0xF\n");
  181. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_FREQ_7_F);
  182. }
  183. else if(bRefFreq >= 0x10 && bRefFreq <= 0x1E)
  184. {
  185. hdmidbg("bRefFreq 0x10~0x1E\n");
  186. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_FREQ_10_1E);
  187. }
  188. else if(bRefFreq >= 0x1F && bRefFreq <= 0x32)
  189. {
  190. hdmidbg("bRefFreq 0x1F~0x32\n");
  191. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_FREQ_1F_32);
  192. }
  193. else if(bRefFreq >= 0x33 && bRefFreq <= 0x3D)
  194. {
  195. hdmidbg("bRefFreq 0x33~0x3D\n");
  196. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_FREQ_33_3D);
  197. }
  198. else if(bRefFreq >= 0x3E && bRefFreq <= 0x60)
  199. {
  200. hdmidbg("bRefFreq 0x3E~0x60\n");
  201. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_FREQ_3E_60);
  202. }
  203. else if(bRefFreq >= 0x61)
  204. {
  205. hdmidbg("bRefFreq 0x61~?\n");
  206. HDMI_Set_PLL_Mode(HDMI_PLL_MODE_HDMI_FREQ_61);
  207. }
  208. hdmidbg("bPLL_ICtrl=0x%x\n", HDMI_RegisterRead(HDMIRX_PLL_ICTRL_3_0_));
  209. hdmidbg("EN_FDIV=0x%x\n", HDMI_RegisterRead(HDMIRX_PLL_EN_FDIV));
  210. hdmidbg("bPLL_GB=0x%x\n", HDMI_RegisterRead(HDMIRX_PLL_GB_3_0_) );
  211. hdmidbg("DIVSLE2=0x%x\n", HDMI_RegisterRead(HDMIRX_PHY_DIVSLE2));
  212. hdmidbg("DIV_SEL_2=0x%x\n", HDMI_RegisterRead(HDMIRX_PLL_DIVSEL2));
  213. hdmidbg("REFDIV=0x%x\n", HDMI_RegisterRead(HDMIRX_PLL_REFDIV));
  214. }
  215. void HDMI_MHL_SetPLL_ByFreq(void)
  216. {
  217. UINT8 bRefFreq = HDMI_RegisterRead(HDMIRX_ref_freq_cnt);
  218. #ifdef USE_HW_ADAPTIVE_EQ
  219. #ifndef Manu_EQ_Adjust
  220. UINT8 bHDMIRX_BS3 = (UINT8)HDMI_RegisterRead(HDMIRX_BS3);
  221. #endif
  222. #endif
  223. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 0xF);//For Silicon Image MHL Starter KIT-9244
  224. if((HDMI_RegisterRead(HDMIRX_cbus_mode_pathen_muted)&0x3) ==0x2)
  225. {//CLK_MODE=10 =>PP Mode
  226. hdmidbg("MHL PP Mode\n");
  227. #ifndef Manu_EQ_Adjust
  228. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x33722033);
  229. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20337220);
  230. #ifdef USE_HW_ADAPTIVE_EQ
  231. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  232. #ifdef CONFIG_HDMI_SUPPORT_MHL
  233. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  234. {
  235. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  236. }
  237. else
  238. #endif
  239. {
  240. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072|(bHDMIRX_BS3<<16));
  241. }
  242. #else
  243. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  244. #endif
  245. #endif
  246. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,0);
  247. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  248. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 3);
  249. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  250. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  251. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  252. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x0);
  253. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 0);
  254. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  255. HDMI_RegisterWrite(HDMIRX_TMDSCLK_PP_SEL, 1);
  256. //*((u8 *)0xbe0e001c) = 0xff;
  257. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_external, 1);
  258. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_mux, 1);
  259. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_external, 1);
  260. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_mux, 1);
  261. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_PLL_external, 1);
  262. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_PLL_mux, 1);
  263. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_PLL_Sel_external, 1);
  264. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_PLL_mux, 1);
  265. if(bRefFreq <= 0xA)
  266. {
  267. //TMDS Clk < 26Mhz
  268. hdmidbg("bRefFreq ?~0xA\n");
  269. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  270. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  271. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x4);
  272. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 1);//LPF CAP sel
  273. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 19);
  274. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  275. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  276. HDMI_RegisterWrite(HDMIRX_R_SP9, 1);
  277. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0039);
  278. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0031);
  279. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  280. }
  281. else if(bRefFreq >= 0xB && bRefFreq <= 0x10)
  282. {
  283. //28.6Mhz <TMDS Clk < 41.6Mhz
  284. hdmidbg("bRefFreq 0xB~0x10\n");
  285. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  286. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  287. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xa);
  288. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 1);//LPF CAP sel
  289. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 19);
  290. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  291. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  292. HDMI_RegisterWrite(HDMIRX_R_SP9, 1);
  293. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0039);
  294. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0031);
  295. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  296. }
  297. else if(bRefFreq >= 0x11 && bRefFreq <= 0x15)
  298. {
  299. //44.2Mhz <TMDS Clk < 54.6Mhz
  300. hdmidbg("bRefFreq 0x11~0x15\n");
  301. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  302. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  303. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x4);
  304. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 0);//LPF CAP sel
  305. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 9);
  306. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  307. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  308. HDMI_RegisterWrite(HDMIRX_R_SP9, 1);
  309. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0038);
  310. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0030);
  311. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  312. }
  313. else if(bRefFreq >= 0x16)
  314. {
  315. //57.2Mhz <TMDS Clk
  316. hdmidbg("bRefFreq 0x16~?\n");
  317. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);// 2->3
  318. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  319. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x9);
  320. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 0);//LPF CAP sel
  321. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 9);
  322. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  323. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  324. HDMI_RegisterWrite(HDMIRX_R_SP9, 1);
  325. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0038);
  326. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0030);
  327. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  328. }
  329. HDMI_RegisterWrite(HDMIRX_CTL_R_FG_CNT_7_0_, 0x5);
  330. HDMI_RegisterWrite(HDMIRX_CTL_R_FH_CNT_7_0_, 0x7);
  331. HDMI_RegisterWrite(HDMIRX_CTL_R_FI_CNT_7_0_, 0x9);
  332. HDMI_RegisterWrite(HDMIRX_CTL_R_FJ_CNT_7_0_, 0xB);
  333. HDMI_RegisterWrite(HDMIRX_CTL_R_FK_CNT_7_0_, 0x15);
  334. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  335. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  336. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  337. }
  338. else
  339. {//CLK_MODE=11 =>24 Bit Mode
  340. hdmidbg("MHL 24 Bit Mode\n");
  341. HDMI_RegisterWrite(HDMIRX_TMDSCLK_PP_SEL, 0);
  342. #ifndef Manu_EQ_Adjust
  343. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x04771004);
  344. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10047710);
  345. #ifdef USE_HW_ADAPTIVE_EQ
  346. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  347. #ifdef CONFIG_HDMI_SUPPORT_MHL
  348. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  349. {
  350. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000077);
  351. }
  352. else
  353. #endif
  354. {
  355. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000077|(bHDMIRX_BS3<<16));
  356. }
  357. #else
  358. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000077);
  359. #endif
  360. #endif
  361. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,0);
  362. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  363. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 1);
  364. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 1);
  365. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x0);
  366. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  367. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x2);
  368. //*((u8 *)0xbe0e001c) = 0xbb;
  369. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_external, 1);
  370. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_mux, 1);
  371. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_external, 0);
  372. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_mux, 1);
  373. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_PLL_external, 1);
  374. HDMI_RegisterWrite(HDMIRX_HDMIP0_Mode_Sel_PLL_mux, 1);
  375. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_PLL_Sel_external, 0);
  376. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_PLL_mux, 1);
  377. if(bRefFreq <= 0xA)
  378. {
  379. //TMDS Clk < 26Mhz
  380. hdmidbg("bRefFreq ?~0xA\n");
  381. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);//6->9
  382. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  383. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xa);
  384. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 3);//LPF CAP sel
  385. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 59);
  386. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  387. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  388. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  389. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x003a);
  390. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0032);
  391. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  392. }
  393. else if(bRefFreq >= 0xB && bRefFreq <= 0x10)
  394. {
  395. //28.6Mhz <TMDS Clk < 41.6Mhz
  396. hdmidbg("bRefFreq 0xB~0x10\n");
  397. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);// 4->3
  398. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  399. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x5);// 8D->6
  400. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 1);//LPF CAP sel
  401. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 29);
  402. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  403. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  404. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  405. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0039);
  406. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0031);
  407. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  408. }
  409. else if(bRefFreq >= 0x11 && bRefFreq <= 0x15)
  410. {
  411. //44.2Mhz <TMDS Clk < 54.6Mhz
  412. hdmidbg("bRefFreq 0x11~0x15\n");
  413. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  414. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  415. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xc);
  416. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 1);//LPF CAP sel
  417. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 29);
  418. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  419. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  420. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  421. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0039);
  422. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0031);
  423. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  424. }
  425. else if(bRefFreq >= 0x16)
  426. {
  427. //57.2Mhz <TMDS Clk
  428. hdmidbg("bRefFreq 0x16~?\n");
  429. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);// 2 ->3
  430. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  431. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x5);
  432. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 0);//LPF CAP sel
  433. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 14);
  434. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  435. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  436. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  437. //HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0038);
  438. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0030);
  439. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  440. }
  441. HDMI_RegisterWrite(HDMIRX_CTL_R_FG_CNT_7_0_, 0x5);
  442. HDMI_RegisterWrite(HDMIRX_CTL_R_FH_CNT_7_0_, 0x7);
  443. HDMI_RegisterWrite(HDMIRX_CTL_R_FI_CNT_7_0_, 0x9);
  444. HDMI_RegisterWrite(HDMIRX_CTL_R_FJ_CNT_7_0_, 0xB);
  445. HDMI_RegisterWrite(HDMIRX_CTL_R_FK_CNT_7_0_, 0x15);
  446. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  447. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  448. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  449. }
  450. }
  451. void HDMI_MHL_CABLE_IN(BOOL fIn)
  452. {
  453. if(fIn)
  454. {
  455. MHL_CABLE_IN = TRUE;
  456. }
  457. else
  458. {
  459. MHL_CABLE_IN = FALSE;
  460. }
  461. }
  462. void HDMI_MHL_CTS(BOOL fIn)
  463. {
  464. if(fIn)
  465. {
  466. MHL_CTS = TRUE;
  467. sysset_HDMI_MHL_CBUS_EN_CTS_CTL(TRUE);
  468. }
  469. else
  470. {
  471. MHL_CTS = FALSE;
  472. sysset_HDMI_MHL_CBUS_EN_CTS_CTL(FALSE);
  473. }
  474. }
  475. void HDMI_Reset_HDMI_PLL(void)
  476. {
  477. #ifdef CONFIG_HDMI_SUPPORT_MHL
  478. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  479. {
  480. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0020);
  481. HDMI_DelayMs(2);
  482. HDMI_RegisterWrite(HDMIRX_CTL_R_MORECTRLI_15_0_, 0x0038);
  483. }
  484. else
  485. {
  486. HDMI_RegisterWrite(HDMIRX_CTL_R_RSTJ, 0);
  487. HDMI_DelayMs(2);
  488. HDMI_RegisterWrite(HDMIRX_CTL_R_RSTJ, 1);
  489. }
  490. #else
  491. HDMI_RegisterWrite(HDMIRX_CTL_R_RSTJ, 0);
  492. HDMI_DelayMs(2);
  493. HDMI_RegisterWrite(HDMIRX_CTL_R_RSTJ, 1);
  494. #endif
  495. }
  496. //set force to HDMI mode, (set 1: force HDMI mode)
  497. void HDMI_MHL_RxSense_Term_Debug(BOOL fEn)
  498. {
  499. if(fEn) //force HDMI mode
  500. {
  501. HDMI_RegisterWrite(HDMIRX_R_RTT_INI_5_0_, 0x29);
  502. HDMI_RegisterWrite(HDMIRX_HDMIP0_Rx_Sense_external, 1);
  503. HDMI_RegisterWrite(HDMIRX_HDMIP0_Rx_Sense_mux, 1);
  504. HDMI_RegisterWrite(HDMIRX_HDMIP1_Rx_Sense_external, 1);
  505. HDMI_RegisterWrite(HDMIRX_HDMIP1_Rx_Sense_mux, 1);
  506. HDMI_RegisterWrite(HDMIRX_HDMIP2_Rx_Sense_external, 1);
  507. HDMI_RegisterWrite(HDMIRX_HDMIP2_Rx_Sense_mux, 1);
  508. HDMI_RegisterWrite(CTRLI_303_272__DW_001C,0xBF2F3FEE);
  509. }
  510. else //auto HDMI or MHL mode
  511. {
  512. HDMI_RegisterWrite(HDMIRX_R_RTT_INI_5_0_, 0x29);
  513. HDMI_RegisterWrite(HDMIRX_HDMIP0_Rx_Sense_external, 0);
  514. HDMI_RegisterWrite(HDMIRX_HDMIP0_Rx_Sense_mux, 0);
  515. HDMI_RegisterWrite(HDMIRX_HDMIP1_Rx_Sense_external, 0);
  516. HDMI_RegisterWrite(HDMIRX_HDMIP1_Rx_Sense_mux, 0);
  517. HDMI_RegisterWrite(HDMIRX_HDMIP2_Rx_Sense_external, 0);
  518. HDMI_RegisterWrite(HDMIRX_HDMIP2_Rx_Sense_mux, 0);
  519. //HDMI_RegisterWrite(CTRLI_303_272__DW_001C,0x00000000);
  520. HDMI_RegisterWrite(CTRLI_303_272__DW_001C,0x80080F00); //Enable P0,P1_Rx_Sense_internal & P0,P1_Rx_Sense_mux and adjust RTT_CM's setting
  521. }
  522. }
  523. extern UINT32 MAX_BCH_ERROR_CNT;
  524. //set HDMI PLL for HDMI/DEMOD
  525. void HDMI_Set_PLL_Mode(HDMI_PLL_MODE_e eHDMI_PLL_MODE)
  526. {
  527. UINT8 bTerm = (UINT8)HDMI_RegisterRead(HDMIRX_PHY_RTT_EN_P_2_0_);
  528. UINT8 bPortSel = (UINT8)HDMI_RegisterRead(HDMIRX_PORT_EN_P2_0);
  529. #ifdef USE_HW_ADAPTIVE_EQ
  530. UINT8 bEQ_FIX = (UINT8)HDMI_RegisterRead(HDMIRX_EQ_VAL_FIX);
  531. UINT8 bHDMIRX_BS2_0 = (UINT8)HDMI_RegisterRead(HDMIRX_bs_2_0_);
  532. #ifndef Manu_EQ_Adjust
  533. UINT8 bHDMIRX_BS3 = (UINT8)HDMI_RegisterRead(HDMIRX_BS3);
  534. #endif
  535. #endif
  536. hdmidbg("[H] %s mode:%d\n", __FUNCTION__, eHDMI_PLL_MODE);
  537. switch(eHDMI_PLL_MODE)
  538. {
  539. /* Common */
  540. case HDMI_PLL_MODE_INIT:
  541. //todo
  542. #if 1 //Set PLL DIV SEL default value to avoid video water wave interfere, junjie.hung suggest in 20140625
  543. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 0x2f);
  544. #endif
  545. break;
  546. case HDMI_PLL_MODE_ON:
  547. //todo
  548. break;
  549. case HDMI_PLL_MODE_OFF:
  550. //todo
  551. HDMI_RegisterWrite(CTRLI_31_0__DW_0280 , 0x00080000);
  552. HDMI_RegisterWrite(CTRLI_47_32__DW_0284,0x000008C0);
  553. HDMI_RegisterWrite(CTRLI_79_48__DW_0000,0x00000088);
  554. break;
  555. /* HDMI */
  556. case HDMI_PLL_MODE_HDMI_INIT:
  557. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  558. HDMI_RegisterWrite(HDMIRX_PLL_RSTN, 1);
  559. HDMI_RegisterWrite(HDMIRX_R_SP5_PLL_CTP_PWDJ, 0x1);
  560. HDMI_RegisterWrite(HDMIRX_LDO_PWDE, 0x1);// 1/0 : normal / PD (change define from 331)
  561. HDMI_RegisterWrite(HDMIRX_LDO_PWD, 0x1);// 1/0 : normal / PD (change define from 331)
  562. //HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 3);
  563. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 1);
  564. HDMI_RegisterWrite(HDMIRX_REG_CPS_CNT_TH0, 0);
  565. //HDMI_RegisterWrite(HDMIRX_debug_port_ext_31_28_, 0);
  566. HDMI_RegisterWrite(HDMIRX_reg_dport_ext, 0);
  567. HDMI_RegisterWrite(HDMIRX_PLL_EN_COMP, 1);
  568. //HDMI_RegisterWrite(HDMIRX_DEMOD_EN, 1);
  569. //HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 1);
  570. HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 0);
  571. HDMI_RegisterWrite(HDMIRX_r_zsink_cal_en, 0);
  572. HDMI_RegisterWrite(HDMIRX_REG_CPS_CNT_CLEAR, 0);
  573. HDMI_RegisterWrite(HDMIRX_w_con_1_0_, 0x0);
  574. HDMI_RegisterWrite(HDMIRX_w_con_3_2_, 0x3);
  575. HDMI_RegisterWrite(HDMIRX_w_con5_4, 0x1);
  576. break;
  577. case HDMI_PLL_MODE_HDMI_ENABLE:
  578. sysset_DEMOD_BG_POWER_DOWN(FALSE);
  579. #ifdef USE_HW_ADAPTIVE_EQ
  580. #ifdef CONFIG_HDMI_SUPPORT_MHL
  581. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  582. {
  583. HDMI_RegisterWrite(CTRLI_31_0__DW_0280, 0x997F13A0);
  584. }
  585. else
  586. #endif
  587. {
  588. HDMI_RegisterWrite(CTRLI_31_0__DW_0280, 0x997713A0| (bEQ_FIX<<19));//HDMIRX_EQ_VAL_FIX =0
  589. }
  590. #else
  591. HDMI_RegisterWrite(CTRLI_31_0__DW_0280, 0x997F13A0);
  592. #endif
  593. //HDMI_RegisterWrite(CTRLI_47_32__DW_0284,0xD5C6);
  594. HDMI_RegisterWrite(CTRLI_47_32__DW_0284,0xD8F9);
  595. #ifdef HDMI_USE_EXT_DIVSEL
  596. HDMI_RegisterWrite(CTRLI_79_48__DW_0000,0xAF00B880 | (bTerm<<4) | bPortSel); // force PLLRSTJ=1, PLLRSTJ=0, no refclk clock
  597. #else
  598. HDMI_RegisterWrite(CTRLI_79_48__DW_0000,0xAF00A880 | (bTerm<<4) | bPortSel); // force PLLRSTJ=1, PLLRSTJ=0, no refclk clock
  599. #endif
  600. HDMI_RegisterWrite(CTRLI_111_80__DW_0004,0x00000001);
  601. HDMI_RegisterWrite(CTRLI_143_112__DW_0008,0x0F010000);
  602. HDMI_RegisterWrite(CTRLI_175_144__DW_000C,0x1E100F0F);//533 18->1E
  603. HDMI_RegisterWrite(CTRLI_207_176__DW_0010,0x403F001F);//533 1C->1F
  604. HDMI_RegisterWrite(CTRLI_239_208__DW_0014,0x0);
  605. HDMI_RegisterWrite(CTRLI_271_240__DW_0018,0x0);
  606. HDMI_RegisterWrite(CTRLI_303_272__DW_001C,0xBF0018EE);//PLL from loop 533 3F->18 , 8503 center align
  607. HDMI_RegisterWrite(CTRLI_335_304__DW_0258,0x000E0090);
  608. //HDMI_RegisterWrite(CTRLI_375_344__DW_0260,0x691900E0);//Turn RTT_CM 533 00->EO
  609. //HDMI_RegisterWrite(CTRLI_375_344__DW_0260,0x69190000); //Turn RTT_CM 8506 E0->0O
  610. HDMI_RegisterWrite(CTRLI_375_344__DW_0260,(HDMI_RegisterRead(CTRLI_375_344__DW_0260) & 0x0000ff00) | 0x69190000); //OFK Calibration setting
  611. //HDMI_RegisterWrite(CTRLI_407_376__DW_0264,0xDADA1800);
  612. HDMI_RegisterWrite(CTRLI_407_376__DW_0264,(HDMI_RegisterRead(CTRLI_407_376__DW_0264) & 0x00ff0000) | 0xDA001800); //OFK Calibration setting
  613. HDMI_RegisterWrite(CTRLI_439_408__DW_0268,0x5AFABA5A);
  614. HDMI_RegisterWrite(CTRLI_471_440__DW_026C,0x0A3A3A3A);
  615. HDMI_RegisterWrite(CTRLI_503_472__DW_0270,0x011F1A0F);
  616. //HDMI_RegisterWrite(CTRLI_535_504__DW_0274,0x05010101);
  617. HDMI_RegisterWrite(CTRLI_535_504__DW_0274,0xF0010101); //HDMIRX_R_SP6~9 = 0
  618. #ifdef USE_HW_ADAPTIVE_EQ
  619. #ifdef CONFIG_HDMI_SUPPORT_MHL
  620. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  621. {
  622. HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x23C10F40);
  623. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0x0F06F023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  624. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0x0F06E023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  625. HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0x0F07C023); //HDMIRX_R_SP14 = 1
  626. }
  627. else
  628. #endif
  629. {
  630. if(bEQ_FIX==0)
  631. {
  632. bHDMIRX_BS2_0 = 7;
  633. //HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x23C10F40);
  634. HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x03C10F40|(bHDMIRX_BS2_0<<28));
  635. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0x0F06F023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  636. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0xF806F023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  637. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0xF806E023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  638. HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0xF807C023); //HDMIRX_R_SP14 = 1
  639. }
  640. else
  641. {
  642. HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x73C10F40);
  643. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0xFF06F023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  644. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0xFF06E023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  645. HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0xFF07C023); //HDMIRX_R_SP14 = 1
  646. }
  647. }
  648. #else
  649. HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x23C10F40);
  650. //HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0x0F06F023);//HDMIRX_R_SP5_PLL_CTP_PWDJ =1
  651. HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0x0F07D023); //HDMIRX_R_SP14 = 1
  652. #endif
  653. #ifndef Manu_EQ_Adjust
  654. //FIX EQ setting
  655. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  656. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  657. #ifdef USE_HW_ADAPTIVE_EQ
  658. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  659. #ifdef CONFIG_HDMI_SUPPORT_MHL
  660. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  661. {
  662. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  663. }
  664. else
  665. #endif
  666. {
  667. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  668. }
  669. #else
  670. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  671. #endif
  672. #endif
  673. break;
  674. case HDMI_PLL_MODE_HDMI_DISABLE:
  675. sysset_DEMOD_BG_POWER_DOWN(TRUE);
  676. #ifdef USE_HW_ADAPTIVE_EQ
  677. #ifdef CONFIG_HDMI_SUPPORT_MHL
  678. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  679. {
  680. HDMI_RegisterWrite(CTRLI_31_0__DW_0280 , 0x00080000);
  681. }
  682. else
  683. #endif
  684. {
  685. HDMI_RegisterWrite(CTRLI_31_0__DW_0280 , 0x00000000| (bEQ_FIX<<19));
  686. }
  687. #else
  688. HDMI_RegisterWrite(CTRLI_31_0__DW_0280 , 0x00080000);
  689. #endif
  690. HDMI_RegisterWrite(CTRLI_47_32__DW_0284,0x00000800);
  691. HDMI_RegisterWrite(CTRLI_79_48__DW_0000,0x00000088 | (bTerm<<4) | bPortSel);
  692. HDMI_RegisterWrite(CTRLI_111_80__DW_0004,0x0);
  693. HDMI_RegisterWrite(CTRLI_143_112__DW_0008,0x0);
  694. HDMI_RegisterWrite(CTRLI_175_144__DW_000C,0x0);
  695. HDMI_RegisterWrite(CTRLI_207_176__DW_0010,0x0);
  696. HDMI_RegisterWrite(CTRLI_239_208__DW_0014,0x0);
  697. HDMI_RegisterWrite(CTRLI_271_240__DW_0018,0x0);
  698. //HDMI_RegisterWrite(CTRLI_303_272__DW_001C,0x0);
  699. HDMI_RegisterWrite(CTRLI_335_304__DW_0258,0x80);
  700. //HDMI_RegisterWrite(CTRLI_375_344__DW_0260,0x40400E0);
  701. // HDMI_RegisterWrite(CTRLI_375_344__DW_0260,0x4040000); //Turn RTT_CM 8506 E0->0O
  702. HDMI_RegisterWrite(CTRLI_375_344__DW_0260,(HDMI_RegisterRead(CTRLI_375_344__DW_0260) & 0x0000ff00) | 0x4040000); //OFK Calibration setting
  703. // HDMI_RegisterWrite(CTRLI_407_376__DW_0264,0x0);
  704. HDMI_RegisterWrite(CTRLI_407_376__DW_0264,(HDMI_RegisterRead(CTRLI_407_376__DW_0264) & 0x00ff0000) | 0x0); //OFK Calibration setting
  705. HDMI_RegisterWrite(CTRLI_439_408__DW_0268,0x0);
  706. HDMI_RegisterWrite(CTRLI_471_440__DW_026C,0x0);
  707. HDMI_RegisterWrite(CTRLI_503_472__DW_0270,0x0);
  708. HDMI_RegisterWrite(CTRLI_535_504__DW_0274,0x0);
  709. #ifdef USE_HW_ADAPTIVE_EQ
  710. #ifdef CONFIG_HDMI_SUPPORT_MHL
  711. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  712. {
  713. HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x0);
  714. }
  715. else
  716. #endif
  717. {
  718. HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x0|(bHDMIRX_BS2_0<<28));
  719. }
  720. #else
  721. HDMI_RegisterWrite(CTRLI_567_536__DW_0278,0x0);
  722. #endif
  723. HDMI_RegisterWrite(CTRLI_599_568__DW_027C,0xF);
  724. break;
  725. case HDMI_PLL_MODE_HDMI_FREQ_6:
  726. //TMDS Clk < 15.6Mhz
  727. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  728. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  729. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x3);
  730. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  731. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  732. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x5);
  733. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 2);//LPF CAP sel
  734. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 79);
  735. #ifdef HDMI_USE_EXT_DIVSEL
  736. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 1);
  737. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL, 3);
  738. #else
  739. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 0);
  740. #endif
  741. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  742. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  743. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  744. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 1);
  745. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 1);
  746. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  747. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 4);
  748. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 0);
  749. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  750. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0x8);
  751. if(HDMI_EQ_MODE_INDEX==HDMI_EQ_INDEX_DEFAULT)
  752. {
  753. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  754. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  755. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  756. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  757. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  758. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  759. #ifndef Manu_EQ_Adjust
  760. if(TRUE == SWITCH_FIX_EQ)
  761. {
  762. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x37722037);
  763. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20377220);
  764. }
  765. else
  766. {
  767. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  768. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  769. }
  770. #ifdef USE_HW_ADAPTIVE_EQ
  771. #ifdef CONFIG_HDMI_SUPPORT_MHL
  772. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  773. {
  774. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  775. }
  776. else
  777. #endif
  778. {
  779. bHDMIRX_BS3 = 1;
  780. bHDMIRX_BS2_0 = 1; //each eq period : ~ 17ms
  781. HDMI_RegisterWrite(HDMIRX_bs_2_0_, bHDMIRX_BS2_0);
  782. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  783. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00012072);
  784. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  785. }
  786. #else
  787. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  788. #endif
  789. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,1);
  790. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  791. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 2);
  792. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  793. HDMI_RegisterWrite(HDMIRX_R_SP2, 1);
  794. HDMI_RegisterWrite(HDMIRX_R_SP3, 1);
  795. #endif
  796. }
  797. else
  798. {
  799. HDMI_Set_EQ_Mode(HDMI_EQ_MODE_INDEX);
  800. }
  801. HDMI_RegisterWrite(HDMIRX_taps_0, 1);
  802. HDMI_RegisterWrite(HDMIRX_lowlmt, 1);
  803. MAX_BCH_ERROR_CNT = 0x80;
  804. break;
  805. case HDMI_PLL_MODE_HDMI_FREQ_7_F:
  806. //18.2Mhz <TMDS Clk < 39Mhz
  807. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  808. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  809. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x3);
  810. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  811. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  812. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x5);
  813. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 2);//LPF CAP sel
  814. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 39);
  815. #ifdef HDMI_USE_EXT_DIVSEL
  816. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 1);
  817. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL, 3);
  818. #else
  819. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 0);
  820. #endif
  821. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  822. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  823. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  824. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  825. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  826. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  827. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 4);
  828. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 0);
  829. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  830. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  831. if(HDMI_EQ_MODE_INDEX==HDMI_EQ_INDEX_DEFAULT)
  832. {
  833. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  834. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  835. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  836. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 1);
  837. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 3);
  838. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  839. #ifndef Manu_EQ_Adjust
  840. if(TRUE == SWITCH_FIX_EQ)
  841. {
  842. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x37722037);
  843. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20377220);
  844. }
  845. else
  846. {
  847. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  848. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  849. }
  850. #ifdef USE_HW_ADAPTIVE_EQ
  851. #ifdef CONFIG_HDMI_SUPPORT_MHL
  852. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  853. {
  854. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  855. }
  856. else
  857. #endif
  858. {
  859. bHDMIRX_BS3 = 1;
  860. bHDMIRX_BS2_0 = 0; //each eq period : 29ms ~ 13ms
  861. HDMI_RegisterWrite(HDMIRX_bs_2_0_, bHDMIRX_BS2_0);
  862. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  863. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00012072);
  864. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  865. }
  866. #else
  867. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  868. #endif
  869. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,1);
  870. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  871. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 2);
  872. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  873. HDMI_RegisterWrite(HDMIRX_R_SP2, 1);
  874. HDMI_RegisterWrite(HDMIRX_R_SP3, 1);
  875. #endif
  876. }
  877. else
  878. {
  879. HDMI_Set_EQ_Mode(HDMI_EQ_MODE_INDEX);
  880. }
  881. HDMI_RegisterWrite(HDMIRX_taps_0, 1);
  882. HDMI_RegisterWrite(HDMIRX_lowlmt, 1);
  883. MAX_BCH_ERROR_CNT = 0x80;
  884. break;
  885. case HDMI_PLL_MODE_HDMI_FREQ_10_1E:
  886. //41.6Mhz <TMDS Clk < 78Mhz
  887. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  888. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  889. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x3);
  890. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  891. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  892. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xb);
  893. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 2);//LPF CAP sel
  894. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 19);
  895. #ifdef HDMI_USE_EXT_DIVSEL
  896. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 1);
  897. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL, 2);
  898. #else
  899. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 0);
  900. #endif
  901. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  902. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  903. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  904. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  905. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  906. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  907. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 4);
  908. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 0);
  909. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  910. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  911. if(HDMI_EQ_MODE_INDEX==HDMI_EQ_INDEX_DEFAULT)
  912. {
  913. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  914. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  915. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  916. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  917. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  918. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  919. #ifndef Manu_EQ_Adjust
  920. if(TRUE == SWITCH_FIX_EQ)
  921. {
  922. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x37722037);
  923. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20377220);
  924. }
  925. else
  926. {
  927. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  928. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  929. }
  930. #ifdef USE_HW_ADAPTIVE_EQ
  931. #ifdef CONFIG_HDMI_SUPPORT_MHL
  932. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  933. {
  934. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  935. }
  936. else
  937. #endif
  938. {
  939. bHDMIRX_BS3 = 0;
  940. bHDMIRX_BS2_0 = 7; //each eq period : 25ms ~ 13ms
  941. HDMI_RegisterWrite(HDMIRX_bs_2_0_, bHDMIRX_BS2_0);
  942. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  943. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00012072);
  944. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  945. }
  946. #else
  947. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  948. #endif
  949. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,1);
  950. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  951. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 2);
  952. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  953. HDMI_RegisterWrite(HDMIRX_R_SP2, 1);
  954. HDMI_RegisterWrite(HDMIRX_R_SP3, 1);
  955. #endif
  956. }
  957. else
  958. {
  959. HDMI_Set_EQ_Mode(HDMI_EQ_MODE_INDEX);
  960. }
  961. HDMI_RegisterWrite(HDMIRX_taps_0, 1);
  962. HDMI_RegisterWrite(HDMIRX_lowlmt, 1);
  963. MAX_BCH_ERROR_CNT = 0x1000;
  964. break;
  965. case HDMI_PLL_MODE_HDMI_FREQ_1F_32:
  966. //80.6Mhz <TMDS Clk < 130Mhz
  967. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  968. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  969. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x3);
  970. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  971. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  972. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x6);
  973. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 2);//LPF CAP sel
  974. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 9);
  975. #ifdef HDMI_USE_EXT_DIVSEL
  976. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 1);
  977. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL, 1);
  978. #else
  979. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 0);
  980. #endif
  981. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  982. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  983. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  984. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  985. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  986. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  987. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 4);
  988. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 0);
  989. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  990. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  991. if(HDMI_EQ_MODE_INDEX==HDMI_EQ_INDEX_DEFAULT)
  992. {
  993. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  994. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  995. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  996. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  997. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  998. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  999. #ifndef Manu_EQ_Adjust
  1000. if(TRUE == SWITCH_FIX_EQ)
  1001. {
  1002. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x37722037);
  1003. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20377220);
  1004. }
  1005. else
  1006. {
  1007. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  1008. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  1009. }
  1010. #ifdef USE_HW_ADAPTIVE_EQ
  1011. #ifdef CONFIG_HDMI_SUPPORT_MHL
  1012. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  1013. {
  1014. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1015. }
  1016. else
  1017. #endif
  1018. {
  1019. bHDMIRX_BS3 = 0;
  1020. bHDMIRX_BS2_0 = 6; //each eq period : 26ms ~ 16ms
  1021. HDMI_RegisterWrite(HDMIRX_bs_2_0_, bHDMIRX_BS2_0);
  1022. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1023. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00012072);
  1024. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  1025. }
  1026. #else
  1027. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1028. #endif
  1029. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,1);
  1030. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  1031. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 2);
  1032. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  1033. HDMI_RegisterWrite(HDMIRX_R_SP2, 1);
  1034. HDMI_RegisterWrite(HDMIRX_R_SP3, 1);
  1035. #endif
  1036. }
  1037. else
  1038. {
  1039. HDMI_Set_EQ_Mode(HDMI_EQ_MODE_INDEX);
  1040. }
  1041. HDMI_RegisterWrite(HDMIRX_taps_0, 1);
  1042. HDMI_RegisterWrite(HDMIRX_lowlmt, 1);
  1043. MAX_BCH_ERROR_CNT = 0x1800;
  1044. break;
  1045. case HDMI_PLL_MODE_HDMI_FREQ_33_3D:
  1046. //132.6Mhz <TMDS Clk < 158.6Mhz
  1047. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  1048. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  1049. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x3);
  1050. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  1051. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  1052. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xc);
  1053. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 2);//LPF CAP sel
  1054. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 9);
  1055. #ifdef HDMI_USE_EXT_DIVSEL
  1056. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 1);
  1057. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL, 1);
  1058. #else
  1059. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 0);
  1060. #endif
  1061. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  1062. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  1063. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  1064. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  1065. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  1066. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  1067. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 4);
  1068. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 0);
  1069. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  1070. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  1071. if(HDMI_EQ_MODE_INDEX==HDMI_EQ_INDEX_DEFAULT)
  1072. {
  1073. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  1074. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  1075. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1076. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1077. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  1078. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1079. #ifndef Manu_EQ_Adjust
  1080. if(TRUE == SWITCH_FIX_EQ)
  1081. {
  1082. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x37722037);
  1083. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20377220);
  1084. }
  1085. else
  1086. {
  1087. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  1088. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  1089. }
  1090. #ifdef USE_HW_ADAPTIVE_EQ
  1091. #ifdef CONFIG_HDMI_SUPPORT_MHL
  1092. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  1093. {
  1094. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1095. }
  1096. else
  1097. #endif
  1098. {
  1099. bHDMIRX_BS3 = 0;
  1100. bHDMIRX_BS2_0 = 5; //each eq period : 32ms ~ 27ms
  1101. HDMI_RegisterWrite(HDMIRX_bs_2_0_, bHDMIRX_BS2_0);
  1102. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1103. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00012072);
  1104. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  1105. }
  1106. #else
  1107. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1108. #endif
  1109. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,1);
  1110. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  1111. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 2);
  1112. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  1113. HDMI_RegisterWrite(HDMIRX_R_SP2, 1);
  1114. HDMI_RegisterWrite(HDMIRX_R_SP3, 1);
  1115. #endif
  1116. }
  1117. else
  1118. {
  1119. HDMI_Set_EQ_Mode(HDMI_EQ_MODE_INDEX);
  1120. }
  1121. HDMI_RegisterWrite(HDMIRX_taps_0, 1);
  1122. HDMI_RegisterWrite(HDMIRX_lowlmt, 1);
  1123. MAX_BCH_ERROR_CNT = 0x1800;
  1124. break;
  1125. case HDMI_PLL_MODE_HDMI_FREQ_3E_60:
  1126. //161.2Mhz <TMDS Clk < 249.6Mhz
  1127. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  1128. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  1129. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x3);
  1130. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  1131. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  1132. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x6);
  1133. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 2);//LPF CAP sel
  1134. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 4);
  1135. #ifdef HDMI_USE_EXT_DIVSEL
  1136. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 1);
  1137. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL, 0);
  1138. #else
  1139. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 0);
  1140. #endif
  1141. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  1142. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  1143. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  1144. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  1145. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  1146. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  1147. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 4);
  1148. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 0);
  1149. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  1150. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  1151. if(HDMI_EQ_MODE_INDEX==HDMI_EQ_INDEX_DEFAULT)
  1152. {
  1153. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 4);
  1154. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 4);
  1155. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1156. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1157. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  1158. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1159. #ifndef Manu_EQ_Adjust
  1160. if(TRUE == SWITCH_FIX_EQ)
  1161. {
  1162. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x37722037);
  1163. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20377220);
  1164. }
  1165. else
  1166. {
  1167. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  1168. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  1169. }
  1170. #ifdef USE_HW_ADAPTIVE_EQ
  1171. #ifdef CONFIG_HDMI_SUPPORT_MHL
  1172. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  1173. {
  1174. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1175. }
  1176. else
  1177. #endif
  1178. {
  1179. bHDMIRX_BS3 = 0;
  1180. bHDMIRX_BS2_0 = 5; //each eq period : 26ms ~ 17ms
  1181. HDMI_RegisterWrite(HDMIRX_bs_2_0_, bHDMIRX_BS2_0);
  1182. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1183. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00012072);
  1184. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  1185. }
  1186. #else
  1187. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1188. #endif
  1189. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,1);
  1190. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  1191. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 2);
  1192. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  1193. HDMI_RegisterWrite(HDMIRX_R_SP2, 1);
  1194. HDMI_RegisterWrite(HDMIRX_R_SP3, 1);
  1195. #endif
  1196. }
  1197. else
  1198. {
  1199. HDMI_Set_EQ_Mode(HDMI_EQ_MODE_INDEX);
  1200. }
  1201. HDMI_RegisterWrite(HDMIRX_taps_0, 0);
  1202. HDMI_RegisterWrite(HDMIRX_lowlmt, 0);
  1203. MAX_BCH_ERROR_CNT = 0x3200;
  1204. break;
  1205. case HDMI_PLL_MODE_HDMI_FREQ_61:
  1206. //252.2Mhz <TMDS Clk
  1207. HDMI_RegisterWrite(HDMIRX_EQ_ICTL0, 0x1);
  1208. HDMI_RegisterWrite(HDMIRX_EQ_ICTL1, 0x1);
  1209. HDMI_RegisterWrite(HDMIRX_PHY_IB_CT_CK, 0x3);
  1210. //HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0xC);
  1211. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x5);
  1212. //HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x7);
  1213. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0);
  1214. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xa);
  1215. //HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 0);//LPF CAP sel
  1216. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 2);//LPF CAP sel
  1217. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 4);
  1218. #ifdef HDMI_USE_EXT_DIVSEL
  1219. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 1);
  1220. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL, 0);
  1221. #else
  1222. HDMI_RegisterWrite(HDMIRX_CTL_R_EXT_DIVSEL_EN, 0);
  1223. #endif
  1224. HDMI_RegisterWrite(HDMIRX_R_SP6, 0);
  1225. HDMI_RegisterWrite(HDMIRX_R_SP7, 0);
  1226. HDMI_RegisterWrite(HDMIRX_R_SP9, 0);
  1227. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0);
  1228. HDMI_RegisterWrite(HDMIRX_PLL_DIVSEL2, 0);
  1229. //HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 1);
  1230. HDMI_RegisterWrite(HDMIRX_PLL_REFDIV, 0);
  1231. HDMI_RegisterWrite(HDMIRX_R_BYTE_ALIGN_CNT2, 4);
  1232. HDMI_RegisterWrite(HDMIRX_ALN_SEL, 1);
  1233. HDMI_RegisterWrite(HDMIRX_de_lo, 0); //Disable hw adaptive eq condition more stricter
  1234. HDMI_RegisterWrite(HDMIRX_CTL_R_LOCK_CNT_3_0_, 0xf);
  1235. if(HDMI_EQ_MODE_INDEX==HDMI_EQ_INDEX_DEFAULT)
  1236. {
  1237. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 4);
  1238. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 4);
  1239. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1240. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1241. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  1242. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1243. #ifndef Manu_EQ_Adjust
  1244. if(TRUE == SWITCH_FIX_EQ)
  1245. {
  1246. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x37722037);
  1247. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x20377220);
  1248. }
  1249. else
  1250. {
  1251. HDMI_RegisterWrite(CTRLI_631_600__DW_0430,0x24721024);
  1252. HDMI_RegisterWrite(CTRLI_663_632__DW_0434,0x10247210);
  1253. }
  1254. #ifdef USE_HW_ADAPTIVE_EQ
  1255. #ifdef CONFIG_HDMI_SUPPORT_MHL
  1256. if((MHL_CABLE_IN == TRUE)&&( DrvHDMIPortSelectBitsGet() == CONFIG_HDMI_MHL_PORT))
  1257. {
  1258. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1259. }
  1260. else
  1261. #endif
  1262. {
  1263. bHDMIRX_BS3 = 0;
  1264. bHDMIRX_BS2_0 = 4; //each eq period : 33ms
  1265. HDMI_RegisterWrite(HDMIRX_bs_2_0_, bHDMIRX_BS2_0);
  1266. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1267. //HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00012072);
  1268. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00002072|(bHDMIRX_BS3<<16));
  1269. }
  1270. #else
  1271. HDMI_RegisterWrite(CTRLI_695_664__DW_0438,0x00000072);
  1272. #endif
  1273. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF0,1);
  1274. HDMI_RegisterWrite(HDMIRX_R_SP1_EQ_OUT_VREF1,1);
  1275. HDMI_RegisterWrite(HDMIRX_BIAS_VREF_SF_SEL_1_0_, 2);
  1276. HDMI_RegisterWrite(HDMIRX_EQ_VDC_SEL, 0);
  1277. HDMI_RegisterWrite(HDMIRX_R_SP2, 1);
  1278. HDMI_RegisterWrite(HDMIRX_R_SP3, 1);
  1279. #endif
  1280. }
  1281. else
  1282. {
  1283. HDMI_Set_EQ_Mode(HDMI_EQ_MODE_INDEX);
  1284. }
  1285. HDMI_RegisterWrite(HDMIRX_taps_0, 0);
  1286. HDMI_RegisterWrite(HDMIRX_lowlmt, 0);
  1287. MAX_BCH_ERROR_CNT = 0x3200;
  1288. break;
  1289. /* DEMOD */
  1290. case HDMI_PLL_MODE_ADEMOD_INIT:
  1291. HDMI_RegisterWrite(CTRLI_31_0__DW_0280 , 0x00080000);
  1292. HDMI_RegisterWrite(CTRLI_47_32__DW_0284 , 0x00000106);//0
  1293. HDMI_RegisterWrite(CTRLI_79_48__DW_0000 , 0x00001080 | (bTerm<<4));
  1294. HDMI_RegisterWrite(CTRLI_111_80__DW_0004 , 0x00000000);
  1295. HDMI_RegisterWrite(CTRLI_143_112__DW_0008, 0x00000000);
  1296. HDMI_RegisterWrite(CTRLI_175_144__DW_000C, 0x00000000);
  1297. HDMI_RegisterWrite(CTRLI_207_176__DW_0010, 0x00000000);
  1298. HDMI_RegisterWrite(CTRLI_239_208__DW_0014, 0x00000000);
  1299. HDMI_RegisterWrite(CTRLI_271_240__DW_0018, 0x00000000);
  1300. HDMI_RegisterWrite(CTRLI_303_272__DW_001C, 0x00000000);
  1301. HDMI_RegisterWrite(CTRLI_335_304__DW_0258, 0x40040000);
  1302. //HDMI_RegisterWrite(CTRLI_375_344__DW_0260, 0x000000E0);
  1303. HDMI_RegisterWrite(CTRLI_375_344__DW_0260, 0x00000000); //Turn RTT_CM 8506 E0->0O
  1304. HDMI_RegisterWrite(CTRLI_407_376__DW_0264, 0x00000000);
  1305. HDMI_RegisterWrite(CTRLI_439_408__DW_0268, 0x00000000);
  1306. HDMI_RegisterWrite(CTRLI_471_440__DW_026C, 0x00000000);
  1307. HDMI_RegisterWrite(CTRLI_503_472__DW_0270, 0x00000000);
  1308. //HDMI_RegisterWrite(CTRLI_535_504__DW_0274, 0x00000000);
  1309. HDMI_RegisterWrite(CTRLI_535_504__DW_0274, 0xF0000000);
  1310. HDMI_RegisterWrite(CTRLI_567_536__DW_0278, 0x00000000);
  1311. HDMI_RegisterWrite(CTRLI_599_568__DW_027C, 0x00000000);
  1312. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_external,0x0);
  1313. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_mux,0x0);
  1314. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_PLL_Sel_external,0x0);
  1315. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_PLL_mux,0x0);
  1316. HDMI_RegisterWrite(HDMIRX_TMDSCLK_PP_SEL, 0x1);
  1317. HDMI_RegisterWrite(HDMIRX_external_gated_TMDSCLK, 0x1);
  1318. HDMI_DelayMs(1);
  1319. break;
  1320. case HDMI_PLL_MODE_ADEMOD_ENABLE:
  1321. sysset_DEMOD_BG_POWER_DOWN(FALSE);
  1322. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_external,0x0);
  1323. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_mux,0x0);
  1324. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_PLL_Sel_external,0x0);
  1325. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_PLL_mux,0x0);
  1326. HDMI_RegisterWrite(HDMIRX_TMDSCLK_PP_SEL, 0x1);
  1327. HDMI_RegisterWrite(HDMIRX_external_gated_TMDSCLK, 0x1);
  1328. HDMI_RegisterWrite(HDMIRX_COMP_PD, 0x0);
  1329. HDMI_RegisterWrite(HDMIRX_PLL_PD_COMP, 0x0);
  1330. //HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x6);
  1331. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x1);
  1332. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0x0);//For ATV Line Noise
  1333. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 0);//LPF CAP sel
  1334. //HDMI_RegisterWrite(HDMIRX_PLL_GB_4_0_, 0x3);// 3
  1335. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xf);// 3
  1336. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 0x2f);
  1337. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0x1);
  1338. HDMI_RegisterWrite(HDMIRX_PDACJ_CK, 0x1);
  1339. HDMI_DelayUs(1); //PLL_Power need 500 nsec to stable
  1340. //HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 0x1);
  1341. //HDMI_DelayMs(1);
  1342. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1343. HDMI_RegisterWrite(HDMIRX_PLL_RSTN, 0x1);
  1344. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1345. HDMI_DelayUs(1);
  1346. HDMI_RegisterWrite(HDMIRX_R_SP5_PLL_CTP_PWDJ, 0x1);
  1347. HDMI_RegisterWrite(HDMIRX_LDO_PWD, 0x1);// 1/0 : normal / PD (change define from 331)
  1348. HDMI_RegisterWrite(HDMIRX_LDO_PWDE, 0x1);// 1/0 : normal / PD (change define from 331)
  1349. HDMI_DelayUs(8);
  1350. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x0);
  1351. HDMI_DelayUs(1);
  1352. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1353. HDMI_DelayUs(1);
  1354. HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 0x1);
  1355. HDMI_DelayUs(1);
  1356. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0x0);//For ATV Line Noise
  1357. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x3);// 3
  1358. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x6);
  1359. break;
  1360. case HDMI_PLL_MODE_ADEMOD_DISABLE:
  1361. sysset_DEMOD_BG_POWER_DOWN(TRUE);
  1362. HDMI_RegisterWrite(CTRLI_31_0__DW_0280, 0x000c0400);
  1363. HDMI_RegisterWrite(CTRLI_47_32__DW_0284, 0x00000006);
  1364. HDMI_RegisterWrite(CTRLI_79_48__DW_0000, 0x00000088 | (bTerm<<4));
  1365. HDMI_RegisterWrite(CTRLI_111_80__DW_0004, 0x00000000);
  1366. HDMI_RegisterWrite(CTRLI_143_112__DW_0008, 0x00000000);
  1367. HDMI_RegisterWrite(CTRLI_175_144__DW_000C, 0x00000000);
  1368. HDMI_RegisterWrite(CTRLI_207_176__DW_0010, 0x00000000);
  1369. HDMI_RegisterWrite(CTRLI_239_208__DW_0014, 0x00000000);
  1370. HDMI_RegisterWrite(CTRLI_271_240__DW_0018, 0x00000000);
  1371. HDMI_RegisterWrite(CTRLI_303_272__DW_001C, 0x71da0000);
  1372. HDMI_RegisterWrite(CTRLI_335_304__DW_0258, 0x40040010);
  1373. //HDMI_RegisterWrite(CTRLI_375_344__DW_0260, 0x71da00E0);
  1374. HDMI_RegisterWrite(CTRLI_375_344__DW_0260, 0x71da0000); //Turn RTT_CM 8506 E0->0O
  1375. HDMI_RegisterWrite(CTRLI_439_408__DW_0268, 0x00000000);
  1376. HDMI_RegisterWrite(CTRLI_471_440__DW_026C, 0x00000000);
  1377. HDMI_RegisterWrite(CTRLI_503_472__DW_0270, 0x00000000);
  1378. HDMI_RegisterWrite(CTRLI_535_504__DW_0274, 0x00000000);
  1379. HDMI_RegisterWrite(CTRLI_567_536__DW_0278, 0x00000000);
  1380. HDMI_RegisterWrite(CTRLI_599_568__DW_027C, 0x00000000);
  1381. HDMI_DelayMs(1);
  1382. break;
  1383. case HDMI_PLL_MODE_DDEMOD_INIT:
  1384. HDMI_RegisterWrite(CTRLI_31_0__DW_0280 , 0x00080000);
  1385. HDMI_RegisterWrite(CTRLI_47_32__DW_0284 , 0x00000106);
  1386. HDMI_RegisterWrite(CTRLI_79_48__DW_0000 , 0x00001080 | (bTerm<<4));
  1387. HDMI_RegisterWrite(CTRLI_111_80__DW_0004 , 0x00000000);
  1388. HDMI_RegisterWrite(CTRLI_143_112__DW_0008, 0x00000000);
  1389. HDMI_RegisterWrite(CTRLI_175_144__DW_000C, 0x00000000);
  1390. HDMI_RegisterWrite(CTRLI_207_176__DW_0010, 0x00000000);
  1391. HDMI_RegisterWrite(CTRLI_239_208__DW_0014, 0x00000000);
  1392. HDMI_RegisterWrite(CTRLI_271_240__DW_0018, 0x00000000);
  1393. HDMI_RegisterWrite(CTRLI_303_272__DW_001C, 0x00000000);
  1394. HDMI_RegisterWrite(CTRLI_335_304__DW_0258, 0x40040000);
  1395. //HDMI_RegisterWrite(CTRLI_375_344__DW_0260, 0x000000E0);
  1396. HDMI_RegisterWrite(CTRLI_375_344__DW_0260, 0x00000000); //Turn RTT_CM 8506 E0->0O
  1397. HDMI_RegisterWrite(CTRLI_407_376__DW_0264, 0x00000000);
  1398. HDMI_RegisterWrite(CTRLI_439_408__DW_0268, 0x00000000);
  1399. HDMI_RegisterWrite(CTRLI_471_440__DW_026C, 0x00000000);
  1400. HDMI_RegisterWrite(CTRLI_503_472__DW_0270, 0x00000000);
  1401. //HDMI_RegisterWrite(CTRLI_535_504__DW_0274, 0x00000000);
  1402. HDMI_RegisterWrite(CTRLI_535_504__DW_0274, 0xF0000000);
  1403. HDMI_RegisterWrite(CTRLI_567_536__DW_0278, 0x00000000);
  1404. HDMI_RegisterWrite(CTRLI_599_568__DW_027C, 0x00000000);
  1405. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_external,0x0);
  1406. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_mux,0x0);
  1407. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_PLL_Sel_external,0x0);
  1408. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_PLL_mux,0x0);
  1409. HDMI_RegisterWrite(HDMIRX_TMDSCLK_PP_SEL, 0x1);
  1410. HDMI_RegisterWrite(HDMIRX_external_gated_TMDSCLK, 0x1);
  1411. HDMI_DelayMs(1);
  1412. break;
  1413. case HDMI_PLL_MODE_DDEMOD_ENABLE_LDO_SETTING:
  1414. sysset_DEMOD_BG_POWER_DOWN(FALSE);
  1415. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_external,0x0);
  1416. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_mux,0x0);
  1417. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_PLL_Sel_external,0x0);
  1418. HDMI_RegisterWrite(HDMIRX_HDMIP0_MHL_Mode_Sel_PLL_mux,0x0);
  1419. HDMI_RegisterWrite(HDMIRX_TMDSCLK_PP_SEL, 0x1);
  1420. HDMI_RegisterWrite(HDMIRX_external_gated_TMDSCLK, 0x1);
  1421. HDMI_RegisterWrite(HDMIRX_COMP_PD, 0x0);
  1422. HDMI_RegisterWrite(HDMIRX_PLL_PD_COMP, 0x0);
  1423. //HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x6);
  1424. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x1);
  1425. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0x0);
  1426. HDMI_RegisterWrite(HDMIRX_PLL_GB_5_4, 0);//LPF CAP sel
  1427. //HDMI_RegisterWrite(HDMIRX_PLL_GB_4_0_, 0x3);//6->3
  1428. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0xf);//6->3
  1429. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, 0x2f);
  1430. HDMI_RegisterWrite(HDMIRX_PHY_DIVSLE2, 0x1);
  1431. HDMI_RegisterWrite(HDMIRX_PDACJ_CK, 0x1);
  1432. HDMI_DelayUs(1); //PLL_Power need 500 nsec to stable
  1433. // HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 0x1);
  1434. // HDMI_DelayMs(1);
  1435. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1436. HDMI_RegisterWrite(HDMIRX_PLL_RSTN, 0x1);
  1437. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1438. HDMI_DelayUs(1);
  1439. HDMI_RegisterWrite(HDMIRX_R_SP5_PLL_CTP_PWDJ, 0x1);
  1440. HDMI_RegisterWrite(HDMIRX_LDO_PWD, 0x1);// 1/0 : normal / PD (change define from 331)
  1441. HDMI_RegisterWrite(HDMIRX_LDO_PWDE, 0x1);// 1/0 : normal / PD (change define from 331)
  1442. HDMI_DelayUs(8);
  1443. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x0);
  1444. HDMI_DelayUs(1);
  1445. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1446. HDMI_DelayUs(1);
  1447. HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 0x1);
  1448. HDMI_DelayUs(1);
  1449. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0x0);//
  1450. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, 0x3);// 3
  1451. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x6);
  1452. break;
  1453. case HDMI_PLL_MODE_DDEMOD_DISABLE:
  1454. sysset_DEMOD_BG_POWER_DOWN(TRUE);
  1455. HDMI_RegisterWrite(CTRLI_31_0__DW_0280 , 0x00000000);
  1456. HDMI_RegisterWrite(CTRLI_47_32__DW_0284 , 0x00000106);
  1457. HDMI_RegisterWrite(CTRLI_79_48__DW_0000 , 0x00001088 | (bTerm<<4));
  1458. HDMI_RegisterWrite(CTRLI_111_80__DW_0004 , 0x00000000);
  1459. HDMI_RegisterWrite(CTRLI_143_112__DW_0008, 0x00000000);
  1460. HDMI_RegisterWrite(CTRLI_175_144__DW_000C, 0x00000000);
  1461. HDMI_RegisterWrite(CTRLI_207_176__DW_0010, 0x00000000);
  1462. HDMI_RegisterWrite(CTRLI_239_208__DW_0014, 0x00000000);
  1463. HDMI_RegisterWrite(CTRLI_271_240__DW_0018, 0x00000000);
  1464. HDMI_RegisterWrite(CTRLI_303_272__DW_001C, 0x00000000);
  1465. HDMI_RegisterWrite(CTRLI_335_304__DW_0258, 0x40040000);
  1466. HDMI_RegisterWrite(CTRLI_375_344__DW_0260, 0x00000000);
  1467. HDMI_RegisterWrite(CTRLI_407_376__DW_0264, 0x00000000);
  1468. HDMI_RegisterWrite(CTRLI_439_408__DW_0268, 0x00000000);
  1469. HDMI_RegisterWrite(CTRLI_471_440__DW_026C, 0x00000000);
  1470. HDMI_RegisterWrite(CTRLI_503_472__DW_0270, 0x00000000);
  1471. HDMI_RegisterWrite(CTRLI_535_504__DW_0274, 0x00000000);
  1472. HDMI_RegisterWrite(CTRLI_567_536__DW_0278, 0x00000000);
  1473. HDMI_RegisterWrite(CTRLI_599_568__DW_027C, 0x00000000);
  1474. HDMI_DelayMs(1);
  1475. break;
  1476. /* DEFAULT */
  1477. default:
  1478. printk("[H] mode is not exist\n");
  1479. break;
  1480. }
  1481. }
  1482. //set HDMI EQ Mode
  1483. void HDMI_Set_EQ_Mode(HDMI_EQ_INDEX_e eHDMI_EQ_MODE)
  1484. {
  1485. printk("[H] %s mode:%d\n", __FUNCTION__, eHDMI_EQ_MODE);
  1486. switch(eHDMI_EQ_MODE)
  1487. {
  1488. /* Default */
  1489. case HDMI_EQ_INDEX_DEFAULT:
  1490. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1491. break;
  1492. case HDMI_EQ_INDEX_1:
  1493. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  1494. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  1495. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1496. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 1);
  1497. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  1498. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 1);
  1499. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1500. break;
  1501. case HDMI_EQ_INDEX_2:
  1502. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  1503. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  1504. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1505. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1506. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 7);
  1507. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1508. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1509. break;
  1510. case HDMI_EQ_INDEX_3:
  1511. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 0);
  1512. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 0);
  1513. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1514. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 1);
  1515. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 7);
  1516. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 1);
  1517. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1518. break;
  1519. case HDMI_EQ_INDEX_4:
  1520. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 1);
  1521. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 1);
  1522. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1523. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 1);
  1524. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 3);
  1525. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1526. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1527. break;
  1528. case HDMI_EQ_INDEX_5:
  1529. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 4);
  1530. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 4);
  1531. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1532. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 1);
  1533. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 3);
  1534. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1535. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1536. break;
  1537. case HDMI_EQ_INDEX_6:
  1538. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  1539. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  1540. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1541. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 1);
  1542. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  1543. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1544. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1545. break;
  1546. case HDMI_EQ_INDEX_7:
  1547. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 1);
  1548. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 1);
  1549. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1550. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1551. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  1552. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1553. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1554. break;
  1555. case HDMI_EQ_INDEX_8:
  1556. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 4);
  1557. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 4);
  1558. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 1);
  1559. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1560. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 1);
  1561. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1562. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1563. break;
  1564. case HDMI_EQ_INDEX_9:
  1565. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 4);
  1566. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 4);
  1567. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0,0);
  1568. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1569. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 0);
  1570. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1571. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1572. break;
  1573. case HDMI_EQ_INDEX_10:
  1574. //HDMI_RegisterWrite(HDMIRX_PHY_EQC0, 7);
  1575. //HDMI_RegisterWrite(HDMIRX_PHY_EQC1, 7);
  1576. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_0, 0);
  1577. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_1, 0);
  1578. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC1, 0);
  1579. //HDMI_RegisterWrite(HDMIRX_PHY_EQDC0_2, 0);
  1580. HDMI_EQ_MODE_INDEX =eHDMI_EQ_MODE ;
  1581. break;
  1582. /* DEFAULT */
  1583. default:
  1584. printk("[H] mode is not exist\n");
  1585. break;
  1586. }
  1587. HDMI_RegisterWrite(HDMIRX_R_rst_n, 0);
  1588. HDMI_DelayMs(2);
  1589. HDMI_RegisterWrite(HDMIRX_R_rst_n, 1);
  1590. }
  1591. void HDMI_Set_Demod_Clock_Div(UINT8 FEBDIV, UINT8 PLLGainBit)
  1592. {
  1593. if((PLLGainBit <= 31))
  1594. {
  1595. //Set 284[bit:2], 284[bit:3], 263[bit:4] = 0 to Reset Mode
  1596. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x0);
  1597. HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 0x0);
  1598. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x0);
  1599. HDMI_RegisterWrite(HDMIRX_PLL_RSTN, 0x0);
  1600. HDMI_DelayUs(1);
  1601. //Set Demod Clock Div
  1602. HDMI_RegisterWrite(HDMIRX_PLL_FEBDIV_7_0_, FEBDIV);
  1603. HDMI_RegisterWrite(HDMIRX_PLL_ICTRL_3_0_, 0x6);
  1604. HDMI_RegisterWrite(HDMIRX_PLL_GB_3_0_, PLLGainBit);
  1605. HDMI_RegisterWrite(HDMIRX_PLL_EN_FDIV, 0x0);
  1606. //Set 284[bit:2] = 1
  1607. HDMI_DelayUs(1); //PLL Mode need 10 nsec to stable
  1608. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1609. //Set 263[bit:4] = 1
  1610. HDMI_DelayUs(1); //PLL_PWDN_DEMOD need 10 nsec to stable
  1611. HDMI_RegisterWrite(HDMIRX_PLL_RESETJ, 0x1);
  1612. //set 284[bit:3] = 1
  1613. HDMI_DelayUs(1); //RESETJ need 10 nsec to stable
  1614. HDMI_RegisterWrite(HDMIRX_PLL_PWDN_DEMOD, 0x1);
  1615. HDMI_RegisterWrite(HDMIRX_PLL_RSTN, 0x1);
  1616. HDMI_DelayUs(100); //CLK_DEMOD need more than 50 usec to stable
  1617. }
  1618. else
  1619. {
  1620. hdmidbg("PLLGainBit value is illegal\n");
  1621. }
  1622. }
  1623. UINT8 HDMI_Get_HDMI_LDO_PWD(void)
  1624. {
  1625. UINT8 ret = 0;
  1626. //PD0 1/0 : normal / PD (change define from 331)
  1627. ret = (UINT8)HDMI_RegisterRead(HDMIRX_LDO_PWD);
  1628. if(ret==1)
  1629. {
  1630. return HDMI_NORMAL;
  1631. }
  1632. else
  1633. {
  1634. return HDMI_PD;
  1635. }
  1636. }
  1637. UINT8 HDMI_Get_HDMI_R_SP5_PLL_CTP_PWDJ(void)
  1638. {
  1639. UINT8 ret = 0;
  1640. ret = (UINT8)HDMI_RegisterRead(HDMIRX_R_SP5_PLL_CTP_PWDJ);
  1641. return ret;
  1642. }
  1643. UINT8 HDMI_Get_HDMI_PLL_PWDN_DEMOD(void)
  1644. {
  1645. UINT8 ret = 0;
  1646. ret = (UINT8)HDMI_RegisterRead(HDMIRX_PLL_PWDN_DEMOD);
  1647. return ret;
  1648. }
  1649. UINT8 HDMI_Get_HDMI_COMP_PD(void)
  1650. {
  1651. UINT8 ret = 0;
  1652. ret = (UINT8)HDMI_RegisterRead(HDMIRX_COMP_PD);
  1653. return ret;
  1654. }
  1655. UINT8 HDMI_Get_HDMI_PLL_RESETJ(void)
  1656. {
  1657. UINT8 ret = 0;
  1658. ret = (UINT8)HDMI_RegisterRead(HDMIRX_PLL_RESETJ);
  1659. return ret;
  1660. }
  1661. UINT8 HDMI_Get_HDMI_DEMOD_EN(void)
  1662. {
  1663. UINT8 ret = 0;
  1664. ret = (UINT8)HDMI_RegisterRead(HDMIRX_PLL_DEMOD_EN);
  1665. return ret;
  1666. }
  1667. //------------------------------------------------------------------------------
  1668. // Function: DrvHDMIPortSelectBitsGet
  1669. // Description: Reads the HDMI selected port(s)bit-field.
  1670. // Parameters: None
  1671. // Returns: HDMI selected port(s)bit-field.
  1672. //
  1673. //------------------------------------------------------------------------------
  1674. UINT8 DrvHDMIPortSelectBitsGet(void)
  1675. {
  1676. return(HDMI_RegisterRead(HDMIRX_R_hdmi_port_sel));
  1677. }
  1678. UINT8 HDMI_Get_SPD_INFOFRAME(struct hdmi_spd_infoframe *frame)
  1679. {
  1680. hdmi_spd_infoframe_init(frame,
  1681. (const char*)((HDMIRX_R_SPD_VN_31_0_ & REGISTER_ADDRESS_MASK)+(HDMI_GetRegisterType(HDMIRX_R_SPD_VN_31_0_ & REGISTER_TYPE_MASK))),
  1682. (const char*)((HDMIRX_R_SPD_PD_31_0_ & REGISTER_ADDRESS_MASK)+(HDMI_GetRegisterType(HDMIRX_R_SPD_PD_31_0_ & REGISTER_TYPE_MASK))),
  1683. (const char*)((HDMIRX_R_SPD_SDI & REGISTER_ADDRESS_MASK)+(HDMI_GetRegisterType(HDMIRX_R_SPD_SDI & REGISTER_TYPE_MASK))));
  1684. return 0;
  1685. }
  1686. #ifdef USE_HW_ADAPTIVE_EQ
  1687. //parameter 1: HDMIRX_PRE?= PRE0:PRE9,
  1688. //parameter 2: EQC2_2:EQC2_0, value 7~0
  1689. //parameter 3: EQC1_2:EQC1_0, value 7~0
  1690. //parameter 4: EQC0_2:EQC0_0, value 7~0
  1691. //parameter 5: EQDC2_2:EQDC2_0, value 7~0
  1692. //parameter 6: EQDC1_2:EQDC1_0, value 7~0
  1693. //parameter 7: EQDC0_2:EQDC0_0, value 7~0
  1694. #define HDMI_SET_ADAPTIVE_EQ(PRE_INDEX, EQC2,EQC1,EQC0,EQDC2,EQDC1,EQDC0) do{\
  1695. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC0_2, EQC0&0x4 ? 1:0);\
  1696. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC0_1, EQC0&0x2 ? 1:0);\
  1697. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC0_0, EQC0&0x1 ? 1:0);\
  1698. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC1_2, EQC1&0x4 ? 1:0);\
  1699. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC1_1, EQC1&0x2 ? 1:0);\
  1700. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC1_0, EQC1&0x1 ? 1:0);\
  1701. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC2_2, EQC2&0x4 ? 1:0);\
  1702. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC2_1, EQC2&0x2 ? 1:0);\
  1703. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQC2_0, EQC2&0x1 ? 1:0);\
  1704. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC0_2, EQDC0&0x4 ? 1:0);\
  1705. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC0_1, EQDC0&0x2 ? 1:0);\
  1706. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC0_0, EQDC0&0x1 ? 1:0);\
  1707. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC1_2, EQDC1&0x4 ? 1:0);\
  1708. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC1_1, EQDC1&0x2 ? 1:0);\
  1709. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC1_0, EQDC1&0x1 ? 1:0);\
  1710. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC2_2, EQDC2&0x4 ? 1:0);\
  1711. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC2_1, EQDC2&0x2 ? 1:0);\
  1712. HDMI_RegisterWrite(HDMIRX_ ##PRE_INDEX## _EQDC2_0, EQDC2&0x1 ? 1:0);}while(0)
  1713. void HDMI_Adaptive_EQ_Init(void)
  1714. {
  1715. HDMI_SET_ADAPTIVE_EQ(PRE0,0,0,1,7,2,2);
  1716. HDMI_SET_ADAPTIVE_EQ(PRE1,0,0,2,7,2,2);
  1717. HDMI_SET_ADAPTIVE_EQ(PRE2,0,0,3,7,2,2);
  1718. HDMI_SET_ADAPTIVE_EQ(PRE3,0,0,4,7,2,2);
  1719. HDMI_SET_ADAPTIVE_EQ(PRE4,0,0,7,7,2,2);
  1720. HDMI_SET_ADAPTIVE_EQ(PRE5,0,1,7,7,2,2);
  1721. HDMI_SET_ADAPTIVE_EQ(PRE6,0,2,7,7,2,2);
  1722. HDMI_SET_ADAPTIVE_EQ(PRE7,0,3,7,7,2,2);
  1723. HDMI_SET_ADAPTIVE_EQ(PRE8,0,4,7,7,2,2);
  1724. HDMI_SET_ADAPTIVE_EQ(PRE9,0,7,7,7,2,2);
  1725. }
  1726. #endif