mt8193hdmictrl.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. #ifndef __mt8193hdmictrl_h__
  2. #define __mt8193hdmictrl_h__
  3. #ifdef HDMI_MT8193_SUPPORT
  4. #include <linux/interrupt.h>
  5. #include <linux/i2c.h>
  6. #include <linux/slab.h>
  7. #include <linux/irq.h>
  8. #include <linux/miscdevice.h>
  9. #include <asm/uaccess.h>
  10. #include <linux/delay.h>
  11. #include <linux/input.h>
  12. #include <linux/workqueue.h>
  13. #include <linux/kobject.h>
  14. #ifdef CONFIG_HAS_EARLYSUSPEND
  15. #include <linux/earlysuspend.h>
  16. #endif
  17. #include <linux/platform_device.h>
  18. #include <asm/atomic.h>
  19. #include <linux/init.h>
  20. #include <linux/module.h>
  21. #include <linux/sched.h>
  22. #include <linux/kthread.h>
  23. #include <linux/bitops.h>
  24. #include <linux/kernel.h>
  25. #include <linux/byteorder/generic.h>
  26. #include <linux/interrupt.h>
  27. #include <linux/time.h>
  28. #include <linux/rtpm_prio.h>
  29. #include <linux/dma-mapping.h>
  30. #include <linux/syscalls.h>
  31. #include <linux/reboot.h>
  32. #include <linux/vmalloc.h>
  33. #include <linux/fs.h>
  34. #include <linux/string.h>
  35. #include <linux/completion.h>
  36. #include "mt8193table.h"
  37. #include "hdmi_drv.h"
  38. /* ////////////////////////////////////// */
  39. /* ////////////////////////////////////// */
  40. #define PORD_MODE (1<<0)
  41. #define HOTPLUG_MODE (1<<1)
  42. /* ////////////////////////////////////// */
  43. #define AV_INFO_HD_ITU709 0x80
  44. #define AV_INFO_SD_ITU601 0x40
  45. #define AV_INFO_4_3_OUTPUT 0x10
  46. #define AV_INFO_16_9_OUTPUT 0x20
  47. /* AVI Info Frame */
  48. #define AVI_TYPE 0x82
  49. #define AVI_VERS 0x02
  50. #define AVI_LEN 0x0d
  51. /* Audio Info Frame */
  52. #define AUDIO_TYPE 0x84
  53. #define AUDIO_VERS 0x01
  54. #define AUDIO_LEN 0x0A
  55. #define VS_TYPE 0x81
  56. #define VS_VERS 0x01
  57. #define VS_LEN 0x05
  58. #define VS_PB_LEN 0x0b /* VS_LEN+1 include checksum */
  59. /* GAMUT Data */
  60. #define GAMUT_TYPE 0x0A
  61. #define GAMUT_PROFILE 0x81
  62. #define GAMUT_SEQ 0x31
  63. /* ACP Info Frame */
  64. #define ACP_TYPE 0x04
  65. /* #define ACP_VERS 0x02 */
  66. #define ACP_LEN 0x00
  67. /* ISRC1 Info Frame */
  68. #define ISRC1_TYPE 0x05
  69. /* #define ACP_VERS 0x02 */
  70. #define ISRC1_LEN 0x00
  71. /* SPD Info Frame */
  72. #define SPD_TYPE 0x83
  73. #define SPD_VERS 0x01
  74. #define SPD_LEN 0x19
  75. #define SV_ON (unsigned short)(1)
  76. #define SV_OFF (unsigned short)(0)
  77. #define TMDS_CLK_X1 1
  78. #define TMDS_CLK_X1_25 2
  79. #define TMDS_CLK_X1_5 3
  80. #define TMDS_CLK_X2 4
  81. #define RJT_24BIT 0
  82. #define RJT_16BIT 1
  83. #define LJT_24BIT 2
  84. #define LJT_16BIT 3
  85. #define I2S_24BIT 4
  86. #define I2S_16BIT 5
  87. /* ///////////////////////////////////// */
  88. #define GRL_INT 0x14
  89. #define INT_MDI (0x1 << 0)
  90. #define INT_HDCP (0x1 << 1)
  91. #define INT_FIFO_O (0x1 << 2)
  92. #define INT_FIFO_U (0x1 << 3)
  93. #define INT_IFM_ERR (0x1 << 4)
  94. #define INT_INF_DONE (0x1 << 5)
  95. #define INT_NCTS_DONE (0x1 << 6)
  96. #define INT_CTRL_PKT_DONE (0x1 << 7)
  97. #define GRL_INT_MASK 0x18
  98. #define GRL_CTRL 0x1C
  99. #define CTRL_GEN_EN (0x1 << 2)
  100. #define CTRL_SPD_EN (0x1 << 3)
  101. #define CTRL_MPEG_EN (0x1 << 4)
  102. #define CTRL_AUDIO_EN (0x1 << 5)
  103. #define CTRL_AVI_EN (0x1 << 6)
  104. #define CTRL_AVMUTE (0x1 << 7)
  105. #define GRL_STATUS 0x20
  106. #define STATUS_HTPLG (0x1 << 0)
  107. #define STATUS_PORD (0x1 << 1)
  108. #define GRL_CFG0 0x24
  109. #define CFG0_I2S_MODE_RTJ 0x1
  110. #define CFG0_I2S_MODE_LTJ 0x0
  111. #define CFG0_I2S_MODE_I2S 0x2
  112. #define CFG0_I2S_MODE_24Bit 0x00
  113. #define CFG0_I2S_MODE_16Bit 0x10
  114. #define GRL_CFG1 0x28
  115. #define CFG1_EDG_SEL (0x1 << 0)
  116. #define CFG1_SPDIF (0x1 << 1)
  117. #define CFG1_DVI (0x1 << 2)
  118. #define CFG1_HDCP_DEBUG (0x1 << 3)
  119. #define GRL_CFG2 0x2c
  120. #define CFG2_NOTICE_EN (0x1 << 6)
  121. #define GRL_CFG3 0x30
  122. #define CFG3_AES_KEY_INDEX_MASK 0x3f
  123. #define CFG3_CONTROL_PACKET_DELAY (0x1 << 6)
  124. #define CFG3_KSV_LOAD_START (0x1 << 7)
  125. #define GRL_CFG4 0x34
  126. #define CFG4_AES_KEY_LOAD (0x1 << 4)
  127. #define CFG4_AV_UNMUTE_EN (0x1 << 5)
  128. #define CFG4_AV_UNMUTE_SET (0x1 << 6)
  129. #define GRL_CFG5 0x38
  130. #define CFG5_CD_RATIO_MASK 0x8F
  131. #define CFG5_FS128 (0x1 << 4)
  132. #define CFG5_FS256 (0x2 << 4)
  133. #define CFG5_FS384 (0x3 << 4)
  134. #define CFG5_FS512 (0x4 << 4)
  135. #define CFG5_FS768 (0x6 << 4)
  136. #define GRL_WR_BKSV0 0x40
  137. #define GRL_WR_AN0 0x54
  138. #define GRL_RD_AKSV0 0x74
  139. #define GRL_RI_0 0x88
  140. #define GRL_KEY_PORT 0x90
  141. #define GRL_KSVLIST 0x94
  142. #define GRL_HDCP_STA 0xB8
  143. #define HDCP_STA_RI_RDY (0x1 << 2)
  144. #define HDCP_STA_V_MATCH (0x1 << 3)
  145. #define HDCP_STA_V_RDY (0x1 << 4)
  146. #define GRL_HDCP_CTL 0xBC
  147. #define HDCP_CTL_ENC_EN (0x1 << 0)
  148. #define HDCP_CTL_AUTHEN_EN (0x1 << 1)
  149. #define HDCP_CTL_CP_RSTB (0x1 << 2)
  150. #define HDCP_CTL_AN_STOP (0x1 << 3)
  151. #define HDCP_CTRL_RX_RPTR (0x1 << 4)
  152. #define HDCP_CTL_HOST_KEY (0x1 << 6)
  153. #define HDCP_CTL_SHA_EN (0x1 << 7)
  154. #define GRL_REPEATER_HASH 0xC0
  155. #define GRL_I2S_C_STA0 0x140
  156. #define GRL_I2S_C_STA1 0x144
  157. #define GRL_I2S_C_STA2 0x148
  158. #define GRL_I2S_C_STA3 0x14C /* including sampling frequency information. */
  159. #define GRL_I2S_C_STA4 0x150
  160. #define GRL_I2S_UV 0x154
  161. #define GRL_ACP_ISRC_CTRL 0x158
  162. #define VS_EN (0x01<<0)
  163. #define ACP_EN (0x01<<1)
  164. #define ISRC1_EN (0x01<<2)
  165. #define ISRC2_EN (0x01<<3)
  166. #define GAMUT_EN (0x01<<4)
  167. #define GRL_CTS_CTRL 0x160
  168. #define CTS_CTRL_SOFT (0x1 << 0)
  169. #define GRL_CTS0 0x164
  170. #define GRL_CTS1 0x168
  171. #define GRL_CTS2 0x16c
  172. #define GRL_DIVN 0x170
  173. #define NCTS_WRI_ANYTIME (0x01<<6)
  174. #define GRL_DIV_RESET 0x178
  175. #define SWAP_YC (0x01 << 0)
  176. #define UNSWAP_YC (0x00 << 0)
  177. #define GRL_AUDIO_CFG 0x17C
  178. #define AUDIO_ZERO (0x01<<0)
  179. #define HIGH_BIT_RATE (0x01<<1)
  180. #define SACD_DST (0x01<<2)
  181. #define DST_NORMAL_DOUBLE (0x01<<3)
  182. #define DSD_INV (0x01<<4)
  183. #define LR_INV (0x01<<5)
  184. #define LR_MIX (0x01<<6)
  185. #define SACD_SEL (0x01<<7)
  186. #define GRL_NCTS 0x184
  187. #define GRL_IFM_PORT 0x188
  188. #define GRL_CH_SW0 0x18C
  189. #define GRL_CH_SW1 0x190
  190. #define GRL_CH_SW2 0x194
  191. #define GRL_CH_SWAP 0x198
  192. #define LR_SWAP (0x01<<0)
  193. #define LFE_CC_SWAP (0x01<<1)
  194. #define LSRS_SWAP (0x01<<2)
  195. #define RLS_RRS_SWAP (0x01<<3)
  196. #define LR_STATUS_SWAP (0x01<<4)
  197. #define GRL_INFOFRM_VER 0x19C
  198. #define GRL_INFOFRM_TYPE 0x1A0
  199. #define GRL_INFOFRM_LNG 0x1A4
  200. #define GRL_SHIFT_R2 0x1B0
  201. #define AUDIO_PACKET_OFF (0x01 << 6)
  202. #define GRL_MIX_CTRL 0x1B4
  203. #define MIX_CTRL_SRC_EN (0x1 << 0)
  204. #define BYPASS_VOLUME (0x1 << 1)
  205. #define MIX_CTRL_FLAT (0x1 << 7)
  206. #define GRL_IIR_FILTER 0x1B8
  207. #define GRL_SHIFT_L1 0x1C0
  208. #define GRL_AOUT_BNUM_SEL 0x1C4
  209. #define AOUT_24BIT 0x00
  210. #define AOUT_20BIT 0x02
  211. #define AOUT_16BIT 0x03
  212. #define HIGH_BIT_RATE_PACKET_ALIGN (0x3 << 6)
  213. #define GRL_L_STATUS_0 0x200
  214. #define GRL_L_STATUS_1 0x204
  215. #define GRL_L_STATUS_2 0x208
  216. #define GRL_L_STATUS_3 0x20c
  217. #define GRL_L_STATUS_4 0x210
  218. #define GRL_L_STATUS_5 0x214
  219. #define GRL_L_STATUS_6 0x218
  220. #define GRL_L_STATUS_7 0x21c
  221. #define GRL_L_STATUS_8 0x220
  222. #define GRL_L_STATUS_9 0x224
  223. #define GRL_L_STATUS_10 0x228
  224. #define GRL_L_STATUS_11 0x22c
  225. #define GRL_L_STATUS_12 0x230
  226. #define GRL_L_STATUS_13 0x234
  227. #define GRL_L_STATUS_14 0x238
  228. #define GRL_L_STATUS_15 0x23c
  229. #define GRL_L_STATUS_16 0x240
  230. #define GRL_L_STATUS_17 0x244
  231. #define GRL_L_STATUS_18 0x248
  232. #define GRL_L_STATUS_19 0x24c
  233. #define GRL_L_STATUS_20 0x250
  234. #define GRL_L_STATUS_21 0x254
  235. #define GRL_L_STATUS_22 0x258
  236. #define GRL_L_STATUS_23 0x25c
  237. #define GRL_R_STATUS_0 0x260
  238. #define GRL_R_STATUS_1 0x264
  239. #define GRL_R_STATUS_2 0x268
  240. #define GRL_R_STATUS_3 0x26c
  241. #define GRL_R_STATUS_4 0x270
  242. #define GRL_R_STATUS_5 0x274
  243. #define GRL_R_STATUS_6 0x278
  244. #define GRL_R_STATUS_7 0x27c
  245. #define GRL_R_STATUS_8 0x280
  246. #define GRL_R_STATUS_9 0x284
  247. #define GRL_R_STATUS_10 0x288
  248. #define GRL_R_STATUS_11 0x28c
  249. #define GRL_R_STATUS_12 0x290
  250. #define GRL_R_STATUS_13 0x294
  251. #define GRL_R_STATUS_14 0x298
  252. #define GRL_R_STATUS_15 0x29c
  253. #define GRL_R_STATUS_16 0x2a0
  254. #define GRL_R_STATUS_17 0x2a4
  255. #define GRL_R_STATUS_18 0x2a8
  256. #define GRL_R_STATUS_19 0x2ac
  257. #define GRL_R_STATUS_20 0x2b0
  258. #define GRL_R_STATUS_21 0x2b4
  259. #define GRL_R_STATUS_22 0x2b8
  260. #define GRL_R_STATUS_23 0x2bc
  261. #define DUMMY_304 0x304
  262. #define CHMO_SEL (0x3<<2)
  263. #define CHM1_SEL (0x3<<4)
  264. #define CHM2_SEL (0x3<<6)
  265. #define AUDIO_I2S_NCTS_SEL (1<<1)
  266. #define AUDIO_I2S_NCTS_SEL_64 (1<<1)
  267. #define AUDIO_I2S_NCTS_SEL_128 (0<<1)
  268. #define NEW_GCP_CTRL (1<<0)
  269. #define NEW_GCP_CTRL_MERGE (1<<0)
  270. #define NEW_GCP_CTRL_ORIG (0<<0)
  271. #define CRC_CTRL 0x310
  272. #define clr_crc_result (1<<1)
  273. #define init_crc (1<<0)
  274. #define CRC_RESULT_L 0x314
  275. #define CRC_RESULT_H 0x318
  276. /* ////////////////////////////////////////////////// */
  277. #define HDMI_SYS_CFG1C 0x1c
  278. #define HDMI_ON (0x01 << 0)
  279. #define HDMI_RST (0x01 << 1)
  280. #define ANLG_ON (0x01 << 2)
  281. #define CFG10_DVI (0x01 << 3)
  282. #define HDMI_TST (0x01 << 3)
  283. #define SYS_KEYMASK1 (0xff<<8)
  284. #define SYS_KEYMASK2 (0xff<<16)
  285. #define AUD_OUTSYNC_EN (((unsigned int)1)<<24)
  286. #define AUD_OUTSYNC_PRE_EN (((unsigned int)1)<<25)
  287. #define I2CM_ON (((unsigned int)1)<<26)
  288. #define E2PROM_TYPE_8BIT (((unsigned int)1)<<27)
  289. #define MCM_E2PROM_ON (((unsigned int)1)<<28)
  290. #define EXT_E2PROM_ON (((unsigned int)1)<<29)
  291. #define HTPLG_PIN_SEL_OFF (((unsigned int)1)<<30)
  292. #define AES_EFUSE_ENABLE (((unsigned int)1)<<31)
  293. #define HDMI_SYS_CFG20 0x20
  294. #define DEEP_COLOR_MODE_MASK (3 << 1)
  295. #define COLOR_8BIT_MODE (0 << 1)
  296. #define COLOR_10BIT_MODE (1 << 1)
  297. #define COLOR_12BIT_MODE (2 << 1)
  298. #define COLOR_16BIT_MODE (3 << 1)
  299. #define DEEP_COLOR_EN (1 << 0)
  300. #define HDMI_SYS_CFG24 0x24
  301. #define HDMI_SYS_CFG28 0x28
  302. #define HDMI_SYS_FMETER 0x4c
  303. #define TRI_CAL (1<<0)
  304. #define CLK_EXC (1<<1)
  305. #define CAL_OK (1<<2)
  306. #define CALSEL (2<<3)
  307. #define CAL_CNT (0xffff<<16)
  308. #define HDMI_SYS_PWR_RST_B 0x100
  309. #define hdmi_pwr_sys_sw_reset (0<<0)
  310. #define hdmi_pwr_sys_sw_unreset (1<<0)
  311. #define HDMI_PWR_CTRL 0x104
  312. #define hdmi_iso_dis (0<<0)
  313. #define hdmi_iso_en (1<<0)
  314. #define hdmi_power_turnoff (0<<1)
  315. #define hdmi_power_turnon (1<<1)
  316. #define hdmi_clock_on (0<<2)
  317. #define hdmi_clock_off (1<<2)
  318. #define HDMI_SYS_AMPCTRL 0x328
  319. #define CK_TXAMP_ENB 0x00000008
  320. #define D0_TXAMP_ENB 0x00000080
  321. #define D1_TXAMP_ENB 0x00000800
  322. #define D2_TXAMP_ENB 0x00008000
  323. #define RSET_DTXST_OFF 0x00080000
  324. #define SET_DTXST_ON 0x00800000
  325. #define ENTXTST_ENB 0x08000000
  326. #define CKFIFONEG 0x80000000
  327. #define RG_SET_DTXST (1<<23)
  328. #define HDMI_SYS_AMPCTRL1 0x32c
  329. #define HDMI_SYS_PLLCTRL1 0x330
  330. #define PRE_AMP_ENB 0x00000080 /* (0x01<<7) */
  331. #define INV_CLCK 0x80000000
  332. #define RG_ENCKST (1<<2)
  333. #define HDMI_SYS_PLLCTRL2 0x334
  334. #define POW_HDMITX (0x01 << 20)
  335. #define POW_PLL_L (0x01 << 21)
  336. #define HDMI_SYS_PLLCTRL3 0x338
  337. #define PLLCTRL3_MASK 0xffffffff
  338. #define RG_N3_MASK 0x0000001f /* 1f <<0 */
  339. #define N3_POS 0
  340. #define RG_N4_MASK (3 << 5)
  341. #define N4_POS 5
  342. #define RG_BAND_MASK_0 (1<<7)
  343. #define BAND_MASK_0_POS 7
  344. #define RG_BAND_MASK_1 (1<<11)
  345. #define BAND_MASK_1_POS 11
  346. #define HDMI_SYS_PLLCTRL4 0x33c
  347. #define PLLCTRL4_MASK 0xffffffff
  348. #define RG_ENRST_CALIB (1 << 21)
  349. #define HDMI_SYS_PLLCTRL5 0x340
  350. #define PLLCTRL5_MASK 0xffffffff
  351. #define TURN_ON_RSEN_RESISTANCE (1<<7)
  352. #define RG_N5_MASK 0x0000001f
  353. #define N5_POS 0
  354. #define RG_N6_MASK (3 << 5)
  355. #define N6_POS 5
  356. #define RG_N1_MASK 0x00001f00
  357. #define N1_POS 8
  358. #define HDMI_SYS_PLLCTRL6 0x344
  359. #define PLLCTRL6_MASK 0xffffffff
  360. #define RG_CPLL1_VCOCAL_EN (1 << 25)
  361. #define ABIST_MODE_SET (0x5C<<24)
  362. #define ABIST_MODE_SET_MSK (0xFF<<24)
  363. #define ABIST_MODE_EN (1<<19)
  364. #define ABIST_LV_EN (1<<16)
  365. #define RG_DISC_TH (0x3<<0)
  366. #define RG_CK148M_EN (1<<4)
  367. #define HDMI_SYS_PLLCTRL7 0x348
  368. #define PLLCTRL7_MASK 0xffffffff
  369. #define TX_DRV_ENABLE (0xFF<<16)
  370. #define TX_DRV_ENABLE_MSK (0xFF<<16)
  371. /*******DGI******/
  372. #define dgi0_anaif_ctrl2 0x448
  373. #define dgi1_del_d2_d4_sel (1<<17)
  374. #define dgi1_del_d1_sel (1<<16)
  375. #define dgi0_anaif_ctrl1 0x450
  376. #define dgi1_pad_clk_inv_en (1<<31)
  377. #define dgi1_clk_delay_sel1 (0x3f<<24)
  378. #define dgi1_clk_delay_sel0 (0x3f<<16)
  379. #define dgi1_clk_delay_sel0 (0x3f<<16)
  380. #define dgi1_clk_pad_sel_tv_mode (1<<10)
  381. #define data_in_tv_mode (1<<9)
  382. #define data_bit_inv (1<<8)
  383. #define anaif_dig1_clk_sel (1<<6)
  384. #define clk_sel_tv_mode (1<<4)
  385. #define clk_mode_sel (1<<3)
  386. #define nweb_clk_en (1<<2)
  387. #define dgi1_pad_clk_en (1<<1)
  388. #define tv_mode_clk_en (1<<0)
  389. #define ttl_anaif_ctrl 0x454
  390. #define dec_ctl 0x600
  391. #define reset_counter (1<<27)
  392. #define field_dec_polar (1<<10)
  393. #define hsync_dec_polar (1<<9)
  394. #define vsync_dec_polar (1<<8)
  395. #define data_dec_delay_fall (0x3<<6)
  396. #define data_dec_delay_risc (0x3<<4)
  397. #define dgi1_on (1<<0)
  398. #define fifo_ctrl 0x604
  399. #define timing_fifo_in_dly_risc (1<<31)
  400. #define timing_fifo_in_dly_fall (1<<30)
  401. #define data_fifo_in_dly_rise (1<<29)
  402. #define data_fifo_in_dly_fall (1<<28)
  403. #define sw_rst (1<<19)
  404. #define vsync_polar_in (1<<18)
  405. #define fifo_reset_on (1<<17)
  406. #define fifo_reset_sel (1<<16)
  407. #define rd_start_sel (1<<7)
  408. #define rd_start (0x7f<<0)
  409. #define data_out_ctrl 0x608
  410. #define tv_mode (1<<31)
  411. #define tim_out_bypass (1<<30)
  412. #define bit_inv_y (1<<28)
  413. #define bit_inv_c (1<<27)
  414. #define yc_swap (1<<26)
  415. #define rise_use_fall (1<<21)
  416. #define fall_use_fall (1<<20)
  417. #define rg_timing_sel (1<<19)
  418. #define vsync_out_polar (1<<17)
  419. #define hsync_out_polar (1<<16)
  420. #define field_out_polar (1<<15)
  421. #define de_out_polar (1<<14)
  422. #define y_out_delay (0x3<<4)
  423. #define c1_out_delay (0x3<<2)
  424. #define c2_out_delay (0x3<<0)
  425. #define ctrl_422_444 0x60c
  426. #define rg_cbcr_preload (0xf<<8)
  427. #define single_8bit (1<<6)
  428. #define yc_sel_preload (1<<5)
  429. #define hsync_ycrst_polar (1<<4)
  430. #define rpt_422_444 (1<<1)
  431. #define bypass_422_444 (1<<0)
  432. #define tg_ctrl00 0x61c
  433. #define tve_fld (1<<31)
  434. #define prgs_autofld (1<<30)
  435. #define prgs_invfld (1<<29)
  436. #define fmtmas (1<<28)
  437. #define hw_option (0xf<<24)
  438. #define syn_del (0x3<<22)
  439. #define c_fmtrst_m2 (1<<21)
  440. #define prgs_out (1<<20)
  441. #define tvf_nd (1<<19)
  442. #define v_total_m2 (0xfff<<0)
  443. #define tg_ctrl01 0x620
  444. #define rg_vsync_forward (1<<31)
  445. #define rg_vsync_delay (0x1fff<<16)
  446. #define rg_hsync_delay (0x1fff<<0)
  447. #define tg_ctrl02 0x624
  448. #define vsync_total (0xfff<<16)
  449. #define hsync_total (0x1fff<<0)
  450. #define tg_ctrl03 0x628
  451. #define vysnc_width (0x1ff<<16)
  452. #define hsync_width (0xfff<<0)
  453. #define tg_ctrl04 0x62c
  454. #define h_act2_en (1<<10)
  455. #define v_act2_en (1<<9)
  456. #define hd_on (1<<8)
  457. #define vsync_polar (1<<6)
  458. #define hsync_polar (1<<5)
  459. #define de_polar (1<<4)
  460. #define tg_ctrl05 0x630
  461. #define x_active_start (0x1fff<<16)
  462. #define x_active_end (0x1fff<<0)
  463. #define tg_ctrl06 0x634
  464. #define y_active_ostart (0xfff<<16)
  465. #define y_active_oend (0xfff<<0)
  466. #define tg_ctrl07 0x638
  467. #define y_active_estart (0xfff<<16)
  468. #define y_active_eend (0xfff<<0)
  469. #define tg_ctrl08 0x63c
  470. #define x_active_start_1 (0x1fff<<16)
  471. #define x_active_end_1 (0x1fff<<0)
  472. #define tg_ctrl09 0x640
  473. #define y_active_ostart_1 (0xfff<<16)
  474. #define y_active_oend_1 (0xfff<<0)
  475. #define tg_ctrl10 0x644
  476. #define y_active_estart_1 (0xfff<<16)
  477. #define y_active_eend_1 (0xfff<<0)
  478. #define dgi1_clk_rst_ctrl 0x65c
  479. #define dgi1_test_mode (1<<31)
  480. #define clk_out_to_in_inv (1<<5)
  481. #define clk_out_to_in (1<<4)
  482. #define clk_pat_gen_en (1<<3)
  483. #define dgi1_clk_out_enable (1<<2)
  484. #define dgi1_clk_in_inv_enable (1<<1)
  485. #define dgi1_clk_in_enable (1<<0)
  486. #define pat_gen_ctrl0 0x700
  487. #define rg_ptgen_v_total (0xfff<<16)
  488. #define rg_ptgen_h_total (0x1fff<<0)
  489. #define pat_gen_ctrl1 0x704
  490. #define rg_ptgen_v_width (0xfff<<16)
  491. #define rg_ptgen_h_width (0x1fff<<0)
  492. #define pat_gen_ctrl2 0x708
  493. #define rg_ptgen_v_start (0xfff<<16)
  494. #define rg_ptgen_h_start (0x1fff<<0)
  495. #define pat_gen_ctrl3 0x70c
  496. #define rg_ptgen_v_active (0xfff<<16)
  497. #define rg_ptgen_h_active (0x1fff<<0)
  498. #define pat_gen_ctrl4 0x710
  499. #define rg_ptgen_color_bar_th (0xfff<<16)
  500. #define disable_edge (1<<15)
  501. #define rg_ptgen_width (0x3<<12)
  502. #define rg_ptgen_type (0x3<<8)
  503. #define black_color (0x0<<8)
  504. #define pure_color (0x1<<8)
  505. #define pat_gen_rst (1<<2)
  506. #define pat_in (1<<1)
  507. #define rg_tst_pat_en (1<<0)
  508. #define pat_gen_ctrl5 0x714
  509. #define rg_ptgen_bd_in_fall (0xff<<8)
  510. #define rg_ptgen_bd_in_rise (0xff<<0)
  511. #define pat_gen_ctrl6 0x718
  512. #define rg_ptgen_in_fall (0xff<<8)
  513. #define rg_ptgen_in_rise (0xff<<0)
  514. #define dgi1_crc_mon_ctrl 0x71c
  515. #define dgi1_mon_en (1<<20)
  516. #define dgi1_mon_sel (0x7<<16)
  517. #define c_crc_clr (1<<1)
  518. #define c_crc_start (1<<0)
  519. #define dgi1_crc_out 0x720
  520. #define crc_rdy (1<<28)
  521. #define crc_out (0xffff<<0)
  522. #define dgi1_mon 0x724
  523. #define dgi1_mon_value (0xffffffff<<0)
  524. #define dgi1_yuv2rgb_ctr 0x728
  525. #define fifo_write_en (1<<31)
  526. #define vsync_pu_sel (1<<30)
  527. #define inbuf_del_sel (1<<29)
  528. #define rg_full_range_out (1<<4)
  529. #define rg_uv_swap (1<<3)
  530. #define rg_full_renge_input (1<<2)
  531. #define rg_yuv709_rgb (1<<1)
  532. #define rg_yuv2rgb_en (1<<0)
  533. /* //////////////////////////////////////////////////////////// */
  534. #define IO_PAD_PD 0x58
  535. #define IO_PAD_HOT_PLUG_PD (1<<21)
  536. #define IO_PAD_UP 0x64
  537. #define IO_PAD_HOT_PLUG_UP (1<<21)
  538. /* //////////////////////////////////////////////////////// */
  539. struct _HDMI_AV_INFO_T {
  540. enum HDMI_VIDEO_RESOLUTION e_resolution;
  541. unsigned char fgHdmiOutEnable;
  542. unsigned char u2VerFreq;
  543. unsigned char b_hotplug_state;
  544. HDMI_OUT_COLOR_SPACE_T e_video_color_space;
  545. HDMI_DEEP_COLOR_T e_deep_color_bit;
  546. unsigned char ui1_aud_out_ch_number;
  547. HDMI_AUDIO_SAMPLING_T e_hdmi_fs;
  548. unsigned char bhdmiRChstatus[6];
  549. unsigned char bhdmiLChstatus[6];
  550. unsigned char bMuteHdmiAudio;
  551. unsigned char u1HdmiI2sMclk;
  552. unsigned char u1hdcponoff;
  553. unsigned char u1audiosoft;
  554. unsigned char fgHdmiTmdsEnable;
  555. };
  556. #define HDMI_AV_INFO_T struct _HDMI_AV_INFO_T
  557. /* ///////////////////////////////////////////////////////// */
  558. #define HDMIDRV_BASE (0x0)
  559. #define HDMISYS_BASE (0x1000)
  560. #define HDMIDGI_BASE (0x0)
  561. #define HDMIPAD_BASE (0x1200)
  562. extern HDMI_AV_INFO_T _stAvdAVInfo;
  563. extern unsigned int mt8193_hdmidrv_read(unsigned short u2Reg);
  564. extern void mt8193_hdmidrv_write(unsigned short u2Reg, unsigned int u4Data);
  565. extern unsigned int mt8193_hdmisys_read(unsigned short u2Reg);
  566. extern void mt8193_hdmisys_write(unsigned short u2Reg, unsigned int u4Data);
  567. extern unsigned int mt8193_hdmidgi_read(unsigned short u2Reg);
  568. extern void mt8193_hdmidgi_write(unsigned short u2Reg, unsigned int u4Data);
  569. extern unsigned int mt8193_pad_read(unsigned short u2Reg);
  570. extern void mt8193_pad_write(unsigned short u2Reg, unsigned int u4Data);
  571. #define vWriteByteHdmiGRL(dAddr, dVal) (mt8193_hdmidrv_write(dAddr, dVal))
  572. #define bReadByteHdmiGRL(bAddr) (mt8193_hdmidrv_read(bAddr))
  573. #define vWriteHdmiGRLMsk(dAddr, dVal, dMsk) (vWriteByteHdmiGRL((dAddr),\
  574. (bReadByteHdmiGRL(dAddr) & (~(dMsk))) | ((dVal) & (dMsk))))
  575. #define vWriteHdmiSYS(dAddr, dVal) (mt8193_hdmisys_write(dAddr, dVal))
  576. #define dReadHdmiSYS(dAddr) (mt8193_hdmisys_read(dAddr))
  577. #define vWriteHdmiSYSMsk(dAddr, dVal, dMsk) (vWriteHdmiSYS((dAddr),\
  578. (dReadHdmiSYS(dAddr) & (~(dMsk))) | ((dVal) & (dMsk))))
  579. #define vWriteHdmiDGI(dAddr, dVal) (mt8193_hdmidgi_write(dAddr, dVal))
  580. #define dReadHdmiDGI(dAddr) (mt8193_hdmidgi_read(dAddr))
  581. #define vWriteHdmiDGIMsk(dAddr, dVal, dMsk) (vWriteHdmiDGI((dAddr),\
  582. (dReadHdmiDGI(dAddr) & (~(dMsk))) | ((dVal) & (dMsk))))
  583. #define vWriteIoPad(dAddr, dVal) (mt8193_pad_write(dAddr, dVal))
  584. #define dReadIoPad(dAddr) (mt8193_pad_read(dAddr))
  585. #define vWriteIoPadMsk(dAddr, dVal, dMsk) vWriteIoPad((dAddr),\
  586. (dReadIoPad(dAddr) & (~(dMsk))) | ((dVal) & (dMsk)))
  587. extern void vSetCTL0BeZero(unsigned char fgBeZero);
  588. extern void vWriteHdmiIntMask(unsigned char bMask);
  589. extern void vHDMIAVUnMute(void);
  590. extern void vHDMIAVMute(void);
  591. extern void vTmdsOnOffAndResetHdcp(unsigned char fgHdmiTmdsEnable);
  592. extern void vChangeVpll(unsigned char bRes, unsigned char bdeepmode);
  593. extern void vChgHDMIVideoResolution(unsigned char ui1resindex,
  594. unsigned char ui1colorspace, unsigned char ui1hdmifs, unsigned char bdeepmode);
  595. extern void vChgHDMIAudioOutput(unsigned char ui1hdmifs, unsigned char ui1resindex,
  596. unsigned char bdeepmode);
  597. extern void vChgtoSoftNCTS(unsigned char ui1resindex, unsigned char ui1audiosoft,
  598. unsigned char ui1hdmifs, unsigned char bdeepmode);
  599. extern void vSendAVIInfoFrame(unsigned char ui1resindex, unsigned char ui1colorspace);
  600. extern void mt8193_hdmistatus(void);
  601. extern void vTxSignalOnOff(unsigned char bOn);
  602. extern unsigned char bCheckPordHotPlug(unsigned char bMode);
  603. extern unsigned char hdmi_port_status(void);
  604. extern void vSetHDMITxPLLTrigger(void);
  605. extern void vResetHDMIPLL(void);
  606. extern void vHotPlugPinInit(void);
  607. extern void vBlackHDMIOnly(void);
  608. extern void vUnBlackHDMIOnly(void);
  609. extern void UnMuteHDMIAudio(void);
  610. extern void MuteHDMIAudio(void);
  611. extern unsigned char vIsDviMode(void);
  612. extern unsigned char is_user_mute_hdmi_audio;
  613. extern void hdmi_user_mute_audio(unsigned char mute);
  614. #endif
  615. #endif