sysreg.c 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142
  1. #include "drv_types.h"
  2. #include "sysreg.h"
  3. #include "hdmi_time.h"
  4. #include "../../module_include/drv_gpio.h"
  5. #pragma pack(push,1)
  6. typedef struct __SYSTEM_REG
  7. {
  8. union
  9. {
  10. UINT32 reg000_007[0x2];
  11. struct
  12. {
  13. UINT32 VenderID: 16;
  14. UINT32 DeviceID: 16;
  15. UINT32 AuxVss: 8;
  16. UINT32 RevisionID: 8;
  17. UINT32 Information : 16;
  18. };
  19. struct
  20. {
  21. UINT32 reg000_b00_b15: 16;
  22. UINT32 chipInfo: 32;
  23. UINT32 reg004_b16_b31: 16;
  24. };
  25. };
  26. //UINT8 reg008_033[0x2c];
  27. //UINT8 reg008_017[0x10];
  28. UINT8 reg008_00b[0x4];
  29. union
  30. {
  31. UINT32 reg00c_00f;
  32. struct
  33. {
  34. UINT32 AUX_R_SPI_RST: 1;
  35. UINT32 AUX_UART_RST: 1;
  36. UINT32 AUX_I2C_RST: 1;
  37. UINT32 AUX_IR_RST: 1;
  38. UINT32 R_TSDEMUXA_RST: 1;
  39. UINT32 reserved_00c_b5: 1;
  40. UINT32 R_I2C_MASTER_MAIN_RST: 1;
  41. UINT32 R_VDEC_RST: 1;
  42. UINT32 AUX_R_ISOLATION_OFF_MFD: 1;
  43. UINT32 AUX_R_ISOLATION_OFF_FAL: 1;
  44. UINT32 reserved_00d_b2: 1;
  45. UINT32 R_VFA_RST: 1;
  46. UINT32 R_AUDIO_AVC_RST: 1;
  47. UINT32 R_UMC_RST: 1;
  48. UINT32 R_VIP_RST: 1;
  49. UINT32 R_AUDIO_RST: 1;
  50. UINT32 R_HDMI_RST: 1;
  51. UINT32 R_VD_RST: 1;
  52. UINT32 R_USB_RST: 1;
  53. UINT32 R_TT_RST: 1;
  54. UINT32 R_CA_RST: 1;
  55. UINT32 R_USB_SW_RST: 1;
  56. UINT32 R_USB_UTMI_RST: 1;
  57. UINT32 AUX_R_USBPLL_RST: 1;
  58. UINT32 AUX_ATV_AUDIO_DEC_RST: 1;
  59. UINT32 reserved_00f_b1: 1;
  60. UINT32 AUX_R_CPU0_RST: 1;
  61. UINT32 reserved_00f_b3: 1;
  62. UINT32 R_MFD_RST: 1;
  63. UINT32 reserved_00f_b5: 1;
  64. UINT32 reserved_00f_b6: 1;
  65. UINT32 AUX_R_CPU1_RSTN: 1;
  66. };
  67. };
  68. UINT8 reg010_017[0x8];
  69. union
  70. {
  71. UINT32 reg018_01b;
  72. struct
  73. {
  74. UINT32 reg02C_b0_b5: 6;
  75. UINT32 R_CBUS_DRV_PD_P0: 2;
  76. UINT32 R_CBUS_DRV_PD_P1: 2;
  77. UINT32 R_CBUS_DRV_PD_P2: 2;
  78. UINT32 R_CBUS_DRV_P0: 2;
  79. UINT32 R_CBUS_DRV_P1: 2;
  80. UINT32 R_CBUS_DRV_P2: 2;
  81. UINT32 R_CBUS_VREF_SEL: 1;
  82. UINT32 R_CBUS_SR_PD: 1;
  83. UINT32 R_CBUS_PD_SEL: 3;
  84. UINT32 R_CBUS_EN_P0_CTL_0: 1;
  85. UINT32 R_CBUS_EN_P0_CTL_1: 1;
  86. UINT32 R_CBUS_EN_P0_CTL_2: 1;
  87. UINT32 R_CBUS_EN_P1_CTL_0: 1;
  88. UINT32 R_CBUS_EN_P1_CTL_1: 1;
  89. UINT32 R_CBUS_EN_P1_CTL_2: 1;
  90. UINT32 R_CBUS_EN_P2_CTL_0: 1;
  91. UINT32 R_CBUS_EN_P2_CTL_1: 1;
  92. UINT32 R_CBUS_EN_P2_CTL_2: 1;
  93. };
  94. };
  95. //UINT8 reg01c_02b[0x10];
  96. UINT8 reg01c_01f[0x4];
  97. union
  98. {
  99. UINT32 reg020_023;
  100. struct
  101. {
  102. UINT32 reg020_b0_b27: 28;
  103. UINT32 R_CBUS_EN_P0_CTL_3: 1 ;
  104. UINT32 R_CBUS_EN_P1_CTL_3: 1;
  105. UINT32 reg020_b30_b31: 2;
  106. };
  107. };
  108. //UINT8 reg024_02b[0x8];
  109. UINT8 reg024_027[0x4];
  110. union
  111. {
  112. UINT32 reg028_02b;
  113. struct
  114. {
  115. UINT32 reg028_b0_b26: 27;
  116. UINT32 R_CEC_DIODE_RES_PD: 1;
  117. UINT32 R_CEC_DIODE_RES: 4;
  118. };
  119. };
  120. union
  121. {
  122. UINT32 reg02C_02F;
  123. struct
  124. {
  125. UINT32 reg02C_b0_b20: 21;
  126. UINT32 AUX_HDMIC_EN: 1;
  127. UINT32 reg02C_b22_b28: 7;
  128. UINT32 AUX_R_CBUS_VREF_TN: 1;
  129. UINT32 AUX_R_CBUS_VREF_PD: 1;
  130. UINT32 R_TSBIST_RSTN: 1;
  131. };
  132. };
  133. UINT8 reg030_033[0x4];
  134. union
  135. {
  136. UINT32 reg034_037;
  137. struct
  138. {
  139. UINT32 reg034_b0_b13: 14;
  140. UINT32 R_AUX_EN_HDMIC_SW5V: 1;
  141. UINT32 R_AUX_HDMIC_SW5V: 1;
  142. UINT32 R_AUX_EN_HDMIA_SW5V: 1;
  143. UINT32 R_AUX_HDMIA_SW5V: 1;
  144. UINT32 R_AUX_EN_HDMIB_SW5V: 1;
  145. UINT32 R_AUX_HDMIB_SW5V: 1;
  146. UINT32 reg034_b20_b23: 4;
  147. UINT32 R_ICLK_FROM_IMCLK: 1;
  148. UINT32 R_I2S_5VDET_SELJ: 1;
  149. UINT32 reg034_b26_b31: 6;
  150. };
  151. };
  152. union
  153. {
  154. UINT32 reg038_03B;
  155. struct
  156. {
  157. UINT32 reg038_b0_b2: 3;
  158. UINT32 R_AUX_HPD1_HIGH: 1;
  159. UINT32 R_AUX_HPD2_HIGH: 1;
  160. UINT32 R_AUX_HPD3_HIGH: 1;
  161. UINT32 reg038_b6_b26: 21;
  162. UINT32 R_AUX_HPD0_HIGH: 1;
  163. UINT32 reg038_b28_b31: 4;
  164. };
  165. };
  166. UINT8 reg_03C_0D3[0x98];
  167. union
  168. {
  169. UINT32 reg0D4_0D7;
  170. struct
  171. {
  172. UINT32 reg0D4_b0_b6: 7;
  173. UINT32 HDMI_CD_SENSE: 1;
  174. UINT32 reg0D4_b8_b31: 24;
  175. };
  176. };
  177. //UINT8 reg_0D8_0E7[0x10];
  178. //UINT8 reg_0D8_0E3[0xc];
  179. UINT8 reg_0D8_0DF[0x8];
  180. union
  181. {
  182. UINT32 reg0E0_0E3;
  183. struct
  184. {
  185. UINT32 R_ATE_Z_DISCOVER: 1;
  186. UINT32 R_ATE_Z_SINK: 1;
  187. UINT32 R_ATE_Z_DISCOVER_MUX_SEL: 1;
  188. UINT32 R_ATE_Z_SINK_MUX_SEL: 1;
  189. UINT32 R_CD_SENSE_SEL: 1;
  190. UINT32 R_CD_SENSE_ENA: 1;
  191. UINT32 reg0E0_b6_b31: 26;
  192. };
  193. };
  194. union
  195. {
  196. UINT32 reg0E4_0E7;
  197. struct
  198. {
  199. UINT32 HPD_P0_EN_DIS_CTL0: 1;
  200. UINT32 HPD_P0_EN_DIS_CTL1: 1;
  201. UINT32 HPD_P0_EN_DIS_CTL2: 1;
  202. UINT32 HPD_P0_EN_DIS_CTL3: 1;
  203. UINT32 HPD_P1_EN_DIS_CTL0: 1;
  204. UINT32 HPD_P1_EN_DIS_CTL1: 1;
  205. UINT32 HPD_P1_EN_DIS_CTL2: 1;
  206. UINT32 HPD_P1_EN_DIS_CTL3: 1;
  207. UINT32 HPD_DRV_1_0_VBUS: 2;
  208. UINT32 HPD_DRV_1_0_PD_VBUS: 2;
  209. UINT32 HPD_EN_PU_HPD: 1;
  210. UINT32 HPD_EN_PD_HPD: 1;
  211. UINT32 HPD_EN_PU_VBUS: 1;
  212. UINT32 HPD_EN_PD_VBUS: 1;
  213. UINT32 HPD_OE_P_2_0: 3;
  214. UINT32 reg0e4_b19: 1;
  215. UINT32 HPD_PUDELAY_1_0:2;
  216. UINT32 HPD_PDDELAY_1_0:2;
  217. UINT32 HPD_SPIN_0:1;// PortA's cbus buffer enable(0:disable, 1:enable ,pmos)
  218. UINT32 HPD_SPIN_1:1;// PortB's cbus buffer enable(0:disable, 1:enable ,pmos)
  219. UINT32 HPD_SPIN_2:1;// PortC's cbus buffer enable(0:disable, 1:enable ,pmos)
  220. UINT32 HPD_SPIN_4_3:2;//cbus tx mode change for port1:port0(0:origin, 1:resistance divider)
  221. UINT32 HPD_SPIN_5:1;// A port, 1: high-z mode HPD, 0: TX mode
  222. UINT32 HPD_SPIN_6:1;// B port, 1: high-z mode HPD, 0: TX mode
  223. UINT32 HPD_SPIN_7:1;// C port, 1: high-z mode HPD, 0: TX mode
  224. };
  225. };
  226. union
  227. {
  228. UINT32 reg0E8_0EB;
  229. struct
  230. {
  231. UINT32 Debug_Bit_A_Sel: 5;
  232. UINT32 reserved_b5: 1;
  233. UINT32 AUX_R_IO_CBUS_SELL: 2;
  234. UINT32 Debug_Bit_B_Sel: 5;
  235. UINT32 reserved_b13: 1;
  236. UINT32 AUX_R_IO_CBUS_SELH: 2;
  237. UINT32 Debug_Bit_C_Sel: 5;
  238. UINT32 reserved_b21: 1;
  239. UINT32 AUX_R_MLIOVREFISEL_b0_b1: 2;
  240. UINT32 Debug_Bit_D_Sel: 5;
  241. UINT32 reserved_b29: 1;
  242. UINT32 AUX_R_MLIOVREFISEL_b2_b3: 2;
  243. };
  244. };
  245. union
  246. {
  247. UINT32 reg0EC_0EF;
  248. struct
  249. {
  250. UINT32 Debug_Bit_E_Sel: 5;
  251. UINT32 reserved_b5_b7: 3;
  252. UINT32 Debug_Bit_F_Sel: 5;
  253. UINT32 reserved_b13_b15: 3;
  254. UINT32 Debug_Bit_G_Sel: 5;
  255. UINT32 AUX_R_CBUS_IO_SEL1: 1;
  256. UINT32 AUX_R_HPDIO_MAN_MODE: 1;
  257. UINT32 AUX_R_HPDIO_HDMI: 1;
  258. UINT32 Debug_Bit_H_Sel: 5;
  259. UINT32 AUX_R_CBUS_IO_SEL0: 1;
  260. UINT32 AUX_R_MHL_ACTIVE: 1;
  261. UINT32 AUX_R_CBUS_PDN: 1;
  262. };
  263. };
  264. UINT8 reg_F0_127[0x38];
  265. union
  266. {
  267. UINT32 reg128_12B;
  268. UINT32 R_HDMISTC_INI_VALUE;
  269. };
  270. union
  271. {
  272. UINT32 reg12C_12F;
  273. struct
  274. {
  275. UINT32 R_HDMISTC_ENA: 1;
  276. UINT32 R_HDMISTC_SPEED_SEL: 3;
  277. UINT32 R_MPEG_CH_SEL: 1;
  278. UINT32 R_AUDIO_SRC_TEST: 1;
  279. UINT32 R_AUDIO_SRC_SEL: 1;
  280. UINT32 reg12c_b07: 1;
  281. UINT32 R_HDMI_TMDSCLK_ENJ: 1;
  282. UINT32 R_HDMI_FUNCTEST: 1;
  283. UINT32 reg12c_b10_b31: 22;
  284. };
  285. };
  286. UINT8 reg130_14f[0x20];
  287. union
  288. {
  289. UINT32 reg150_153;
  290. struct
  291. {
  292. UINT32 reserved_150_b0_b19: 20;
  293. UINT32 r_en_ARC_portA: 1;
  294. UINT32 r_en_ARC_portB: 1;
  295. UINT32 r_en_ARC_portC: 1;
  296. UINT32 r_en_ARC_portD: 1;
  297. UINT32 reserved_150_b24_b26: 3;
  298. UINT32 R_HDMIAC_SEL_D: 1;
  299. UINT32 R_HDMIAC_SEL_C: 1;
  300. UINT32 reserved_150_b29_b31: 3;
  301. };
  302. };
  303. UINT8 reg154_1AB[0x58];
  304. union
  305. {
  306. UINT32 reg1AC_1AF;
  307. struct
  308. {
  309. UINT32 reserved_1AC_b0_b27: 28;
  310. UINT32 R_HPDIO_SEL: 3;
  311. UINT32 reserved_1AC_b31: 1;
  312. };
  313. };
  314. UINT8 reg1B0_214[0x65];
  315. union
  316. {
  317. UINT8 reg215;
  318. struct
  319. {
  320. UINT8 reserved_215_b0_b7: 7;
  321. UINT8 R_DEMOD_PWDN_BG: 1;
  322. };
  323. };
  324. UINT8 reg216_227[0x12];
  325. union
  326. {
  327. UINT32 reg228_22B;
  328. struct
  329. {
  330. UINT32 reserved_228_b0_b30: 31;
  331. UINT32 EN_AVI_V3: 1;
  332. };
  333. };
  334. UINT8 reg22C_253[0x28];
  335. union
  336. {
  337. UINT32 reg254_257;
  338. struct
  339. {
  340. UINT32 reserved_254_b0_b23: 24;
  341. UINT32 R_BYPASS_MHL: 1;
  342. UINT32 R_DROP_LINE: 2;
  343. UINT32 R_DROP_POINT: 2;
  344. UINT32 reserved_254_b29_b30: 2;
  345. UINT32 R_HDMI_TMDS_CLK_DIV2_SRC: 1;
  346. };
  347. };
  348. } SYSTEM_REG;
  349. typedef struct __DDC_REG
  350. {
  351. UINT8 reg0000_0024[0x25];
  352. union
  353. {
  354. UINT8 reg0025;
  355. struct
  356. {
  357. UINT8 PortA_Det5V_En:1;
  358. UINT8 Slave0Neg_tSUtHD:1; //I2C slave 0 negative setup/hold time support
  359. UINT8 unkown_0025_b2_b7:6;
  360. };
  361. };
  362. UINT8 reg0026_002b[0x06];
  363. union
  364. {
  365. UINT8 reg002c_002d[0x02];
  366. struct
  367. {
  368. UINT8 SlaveMMIOPush:1;
  369. UINT8 DDC_5V_in_count:4; //0: 1ms, 1: 125us, 2: 250us, 3: 500us, 4: 1ms, 5: 2ms, 6: 4ms, 7: 8ms, 8: 16ms, 9: 32ms, 10:64ms, 11: 100ms, else: 170ms
  370. UINT8 DDC_5V_out_count:4; //0: 170ms, 1: 125us, 2: 250us, 3: 500us, 4: 1ms, 5: 2ms, 6: 4ms, 7: 8ms, 8: 16ms, 9: 32ms, 10:64ms, 11: 100ms, else: 170ms
  371. UINT8 unkown_002c_002d_b9_bf:7;
  372. };
  373. };
  374. UINT8 reg002e_0030[0x03];
  375. union
  376. {
  377. UINT8 reg0031;
  378. struct
  379. {
  380. UINT8 PortB_Det5V_En: 1;
  381. UINT8 Slave1Neg_tSUtHD:1; //I2C slave 1 negative setup/hold time support
  382. UINT8 unkown_0031_b2_b7:6;
  383. };
  384. };
  385. UINT8 reg0032_004e[0x1d];
  386. union
  387. {
  388. UINT8 reg004f;
  389. struct
  390. {
  391. UINT8 PortA_Det5V_mode: 2; //00,11:detect SCL and SDA ; 01:detect SCL ; 10:detect SDA
  392. UINT8 PortB_Det5V_mode: 2; //00,11:detect SCL and SDA ; 01:detect SCL ; 10:detect SDA
  393. };
  394. };
  395. UINT8 reg0050_0073[0x24];
  396. union
  397. {
  398. UINT8 reg0074_0077[0x4];
  399. struct
  400. {
  401. UINT8 SlaveBaseAddr0:8 ; //The read/write base address of slave 0
  402. UINT8 SlaveBaseAddr1:8 ; //The read/write base address of slave 1
  403. UINT8 SlaveBaseAddr2:8 ; //The read/write base address of slave 2
  404. UINT8 unkown_0077_b24_b31:8;
  405. };
  406. };
  407. UINT8 reg0078_008f[0x18];
  408. union
  409. {
  410. UINT8 reg0090_0091[0x02];
  411. struct
  412. {
  413. UINT8 Slave0_timeout :8; //I2C slave 0 non-idle timeout
  414. UINT8 Slave0_rd_block_cnt:8; //I2C slave 0 count of 128B blocks read
  415. };
  416. };
  417. UINT8 reg0092_0093[0x02];
  418. union
  419. {
  420. UINT8 reg0094_0095[0x02];
  421. struct
  422. {
  423. UINT8 Slave1_timeout :8; //I2C slave 1 non-idle timeout
  424. UINT8 Slave1_rd_block_cnt:8; //I2C slave 1 count of 128B blocks read
  425. };
  426. };
  427. UINT8 reg0096_0124[0x8f];
  428. union
  429. {
  430. UINT8 reg0125;
  431. struct
  432. {
  433. UINT8 PortC_Det5V_En:1;
  434. UINT8 Slave3Neg_tSUtHD:1; //I2C slave 3 negative setup/hold time support
  435. UINT8 unkown_0125_b2_b7:6;
  436. };
  437. };
  438. UINT8 reg0126_012b[0x6];
  439. union
  440. {
  441. UINT8 reg012c_012d[0x02];
  442. struct
  443. {
  444. UINT8 Slave345_MMIOPush:1;
  445. UINT8 Slave345_DDC_5V_in_count:4; //0: 1ms, 1: 125us, 2: 250us, 3: 500us, 4: 1ms, 5: 2ms, 6: 4ms, 7: 8ms, 8: 16ms, 9: 32ms, 10:64ms, 11: 100ms, else: 170ms
  446. UINT8 Slave345_DDC_5V_out_count:4; //0: 170ms, 1: 125us, 2: 250us, 3: 500us, 4: 1ms, 5: 2ms, 6: 4ms, 7: 8ms, 8: 16ms, 9: 32ms, 10:64ms, 11: 100ms, else: 170ms
  447. UINT8 unkown_012c_012d_b9_bf:7;
  448. };
  449. };
  450. UINT8 reg012e_014e[0x21];
  451. union
  452. {
  453. UINT8 reg014f;
  454. struct
  455. {
  456. UINT8 PortC_Det5V_mode: 2; //00,11:detect SCL and SDA ; 01:detect SCL ; 10:detect SDA
  457. UINT8 unkown_0142_b2_b7:6;
  458. };
  459. };
  460. UINT8 reg0150_0173[0x24];
  461. union
  462. {
  463. UINT8 reg0174_0177[0x4];
  464. struct
  465. {
  466. UINT8 SlaveBaseAddr3:8 ; //The read/write base address of slave 3
  467. UINT8 SlaveBaseAddr4:8 ; //The read/write base address of slave 4
  468. UINT8 SlaveBaseAddr5:8 ; //The read/write base address of slave 5
  469. UINT8 unkown_0177_b24_b31:8;
  470. };
  471. };
  472. UINT8 reg0178_018f[0x18];
  473. union
  474. {
  475. UINT8 reg0190_0191[0x02];
  476. struct
  477. {
  478. UINT8 Slave3_timeout :8; //I2C slave 3 non-idle timeout
  479. UINT8 Slave3_rd_block_cnt:8; //I2C slave 3 count of 128B blocks read
  480. };
  481. };
  482. } DDC_REG;
  483. #pragma pack(pop)
  484. #define SYSTEM_MMIO_BASE 0xBE000000
  485. static volatile SYSTEM_REG *sysreg = (SYSTEM_REG*)SYSTEM_MMIO_BASE;
  486. #define DDC_MMIO_BASE 0xBE060000
  487. static volatile DDC_REG *ddcreg = (DDC_REG*)DDC_MMIO_BASE;
  488. void sysset_DDC_PortA_Det5V_En(BOOL en)
  489. {
  490. ddcreg->PortA_Det5V_En = en;
  491. }
  492. void sysset_DDC_PortB_Det5V_En(BOOL en)
  493. {
  494. ddcreg->PortB_Det5V_En = en;
  495. }
  496. void sysset_DDC_PortC_Det5V_En(BOOL en)
  497. {
  498. ddcreg->PortC_Det5V_En = en;
  499. }
  500. UINT8 sysget_DDC_non_idle_timeout(HDMI_PORT_T port)
  501. {
  502. if(HDMI_PORT_A == port){return ddcreg->Slave0_timeout;}
  503. if(HDMI_PORT_B == port){return ddcreg->Slave1_timeout;}
  504. if(HDMI_PORT_C == port){return ddcreg->Slave3_timeout;}
  505. return 0;
  506. }
  507. UINT8 sysget_DDC_rd_block_cnt(HDMI_PORT_T port)
  508. {
  509. if(HDMI_PORT_A == port){return ddcreg->Slave0_rd_block_cnt;}
  510. if(HDMI_PORT_B == port){return ddcreg->Slave1_rd_block_cnt;}
  511. if(HDMI_PORT_C == port){return ddcreg->Slave3_rd_block_cnt;}
  512. return 0;
  513. }
  514. UINT8 sysget_DDC_BaseAddr(HDMI_PORT_T port)
  515. {
  516. if(HDMI_PORT_A == port){return ddcreg->SlaveBaseAddr0;}
  517. if(HDMI_PORT_B == port){return ddcreg->SlaveBaseAddr1;}
  518. if(HDMI_PORT_C == port){return ddcreg->SlaveBaseAddr3;}
  519. return 0;
  520. }
  521. void sysset_hdmi_hpd_detection(void)
  522. {
  523. ddcreg->PortA_Det5V_En = 0;
  524. ddcreg->PortB_Det5V_En = 0;
  525. ddcreg->PortC_Det5V_En = 0;
  526. //For S2 P531 Only have DDC_SDA_%V_Det,
  527. sysreg->R_I2S_5VDET_SELJ = 1;
  528. //Port_A:
  529. //Be06004F[1:0]
  530. //00,11: detect SCL and SDA
  531. //01: detect SCL
  532. //10: detect SDA
  533. ddcreg->PortA_Det5V_mode = 2;
  534. //Port_B:
  535. //Be06004F[3:2]
  536. //00,11: detect SCL and SDA
  537. //01: detect SCL
  538. //10: detect SDA
  539. ddcreg->PortB_Det5V_mode = 2;
  540. //Be060025[0], port A
  541. // 0:disable 5V detection
  542. // 1:enable 5V detection
  543. ddcreg->PortA_Det5V_En = 1;
  544. ddcreg->Slave0Neg_tSUtHD = 1;
  545. //Be060031[0], port B
  546. // 0:disable 5V detection
  547. // 1:enable 5V detection
  548. ddcreg->PortB_Det5V_En = 1;
  549. ddcreg->Slave1Neg_tSUtHD = 1;
  550. //Port_C:
  551. //Be060142[1:0]
  552. //00,11: detect SCL and SDA
  553. //01: detect SCL
  554. //10: detect SDA
  555. ddcreg->PortC_Det5V_mode = 2;
  556. //Be060125[0], port C
  557. // 0:disable 5V detection
  558. // 1:enable 5V detection
  559. ddcreg->PortC_Det5V_En = 1;
  560. ddcreg->Slave3Neg_tSUtHD = 1;
  561. //be06002c[4:1]
  562. //in_count
  563. //0: 1ms, 1: 125us, 2: 250us, 3: 500us, 4: 1ms, 5: 2ms, 6: 4ms, 7: 8ms, 8: 16ms, 9: 32ms, 10:64ms, 11: 100ms, else: 170ms
  564. ddcreg->DDC_5V_in_count = 2; //SONY BDP-S360 SDA high period is about 290us, low period is about 300ms
  565. ddcreg->Slave345_DDC_5V_in_count= 2;
  566. sysreg->R_AUX_HDMIA_SW5V = 0; //SW 5V port A Level
  567. sysreg->R_AUX_EN_HDMIA_SW5V = 1; //SW 5V port A Enable
  568. sysreg->R_AUX_HDMIB_SW5V = 0; //SW 5V port B Level
  569. sysreg->R_AUX_EN_HDMIB_SW5V = 1; //SW 5V port B Enable
  570. sysreg->R_AUX_HDMIC_SW5V = 0; //SW 5V port C Level
  571. sysreg->R_AUX_EN_HDMIC_SW5V = 1; //SW 5V port C Enable
  572. }
  573. void sysset_hdmi_hpd_a(DRV_HPD_LEVEL_e eLevel)
  574. {
  575. if(eLevel == DRV_HPD_LEVEL_HIGH)
  576. {
  577. sysreg->R_AUX_HPD0_HIGH = 1;
  578. }
  579. else
  580. {
  581. sysreg->R_AUX_HPD0_HIGH = 0;
  582. }
  583. }
  584. void sysset_hdmi_hpd_b(DRV_HPD_LEVEL_e eLevel)
  585. {
  586. if(eLevel == DRV_HPD_LEVEL_HIGH)
  587. {
  588. sysreg->R_AUX_HPD1_HIGH = 1;
  589. }
  590. else
  591. {
  592. sysreg->R_AUX_HPD1_HIGH = 0;
  593. }
  594. }
  595. void sysset_hdmi_hpd_c(DRV_HPD_LEVEL_e eLevel)
  596. {
  597. sysreg->HPD_EN_PD_HPD = 0;//For 533 C port only HPD_P2 pull down enable 0/1 = disable / enable output low driver
  598. if(eLevel == DRV_HPD_LEVEL_HIGH)
  599. {
  600. sysreg->R_AUX_HPD2_HIGH = 1;
  601. }
  602. else
  603. {
  604. sysreg->R_AUX_HPD2_HIGH = 0;
  605. }
  606. }
  607. void sysset_hdmi_rst(BOOL bEnable)
  608. {
  609. sysreg->R_HDMI_RST = bEnable ? 1 : 0;
  610. }
  611. void sysset_hdmi_tmdsclk(BOOL bEnable)
  612. {
  613. sysreg->R_HDMI_TMDSCLK_ENJ = bEnable ? 1 : 0;
  614. }
  615. void sysset_hdmi_stcInitValue(UINT32 value)
  616. {
  617. sysreg->R_HDMISTC_INI_VALUE = value;
  618. }
  619. void sysset_hdmi_stcclk(void)
  620. {
  621. /* Enable HDMI stc clock */
  622. sysreg->R_HDMISTC_ENA = 1;
  623. sysreg->R_MPEG_CH_SEL = 1;
  624. sysreg->R_AUDIO_SRC_TEST = 0;
  625. sysreg->R_AUDIO_SRC_SEL = 1;
  626. sysreg->reg12c_b07 = 0;
  627. }
  628. void sysset_cec_arc(BOOL enable)
  629. {
  630. sysreg->r_en_ARC_portA = enable ? 1 : 0;
  631. sysreg->r_en_ARC_portB = enable ? 1 : 0;
  632. sysreg->r_en_ARC_portC = enable ? 1 : 0;
  633. sysreg->r_en_ARC_portD = enable ? 1 : 0;
  634. if(enable)
  635. {
  636. *((u8 *)0xbe0f0650) = (*((u8 *)0xbe0f0650) &0xF7) | 0x08; //Set Bit:3 IO driving strength 1 for 0025759: [ARC]HEACT 5-12 Signal Amplitude Test
  637. }
  638. else
  639. {
  640. *((u8 *)0xbe0f0650) = (*((u8 *)0xbe0f0650) &0xF7) | 0x00;
  641. }
  642. }
  643. void sysset_cbus_port_sel(HDMI_PORT_T port)
  644. {
  645. switch (port)
  646. {
  647. case HDMI_PORT_A:
  648. sysreg->AUX_R_CBUS_IO_SEL0 = 0;//Select Port:A CBUS
  649. sysreg->AUX_R_CBUS_IO_SEL1 = 0;//Select Port:A CBUS
  650. break;
  651. case HDMI_PORT_B:
  652. sysreg->AUX_R_CBUS_IO_SEL0 = 1;//Select Port:B CBUS
  653. sysreg->AUX_R_CBUS_IO_SEL1 = 0;//Select Port:B CBUS
  654. break;
  655. case HDMI_PORT_C:
  656. sysreg->AUX_R_CBUS_IO_SEL0 = 0;//Select Port:C CBUS
  657. sysreg->AUX_R_CBUS_IO_SEL1 = 1;//Select Port:C CBUS
  658. break;
  659. default:
  660. break;
  661. }
  662. }
  663. void sysset_VbusEnable(BOOL en)
  664. {
  665. // 131 do not have Vbus Enable pin
  666. //0xbe0000e5[6] 533
  667. sysreg->HPD_EN_PU_VBUS = 0;//533 GPIO's EN Set as GPO
  668. //0xbe0000e5[7] 533
  669. sysreg->HPD_EN_PD_VBUS = en;//533 GPIO's A Set output value
  670. }
  671. void sysset_VbusToggle(void)
  672. {
  673. sysreg->R_CD_SENSE_ENA = 1;
  674. sysreg->R_CD_SENSE_SEL = 1;
  675. GPIOWriteFun(GPIO_0, 0);
  676. HDMI_DelayMs(1000);
  677. GPIOWriteFun(GPIO_0, 1);
  678. GPIOReadFun(GPIO_0);
  679. sysreg->R_CD_SENSE_SEL = 0;
  680. }
  681. BOOL sysset_Get_CD_SENSE_SEL (void)
  682. {
  683. BOOL CD_SENSE_SEL;
  684. CD_SENSE_SEL =sysreg->R_CD_SENSE_SEL;
  685. return(CD_SENSE_SEL);
  686. }
  687. void sysset_Set_CD_SENSE_VALUE(int cfg)
  688. {
  689. if(cfg == CD_SENSE_CFG_INTERNAL_HIGH)
  690. {
  691. sysreg->R_CD_SENSE_ENA = 1;
  692. sysreg->R_CD_SENSE_SEL = 1;
  693. }
  694. if(cfg == CD_SENSE_CFG_INTERNAL_LOW)
  695. {
  696. sysreg->R_CD_SENSE_ENA = 0;
  697. sysreg->R_CD_SENSE_SEL = 1;
  698. }
  699. if(cfg == CD_SENSE_CFG_EXTERNAL)
  700. {
  701. //sysreg->R_CD_SENSE_ENA = 0;
  702. sysreg->R_CD_SENSE_SEL = 0;
  703. }
  704. }
  705. #ifdef CONFIG_HDMI_SUPPORT_MHL
  706. extern BOOL MHL_CTS;
  707. #endif
  708. void sysset_HDMI_MHL_CBUS_EN_CTS_CTL(BOOL fEn)
  709. {
  710. #ifdef CONFIG_HDMI_SUPPORT_MHL
  711. if(CONFIG_HDMI_MHL_PORT==0)
  712. {
  713. if(MHL_CTS==TRUE)
  714. {
  715. // 1K
  716. sysreg->HPD_P0_EN_DIS_CTL0= 1;
  717. sysreg->HPD_P0_EN_DIS_CTL1= 1;
  718. sysreg->HPD_P0_EN_DIS_CTL2= 0;
  719. sysreg->HPD_P0_EN_DIS_CTL3= 0;
  720. // 100k
  721. sysreg->R_CBUS_EN_P0_CTL_0= 1;
  722. sysreg->R_CBUS_EN_P0_CTL_1= 1;
  723. sysreg->R_CBUS_EN_P0_CTL_2= 1;
  724. sysreg->R_CBUS_EN_P0_CTL_3= 0;
  725. }
  726. else
  727. {
  728. // 1K
  729. sysreg->HPD_P0_EN_DIS_CTL0= 1;
  730. sysreg->HPD_P0_EN_DIS_CTL1= 1;
  731. sysreg->HPD_P0_EN_DIS_CTL2= 0;
  732. sysreg->HPD_P0_EN_DIS_CTL3= 0;
  733. // 100k
  734. sysreg->R_CBUS_EN_P0_CTL_0= 1;
  735. sysreg->R_CBUS_EN_P0_CTL_1= 1;
  736. sysreg->R_CBUS_EN_P0_CTL_2= 1;
  737. sysreg->R_CBUS_EN_P0_CTL_3= 0;
  738. }
  739. sysreg->R_CBUS_EN_P1_CTL_0= 1;
  740. sysreg->R_CBUS_EN_P1_CTL_1= 1;
  741. sysreg->R_CBUS_EN_P1_CTL_2= 1;
  742. sysreg->R_CBUS_EN_P1_CTL_3= 1;
  743. sysreg->HPD_P1_EN_DIS_CTL0= 1;
  744. sysreg->HPD_P1_EN_DIS_CTL1= 1;
  745. sysreg->HPD_P1_EN_DIS_CTL2= 1;
  746. sysreg->HPD_P1_EN_DIS_CTL3= 1;
  747. }
  748. else if(CONFIG_HDMI_MHL_PORT==1)
  749. {
  750. sysreg->R_CBUS_EN_P0_CTL_0= 1;
  751. sysreg->R_CBUS_EN_P0_CTL_1= 1;
  752. sysreg->R_CBUS_EN_P0_CTL_2= 1;
  753. sysreg->R_CBUS_EN_P0_CTL_3= 1;
  754. sysreg->HPD_P0_EN_DIS_CTL0= 1;
  755. sysreg->HPD_P0_EN_DIS_CTL1= 1;
  756. sysreg->HPD_P0_EN_DIS_CTL2= 1;
  757. sysreg->HPD_P0_EN_DIS_CTL3= 1;
  758. if(MHL_CTS==TRUE)
  759. {
  760. // 1K
  761. sysreg->HPD_P1_EN_DIS_CTL0= 1;
  762. sysreg->HPD_P1_EN_DIS_CTL1= 1;
  763. sysreg->HPD_P1_EN_DIS_CTL2= 0;
  764. sysreg->HPD_P1_EN_DIS_CTL3= 0;
  765. // 100k
  766. sysreg->R_CBUS_EN_P1_CTL_0= 1;
  767. sysreg->R_CBUS_EN_P1_CTL_1= 1;
  768. sysreg->R_CBUS_EN_P1_CTL_2= 1;
  769. sysreg->R_CBUS_EN_P1_CTL_3= 0;
  770. }
  771. else
  772. {
  773. // 1K
  774. sysreg->HPD_P1_EN_DIS_CTL0= 1;
  775. sysreg->HPD_P1_EN_DIS_CTL1= 1;
  776. sysreg->HPD_P1_EN_DIS_CTL2= 0;
  777. sysreg->HPD_P1_EN_DIS_CTL3= 0;
  778. // 100k
  779. sysreg->R_CBUS_EN_P1_CTL_0= 1;
  780. sysreg->R_CBUS_EN_P1_CTL_1= 1;
  781. sysreg->R_CBUS_EN_P1_CTL_2= 1;
  782. sysreg->R_CBUS_EN_P1_CTL_3= 0;
  783. }
  784. }
  785. #endif
  786. }
  787. void sysset_Cbus_Init(void)
  788. {
  789. sysreg->R_CBUS_DRV_PD_P0= 1;
  790. sysreg->R_CBUS_DRV_PD_P1= 1;
  791. sysreg->R_CBUS_DRV_PD_P2= 2;//331 control VBUS's DRV
  792. sysreg->R_CBUS_DRV_P0= 1;
  793. sysreg->R_CBUS_DRV_P1= 1;
  794. sysreg->HPD_DRV_1_0_VBUS=2;//533 control VBUS's DRV
  795. sysreg->R_CBUS_VREF_SEL= 1;
  796. sysreg->R_CBUS_SR_PD= 0;//20140813 Enable 331A1 ECO for MHL CTS 4.3.10.2
  797. //sysreg->R_CBUS_PD_SEL= 0;
  798. sysreg->AUX_R_CBUS_VREF_PD= 0;
  799. sysreg->AUX_R_CBUS_VREF_TN= 1;
  800. sysreg->AUX_R_IO_CBUS_SELH= 1;//20170214 ECO for MHL CTS 4.3.13.1 & 4.3.16.1
  801. sysreg->AUX_R_IO_CBUS_SELL= 0;
  802. sysreg->R_CBUS_EN_P1_CTL_3= 1;
  803. sysreg->R_CBUS_EN_P0_CTL_3= 1;
  804. //sysreg->R_CBUS_EN_P2_CTL_2= 0;
  805. //sysreg->R_CBUS_EN_P2_CTL_1 = 0;//Set as GPO
  806. //sysreg->R_CBUS_EN_P2_CTL_0 = 0;//Set output value
  807. //*((u8 *)0xbe0f0628) = (*((u8 *)0xbe0f0628)&0xFE) | 0x1 ;//For CD-SENSE current leakage issue, PDE1A1J IN P331, NPDE1A1J IN P531. PDE1A1J CAN'T SET PD =1 IN INPUT MODE
  808. /* CBUS Resistance Setting */
  809. //sysreg->R_ATE_Z_DISCOVER = 1;
  810. //sysreg->R_ATE_Z_SINK = 0;
  811. //sysreg->R_CD_SENSE_ENA = 1;
  812. if(GPIOGetValueByPinFunc(GPIO_PIN_MHL_CD_SENSE_DETECT)==0)
  813. {
  814. sysset_VbusEnable(0);
  815. }
  816. #ifdef CONFIG_HDMI_MHL_PORT
  817. sysset_HDMI_MHL_CBUS_EN_CTS_CTL(FALSE);
  818. #else
  819. sysreg->R_CBUS_EN_P0_CTL_0= 0;
  820. sysreg->R_CBUS_EN_P0_CTL_1= 0;
  821. sysreg->R_CBUS_EN_P0_CTL_2= 0;
  822. sysreg->R_CBUS_EN_P0_CTL_3= 0;
  823. sysreg->R_CBUS_EN_P1_CTL_0= 0;
  824. sysreg->R_CBUS_EN_P1_CTL_1= 0;
  825. sysreg->R_CBUS_EN_P1_CTL_2= 0;
  826. sysreg->R_CBUS_EN_P1_CTL_3= 0;
  827. #endif
  828. }
  829. void sysset_HDMI_Downscale(BOOL en)
  830. {
  831. sysreg->R_BYPASS_MHL = en;
  832. }
  833. void sysset_HDMI_HPD_1K_Init(void)
  834. {
  835. #ifdef HDMI_HPD_USE_1K_OHM
  836. sysreg->R_CBUS_DRV_P0= 1;
  837. sysreg->R_CBUS_DRV_P1= 1;
  838. sysreg->R_CBUS_DRV_P2= 3;
  839. #else
  840. sysreg->R_CBUS_DRV_P0= 1;
  841. sysreg->R_CBUS_DRV_P1= 1;
  842. sysreg->R_CBUS_DRV_P2= 3;
  843. #endif
  844. }
  845. void sysset_HDMI_HPD_1K_OnOff(HDMI_PORT_T ePort, BOOL fOn)
  846. {
  847. if(ePort == HDMI_PORT_A)
  848. {
  849. if(fOn == TRUE)
  850. //sysreg->R_CBUS_DRV_P0= 0;
  851. sysreg->HPD_SPIN_0= 0;
  852. else
  853. //sysreg->R_CBUS_DRV_P0= 2;//For MHL CBus driving
  854. sysreg->HPD_SPIN_0= 1;//For HPD driving
  855. }
  856. else if(ePort == HDMI_PORT_B)
  857. {
  858. if(fOn == TRUE)
  859. //sysreg->R_CBUS_DRV_P1= 0;
  860. sysreg->HPD_SPIN_1= 0;
  861. else
  862. //sysreg->R_CBUS_DRV_P1= 2;//For MHL CBus driving
  863. sysreg->HPD_SPIN_1= 1;//For HPD driving
  864. }
  865. else if(ePort == HDMI_PORT_C)
  866. {
  867. if(fOn == TRUE)
  868. //sysreg->R_CBUS_DRV_P2= 0;
  869. sysreg->HPD_SPIN_2= 0;
  870. else
  871. //sysreg->R_CBUS_DRV_P2= 2;//For MHL CBus driving
  872. sysreg->HPD_SPIN_2= 1;//For HPD driving
  873. }
  874. }
  875. void sysset_HDMI_HPD_HIGH_Z_MODE(HDMI_PORT_T ePort, BOOL fOn)
  876. {
  877. if(ePort == HDMI_PORT_A)
  878. {
  879. if(fOn == TRUE)
  880. sysreg->HPD_SPIN_5= 1;
  881. else
  882. sysreg->HPD_SPIN_5= 0;
  883. }
  884. else if(ePort == HDMI_PORT_B)
  885. {
  886. if(fOn == TRUE)
  887. sysreg->HPD_SPIN_6= 1;
  888. else
  889. sysreg->HPD_SPIN_6= 0;
  890. }
  891. else if(ePort == HDMI_PORT_C)
  892. {
  893. if(fOn == TRUE)
  894. sysreg->HPD_SPIN_7= 1;
  895. else
  896. sysreg->HPD_SPIN_7= 0;
  897. }
  898. }
  899. void sysset_HDMI_SW5V(HDMI_PORT_T port, BOOL en)
  900. {
  901. printk("[H] %s port:%d=%d\n", __FUNCTION__, port, en);
  902. switch (port)
  903. {
  904. case HDMI_PORT_A:
  905. if(en == TRUE) //turn on portA SW 5V, turn off portA 5V detection
  906. {
  907. sysreg->R_AUX_HDMIA_SW5V = 1; //SW 5V port A Level
  908. sysreg->R_AUX_EN_HDMIA_SW5V = 1; //SW 5V port A Enable
  909. //ddcreg->PortA_Det5V_En = 0; //turn off DDC 5V detection
  910. }
  911. else //turn on portA 5V detection, turn off portA SW 5V
  912. {
  913. ddcreg->PortA_Det5V_En = 1; //turn on DDC 5V detection
  914. HDMI_DelayMs(10);
  915. sysreg->R_AUX_EN_HDMIA_SW5V = 0; //SW 5V port A Enable
  916. //sysreg->R_AUX_HDMIA_SW5V = 0; //SW 5V port A Level
  917. }
  918. break;
  919. case HDMI_PORT_B:
  920. if(en == TRUE)
  921. {
  922. sysreg->R_AUX_HDMIB_SW5V = 1; //SW 5V port B Level
  923. sysreg->R_AUX_EN_HDMIB_SW5V = 1; //SW 5V port B Enable
  924. //ddcreg->PortB_Det5V_En = 0; //turn off DDC 5V detection
  925. }
  926. else
  927. {
  928. ddcreg->PortB_Det5V_En = 1; //turn on DDC 5V detection
  929. HDMI_DelayMs(10);
  930. sysreg->R_AUX_EN_HDMIB_SW5V = 0; //SW 5V port B Enable
  931. //sysreg->R_AUX_HDMIB_SW5V = 0; //SW 5V port B Level
  932. }
  933. break;
  934. case HDMI_PORT_C:
  935. if(en == TRUE)
  936. {
  937. sysreg->R_AUX_EN_HDMIC_SW5V = 1; //SW 5V port C Enable
  938. sysreg->R_AUX_HDMIC_SW5V = 1; //SW 5V port C Level
  939. //ddcreg->PortC_Det5V_En = 0; //turn off DDC 5V detection
  940. }
  941. else
  942. {
  943. ddcreg->PortC_Det5V_En = 1; //turn on DDC 5V detection
  944. HDMI_DelayMs(10);
  945. sysreg->R_AUX_EN_HDMIC_SW5V = 0; //SW 5V port C Enable
  946. //sysreg->R_AUX_HDMIC_SW5V = 0; //SW 5V port C Level
  947. }
  948. break;
  949. default:
  950. break;
  951. }
  952. }
  953. void sysset_HDMI_MHL_CBus_OFF(void)
  954. {
  955. #ifdef CONFIG_HDMI_MHL_PORT
  956. if(CONFIG_HDMI_MHL_PORT==0)
  957. {
  958. sysreg->R_CBUS_DRV_PD_P0= 0;
  959. }
  960. else if(CONFIG_HDMI_MHL_PORT==1)
  961. {
  962. sysreg->R_CBUS_DRV_PD_P1= 0;
  963. }
  964. #endif
  965. }
  966. void sysset_HDMI_MHL_CBus_ON(void)
  967. {
  968. #ifdef CONFIG_HDMI_MHL_PORT
  969. if(CONFIG_HDMI_MHL_PORT==0)
  970. {
  971. sysreg->R_CBUS_DRV_PD_P0= 1;
  972. }
  973. else if(CONFIG_HDMI_MHL_PORT==1)
  974. {
  975. sysreg->R_CBUS_DRV_PD_P1= 1;
  976. }
  977. #endif
  978. }
  979. void sysset_DEMOD_BG_POWER_DOWN(BOOL fPD)
  980. {
  981. if(fPD == TRUE)
  982. sysreg->R_DEMOD_PWDN_BG= 1;
  983. else
  984. sysreg->R_DEMOD_PWDN_BG= 0;
  985. }
  986. void sysset_HDMI_EN_AVI_V3(BOOL bEnable)
  987. {
  988. sysreg->EN_AVI_V3 = bEnable ? 1 : 0;
  989. }
  990. void sysset_HDMI_CEC_DIODE_ON(void)
  991. {
  992. sysreg->R_CEC_DIODE_RES = 9;
  993. sysreg->R_CEC_DIODE_RES_PD = 0;
  994. }
  995. void sysset_Cbus_Z_CBUS_SINK_DISCOVER(INT8 cfg)
  996. {
  997. if(cfg==Z_CBUS_SINK_DISCOVER_CFG_HARDWARE_AUTO)
  998. {
  999. //sysreg->R_ATE_Z_DISCOVER = 0;
  1000. sysreg->R_ATE_Z_DISCOVER_MUX_SEL = 0;
  1001. }
  1002. else if(cfg==Z_CBUS_SINK_DISCOVER_CFG_ON)
  1003. {
  1004. sysreg->R_ATE_Z_DISCOVER = 1;
  1005. sysreg->R_ATE_Z_DISCOVER_MUX_SEL = 1;
  1006. }
  1007. else if(cfg==Z_CBUS_SINK_DISCOVER_CFG_OFF)
  1008. {
  1009. sysreg->R_ATE_Z_DISCOVER = 0;
  1010. sysreg->R_ATE_Z_DISCOVER_MUX_SEL = 1;
  1011. }
  1012. }
  1013. void sysset_Cbus_Z_CBUS_SINK_ON(INT8 cfg)
  1014. {
  1015. if(cfg==Z_CBUS_SINK_ON_CFG_HARDWARE_AUTO)
  1016. {
  1017. //sysreg->R_ATE_Z_SINK = 0;
  1018. sysreg->R_ATE_Z_SINK_MUX_SEL = 0;
  1019. }
  1020. else if(cfg==Z_CBUS_SINK_ON_CFG_ON)
  1021. {
  1022. sysreg->R_ATE_Z_SINK = 1;
  1023. sysreg->R_ATE_Z_SINK_MUX_SEL = 1;
  1024. }
  1025. else if(cfg==Z_CBUS_SINK_ON_CFG_OFF)
  1026. {
  1027. sysreg->R_ATE_Z_SINK = 0;
  1028. sysreg->R_ATE_Z_SINK_MUX_SEL = 1;
  1029. }
  1030. }