mdss_mdp_hwio.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590
  1. /* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. *
  12. */
  13. #ifndef MDSS_MDP_HWIO_H
  14. #define MDSS_MDP_HWIO_H
  15. #include <linux/bitops.h>
  16. #define IGC_LUT_ENTRIES 256
  17. #define GC_LUT_SEGMENTS 16
  18. #define ENHIST_LUT_ENTRIES 256
  19. #define HIST_V_SIZE 256
  20. #define MDSS_MDP_FETCH_CONFIG_RESET_VALUE 0x00000087
  21. #define MDSS_REG_HW_VERSION 0x0
  22. #define MDSS_REG_HW_INTR_STATUS 0x10
  23. #define MDSS_INTR_MDP BIT(0)
  24. #define MDSS_INTR_DSI0 BIT(4)
  25. #define MDSS_INTR_DSI1 BIT(5)
  26. #define MDSS_INTR_HDMI BIT(8)
  27. #define MDSS_INTR_EDP BIT(12)
  28. #define MDSS_MDP_REG_HW_VERSION 0x00100
  29. #define MDSS_MDP_REG_DISP_INTF_SEL 0x00104
  30. #define MDSS_MDP_REG_INTR_EN 0x00110
  31. #define MDSS_MDP_REG_INTR_STATUS 0x00114
  32. #define MDSS_MDP_REG_INTR_CLEAR 0x00118
  33. #define MDSS_MDP_REG_HIST_INTR_EN 0x0011C
  34. #define MDSS_MDP_REG_HIST_INTR_STATUS 0x00120
  35. #define MDSS_MDP_REG_HIST_INTR_CLEAR 0x00124
  36. #define MDSS_MDP_REG_VIDEO_INTF_UNDERFLOW_CTL 0x003E0
  37. #define MDSS_MDP_REG_SPLIT_DISPLAY_EN 0x003F4
  38. #define MDSS_MDP_REG_SPLIT_DISPLAY_UPPER_PIPE_CTRL 0x003F8
  39. #define MDSS_MDP_REG_SPLIT_DISPLAY_LOWER_PIPE_CTRL 0x004F0
  40. #define MDSS_INTF_DSI 0x1
  41. #define MDSS_INTF_HDMI 0x3
  42. #define MDSS_INTF_LCDC 0x5
  43. #define MDSS_INTF_EDP 0x9
  44. #define MDSS_MDP_INTR_WB_0_DONE BIT(0)
  45. #define MDSS_MDP_INTR_WB_1_DONE BIT(1)
  46. #define MDSS_MDP_INTR_WB_2_DONE BIT(4)
  47. #define MDSS_MDP_INTR_PING_PONG_0_DONE BIT(8)
  48. #define MDSS_MDP_INTR_PING_PONG_1_DONE BIT(9)
  49. #define MDSS_MDP_INTR_PING_PONG_2_DONE BIT(10)
  50. #define MDSS_MDP_INTR_PING_PONG_3_DONE BIT(11)
  51. #define MDSS_MDP_INTR_PING_PONG_0_RD_PTR BIT(12)
  52. #define MDSS_MDP_INTR_PING_PONG_1_RD_PTR BIT(13)
  53. #define MDSS_MDP_INTR_PING_PONG_2_RD_PTR BIT(14)
  54. #define MDSS_MDP_INTR_PING_PONG_3_RD_PTR BIT(15)
  55. #define MDSS_MDP_INTR_PING_PONG_0_WR_PTR BIT(16)
  56. #define MDSS_MDP_INTR_PING_PONG_1_WR_PTR BIT(17)
  57. #define MDSS_MDP_INTR_PING_PONG_2_WR_PTR BIT(18)
  58. #define MDSS_MDP_INTR_PING_PONG_3_WR_PTR BIT(19)
  59. #define MDSS_MDP_INTR_PING_PONG_0_AUTOREFRESH_DONE BIT(20)
  60. #define MDSS_MDP_INTR_PING_PONG_1_AUTOREFRESH_DONE BIT(21)
  61. #define MDSS_MDP_INTR_PING_PONG_2_AUTOREFRESH_DONE BIT(22)
  62. #define MDSS_MDP_INTR_PING_PONG_3_AUTOREFRESH_DONE BIT(23)
  63. #define MDSS_MDP_INTR_INTF_0_UNDERRUN BIT(24)
  64. #define MDSS_MDP_INTR_INTF_0_VSYNC BIT(25)
  65. #define MDSS_MDP_INTR_INTF_1_UNDERRUN BIT(26)
  66. #define MDSS_MDP_INTR_INTF_1_VSYNC BIT(27)
  67. #define MDSS_MDP_INTR_INTF_2_UNDERRUN BIT(28)
  68. #define MDSS_MDP_INTR_INTF_2_VSYNC BIT(29)
  69. #define MDSS_MDP_INTR_INTF_3_UNDERRUN BIT(30)
  70. #define MDSS_MDP_INTR_INTF_3_VSYNC BIT(31)
  71. enum mdss_mdp_intr_type {
  72. MDSS_MDP_IRQ_WB_ROT_COMP = 0,
  73. MDSS_MDP_IRQ_WB_WFD = 4,
  74. MDSS_MDP_IRQ_PING_PONG_COMP = 8,
  75. MDSS_MDP_IRQ_PING_PONG_RD_PTR = 12,
  76. MDSS_MDP_IRQ_PING_PONG_WR_PTR = 16,
  77. MDSS_MDP_IRQ_PING_PONG_AUTO_REF = 20,
  78. MDSS_MDP_IRQ_INTF_UNDER_RUN = 24,
  79. MDSS_MDP_IRQ_INTF_VSYNC = 25,
  80. };
  81. #define MDSS_MDP_REG_IGC_VIG_BASE 0x300
  82. #define MDSS_MDP_REG_IGC_RGB_BASE 0x310
  83. #define MDSS_MDP_REG_IGC_DMA_BASE 0x320
  84. #define MDSS_MDP_REG_IGC_DSPP_BASE 0x400
  85. enum mdss_mdp_ctl_index {
  86. MDSS_MDP_CTL0,
  87. MDSS_MDP_CTL1,
  88. MDSS_MDP_CTL2,
  89. MDSS_MDP_CTL3,
  90. MDSS_MDP_CTL4,
  91. MDSS_MDP_CTL5,
  92. MDSS_MDP_MAX_CTL
  93. };
  94. #define MDSS_MDP_CTL_ADDRESS_OFFSET 0x100
  95. #define MDSS_MDP_REG_CTL_OFFSET(ctl) (0x00600 + ((ctl) * \
  96. MDSS_MDP_CTL_ADDRESS_OFFSET))
  97. #define MDSS_MDP_REG_CTL_LAYER(lm) \
  98. ((lm == 5) ? (0x024) : ((lm) * 0x004))
  99. #define MDSS_MDP_REG_CTL_TOP 0x014
  100. #define MDSS_MDP_REG_CTL_FLUSH 0x018
  101. #define MDSS_MDP_REG_CTL_START 0x01C
  102. #define MDSS_MDP_REG_CTL_PACK_3D 0x020
  103. #define MDSS_MDP_REG_CTL_SW_RESET 0x030
  104. #define MDSS_MDP_CTL_OP_VIDEO_MODE (0 << 17)
  105. #define MDSS_MDP_CTL_OP_CMD_MODE (1 << 17)
  106. #define MDSS_MDP_CTL_OP_ROT0_MODE 0x1
  107. #define MDSS_MDP_CTL_OP_ROT1_MODE 0x2
  108. #define MDSS_MDP_CTL_OP_WB0_MODE 0x3
  109. #define MDSS_MDP_CTL_OP_WB1_MODE 0x4
  110. #define MDSS_MDP_CTL_OP_WFD_MODE 0x5
  111. #define MDSS_MDP_CTL_OP_PACK_3D_ENABLE BIT(19)
  112. #define MDSS_MDP_CTL_OP_PACK_3D_FRAME_INT (0 << 20)
  113. #define MDSS_MDP_CTL_OP_PACK_3D_H_ROW_INT (1 << 20)
  114. #define MDSS_MDP_CTL_OP_PACK_3D_V_ROW_INT (2 << 20)
  115. #define MDSS_MDP_CTL_OP_PACK_3D_COL_INT (3 << 20)
  116. enum mdss_mdp_sspp_index {
  117. MDSS_MDP_SSPP_VIG0,
  118. MDSS_MDP_SSPP_VIG1,
  119. MDSS_MDP_SSPP_VIG2,
  120. MDSS_MDP_SSPP_RGB0,
  121. MDSS_MDP_SSPP_RGB1,
  122. MDSS_MDP_SSPP_RGB2,
  123. MDSS_MDP_SSPP_DMA0,
  124. MDSS_MDP_SSPP_DMA1,
  125. MDSS_MDP_SSPP_VIG3,
  126. MDSS_MDP_SSPP_RGB3,
  127. MDSS_MDP_MAX_SSPP
  128. };
  129. enum mdss_mdp_sspp_fetch_type {
  130. MDSS_MDP_PLANE_INTERLEAVED,
  131. MDSS_MDP_PLANE_PLANAR,
  132. MDSS_MDP_PLANE_PSEUDO_PLANAR,
  133. };
  134. enum mdss_mdp_sspp_chroma_samp_type {
  135. MDSS_MDP_CHROMA_RGB,
  136. MDSS_MDP_CHROMA_H2V1,
  137. MDSS_MDP_CHROMA_H1V2,
  138. MDSS_MDP_CHROMA_420
  139. };
  140. #define MDSS_MDP_SSPP_ADDRESS_OFFSET 0x400
  141. #define MDSS_MDP_REG_SSPP_OFFSET(pipe) (0x01200 + ((pipe) * \
  142. MDSS_MDP_SSPP_ADDRESS_OFFSET))
  143. #define MDSS_MDP_REG_SSPP_SRC_SIZE 0x000
  144. #define MDSS_MDP_REG_SSPP_SRC_IMG_SIZE 0x004
  145. #define MDSS_MDP_REG_SSPP_SRC_XY 0x008
  146. #define MDSS_MDP_REG_SSPP_OUT_SIZE 0x00C
  147. #define MDSS_MDP_REG_SSPP_OUT_XY 0x010
  148. #define MDSS_MDP_REG_SSPP_SRC0_ADDR 0x014
  149. #define MDSS_MDP_REG_SSPP_SRC1_ADDR 0x018
  150. #define MDSS_MDP_REG_SSPP_SRC2_ADDR 0x01C
  151. #define MDSS_MDP_REG_SSPP_SRC3_ADDR 0x020
  152. #define MDSS_MDP_REG_SSPP_SRC_YSTRIDE0 0x024
  153. #define MDSS_MDP_REG_SSPP_SRC_YSTRIDE1 0x028
  154. #define MDSS_MDP_REG_SSPP_STILE_FRAME_SIZE 0x02C
  155. #define MDSS_MDP_REG_SSPP_SRC_FORMAT 0x030
  156. #define MDSS_MDP_REG_SSPP_SRC_UNPACK_PATTERN 0x034
  157. #define MDSS_MDP_REG_SSPP_SRC_CONSTANT_COLOR 0x03C
  158. #define MDSS_MDP_REG_SSPP_REQPRIO_FIFO_WM_0 0x050
  159. #define MDSS_MDP_REG_SSPP_REQPRIO_FIFO_WM_1 0x054
  160. #define MDSS_MDP_REG_SSPP_REQPRIO_FIFO_WM_2 0x058
  161. #define MDSS_MDP_REG_SSPP_SRC_OP_MODE 0x038
  162. #define MDSS_MDP_OP_DEINTERLACE BIT(22)
  163. #define MDSS_MDP_OP_DEINTERLACE_ODD BIT(23)
  164. #define MDSS_MDP_OP_IGC_ROM_1 BIT(18)
  165. #define MDSS_MDP_OP_IGC_ROM_0 BIT(17)
  166. #define MDSS_MDP_OP_IGC_EN BIT(16)
  167. #define MDSS_MDP_OP_FLIP_UD BIT(14)
  168. #define MDSS_MDP_OP_FLIP_LR BIT(13)
  169. #define MDSS_MDP_OP_BWC_EN BIT(0)
  170. #define MDSS_MDP_OP_BWC_LOSSLESS (0 << 1)
  171. #define MDSS_MDP_OP_BWC_Q_HIGH (1 << 1)
  172. #define MDSS_MDP_OP_BWC_Q_MED (2 << 1)
  173. #define MDSS_MDP_REG_SSPP_SRC_CONSTANT_COLOR 0x03C
  174. #define MDSS_MDP_REG_SSPP_FETCH_CONFIG 0x048
  175. #define MDSS_MDP_REG_SSPP_VC1_RANGE 0x04C
  176. #define MDSS_MDP_REG_SSPP_SRC_ADDR_SW_STATUS 0x070
  177. #define MDSS_MDP_REG_SSPP_CURRENT_SRC0_ADDR 0x0A4
  178. #define MDSS_MDP_REG_SSPP_CURRENT_SRC1_ADDR 0x0A8
  179. #define MDSS_MDP_REG_SSPP_CURRENT_SRC2_ADDR 0x0AC
  180. #define MDSS_MDP_REG_SSPP_CURRENT_SRC3_ADDR 0x0B0
  181. #define MDSS_MDP_REG_SSPP_DECIMATION_CONFIG 0x0B4
  182. #define MDSS_MDP_REG_SSPP_SW_PIX_EXT_C0_LR 0x100
  183. #define MDSS_MDP_REG_SSPP_SW_PIX_EXT_C0_TB 0x104
  184. #define MDSS_MDP_REG_SSPP_SW_PIX_EXT_C0_REQ_PIXELS 0x108
  185. #define MDSS_MDP_REG_VIG_OP_MODE 0x200
  186. #define MDSS_MDP_REG_VIG_QSEED2_CONFIG 0x204
  187. #define MDSS_MDP_REG_VIG_QSEED2_C03_PHASESTEPX 0x210
  188. #define MDSS_MDP_REG_VIG_QSEED2_C03_PHASESTEPY 0x214
  189. #define MDSS_MDP_REG_VIG_QSEED2_C12_PHASESTEPX 0x218
  190. #define MDSS_MDP_REG_VIG_QSEED2_C12_PHASESTEPY 0x21C
  191. #define MDSS_MDP_REG_VIG_QSEED2_C03_INIT_PHASEX 0x220
  192. #define MDSS_MDP_REG_VIG_QSEED2_C03_INIT_PHASEY 0x224
  193. #define MDSS_MDP_REG_VIG_QSEED2_C12_INIT_PHASEX 0x228
  194. #define MDSS_MDP_REG_VIG_QSEED2_C12_INIT_PHASEY 0x22C
  195. #define MDSS_MDP_REG_VIG_QSEED2_SHARP 0x230
  196. #define MDSS_MDP_REG_VIG_MEM_COL_BASE 0x288
  197. #define MDSS_MDP_REG_VIG_PA_BASE 0x310
  198. #define MDSS_MDP_VIG_OP_PA_SAT_ZERO_EXP_EN BIT(2)
  199. #define MDSS_MDP_VIG_OP_PA_MEM_PROTECT_EN BIT(3)
  200. #define MDSS_MDP_VIG_OP_PA_EN BIT(4)
  201. #define MDSS_MDP_VIG_OP_PA_MEM_COL_SKIN_MASK BIT(5)
  202. #define MDSS_MDP_VIG_OP_PA_MEM_COL_FOL_MASK BIT(6)
  203. #define MDSS_MDP_VIG_OP_PA_MEM_COL_SKY_MASK BIT(7)
  204. #define MDSS_MDP_VIG_OP_PA_HUE_MASK BIT(25)
  205. #define MDSS_MDP_VIG_OP_PA_SAT_MASK BIT(26)
  206. #define MDSS_MDP_VIG_OP_PA_VAL_MASK BIT(27)
  207. #define MDSS_MDP_VIG_OP_PA_CONT_MASK BIT(28)
  208. #define MDSS_MDP_REG_SCALE_CONFIG 0x204
  209. #define MDSS_MDP_REG_SCALE_PHASE_STEP_X 0x210
  210. #define MDSS_MDP_REG_SCALE_PHASE_STEP_Y 0x214
  211. #define MDSS_MDP_REG_SCALE_INIT_PHASE_X 0x220
  212. #define MDSS_MDP_REG_SCALE_INIT_PHASE_Y 0x224
  213. #define MDSS_MDP_REG_VIG_CSC_0_BASE 0x280
  214. #define MDSS_MDP_REG_VIG_CSC_1_BASE 0x320
  215. #define MDSS_MDP_REG_VIG_HIST_CTL_BASE 0x2C4
  216. #define MDSS_MDP_REG_VIG_HIST_LUT_BASE 0x2F0
  217. #define MDSS_MDP_SCALE_FILTER_NEAREST 0x0
  218. #define MDSS_MDP_SCALE_FILTER_BIL 0x1
  219. #define MDSS_MDP_SCALE_FILTER_PCMN 0x2
  220. #define MDSS_MDP_SCALE_FILTER_CA 0x3
  221. #define MDSS_MDP_SCALEY_EN BIT(1)
  222. #define MDSS_MDP_SCALEX_EN BIT(0)
  223. #define MDSS_MDP_FMT_SOLID_FILL 0x4037FF
  224. #define MDSS_MDP_NUM_REG_MIXERS 3
  225. #define MDSS_MDP_NUM_WB_MIXERS 2
  226. #define MDSS_MDP_CTL_X_LAYER_5 0x24
  227. enum mdss_mdp_mixer_intf_index {
  228. MDSS_MDP_INTF_LAYERMIXER0,
  229. MDSS_MDP_INTF_LAYERMIXER1,
  230. MDSS_MDP_INTF_LAYERMIXER2,
  231. MDSS_MDP_INTF_LAYERMIXER3,
  232. MDSS_MDP_INTF_MAX_LAYERMIXER,
  233. };
  234. enum mdss_mdp_mixer_wb_index {
  235. MDSS_MDP_WB_LAYERMIXER0,
  236. MDSS_MDP_WB_LAYERMIXER1,
  237. MDSS_MDP_WB_MAX_LAYERMIXER,
  238. };
  239. enum mdss_mdp_stage_index {
  240. MDSS_MDP_STAGE_UNUSED,
  241. MDSS_MDP_STAGE_BASE,
  242. MDSS_MDP_STAGE_0,
  243. MDSS_MDP_STAGE_1,
  244. MDSS_MDP_STAGE_2,
  245. MDSS_MDP_STAGE_3,
  246. MDSS_MDP_STAGE_4,
  247. MDSS_MDP_MAX_STAGE
  248. };
  249. #define MDSS_MDP_LM_ADDRESS_OFFSET 0x400
  250. #define MDSS_MDP_REG_LM_OFFSET(lm) (0x03200 + ((lm) * \
  251. MDSS_MDP_LM_ADDRESS_OFFSET))
  252. #define MDSS_MDP_REG_LM_OP_MODE 0x000
  253. #define MDSS_MDP_REG_LM_OUT_SIZE 0x004
  254. #define MDSS_MDP_REG_LM_BORDER_COLOR_0 0x008
  255. #define MDSS_MDP_REG_LM_BORDER_COLOR_1 0x010
  256. #define MDSS_MDP_REG_LM_BLEND_OFFSET(stage) (0x20 + ((stage) * 0x30))
  257. #define MDSS_MDP_REG_LM_BLEND_OP 0x00
  258. #define MDSS_MDP_REG_LM_BLEND_FG_ALPHA 0x04
  259. #define MDSS_MDP_REG_LM_BLEND_BG_ALPHA 0x08
  260. #define MDSS_MDP_REG_LM_BLEND_FG_TRANSP_LOW0 0x0C
  261. #define MDSS_MDP_REG_LM_BLEND_FG_TRANSP_LOW1 0x10
  262. #define MDSS_MDP_REG_LM_BLEND_FG_TRANSP_HIGH0 0x14
  263. #define MDSS_MDP_REG_LM_BLEND_FG_TRANSP_HIGH1 0x18
  264. #define MDSS_MDP_REG_LM_BLEND_BG_TRANSP_LOW0 0x1C
  265. #define MDSS_MDP_REG_LM_BLEND_BG_TRANSP_LOW1 0x20
  266. #define MDSS_MDP_REG_LM_BLEND_BG_TRANSP_HIGH0 0x24
  267. #define MDSS_MDP_REG_LM_BLEND_BG_TRANSP_HIGH1 0x28
  268. #define MDSS_MDP_REG_LM_CURSOR_IMG_SIZE 0xE0
  269. #define MDSS_MDP_REG_LM_CURSOR_SIZE 0xE4
  270. #define MDSS_MDP_REG_LM_CURSOR_XY 0xE8
  271. #define MDSS_MDP_REG_LM_CURSOR_STRIDE 0xDC
  272. #define MDSS_MDP_REG_LM_CURSOR_FORMAT 0xEC
  273. #define MDSS_MDP_REG_LM_CURSOR_BASE_ADDR 0xF0
  274. #define MDSS_MDP_REG_LM_CURSOR_START_XY 0xF4
  275. #define MDSS_MDP_REG_LM_CURSOR_BLEND_CONFIG 0xF8
  276. #define MDSS_MDP_REG_LM_CURSOR_BLEND_PARAM 0xFC
  277. #define MDSS_MDP_REG_LM_CURSOR_BLEND_TRANSP_LOW0 0x100
  278. #define MDSS_MDP_REG_LM_CURSOR_BLEND_TRANSP_LOW1 0x104
  279. #define MDSS_MDP_REG_LM_CURSOR_BLEND_TRANSP_HIGH0 0x108
  280. #define MDSS_MDP_REG_LM_CURSOR_BLEND_TRANSP_HIGH1 0x10C
  281. #define MDSS_MDP_REG_LM_GC_LUT_BASE 0x110
  282. #define MDSS_MDP_LM_BORDER_COLOR (1 << 24)
  283. #define MDSS_MDP_LM_CURSOR_OUT (1 << 25)
  284. #define MDSS_MDP_BLEND_FG_ALPHA_FG_CONST (0 << 0)
  285. #define MDSS_MDP_BLEND_FG_ALPHA_BG_CONST (1 << 0)
  286. #define MDSS_MDP_BLEND_FG_ALPHA_FG_PIXEL (2 << 0)
  287. #define MDSS_MDP_BLEND_FG_ALPHA_BG_PIXEL (3 << 0)
  288. #define MDSS_MDP_BLEND_FG_INV_ALPHA (1 << 2)
  289. #define MDSS_MDP_BLEND_FG_MOD_ALPHA (1 << 3)
  290. #define MDSS_MDP_BLEND_FG_INV_MOD_ALPHA (1 << 4)
  291. #define MDSS_MDP_BLEND_FG_TRANSP_EN (1 << 5)
  292. #define MDSS_MDP_BLEND_BG_ALPHA_FG_CONST (0 << 8)
  293. #define MDSS_MDP_BLEND_BG_ALPHA_BG_CONST (1 << 8)
  294. #define MDSS_MDP_BLEND_BG_ALPHA_FG_PIXEL (2 << 8)
  295. #define MDSS_MDP_BLEND_BG_ALPHA_BG_PIXEL (3 << 8)
  296. #define MDSS_MDP_BLEND_BG_INV_ALPHA (1 << 10)
  297. #define MDSS_MDP_BLEND_BG_MOD_ALPHA (1 << 11)
  298. #define MDSS_MDP_BLEND_BG_INV_MOD_ALPHA (1 << 12)
  299. #define MDSS_MDP_BLEND_BG_TRANSP_EN (1 << 13)
  300. enum mdss_mdp_writeback_index {
  301. MDSS_MDP_WRITEBACK0,
  302. MDSS_MDP_WRITEBACK1,
  303. MDSS_MDP_WRITEBACK2,
  304. MDSS_MDP_WRITEBACK3,
  305. MDSS_MDP_WRITEBACK4,
  306. MDSS_MDP_MAX_WRITEBACK
  307. };
  308. #define MDSS_MDP_REG_WB_OFFSET(wb) (0x11100 + ((wb) * 0x2000))
  309. #define MDSS_MDP_REG_WB_DST_FORMAT 0x000
  310. #define MDSS_MDP_REG_WB_DST_OP_MODE 0x004
  311. #define MDSS_MDP_REG_WB_DST_PACK_PATTERN 0x008
  312. #define MDSS_MDP_REG_WB_DST0_ADDR 0x00C
  313. #define MDSS_MDP_REG_WB_DST1_ADDR 0x010
  314. #define MDSS_MDP_REG_WB_DST2_ADDR 0x014
  315. #define MDSS_MDP_REG_WB_DST3_ADDR 0x018
  316. #define MDSS_MDP_REG_WB_DST_YSTRIDE0 0x01C
  317. #define MDSS_MDP_REG_WB_DST_YSTRIDE1 0x020
  318. #define MDSS_MDP_REG_WB_DST_YSTRIDE1 0x020
  319. #define MDSS_MDP_REG_WB_DST_DITHER_BITDEPTH 0x024
  320. #define MDSS_MDP_REG_WB_DST_MATRIX_ROW0 0x030
  321. #define MDSS_MDP_REG_WB_DST_MATRIX_ROW1 0x034
  322. #define MDSS_MDP_REG_WB_DST_MATRIX_ROW2 0x038
  323. #define MDSS_MDP_REG_WB_DST_MATRIX_ROW3 0x03C
  324. #define MDSS_MDP_REG_WB_DST_WRITE_CONFIG 0x048
  325. #define MDSS_MDP_REG_WB_ROTATION_DNSCALER 0x050
  326. #define MDSS_MDP_REG_WB_N16_INIT_PHASE_X_C03 0x060
  327. #define MDSS_MDP_REG_WB_N16_INIT_PHASE_X_C12 0x064
  328. #define MDSS_MDP_REG_WB_N16_INIT_PHASE_Y_C03 0x068
  329. #define MDSS_MDP_REG_WB_N16_INIT_PHASE_Y_C12 0x06C
  330. #define MDSS_MDP_REG_WB_OUT_SIZE 0x074
  331. #define MDSS_MDP_REG_WB_ALPHA_X_VALUE 0x078
  332. #define MDSS_MDP_REG_WB_CSC_BASE 0x260
  333. #define MDSS_MDP_REG_WB_DST_ADDR_SW_STATUS 0x2B0
  334. #define MDSS_MDP_MAX_AD_AL 65535
  335. #define MDSS_MDP_MAX_AD_STR 255
  336. #define MDSS_MDP_AD_BL_SCALE 4095
  337. #define MDSS_MDP_REG_AD_BYPASS 0x000
  338. #define MDSS_MDP_REG_AD_CTRL_0 0x004
  339. #define MDSS_MDP_REG_AD_CTRL_1 0x008
  340. #define MDSS_MDP_REG_AD_FRAME_SIZE 0x00C
  341. #define MDSS_MDP_REG_AD_CON_CTRL_0 0x010
  342. #define MDSS_MDP_REG_AD_CON_CTRL_1 0x014
  343. #define MDSS_MDP_REG_AD_STR_MAN 0x018
  344. #define MDSS_MDP_REG_AD_VAR 0x01C
  345. #define MDSS_MDP_REG_AD_DITH 0x020
  346. #define MDSS_MDP_REG_AD_DITH_CTRL 0x024
  347. #define MDSS_MDP_REG_AD_AMP_LIM 0x028
  348. #define MDSS_MDP_REG_AD_SLOPE 0x02C
  349. #define MDSS_MDP_REG_AD_BW_LVL 0x030
  350. #define MDSS_MDP_REG_AD_LOGO_POS 0x034
  351. #define MDSS_MDP_REG_AD_LUT_FI 0x038
  352. #define MDSS_MDP_REG_AD_LUT_CC 0x07C
  353. #define MDSS_MDP_REG_AD_STR_LIM 0x0C8
  354. #define MDSS_MDP_REG_AD_CALIB_AB 0x0CC
  355. #define MDSS_MDP_REG_AD_CALIB_CD 0x0D0
  356. #define MDSS_MDP_REG_AD_MODE_SEL 0x0D4
  357. #define MDSS_MDP_REG_AD_TFILT_CTRL 0x0D8
  358. #define MDSS_MDP_REG_AD_BL_MINMAX 0x0DC
  359. #define MDSS_MDP_REG_AD_BL 0x0E0
  360. #define MDSS_MDP_REG_AD_BL_MAX 0x0E8
  361. #define MDSS_MDP_REG_AD_AL 0x0EC
  362. #define MDSS_MDP_REG_AD_AL_MIN 0x0F0
  363. #define MDSS_MDP_REG_AD_AL_FILT 0x0F4
  364. #define MDSS_MDP_REG_AD_CFG_BUF 0x0F8
  365. #define MDSS_MDP_REG_AD_LUT_AL 0x100
  366. #define MDSS_MDP_REG_AD_TARG_STR 0x144
  367. #define MDSS_MDP_REG_AD_START_CALC 0x148
  368. #define MDSS_MDP_REG_AD_STR_OUT 0x14C
  369. #define MDSS_MDP_REG_AD_BL_OUT 0x154
  370. #define MDSS_MDP_REG_AD_CALC_DONE 0x158
  371. #define MDSS_MDP_REG_AD_FRAME_END 0x15C
  372. #define MDSS_MDP_REG_AD_PROCS_END 0x160
  373. #define MDSS_MDP_REG_AD_FRAME_START 0x164
  374. #define MDSS_MDP_REG_AD_PROCS_START 0x168
  375. #define MDSS_MDP_REG_AD_TILE_CTRL 0x16C
  376. enum mdss_mdp_dspp_index {
  377. MDSS_MDP_DSPP0,
  378. MDSS_MDP_DSPP1,
  379. MDSS_MDP_DSPP2,
  380. MDSS_MDP_DSPP3,
  381. MDSS_MDP_MAX_DSPP
  382. };
  383. #define MDSS_MDP_DSPP_ADDRESS_OFFSET 0x400
  384. #define MDSS_MDP_REG_DSPP_OFFSET(pipe) (0x4600 + ((pipe) * \
  385. MDSS_MDP_DSPP_ADDRESS_OFFSET))
  386. #define MDSS_MDP_REG_DSPP_OP_MODE 0x000
  387. #define MDSS_MDP_REG_DSPP_PCC_BASE 0x030
  388. #define MDSS_MDP_REG_DSPP_DITHER_DEPTH 0x150
  389. #define MDSS_MDP_REG_DSPP_HIST_CTL_BASE 0x210
  390. #define MDSS_MDP_REG_DSPP_HIST_LUT_BASE 0x230
  391. #define MDSS_MDP_REG_DSPP_PA_BASE 0x238
  392. #define MDSS_MDP_REG_DSPP_SIX_ZONE_BASE 0x248
  393. #define MDSS_MDP_REG_DSPP_GAMUT_BASE 0x2DC
  394. #define MDSS_MDP_REG_DSPP_GC_BASE 0x2B0
  395. #define MDSS_MDP_DSPP_OP_IGC_LUT_EN BIT(0)
  396. #define MDSS_MDP_DSPP_OP_PA_SAT_ZERO_EXP_EN BIT(1)
  397. #define MDSS_MDP_DSPP_OP_PA_MEM_PROTECT_EN BIT(2)
  398. #define MDSS_MDP_DSPP_OP_PCC_EN BIT(4)
  399. #define MDSS_MDP_DSPP_OP_PA_MEM_COL_SKIN_MASK BIT(5)
  400. #define MDSS_MDP_DSPP_OP_PA_MEM_COL_FOL_MASK BIT(6)
  401. #define MDSS_MDP_DSPP_OP_PA_MEM_COL_SKY_MASK BIT(7)
  402. #define MDSS_MDP_DSPP_OP_DST_DITHER_EN BIT(8)
  403. #define MDSS_MDP_DSPP_OP_HIST_EN BIT(16)
  404. #define MDSS_MDP_DSPP_OP_HIST_LUTV_EN BIT(19)
  405. #define MDSS_MDP_DSPP_OP_PA_EN BIT(20)
  406. #define MDSS_MDP_DSPP_OP_ARGC_LUT_EN BIT(22)
  407. #define MDSS_MDP_DSPP_OP_GAMUT_EN BIT(23)
  408. #define MDSS_MDP_DSPP_OP_GAMUT_PCC_ORDER BIT(24)
  409. #define MDSS_MDP_DSPP_OP_PA_HUE_MASK BIT(25)
  410. #define MDSS_MDP_DSPP_OP_PA_SAT_MASK BIT(26)
  411. #define MDSS_MDP_DSPP_OP_PA_VAL_MASK BIT(27)
  412. #define MDSS_MDP_DSPP_OP_PA_CONT_MASK BIT(28)
  413. #define MDSS_MDP_DSPP_OP_PA_SIX_ZONE_HUE_MASK BIT(29)
  414. #define MDSS_MDP_DSPP_OP_PA_SIX_ZONE_SAT_MASK BIT(30)
  415. #define MDSS_MDP_DSPP_OP_PA_SIX_ZONE_VAL_MASK BIT(31)
  416. enum mdss_mpd_intf_index {
  417. MDSS_MDP_NO_INTF,
  418. MDSS_MDP_INTF0,
  419. MDSS_MDP_INTF1,
  420. MDSS_MDP_INTF2,
  421. MDSS_MDP_INTF3,
  422. MDSS_MDP_MAX_INTF
  423. };
  424. #define MDSS_MDP_REG_INTF_TIMING_ENGINE_EN 0x000
  425. #define MDSS_MDP_REG_INTF_CONFIG 0x004
  426. #define MDSS_MDP_REG_INTF_HSYNC_CTL 0x008
  427. #define MDSS_MDP_REG_INTF_VSYNC_PERIOD_F0 0x00C
  428. #define MDSS_MDP_REG_INTF_VSYNC_PERIOD_F1 0x010
  429. #define MDSS_MDP_REG_INTF_VSYNC_PULSE_WIDTH_F0 0x014
  430. #define MDSS_MDP_REG_INTF_VSYNC_PULSE_WIDTH_F1 0x018
  431. #define MDSS_MDP_REG_INTF_DISPLAY_V_START_F0 0x01C
  432. #define MDSS_MDP_REG_INTF_DISPLAY_V_START_F1 0x020
  433. #define MDSS_MDP_REG_INTF_DISPLAY_V_END_F0 0x024
  434. #define MDSS_MDP_REG_INTF_DISPLAY_V_END_F1 0x028
  435. #define MDSS_MDP_REG_INTF_ACTIVE_V_START_F0 0x02C
  436. #define MDSS_MDP_REG_INTF_ACTIVE_V_START_F1 0x030
  437. #define MDSS_MDP_REG_INTF_ACTIVE_V_END_F0 0x034
  438. #define MDSS_MDP_REG_INTF_ACTIVE_V_END_F1 0x038
  439. #define MDSS_MDP_REG_INTF_DISPLAY_HCTL 0x03C
  440. #define MDSS_MDP_REG_INTF_ACTIVE_HCTL 0x040
  441. #define MDSS_MDP_REG_INTF_BORDER_COLOR 0x044
  442. #define MDSS_MDP_REG_INTF_UNDERFLOW_COLOR 0x048
  443. #define MDSS_MDP_REG_INTF_HSYNC_SKEW 0x04C
  444. #define MDSS_MDP_REG_INTF_POLARITY_CTL 0x050
  445. #define MDSS_MDP_REG_INTF_TEST_CTL 0x054
  446. #define MDSS_MDP_REG_INTF_TP_COLOR0 0x058
  447. #define MDSS_MDP_REG_INTF_TP_COLOR1 0x05C
  448. #define MDSS_MDP_REG_INTF_FRAME_LINE_COUNT_EN 0x0A8
  449. #define MDSS_MDP_REG_INTF_FRAME_COUNT 0x0AC
  450. #define MDSS_MDP_REG_INTF_LINE_COUNT 0x0B0
  451. #define MDSS_MDP_REG_INTF_DEFLICKER_CONFIG 0x0F0
  452. #define MDSS_MDP_REG_INTF_DEFLICKER_STRNG_COEFF 0x0F4
  453. #define MDSS_MDP_REG_INTF_DEFLICKER_WEAK_COEFF 0x0F8
  454. #define MDSS_MDP_REG_INTF_DSI_CMD_MODE_TRIGGER_EN 0x084
  455. #define MDSS_MDP_REG_INTF_PANEL_FORMAT 0x090
  456. #define MDSS_MDP_REG_INTF_TPG_ENABLE 0x100
  457. #define MDSS_MDP_REG_INTF_TPG_MAIN_CONTROL 0x104
  458. #define MDSS_MDP_REG_INTF_TPG_VIDEO_CONFIG 0x108
  459. #define MDSS_MDP_REG_INTF_TPG_COMPONENT_LIMITS 0x10C
  460. #define MDSS_MDP_REG_INTF_TPG_RECTANGLE 0x110
  461. #define MDSS_MDP_REG_INTF_TPG_INITIAL_VALUE 0x114
  462. #define MDSS_MDP_REG_INTF_TPG_BLK_WHITE_PATTERN_FRAMES 0x118
  463. #define MDSS_MDP_REG_INTF_TPG_RGB_MAPPING 0x11C
  464. #define MDSS_MDP_REG_INTF_FRAME_LINE_COUNT_EN 0x0A8
  465. #define MDSS_MDP_REG_INTF_FRAME_COUNT 0x0AC
  466. #define MDSS_MDP_REG_INTF_LINE_COUNT 0x0B0
  467. #define MDSS_MDP_PANEL_FORMAT_RGB888 0x213F
  468. #define MDSS_MDP_PANEL_FORMAT_RGB666 0x212A
  469. #define MDSS_MDP_PANEL_FORMAT_PACK_ALIGN_MSB BIT(7)
  470. enum mdss_mdp_pingpong_index {
  471. MDSS_MDP_PINGPONG0,
  472. MDSS_MDP_PINGPONG1,
  473. MDSS_MDP_PINGPONG2,
  474. MDSS_MDP_PINGPONG3,
  475. MDSS_MDP_MAX_PINGPONG
  476. };
  477. #define MDSS_MDP_REG_PP_TEAR_CHECK_EN 0x000
  478. #define MDSS_MDP_REG_PP_SYNC_CONFIG_VSYNC 0x004
  479. #define MDSS_MDP_REG_PP_SYNC_CONFIG_HEIGHT 0x008
  480. #define MDSS_MDP_REG_PP_SYNC_WRCOUNT 0x00C
  481. #define MDSS_MDP_REG_PP_VSYNC_INIT_VAL 0x010
  482. #define MDSS_MDP_REG_PP_INT_COUNT_VAL 0x014
  483. #define MDSS_MDP_REG_PP_SYNC_THRESH 0x018
  484. #define MDSS_MDP_REG_PP_START_POS 0x01C
  485. #define MDSS_MDP_REG_PP_RD_PTR_IRQ 0x020
  486. #define MDSS_MDP_REG_PP_WR_PTR_IRQ 0x024
  487. #define MDSS_MDP_REG_PP_OUT_LINE_COUNT 0x028
  488. #define MDSS_MDP_REG_PP_LINE_COUNT 0x02C
  489. #define MDSS_MDP_REG_PP_AUTOREFRESH_CONFIG 0x030
  490. #define MDSS_MDP_REG_PP_FBC_MODE 0x034
  491. #define MDSS_MDP_REG_PP_FBC_BUDGET_CTL 0x038
  492. #define MDSS_MDP_REG_PP_FBC_LOSSY_MODE 0x03C
  493. #define MDSS_MDP_REG_SMP_ALLOC_W0 0x00180
  494. #define MDSS_MDP_REG_SMP_ALLOC_R0 0x00230
  495. #define MDSS_MDP_LP_MISR_SEL 0x450
  496. #define MDSS_MDP_LP_MISR_CTRL_MDP 0x454
  497. #define MDSS_MDP_LP_MISR_CTRL_HDMI 0x458
  498. #define MDSS_MDP_LP_MISR_CTRL_EDP 0x45C
  499. #define MDSS_MDP_LP_MISR_CTRL_DSI0 0x460
  500. #define MDSS_MDP_LP_MISR_CTRL_DSI1 0x464
  501. #define MDSS_MDP_LP_MISR_SIGN_MDP 0x468
  502. #define MDSS_MDP_LP_MISR_SIGN_EDP 0x46C
  503. #define MDSS_MDP_LP_MISR_SIGN_HDMI 0x470
  504. #define MDSS_MDP_LP_MISR_SIGN_DSI0 0x474
  505. #define MDSS_MDP_LP_MISR_SIGN_DSI1 0x478
  506. #define MDSS_MDP_LP_MISR_CTRL_FRAME_COUNT_MASK 0xFF
  507. #define MDSS_MDP_LP_MISR_CTRL_ENABLE BIT(8)
  508. #define MDSS_MDP_LP_MISR_CTRL_STATUS BIT(9)
  509. #define MDSS_MDP_LP_MISR_CTRL_STATUS_CLEAR BIT(10)
  510. #define MDSS_MDP_LP_MISR_SEL_LMIX0_BLEND 0x08
  511. #define MDSS_MDP_LP_MISR_SEL_LMIX0_GC 0x09
  512. #define MDSS_MDP_LP_MISR_SEL_LMIX1_BLEND 0x0A
  513. #define MDSS_MDP_LP_MISR_SEL_LMIX1_GC 0x0B
  514. #define MDSS_MDP_LP_MISR_SEL_LMIX2_BLEND 0x0C
  515. #define MDSS_MDP_LP_MISR_SEL_LMIX2_GC 0x0D
  516. #define MDSS_MDP_LP_MISR_SEL_LMIX3_BLEND 0x0E
  517. #define MDSS_MDP_LP_MISR_SEL_LMIX3_GC 0x0F
  518. #define MDSS_MDP_LP_MISR_SEL_LMIX4_BLEND 0x10
  519. #define MDSS_MDP_LP_MISR_SEL_LMIX4_GC 0x11
  520. /* following offsets are with respect to MDP VBIF base */
  521. #define MMSS_VBIF_XIN_HALT_CTRL0 0x200
  522. #define MMSS_VBIF_XIN_HALT_CTRL1 0x204
  523. #endif