intel_gvt_mmio_table.c 40 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322
  1. // SPDX-License-Identifier: MIT
  2. /*
  3. * Copyright © 2020 Intel Corporation
  4. */
  5. #include "display/bxt_dpio_phy_regs.h"
  6. #include "display/i9xx_plane_regs.h"
  7. #include "display/i9xx_wm_regs.h"
  8. #include "display/intel_audio_regs.h"
  9. #include "display/intel_backlight_regs.h"
  10. #include "display/intel_color_regs.h"
  11. #include "display/intel_crt_regs.h"
  12. #include "display/intel_cursor_regs.h"
  13. #include "display/intel_display_core.h"
  14. #include "display/intel_display_regs.h"
  15. #include "display/intel_display_types.h"
  16. #include "display/intel_dmc_regs.h"
  17. #include "display/intel_dp_aux_regs.h"
  18. #include "display/intel_dpio_phy.h"
  19. #include "display/intel_fbc_regs.h"
  20. #include "display/intel_fdi_regs.h"
  21. #include "display/intel_lvds_regs.h"
  22. #include "display/intel_pfit_regs.h"
  23. #include "display/intel_psr_regs.h"
  24. #include "display/intel_sbi_regs.h"
  25. #include "display/intel_sprite_regs.h"
  26. #include "display/intel_vga_regs.h"
  27. #include "display/skl_universal_plane_regs.h"
  28. #include "display/skl_watermark_regs.h"
  29. #include "display/vlv_dsi_pll_regs.h"
  30. #include "gt/intel_engine_regs.h"
  31. #include "gt/intel_gt_regs.h"
  32. #include "gvt/reg.h"
  33. #include "i915_drv.h"
  34. #include "i915_pvinfo.h"
  35. #include "i915_reg.h"
  36. #include "intel_gvt.h"
  37. #include "intel_mchbar_regs.h"
  38. #define MMIO_F(reg, s) do { \
  39. int ret; \
  40. ret = iter->handle_mmio_cb(iter, i915_mmio_reg_offset(reg), s); \
  41. if (ret) \
  42. return ret; \
  43. } while (0)
  44. #define MMIO_D(reg) MMIO_F(reg, 4)
  45. #define MMIO_RING_F(prefix, s) do { \
  46. MMIO_F(prefix(RENDER_RING_BASE), s); \
  47. MMIO_F(prefix(BLT_RING_BASE), s); \
  48. MMIO_F(prefix(GEN6_BSD_RING_BASE), s); \
  49. MMIO_F(prefix(VEBOX_RING_BASE), s); \
  50. if (HAS_ENGINE(to_gt(iter->i915), VCS1)) \
  51. MMIO_F(prefix(GEN8_BSD2_RING_BASE), s); \
  52. } while (0)
  53. #define MMIO_RING_D(prefix) \
  54. MMIO_RING_F(prefix, 4)
  55. static int iterate_generic_mmio(struct intel_gvt_mmio_table_iter *iter)
  56. {
  57. struct drm_i915_private *dev_priv = iter->i915;
  58. struct intel_display *display = dev_priv->display;
  59. MMIO_RING_D(RING_IMR);
  60. MMIO_D(SDEIMR);
  61. MMIO_D(SDEIER);
  62. MMIO_D(SDEIIR);
  63. MMIO_D(SDEISR);
  64. MMIO_RING_D(RING_HWSTAM);
  65. MMIO_D(BSD_HWS_PGA_GEN7);
  66. MMIO_D(BLT_HWS_PGA_GEN7);
  67. MMIO_D(VEBOX_HWS_PGA_GEN7);
  68. #define RING_REG(base) _MMIO((base) + 0x28)
  69. MMIO_RING_D(RING_REG);
  70. #undef RING_REG
  71. #define RING_REG(base) _MMIO((base) + 0x134)
  72. MMIO_RING_D(RING_REG);
  73. #undef RING_REG
  74. #define RING_REG(base) _MMIO((base) + 0x6c)
  75. MMIO_RING_D(RING_REG);
  76. #undef RING_REG
  77. MMIO_D(_MMIO(0x2148));
  78. MMIO_D(CCID(RENDER_RING_BASE));
  79. MMIO_D(_MMIO(0x12198));
  80. MMIO_D(GEN7_CXT_SIZE);
  81. MMIO_RING_D(RING_TAIL);
  82. MMIO_RING_D(RING_HEAD);
  83. MMIO_RING_D(RING_CTL);
  84. MMIO_RING_D(RING_ACTHD);
  85. MMIO_RING_D(RING_START);
  86. /* RING MODE */
  87. #define RING_REG(base) _MMIO((base) + 0x29c)
  88. MMIO_RING_D(RING_REG);
  89. #undef RING_REG
  90. MMIO_RING_D(RING_MI_MODE);
  91. MMIO_RING_D(RING_INSTPM);
  92. MMIO_RING_D(RING_TIMESTAMP);
  93. MMIO_RING_D(RING_TIMESTAMP_UDW);
  94. MMIO_D(GEN7_GT_MODE);
  95. MMIO_D(CACHE_MODE_0_GEN7);
  96. MMIO_D(CACHE_MODE_1);
  97. MMIO_D(CACHE_MODE_0);
  98. MMIO_D(_MMIO(0x2124));
  99. MMIO_D(_MMIO(0x20dc));
  100. MMIO_D(_3D_CHICKEN3);
  101. MMIO_D(_MMIO(0x2088));
  102. MMIO_D(FF_SLICE_CS_CHICKEN2);
  103. MMIO_D(_MMIO(0x2470));
  104. MMIO_D(GAM_ECOCHK);
  105. MMIO_D(GEN7_COMMON_SLICE_CHICKEN1);
  106. MMIO_D(COMMON_SLICE_CHICKEN2);
  107. MMIO_D(_MMIO(0x9030));
  108. MMIO_D(_MMIO(0x20a0));
  109. MMIO_D(_MMIO(0x2420));
  110. MMIO_D(_MMIO(0x2430));
  111. MMIO_D(_MMIO(0x2434));
  112. MMIO_D(_MMIO(0x2438));
  113. MMIO_D(_MMIO(0x243c));
  114. MMIO_D(_MMIO(0x7018));
  115. MMIO_D(HSW_HALF_SLICE_CHICKEN3);
  116. MMIO_D(GEN7_HALF_SLICE_CHICKEN1);
  117. /* display */
  118. MMIO_F(_MMIO(0x60220), 0x20);
  119. MMIO_D(_MMIO(0x602a0));
  120. MMIO_D(_MMIO(0x65050));
  121. MMIO_D(_MMIO(0x650b4));
  122. MMIO_D(_MMIO(0xc4040));
  123. MMIO_D(DERRMR);
  124. MMIO_D(PIPEDSL(display, PIPE_A));
  125. MMIO_D(PIPEDSL(display, PIPE_B));
  126. MMIO_D(PIPEDSL(display, PIPE_C));
  127. MMIO_D(PIPEDSL(display, _PIPE_EDP));
  128. MMIO_D(TRANSCONF(display, TRANSCODER_A));
  129. MMIO_D(TRANSCONF(display, TRANSCODER_B));
  130. MMIO_D(TRANSCONF(display, TRANSCODER_C));
  131. MMIO_D(TRANSCONF(display, TRANSCODER_EDP));
  132. MMIO_D(PIPESTAT(display, PIPE_A));
  133. MMIO_D(PIPESTAT(display, PIPE_B));
  134. MMIO_D(PIPESTAT(display, PIPE_C));
  135. MMIO_D(PIPESTAT(display, _PIPE_EDP));
  136. MMIO_D(PIPE_FLIPCOUNT_G4X(display, PIPE_A));
  137. MMIO_D(PIPE_FLIPCOUNT_G4X(display, PIPE_B));
  138. MMIO_D(PIPE_FLIPCOUNT_G4X(display, PIPE_C));
  139. MMIO_D(PIPE_FLIPCOUNT_G4X(display, _PIPE_EDP));
  140. MMIO_D(PIPE_FRMCOUNT_G4X(display, PIPE_A));
  141. MMIO_D(PIPE_FRMCOUNT_G4X(display, PIPE_B));
  142. MMIO_D(PIPE_FRMCOUNT_G4X(display, PIPE_C));
  143. MMIO_D(PIPE_FRMCOUNT_G4X(display, _PIPE_EDP));
  144. MMIO_D(CURCNTR(display, PIPE_A));
  145. MMIO_D(CURCNTR(display, PIPE_B));
  146. MMIO_D(CURCNTR(display, PIPE_C));
  147. MMIO_D(CURPOS(display, PIPE_A));
  148. MMIO_D(CURPOS(display, PIPE_B));
  149. MMIO_D(CURPOS(display, PIPE_C));
  150. MMIO_D(CURBASE(display, PIPE_A));
  151. MMIO_D(CURBASE(display, PIPE_B));
  152. MMIO_D(CURBASE(display, PIPE_C));
  153. MMIO_D(CUR_FBC_CTL(display, PIPE_A));
  154. MMIO_D(CUR_FBC_CTL(display, PIPE_B));
  155. MMIO_D(CUR_FBC_CTL(display, PIPE_C));
  156. MMIO_D(_MMIO(0x700ac));
  157. MMIO_D(_MMIO(0x710ac));
  158. MMIO_D(_MMIO(0x720ac));
  159. MMIO_D(_MMIO(0x70090));
  160. MMIO_D(_MMIO(0x70094));
  161. MMIO_D(_MMIO(0x70098));
  162. MMIO_D(_MMIO(0x7009c));
  163. MMIO_D(DSPCNTR(display, PIPE_A));
  164. MMIO_D(DSPADDR(display, PIPE_A));
  165. MMIO_D(DSPSTRIDE(display, PIPE_A));
  166. MMIO_D(DSPPOS(display, PIPE_A));
  167. MMIO_D(DSPSIZE(display, PIPE_A));
  168. MMIO_D(DSPSURF(display, PIPE_A));
  169. MMIO_D(DSPOFFSET(display, PIPE_A));
  170. MMIO_D(DSPSURFLIVE(display, PIPE_A));
  171. MMIO_D(REG_50080(PIPE_A, PLANE_PRIMARY));
  172. MMIO_D(DSPCNTR(display, PIPE_B));
  173. MMIO_D(DSPADDR(display, PIPE_B));
  174. MMIO_D(DSPSTRIDE(display, PIPE_B));
  175. MMIO_D(DSPPOS(display, PIPE_B));
  176. MMIO_D(DSPSIZE(display, PIPE_B));
  177. MMIO_D(DSPSURF(display, PIPE_B));
  178. MMIO_D(DSPOFFSET(display, PIPE_B));
  179. MMIO_D(DSPSURFLIVE(display, PIPE_B));
  180. MMIO_D(REG_50080(PIPE_B, PLANE_PRIMARY));
  181. MMIO_D(DSPCNTR(display, PIPE_C));
  182. MMIO_D(DSPADDR(display, PIPE_C));
  183. MMIO_D(DSPSTRIDE(display, PIPE_C));
  184. MMIO_D(DSPPOS(display, PIPE_C));
  185. MMIO_D(DSPSIZE(display, PIPE_C));
  186. MMIO_D(DSPSURF(display, PIPE_C));
  187. MMIO_D(DSPOFFSET(display, PIPE_C));
  188. MMIO_D(DSPSURFLIVE(display, PIPE_C));
  189. MMIO_D(REG_50080(PIPE_C, PLANE_PRIMARY));
  190. MMIO_D(SPRCTL(PIPE_A));
  191. MMIO_D(SPRLINOFF(PIPE_A));
  192. MMIO_D(SPRSTRIDE(PIPE_A));
  193. MMIO_D(SPRPOS(PIPE_A));
  194. MMIO_D(SPRSIZE(PIPE_A));
  195. MMIO_D(SPRKEYVAL(PIPE_A));
  196. MMIO_D(SPRKEYMSK(PIPE_A));
  197. MMIO_D(SPRSURF(PIPE_A));
  198. MMIO_D(SPRKEYMAX(PIPE_A));
  199. MMIO_D(SPROFFSET(PIPE_A));
  200. MMIO_D(SPRSCALE(PIPE_A));
  201. MMIO_D(SPRSURFLIVE(PIPE_A));
  202. MMIO_D(REG_50080(PIPE_A, PLANE_SPRITE0));
  203. MMIO_D(SPRCTL(PIPE_B));
  204. MMIO_D(SPRLINOFF(PIPE_B));
  205. MMIO_D(SPRSTRIDE(PIPE_B));
  206. MMIO_D(SPRPOS(PIPE_B));
  207. MMIO_D(SPRSIZE(PIPE_B));
  208. MMIO_D(SPRKEYVAL(PIPE_B));
  209. MMIO_D(SPRKEYMSK(PIPE_B));
  210. MMIO_D(SPRSURF(PIPE_B));
  211. MMIO_D(SPRKEYMAX(PIPE_B));
  212. MMIO_D(SPROFFSET(PIPE_B));
  213. MMIO_D(SPRSCALE(PIPE_B));
  214. MMIO_D(SPRSURFLIVE(PIPE_B));
  215. MMIO_D(REG_50080(PIPE_B, PLANE_SPRITE0));
  216. MMIO_D(SPRCTL(PIPE_C));
  217. MMIO_D(SPRLINOFF(PIPE_C));
  218. MMIO_D(SPRSTRIDE(PIPE_C));
  219. MMIO_D(SPRPOS(PIPE_C));
  220. MMIO_D(SPRSIZE(PIPE_C));
  221. MMIO_D(SPRKEYVAL(PIPE_C));
  222. MMIO_D(SPRKEYMSK(PIPE_C));
  223. MMIO_D(SPRSURF(PIPE_C));
  224. MMIO_D(SPRKEYMAX(PIPE_C));
  225. MMIO_D(SPROFFSET(PIPE_C));
  226. MMIO_D(SPRSCALE(PIPE_C));
  227. MMIO_D(SPRSURFLIVE(PIPE_C));
  228. MMIO_D(REG_50080(PIPE_C, PLANE_SPRITE0));
  229. MMIO_D(TRANS_HTOTAL(display, TRANSCODER_A));
  230. MMIO_D(TRANS_HBLANK(display, TRANSCODER_A));
  231. MMIO_D(TRANS_HSYNC(display, TRANSCODER_A));
  232. MMIO_D(TRANS_VTOTAL(display, TRANSCODER_A));
  233. MMIO_D(TRANS_VBLANK(display, TRANSCODER_A));
  234. MMIO_D(TRANS_VSYNC(display, TRANSCODER_A));
  235. MMIO_D(BCLRPAT(display, TRANSCODER_A));
  236. MMIO_D(TRANS_VSYNCSHIFT(display, TRANSCODER_A));
  237. MMIO_D(PIPESRC(display, TRANSCODER_A));
  238. MMIO_D(TRANS_HTOTAL(display, TRANSCODER_B));
  239. MMIO_D(TRANS_HBLANK(display, TRANSCODER_B));
  240. MMIO_D(TRANS_HSYNC(display, TRANSCODER_B));
  241. MMIO_D(TRANS_VTOTAL(display, TRANSCODER_B));
  242. MMIO_D(TRANS_VBLANK(display, TRANSCODER_B));
  243. MMIO_D(TRANS_VSYNC(display, TRANSCODER_B));
  244. MMIO_D(BCLRPAT(display, TRANSCODER_B));
  245. MMIO_D(TRANS_VSYNCSHIFT(display, TRANSCODER_B));
  246. MMIO_D(PIPESRC(display, TRANSCODER_B));
  247. MMIO_D(TRANS_HTOTAL(display, TRANSCODER_C));
  248. MMIO_D(TRANS_HBLANK(display, TRANSCODER_C));
  249. MMIO_D(TRANS_HSYNC(display, TRANSCODER_C));
  250. MMIO_D(TRANS_VTOTAL(display, TRANSCODER_C));
  251. MMIO_D(TRANS_VBLANK(display, TRANSCODER_C));
  252. MMIO_D(TRANS_VSYNC(display, TRANSCODER_C));
  253. MMIO_D(BCLRPAT(display, TRANSCODER_C));
  254. MMIO_D(TRANS_VSYNCSHIFT(display, TRANSCODER_C));
  255. MMIO_D(PIPESRC(display, TRANSCODER_C));
  256. MMIO_D(TRANS_HTOTAL(display, TRANSCODER_EDP));
  257. MMIO_D(TRANS_HBLANK(display, TRANSCODER_EDP));
  258. MMIO_D(TRANS_HSYNC(display, TRANSCODER_EDP));
  259. MMIO_D(TRANS_VTOTAL(display, TRANSCODER_EDP));
  260. MMIO_D(TRANS_VBLANK(display, TRANSCODER_EDP));
  261. MMIO_D(TRANS_VSYNC(display, TRANSCODER_EDP));
  262. MMIO_D(BCLRPAT(display, TRANSCODER_EDP));
  263. MMIO_D(TRANS_VSYNCSHIFT(display, TRANSCODER_EDP));
  264. MMIO_D(PIPE_DATA_M1(display, TRANSCODER_A));
  265. MMIO_D(PIPE_DATA_N1(display, TRANSCODER_A));
  266. MMIO_D(PIPE_DATA_M2(display, TRANSCODER_A));
  267. MMIO_D(PIPE_DATA_N2(display, TRANSCODER_A));
  268. MMIO_D(PIPE_LINK_M1(display, TRANSCODER_A));
  269. MMIO_D(PIPE_LINK_N1(display, TRANSCODER_A));
  270. MMIO_D(PIPE_LINK_M2(display, TRANSCODER_A));
  271. MMIO_D(PIPE_LINK_N2(display, TRANSCODER_A));
  272. MMIO_D(PIPE_DATA_M1(display, TRANSCODER_B));
  273. MMIO_D(PIPE_DATA_N1(display, TRANSCODER_B));
  274. MMIO_D(PIPE_DATA_M2(display, TRANSCODER_B));
  275. MMIO_D(PIPE_DATA_N2(display, TRANSCODER_B));
  276. MMIO_D(PIPE_LINK_M1(display, TRANSCODER_B));
  277. MMIO_D(PIPE_LINK_N1(display, TRANSCODER_B));
  278. MMIO_D(PIPE_LINK_M2(display, TRANSCODER_B));
  279. MMIO_D(PIPE_LINK_N2(display, TRANSCODER_B));
  280. MMIO_D(PIPE_DATA_M1(display, TRANSCODER_C));
  281. MMIO_D(PIPE_DATA_N1(display, TRANSCODER_C));
  282. MMIO_D(PIPE_DATA_M2(display, TRANSCODER_C));
  283. MMIO_D(PIPE_DATA_N2(display, TRANSCODER_C));
  284. MMIO_D(PIPE_LINK_M1(display, TRANSCODER_C));
  285. MMIO_D(PIPE_LINK_N1(display, TRANSCODER_C));
  286. MMIO_D(PIPE_LINK_M2(display, TRANSCODER_C));
  287. MMIO_D(PIPE_LINK_N2(display, TRANSCODER_C));
  288. MMIO_D(PIPE_DATA_M1(display, TRANSCODER_EDP));
  289. MMIO_D(PIPE_DATA_N1(display, TRANSCODER_EDP));
  290. MMIO_D(PIPE_DATA_M2(display, TRANSCODER_EDP));
  291. MMIO_D(PIPE_DATA_N2(display, TRANSCODER_EDP));
  292. MMIO_D(PIPE_LINK_M1(display, TRANSCODER_EDP));
  293. MMIO_D(PIPE_LINK_N1(display, TRANSCODER_EDP));
  294. MMIO_D(PIPE_LINK_M2(display, TRANSCODER_EDP));
  295. MMIO_D(PIPE_LINK_N2(display, TRANSCODER_EDP));
  296. MMIO_D(PF_CTL(PIPE_A));
  297. MMIO_D(PF_WIN_SZ(PIPE_A));
  298. MMIO_D(PF_WIN_POS(PIPE_A));
  299. MMIO_D(PF_VSCALE(PIPE_A));
  300. MMIO_D(PF_HSCALE(PIPE_A));
  301. MMIO_D(PF_CTL(PIPE_B));
  302. MMIO_D(PF_WIN_SZ(PIPE_B));
  303. MMIO_D(PF_WIN_POS(PIPE_B));
  304. MMIO_D(PF_VSCALE(PIPE_B));
  305. MMIO_D(PF_HSCALE(PIPE_B));
  306. MMIO_D(PF_CTL(PIPE_C));
  307. MMIO_D(PF_WIN_SZ(PIPE_C));
  308. MMIO_D(PF_WIN_POS(PIPE_C));
  309. MMIO_D(PF_VSCALE(PIPE_C));
  310. MMIO_D(PF_HSCALE(PIPE_C));
  311. MMIO_D(WM0_PIPE_ILK(PIPE_A));
  312. MMIO_D(WM0_PIPE_ILK(PIPE_B));
  313. MMIO_D(WM0_PIPE_ILK(PIPE_C));
  314. MMIO_D(WM1_LP_ILK);
  315. MMIO_D(WM2_LP_ILK);
  316. MMIO_D(WM3_LP_ILK);
  317. MMIO_D(WM1S_LP_ILK);
  318. MMIO_D(WM2S_LP_IVB);
  319. MMIO_D(WM3S_LP_IVB);
  320. MMIO_D(BLC_PWM_CPU_CTL2);
  321. MMIO_D(BLC_PWM_CPU_CTL);
  322. MMIO_D(BLC_PWM_PCH_CTL1);
  323. MMIO_D(BLC_PWM_PCH_CTL2);
  324. MMIO_D(_MMIO(0x48268));
  325. MMIO_F(PCH_GMBUS0, 4 * 4);
  326. MMIO_F(PCH_GPIO_BASE, 6 * 4);
  327. MMIO_F(_MMIO(0xe4f00), 0x28);
  328. MMIO_D(_MMIO(_PCH_TRANSACONF));
  329. MMIO_D(_MMIO(_PCH_TRANSBCONF));
  330. MMIO_D(FDI_RX_IIR(PIPE_A));
  331. MMIO_D(FDI_RX_IIR(PIPE_B));
  332. MMIO_D(FDI_RX_IIR(PIPE_C));
  333. MMIO_D(FDI_RX_IMR(PIPE_A));
  334. MMIO_D(FDI_RX_IMR(PIPE_B));
  335. MMIO_D(FDI_RX_IMR(PIPE_C));
  336. MMIO_D(FDI_RX_CTL(PIPE_A));
  337. MMIO_D(FDI_RX_CTL(PIPE_B));
  338. MMIO_D(FDI_RX_CTL(PIPE_C));
  339. MMIO_D(_MMIO(_PCH_TRANS_HTOTAL_A));
  340. MMIO_D(_MMIO(_PCH_TRANS_HBLANK_A));
  341. MMIO_D(_MMIO(_PCH_TRANS_HSYNC_A));
  342. MMIO_D(_MMIO(_PCH_TRANS_VTOTAL_A));
  343. MMIO_D(_MMIO(_PCH_TRANS_VBLANK_A));
  344. MMIO_D(_MMIO(_PCH_TRANS_VSYNC_A));
  345. MMIO_D(_MMIO(_PCH_TRANS_VSYNCSHIFT_A));
  346. MMIO_D(_MMIO(_PCH_TRANS_HTOTAL_B));
  347. MMIO_D(_MMIO(_PCH_TRANS_HBLANK_B));
  348. MMIO_D(_MMIO(_PCH_TRANS_HSYNC_B));
  349. MMIO_D(_MMIO(_PCH_TRANS_VTOTAL_B));
  350. MMIO_D(_MMIO(_PCH_TRANS_VBLANK_B));
  351. MMIO_D(_MMIO(_PCH_TRANS_VSYNC_B));
  352. MMIO_D(_MMIO(_PCH_TRANS_VSYNCSHIFT_B));
  353. MMIO_D(_MMIO(_PCH_TRANSA_DATA_M1));
  354. MMIO_D(_MMIO(_PCH_TRANSA_DATA_N1));
  355. MMIO_D(_MMIO(_PCH_TRANSA_DATA_M2));
  356. MMIO_D(_MMIO(_PCH_TRANSA_DATA_N2));
  357. MMIO_D(_MMIO(_PCH_TRANSA_LINK_M1));
  358. MMIO_D(_MMIO(_PCH_TRANSA_LINK_N1));
  359. MMIO_D(_MMIO(_PCH_TRANSA_LINK_M2));
  360. MMIO_D(_MMIO(_PCH_TRANSA_LINK_N2));
  361. MMIO_D(TRANS_DP_CTL(PIPE_A));
  362. MMIO_D(TRANS_DP_CTL(PIPE_B));
  363. MMIO_D(TRANS_DP_CTL(PIPE_C));
  364. MMIO_D(TVIDEO_DIP_CTL(PIPE_A));
  365. MMIO_D(TVIDEO_DIP_DATA(PIPE_A));
  366. MMIO_D(TVIDEO_DIP_GCP(PIPE_A));
  367. MMIO_D(TVIDEO_DIP_CTL(PIPE_B));
  368. MMIO_D(TVIDEO_DIP_DATA(PIPE_B));
  369. MMIO_D(TVIDEO_DIP_GCP(PIPE_B));
  370. MMIO_D(TVIDEO_DIP_CTL(PIPE_C));
  371. MMIO_D(TVIDEO_DIP_DATA(PIPE_C));
  372. MMIO_D(TVIDEO_DIP_GCP(PIPE_C));
  373. MMIO_D(_MMIO(_FDI_RXA_MISC));
  374. MMIO_D(_MMIO(_FDI_RXB_MISC));
  375. MMIO_D(_MMIO(_FDI_RXA_TUSIZE1));
  376. MMIO_D(_MMIO(_FDI_RXA_TUSIZE2));
  377. MMIO_D(_MMIO(_FDI_RXB_TUSIZE1));
  378. MMIO_D(_MMIO(_FDI_RXB_TUSIZE2));
  379. MMIO_D(PCH_PP_CONTROL);
  380. MMIO_D(PCH_PP_DIVISOR);
  381. MMIO_D(PCH_PP_STATUS);
  382. MMIO_D(PCH_LVDS);
  383. MMIO_D(_MMIO(_PCH_DPLL_A));
  384. MMIO_D(_MMIO(_PCH_DPLL_B));
  385. MMIO_D(_MMIO(_PCH_FPA0));
  386. MMIO_D(_MMIO(_PCH_FPA1));
  387. MMIO_D(_MMIO(_PCH_FPB0));
  388. MMIO_D(_MMIO(_PCH_FPB1));
  389. MMIO_D(PCH_DREF_CONTROL);
  390. MMIO_D(PCH_RAWCLK_FREQ);
  391. MMIO_D(PCH_DPLL_SEL);
  392. MMIO_D(_MMIO(0x61208));
  393. MMIO_D(_MMIO(0x6120c));
  394. MMIO_D(PCH_PP_ON_DELAYS);
  395. MMIO_D(PCH_PP_OFF_DELAYS);
  396. MMIO_D(_MMIO(0xe651c));
  397. MMIO_D(_MMIO(0xe661c));
  398. MMIO_D(_MMIO(0xe671c));
  399. MMIO_D(_MMIO(0xe681c));
  400. MMIO_D(_MMIO(0xe6c04));
  401. MMIO_D(_MMIO(0xe6e1c));
  402. MMIO_D(PCH_PORT_HOTPLUG);
  403. MMIO_D(LCPLL_CTL);
  404. MMIO_D(FUSE_STRAP);
  405. MMIO_D(DIGITAL_PORT_HOTPLUG_CNTRL);
  406. MMIO_D(DISP_ARB_CTL);
  407. MMIO_D(DISP_ARB_CTL2);
  408. MMIO_D(ILK_DISPLAY_CHICKEN1);
  409. MMIO_D(ILK_DISPLAY_CHICKEN2);
  410. MMIO_D(ILK_DSPCLK_GATE_D);
  411. MMIO_D(SOUTH_CHICKEN1);
  412. MMIO_D(SOUTH_CHICKEN2);
  413. MMIO_D(_MMIO(_TRANSA_CHICKEN1));
  414. MMIO_D(_MMIO(_TRANSB_CHICKEN1));
  415. MMIO_D(SOUTH_DSPCLK_GATE_D);
  416. MMIO_D(_MMIO(_TRANSA_CHICKEN2));
  417. MMIO_D(_MMIO(_TRANSB_CHICKEN2));
  418. MMIO_D(ILK_DPFC_CB_BASE(INTEL_FBC_A));
  419. MMIO_D(ILK_DPFC_CONTROL(INTEL_FBC_A));
  420. MMIO_D(ILK_DPFC_RECOMP_CTL(INTEL_FBC_A));
  421. MMIO_D(ILK_DPFC_STATUS(INTEL_FBC_A));
  422. MMIO_D(ILK_DPFC_FENCE_YOFF(INTEL_FBC_A));
  423. MMIO_D(ILK_DPFC_CHICKEN(INTEL_FBC_A));
  424. MMIO_D(ILK_FBC_RT_BASE);
  425. MMIO_D(IPS_CTL);
  426. MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_A));
  427. MMIO_D(PIPE_CSC_COEFF_BY(PIPE_A));
  428. MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_A));
  429. MMIO_D(PIPE_CSC_COEFF_BU(PIPE_A));
  430. MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_A));
  431. MMIO_D(PIPE_CSC_COEFF_BV(PIPE_A));
  432. MMIO_D(PIPE_CSC_MODE(PIPE_A));
  433. MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_A));
  434. MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_A));
  435. MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_A));
  436. MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_A));
  437. MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_A));
  438. MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_A));
  439. MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_B));
  440. MMIO_D(PIPE_CSC_COEFF_BY(PIPE_B));
  441. MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_B));
  442. MMIO_D(PIPE_CSC_COEFF_BU(PIPE_B));
  443. MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_B));
  444. MMIO_D(PIPE_CSC_COEFF_BV(PIPE_B));
  445. MMIO_D(PIPE_CSC_MODE(PIPE_B));
  446. MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_B));
  447. MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_B));
  448. MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_B));
  449. MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_B));
  450. MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_B));
  451. MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_B));
  452. MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_C));
  453. MMIO_D(PIPE_CSC_COEFF_BY(PIPE_C));
  454. MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_C));
  455. MMIO_D(PIPE_CSC_COEFF_BU(PIPE_C));
  456. MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_C));
  457. MMIO_D(PIPE_CSC_COEFF_BV(PIPE_C));
  458. MMIO_D(PIPE_CSC_MODE(PIPE_C));
  459. MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_C));
  460. MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_C));
  461. MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_C));
  462. MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_C));
  463. MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_C));
  464. MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_C));
  465. MMIO_D(PREC_PAL_INDEX(PIPE_A));
  466. MMIO_D(PREC_PAL_DATA(PIPE_A));
  467. MMIO_F(PREC_PAL_GC_MAX(PIPE_A, 0), 4 * 3);
  468. MMIO_D(PREC_PAL_INDEX(PIPE_B));
  469. MMIO_D(PREC_PAL_DATA(PIPE_B));
  470. MMIO_F(PREC_PAL_GC_MAX(PIPE_B, 0), 4 * 3);
  471. MMIO_D(PREC_PAL_INDEX(PIPE_C));
  472. MMIO_D(PREC_PAL_DATA(PIPE_C));
  473. MMIO_F(PREC_PAL_GC_MAX(PIPE_C, 0), 4 * 3);
  474. MMIO_D(_MMIO(0x60110));
  475. MMIO_D(_MMIO(0x61110));
  476. MMIO_F(_MMIO(0x70400), 0x40);
  477. MMIO_F(_MMIO(0x71400), 0x40);
  478. MMIO_F(_MMIO(0x72400), 0x40);
  479. MMIO_D(WM_LINETIME(PIPE_A));
  480. MMIO_D(WM_LINETIME(PIPE_B));
  481. MMIO_D(WM_LINETIME(PIPE_C));
  482. MMIO_D(SPLL_CTL);
  483. MMIO_D(_MMIO(_WRPLL_CTL1));
  484. MMIO_D(_MMIO(_WRPLL_CTL2));
  485. MMIO_D(PORT_CLK_SEL(PORT_A));
  486. MMIO_D(PORT_CLK_SEL(PORT_B));
  487. MMIO_D(PORT_CLK_SEL(PORT_C));
  488. MMIO_D(PORT_CLK_SEL(PORT_D));
  489. MMIO_D(PORT_CLK_SEL(PORT_E));
  490. MMIO_D(TRANS_CLK_SEL(TRANSCODER_A));
  491. MMIO_D(TRANS_CLK_SEL(TRANSCODER_B));
  492. MMIO_D(TRANS_CLK_SEL(TRANSCODER_C));
  493. MMIO_D(HSW_NDE_RSTWRN_OPT);
  494. MMIO_D(_MMIO(0x46508));
  495. MMIO_D(_MMIO(0x49080));
  496. MMIO_D(_MMIO(0x49180));
  497. MMIO_D(_MMIO(0x49280));
  498. MMIO_F(_MMIO(0x49090), 0x14);
  499. MMIO_F(_MMIO(0x49190), 0x14);
  500. MMIO_F(_MMIO(0x49290), 0x14);
  501. MMIO_D(GAMMA_MODE(PIPE_A));
  502. MMIO_D(GAMMA_MODE(PIPE_B));
  503. MMIO_D(GAMMA_MODE(PIPE_C));
  504. MMIO_D(TRANS_MULT(display, TRANSCODER_A));
  505. MMIO_D(TRANS_MULT(display, TRANSCODER_B));
  506. MMIO_D(TRANS_MULT(display, TRANSCODER_C));
  507. MMIO_D(HSW_TVIDEO_DIP_CTL(display, TRANSCODER_A));
  508. MMIO_D(HSW_TVIDEO_DIP_CTL(display, TRANSCODER_B));
  509. MMIO_D(HSW_TVIDEO_DIP_CTL(display, TRANSCODER_C));
  510. MMIO_D(SFUSE_STRAP);
  511. MMIO_D(SBI_ADDR);
  512. MMIO_D(SBI_DATA);
  513. MMIO_D(SBI_CTL_STAT);
  514. MMIO_D(PIXCLK_GATE);
  515. MMIO_F(DP_AUX_CH_CTL(AUX_CH_A), 6 * 4);
  516. MMIO_D(DDI_BUF_CTL(PORT_A));
  517. MMIO_D(DDI_BUF_CTL(PORT_B));
  518. MMIO_D(DDI_BUF_CTL(PORT_C));
  519. MMIO_D(DDI_BUF_CTL(PORT_D));
  520. MMIO_D(DDI_BUF_CTL(PORT_E));
  521. MMIO_D(DP_TP_CTL(PORT_A));
  522. MMIO_D(DP_TP_CTL(PORT_B));
  523. MMIO_D(DP_TP_CTL(PORT_C));
  524. MMIO_D(DP_TP_CTL(PORT_D));
  525. MMIO_D(DP_TP_CTL(PORT_E));
  526. MMIO_D(DP_TP_STATUS(PORT_A));
  527. MMIO_D(DP_TP_STATUS(PORT_B));
  528. MMIO_D(DP_TP_STATUS(PORT_C));
  529. MMIO_D(DP_TP_STATUS(PORT_D));
  530. MMIO_D(DP_TP_STATUS(PORT_E));
  531. MMIO_F(_MMIO(_DDI_BUF_TRANS_A), 0x50);
  532. MMIO_F(_MMIO(0x64e60), 0x50);
  533. MMIO_F(_MMIO(0x64eC0), 0x50);
  534. MMIO_F(_MMIO(0x64f20), 0x50);
  535. MMIO_F(_MMIO(0x64f80), 0x50);
  536. MMIO_D(HSW_AUD_CFG(PIPE_A));
  537. MMIO_D(HSW_AUD_PIN_ELD_CP_VLD);
  538. MMIO_D(HSW_AUD_MISC_CTRL(PIPE_A));
  539. MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_A));
  540. MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_B));
  541. MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_C));
  542. MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_EDP));
  543. MMIO_D(_MMIO(_TRANSA_MSA_MISC));
  544. MMIO_D(_MMIO(_TRANSB_MSA_MISC));
  545. MMIO_D(_MMIO(_TRANSC_MSA_MISC));
  546. MMIO_D(_MMIO(_TRANS_EDP_MSA_MISC));
  547. MMIO_D(FORCEWAKE);
  548. MMIO_D(FORCEWAKE_ACK);
  549. MMIO_D(GEN6_GT_CORE_STATUS);
  550. MMIO_D(GEN6_GT_THREAD_STATUS_REG);
  551. MMIO_D(GTFIFODBG);
  552. MMIO_D(GTFIFOCTL);
  553. MMIO_D(ECOBUS);
  554. MMIO_D(GEN6_RC_CONTROL);
  555. MMIO_D(GEN6_RC_STATE);
  556. MMIO_D(GEN6_RPNSWREQ);
  557. MMIO_D(GEN6_RC_VIDEO_FREQ);
  558. MMIO_D(GEN6_RP_DOWN_TIMEOUT);
  559. MMIO_D(GEN6_RP_INTERRUPT_LIMITS);
  560. MMIO_D(GEN6_RPSTAT1);
  561. MMIO_D(GEN6_RP_CONTROL);
  562. MMIO_D(GEN6_RP_UP_THRESHOLD);
  563. MMIO_D(GEN6_RP_DOWN_THRESHOLD);
  564. MMIO_D(GEN6_RP_CUR_UP_EI);
  565. MMIO_D(GEN6_RP_CUR_UP);
  566. MMIO_D(GEN6_RP_PREV_UP);
  567. MMIO_D(GEN6_RP_CUR_DOWN_EI);
  568. MMIO_D(GEN6_RP_CUR_DOWN);
  569. MMIO_D(GEN6_RP_PREV_DOWN);
  570. MMIO_D(GEN6_RP_UP_EI);
  571. MMIO_D(GEN6_RP_DOWN_EI);
  572. MMIO_D(GEN6_RP_IDLE_HYSTERSIS);
  573. MMIO_D(GEN6_RC1_WAKE_RATE_LIMIT);
  574. MMIO_D(GEN6_RC6_WAKE_RATE_LIMIT);
  575. MMIO_D(GEN6_RC6pp_WAKE_RATE_LIMIT);
  576. MMIO_D(GEN6_RC_EVALUATION_INTERVAL);
  577. MMIO_D(GEN6_RC_IDLE_HYSTERSIS);
  578. MMIO_D(GEN6_RC_SLEEP);
  579. MMIO_D(GEN6_RC1e_THRESHOLD);
  580. MMIO_D(GEN6_RC6_THRESHOLD);
  581. MMIO_D(GEN6_RC6p_THRESHOLD);
  582. MMIO_D(GEN6_RC6pp_THRESHOLD);
  583. MMIO_D(GEN6_PMINTRMSK);
  584. MMIO_D(RSTDBYCTL);
  585. MMIO_D(GEN6_GDRST);
  586. MMIO_F(FENCE_REG_GEN6_LO(0), 0x80);
  587. MMIO_D(CPU_VGACNTRL);
  588. MMIO_D(TILECTL);
  589. MMIO_D(GEN6_UCGCTL1);
  590. MMIO_D(GEN6_UCGCTL2);
  591. MMIO_F(_MMIO(0x4f000), 0x90);
  592. MMIO_D(GEN6_PCODE_DATA);
  593. MMIO_D(_MMIO(0x13812c));
  594. MMIO_D(GEN7_ERR_INT);
  595. MMIO_D(HSW_EDRAM_CAP);
  596. MMIO_D(HSW_IDICR);
  597. MMIO_D(GFX_FLSH_CNTL_GEN6);
  598. MMIO_D(_MMIO(0x3c));
  599. MMIO_D(_MMIO(0x860));
  600. MMIO_D(ECOSKPD(RENDER_RING_BASE));
  601. MMIO_D(_MMIO(0x121d0));
  602. MMIO_D(ECOSKPD(BLT_RING_BASE));
  603. MMIO_D(_MMIO(0x41d0));
  604. MMIO_D(GAC_ECO_BITS);
  605. MMIO_D(_MMIO(0x6200));
  606. MMIO_D(_MMIO(0x6204));
  607. MMIO_D(_MMIO(0x6208));
  608. MMIO_D(_MMIO(0x7118));
  609. MMIO_D(_MMIO(0x7180));
  610. MMIO_D(_MMIO(0x7408));
  611. MMIO_D(_MMIO(0x7c00));
  612. MMIO_D(GEN6_MBCTL);
  613. MMIO_D(_MMIO(0x911c));
  614. MMIO_D(_MMIO(0x9120));
  615. MMIO_D(GEN7_UCGCTL4);
  616. MMIO_D(GAB_CTL);
  617. MMIO_D(_MMIO(0x48800));
  618. MMIO_D(_MMIO(0xce044));
  619. MMIO_D(_MMIO(0xe6500));
  620. MMIO_D(_MMIO(0xe6504));
  621. MMIO_D(_MMIO(0xe6600));
  622. MMIO_D(_MMIO(0xe6604));
  623. MMIO_D(_MMIO(0xe6700));
  624. MMIO_D(_MMIO(0xe6704));
  625. MMIO_D(_MMIO(0xe6800));
  626. MMIO_D(_MMIO(0xe6804));
  627. MMIO_D(PCH_GMBUS4);
  628. MMIO_D(PCH_GMBUS5);
  629. MMIO_D(_MMIO(0x902c));
  630. MMIO_D(_MMIO(0xec008));
  631. MMIO_D(_MMIO(0xec00c));
  632. MMIO_D(_MMIO(0xec008 + 0x18));
  633. MMIO_D(_MMIO(0xec00c + 0x18));
  634. MMIO_D(_MMIO(0xec008 + 0x18 * 2));
  635. MMIO_D(_MMIO(0xec00c + 0x18 * 2));
  636. MMIO_D(_MMIO(0xec008 + 0x18 * 3));
  637. MMIO_D(_MMIO(0xec00c + 0x18 * 3));
  638. MMIO_D(_MMIO(0xec408));
  639. MMIO_D(_MMIO(0xec40c));
  640. MMIO_D(_MMIO(0xec408 + 0x18));
  641. MMIO_D(_MMIO(0xec40c + 0x18));
  642. MMIO_D(_MMIO(0xec408 + 0x18 * 2));
  643. MMIO_D(_MMIO(0xec40c + 0x18 * 2));
  644. MMIO_D(_MMIO(0xec408 + 0x18 * 3));
  645. MMIO_D(_MMIO(0xec40c + 0x18 * 3));
  646. MMIO_D(_MMIO(0xfc810));
  647. MMIO_D(_MMIO(0xfc81c));
  648. MMIO_D(_MMIO(0xfc828));
  649. MMIO_D(_MMIO(0xfc834));
  650. MMIO_D(_MMIO(0xfcc00));
  651. MMIO_D(_MMIO(0xfcc0c));
  652. MMIO_D(_MMIO(0xfcc18));
  653. MMIO_D(_MMIO(0xfcc24));
  654. MMIO_D(_MMIO(0xfd000));
  655. MMIO_D(_MMIO(0xfd00c));
  656. MMIO_D(_MMIO(0xfd018));
  657. MMIO_D(_MMIO(0xfd024));
  658. MMIO_D(_MMIO(0xfd034));
  659. MMIO_D(FPGA_DBG);
  660. MMIO_D(_MMIO(0x2054));
  661. MMIO_D(_MMIO(0x12054));
  662. MMIO_D(_MMIO(0x22054));
  663. MMIO_D(_MMIO(0x1a054));
  664. MMIO_D(_MMIO(0x44070));
  665. MMIO_D(_MMIO(0x2178));
  666. MMIO_D(_MMIO(0x217c));
  667. MMIO_D(_MMIO(0x12178));
  668. MMIO_D(_MMIO(0x1217c));
  669. MMIO_F(_MMIO(0x5200), 32);
  670. MMIO_F(_MMIO(0x5240), 32);
  671. MMIO_F(_MMIO(0x5280), 16);
  672. MMIO_D(BCS_SWCTRL);
  673. MMIO_F(HS_INVOCATION_COUNT, 8);
  674. MMIO_F(DS_INVOCATION_COUNT, 8);
  675. MMIO_F(IA_VERTICES_COUNT, 8);
  676. MMIO_F(IA_PRIMITIVES_COUNT, 8);
  677. MMIO_F(VS_INVOCATION_COUNT, 8);
  678. MMIO_F(GS_INVOCATION_COUNT, 8);
  679. MMIO_F(GS_PRIMITIVES_COUNT, 8);
  680. MMIO_F(CL_INVOCATION_COUNT, 8);
  681. MMIO_F(CL_PRIMITIVES_COUNT, 8);
  682. MMIO_F(PS_INVOCATION_COUNT, 8);
  683. MMIO_F(PS_DEPTH_COUNT, 8);
  684. MMIO_D(ARB_MODE);
  685. MMIO_RING_D(RING_BBADDR);
  686. MMIO_D(_MMIO(0x2220));
  687. MMIO_D(_MMIO(0x12220));
  688. MMIO_D(_MMIO(0x22220));
  689. MMIO_RING_D(RING_SYNC_1);
  690. MMIO_RING_D(RING_SYNC_0);
  691. MMIO_D(GUC_STATUS);
  692. MMIO_F(_MMIO(MCHBAR_MIRROR_BASE_SNB), 0x40000);
  693. MMIO_F(_MMIO(VGT_PVINFO_PAGE), VGT_PVINFO_SIZE);
  694. MMIO_F(LGC_PALETTE(PIPE_A, 0), 1024);
  695. MMIO_F(LGC_PALETTE(PIPE_B, 0), 1024);
  696. MMIO_F(LGC_PALETTE(PIPE_C, 0), 1024);
  697. return 0;
  698. }
  699. static int iterate_bdw_only_mmio(struct intel_gvt_mmio_table_iter *iter)
  700. {
  701. MMIO_D(HSW_PWR_WELL_CTL1);
  702. MMIO_D(HSW_PWR_WELL_CTL2);
  703. MMIO_D(HSW_PWR_WELL_CTL3);
  704. MMIO_D(HSW_PWR_WELL_CTL4);
  705. MMIO_D(HSW_PWR_WELL_CTL5);
  706. MMIO_D(HSW_PWR_WELL_CTL6);
  707. MMIO_D(WM_MISC);
  708. MMIO_D(_MMIO(_SRD_CTL_EDP));
  709. MMIO_D(_MMIO(0xb1f0));
  710. MMIO_D(_MMIO(0xb1c0));
  711. MMIO_D(_MMIO(0xb100));
  712. MMIO_D(_MMIO(0xb10c));
  713. MMIO_D(_MMIO(0xb110));
  714. MMIO_D(_MMIO(0x83a4));
  715. MMIO_D(_MMIO(0x8430));
  716. MMIO_D(_MMIO(0x2248));
  717. MMIO_D(FORCEWAKE_ACK_HSW);
  718. return 0;
  719. }
  720. static int iterate_bdw_plus_mmio(struct intel_gvt_mmio_table_iter *iter)
  721. {
  722. struct drm_i915_private *dev_priv = iter->i915;
  723. MMIO_D(GEN8_GT_IMR(0));
  724. MMIO_D(GEN8_GT_IER(0));
  725. MMIO_D(GEN8_GT_IIR(0));
  726. MMIO_D(GEN8_GT_ISR(0));
  727. MMIO_D(GEN8_GT_IMR(1));
  728. MMIO_D(GEN8_GT_IER(1));
  729. MMIO_D(GEN8_GT_IIR(1));
  730. MMIO_D(GEN8_GT_ISR(1));
  731. MMIO_D(GEN8_GT_IMR(2));
  732. MMIO_D(GEN8_GT_IER(2));
  733. MMIO_D(GEN8_GT_IIR(2));
  734. MMIO_D(GEN8_GT_ISR(2));
  735. MMIO_D(GEN8_GT_IMR(3));
  736. MMIO_D(GEN8_GT_IER(3));
  737. MMIO_D(GEN8_GT_IIR(3));
  738. MMIO_D(GEN8_GT_ISR(3));
  739. MMIO_D(GEN8_DE_PIPE_IMR(PIPE_A));
  740. MMIO_D(GEN8_DE_PIPE_IER(PIPE_A));
  741. MMIO_D(GEN8_DE_PIPE_IIR(PIPE_A));
  742. MMIO_D(GEN8_DE_PIPE_ISR(PIPE_A));
  743. MMIO_D(GEN8_DE_PIPE_IMR(PIPE_B));
  744. MMIO_D(GEN8_DE_PIPE_IER(PIPE_B));
  745. MMIO_D(GEN8_DE_PIPE_IIR(PIPE_B));
  746. MMIO_D(GEN8_DE_PIPE_ISR(PIPE_B));
  747. MMIO_D(GEN8_DE_PIPE_IMR(PIPE_C));
  748. MMIO_D(GEN8_DE_PIPE_IER(PIPE_C));
  749. MMIO_D(GEN8_DE_PIPE_IIR(PIPE_C));
  750. MMIO_D(GEN8_DE_PIPE_ISR(PIPE_C));
  751. MMIO_D(GEN8_DE_PORT_IMR);
  752. MMIO_D(GEN8_DE_PORT_IER);
  753. MMIO_D(GEN8_DE_PORT_IIR);
  754. MMIO_D(GEN8_DE_PORT_ISR);
  755. MMIO_D(GEN8_DE_MISC_IMR);
  756. MMIO_D(GEN8_DE_MISC_IER);
  757. MMIO_D(GEN8_DE_MISC_IIR);
  758. MMIO_D(GEN8_DE_MISC_ISR);
  759. MMIO_D(GEN8_PCU_IMR);
  760. MMIO_D(GEN8_PCU_IER);
  761. MMIO_D(GEN8_PCU_IIR);
  762. MMIO_D(GEN8_PCU_ISR);
  763. MMIO_D(GEN8_MASTER_IRQ);
  764. MMIO_RING_D(RING_ACTHD_UDW);
  765. #define RING_REG(base) _MMIO((base) + 0xd0)
  766. MMIO_RING_D(RING_REG);
  767. #undef RING_REG
  768. #define RING_REG(base) _MMIO((base) + 0x230)
  769. MMIO_RING_D(RING_REG);
  770. #undef RING_REG
  771. #define RING_REG(base) _MMIO((base) + 0x234)
  772. MMIO_RING_F(RING_REG, 8);
  773. #undef RING_REG
  774. #define RING_REG(base) _MMIO((base) + 0x244)
  775. MMIO_RING_D(RING_REG);
  776. #undef RING_REG
  777. #define RING_REG(base) _MMIO((base) + 0x370)
  778. MMIO_RING_F(RING_REG, 48);
  779. #undef RING_REG
  780. #define RING_REG(base) _MMIO((base) + 0x3a0)
  781. MMIO_RING_D(RING_REG);
  782. #undef RING_REG
  783. MMIO_D(PIPE_MISC(PIPE_A));
  784. MMIO_D(PIPE_MISC(PIPE_B));
  785. MMIO_D(PIPE_MISC(PIPE_C));
  786. MMIO_D(_MMIO(0x1c1d0));
  787. MMIO_D(GEN6_MBCUNIT_SNPCR);
  788. MMIO_D(GEN7_MISCCPCTL);
  789. MMIO_D(_MMIO(0x1c054));
  790. MMIO_D(GEN6_PCODE_MAILBOX);
  791. if (!IS_BROXTON(dev_priv))
  792. MMIO_D(GEN8_PRIVATE_PAT_LO);
  793. MMIO_D(GEN8_PRIVATE_PAT_HI);
  794. MMIO_D(GAMTARBMODE);
  795. #define RING_REG(base) _MMIO((base) + 0x270)
  796. MMIO_RING_F(RING_REG, 32);
  797. #undef RING_REG
  798. MMIO_RING_D(RING_HWS_PGA);
  799. MMIO_D(HDC_CHICKEN0);
  800. MMIO_D(CHICKEN_PIPESL_1(PIPE_A));
  801. MMIO_D(CHICKEN_PIPESL_1(PIPE_B));
  802. MMIO_D(CHICKEN_PIPESL_1(PIPE_C));
  803. MMIO_D(_MMIO(0x6671c));
  804. MMIO_D(_MMIO(0x66c00));
  805. MMIO_D(_MMIO(0x66c04));
  806. MMIO_D(HSW_GTT_CACHE_EN);
  807. MMIO_D(GEN8_EU_DISABLE0);
  808. MMIO_D(GEN8_EU_DISABLE1);
  809. MMIO_D(GEN8_EU_DISABLE2);
  810. MMIO_D(_MMIO(0xfdc));
  811. MMIO_D(GEN8_ROW_CHICKEN);
  812. MMIO_D(GEN7_ROW_CHICKEN2);
  813. MMIO_D(GEN8_UCGCTL6);
  814. MMIO_D(GEN8_L3SQCREG4);
  815. MMIO_D(GEN9_SCRATCH_LNCF1);
  816. MMIO_F(_MMIO(0x24d0), 48);
  817. MMIO_D(_MMIO(0x44484));
  818. MMIO_D(_MMIO(0x4448c));
  819. MMIO_D(GEN8_L3_LRA_1_GPGPU);
  820. MMIO_D(_MMIO(0x110000));
  821. MMIO_D(_MMIO(0x48400));
  822. MMIO_D(_MMIO(0x6e570));
  823. MMIO_D(_MMIO(0x65f10));
  824. MMIO_D(_MMIO(0xe194));
  825. MMIO_D(_MMIO(0xe188));
  826. MMIO_D(HALF_SLICE_CHICKEN2);
  827. MMIO_D(_MMIO(0x2580));
  828. MMIO_D(_MMIO(0xe220));
  829. MMIO_D(_MMIO(0xe230));
  830. MMIO_D(_MMIO(0xe240));
  831. MMIO_D(_MMIO(0xe260));
  832. MMIO_D(_MMIO(0xe270));
  833. MMIO_D(_MMIO(0xe280));
  834. MMIO_D(_MMIO(0xe2a0));
  835. MMIO_D(_MMIO(0xe2b0));
  836. MMIO_D(_MMIO(0xe2c0));
  837. MMIO_D(_MMIO(0x21f0));
  838. MMIO_D(GEN8_GAMW_ECO_DEV_RW_IA);
  839. MMIO_D(_MMIO(0x215c));
  840. MMIO_F(_MMIO(0x2290), 8);
  841. MMIO_D(_MMIO(0x2b00));
  842. MMIO_D(_MMIO(0x2360));
  843. MMIO_D(_MMIO(0x1c17c));
  844. MMIO_D(_MMIO(0x1c178));
  845. MMIO_D(_MMIO(0x4260));
  846. MMIO_D(_MMIO(0x4264));
  847. MMIO_D(_MMIO(0x4268));
  848. MMIO_D(_MMIO(0x426c));
  849. MMIO_D(_MMIO(0x4270));
  850. MMIO_D(_MMIO(0x4094));
  851. MMIO_D(_MMIO(0x22178));
  852. MMIO_D(_MMIO(0x1a178));
  853. MMIO_D(_MMIO(0x1a17c));
  854. MMIO_D(_MMIO(0x2217c));
  855. MMIO_D(EDP_PSR_IMR);
  856. MMIO_D(EDP_PSR_IIR);
  857. MMIO_D(_MMIO(0xe4cc));
  858. MMIO_D(GEN7_SC_INSTDONE);
  859. return 0;
  860. }
  861. static int iterate_pre_skl_mmio(struct intel_gvt_mmio_table_iter *iter)
  862. {
  863. MMIO_D(FORCEWAKE_MT);
  864. MMIO_D(PCH_ADPA);
  865. MMIO_F(PCH_DP_AUX_CH_CTL(AUX_CH_B), 6 * 4);
  866. MMIO_F(PCH_DP_AUX_CH_CTL(AUX_CH_C), 6 * 4);
  867. MMIO_F(PCH_DP_AUX_CH_CTL(AUX_CH_D), 6 * 4);
  868. MMIO_F(_MMIO(0x70440), 0xc);
  869. MMIO_F(_MMIO(0x71440), 0xc);
  870. MMIO_F(_MMIO(0x72440), 0xc);
  871. MMIO_F(_MMIO(0x7044c), 0xc);
  872. MMIO_F(_MMIO(0x7144c), 0xc);
  873. MMIO_F(_MMIO(0x7244c), 0xc);
  874. return 0;
  875. }
  876. static int iterate_skl_plus_mmio(struct intel_gvt_mmio_table_iter *iter)
  877. {
  878. struct drm_i915_private *dev_priv = iter->i915;
  879. MMIO_D(FORCEWAKE_RENDER_GEN9);
  880. MMIO_D(FORCEWAKE_ACK_RENDER_GEN9);
  881. MMIO_D(FORCEWAKE_GT_GEN9);
  882. MMIO_D(FORCEWAKE_ACK_GT_GEN9);
  883. MMIO_D(FORCEWAKE_MEDIA_GEN9);
  884. MMIO_D(FORCEWAKE_ACK_MEDIA_GEN9);
  885. MMIO_F(DP_AUX_CH_CTL(AUX_CH_B), 6 * 4);
  886. MMIO_F(DP_AUX_CH_CTL(AUX_CH_C), 6 * 4);
  887. MMIO_F(DP_AUX_CH_CTL(AUX_CH_D), 6 * 4);
  888. MMIO_D(HSW_PWR_WELL_CTL1);
  889. MMIO_D(HSW_PWR_WELL_CTL2);
  890. MMIO_D(DBUF_CTL_S(0));
  891. MMIO_D(GEN9_PG_ENABLE);
  892. MMIO_D(GEN9_MEDIA_PG_IDLE_HYSTERESIS);
  893. MMIO_D(GEN9_RENDER_PG_IDLE_HYSTERESIS);
  894. MMIO_D(GEN9_GAMT_ECO_REG_RW_IA);
  895. MMIO_D(MMCD_MISC_CTRL);
  896. MMIO_D(CHICKEN_PAR1_1);
  897. MMIO_D(DC_STATE_EN);
  898. MMIO_D(DC_STATE_DEBUG);
  899. MMIO_D(CDCLK_CTL);
  900. MMIO_D(LCPLL1_CTL);
  901. MMIO_D(LCPLL2_CTL);
  902. MMIO_D(_MMIO(_DPLL1_CFGCR1));
  903. MMIO_D(_MMIO(_DPLL2_CFGCR1));
  904. MMIO_D(_MMIO(_DPLL3_CFGCR1));
  905. MMIO_D(_MMIO(_DPLL1_CFGCR2));
  906. MMIO_D(_MMIO(_DPLL2_CFGCR2));
  907. MMIO_D(_MMIO(_DPLL3_CFGCR2));
  908. MMIO_D(DPLL_CTRL1);
  909. MMIO_D(DPLL_CTRL2);
  910. MMIO_D(DPLL_STATUS);
  911. MMIO_D(SKL_PS_WIN_POS(PIPE_A, 0));
  912. MMIO_D(SKL_PS_WIN_POS(PIPE_A, 1));
  913. MMIO_D(SKL_PS_WIN_POS(PIPE_B, 0));
  914. MMIO_D(SKL_PS_WIN_POS(PIPE_B, 1));
  915. MMIO_D(SKL_PS_WIN_POS(PIPE_C, 0));
  916. MMIO_D(SKL_PS_WIN_POS(PIPE_C, 1));
  917. MMIO_D(SKL_PS_WIN_SZ(PIPE_A, 0));
  918. MMIO_D(SKL_PS_WIN_SZ(PIPE_A, 1));
  919. MMIO_D(SKL_PS_WIN_SZ(PIPE_B, 0));
  920. MMIO_D(SKL_PS_WIN_SZ(PIPE_B, 1));
  921. MMIO_D(SKL_PS_WIN_SZ(PIPE_C, 0));
  922. MMIO_D(SKL_PS_WIN_SZ(PIPE_C, 1));
  923. MMIO_D(SKL_PS_CTRL(PIPE_A, 0));
  924. MMIO_D(SKL_PS_CTRL(PIPE_A, 1));
  925. MMIO_D(SKL_PS_CTRL(PIPE_B, 0));
  926. MMIO_D(SKL_PS_CTRL(PIPE_B, 1));
  927. MMIO_D(SKL_PS_CTRL(PIPE_C, 0));
  928. MMIO_D(SKL_PS_CTRL(PIPE_C, 1));
  929. MMIO_D(PLANE_BUF_CFG(PIPE_A, 0));
  930. MMIO_D(PLANE_BUF_CFG(PIPE_A, 1));
  931. MMIO_D(PLANE_BUF_CFG(PIPE_A, 2));
  932. MMIO_D(PLANE_BUF_CFG(PIPE_A, 3));
  933. MMIO_D(PLANE_BUF_CFG(PIPE_B, 0));
  934. MMIO_D(PLANE_BUF_CFG(PIPE_B, 1));
  935. MMIO_D(PLANE_BUF_CFG(PIPE_B, 2));
  936. MMIO_D(PLANE_BUF_CFG(PIPE_B, 3));
  937. MMIO_D(PLANE_BUF_CFG(PIPE_C, 0));
  938. MMIO_D(PLANE_BUF_CFG(PIPE_C, 1));
  939. MMIO_D(PLANE_BUF_CFG(PIPE_C, 2));
  940. MMIO_D(PLANE_BUF_CFG(PIPE_C, 3));
  941. MMIO_D(CUR_BUF_CFG(PIPE_A));
  942. MMIO_D(CUR_BUF_CFG(PIPE_B));
  943. MMIO_D(CUR_BUF_CFG(PIPE_C));
  944. MMIO_F(PLANE_WM(PIPE_A, 0, 0), 4 * 8);
  945. MMIO_F(PLANE_WM(PIPE_A, 1, 0), 4 * 8);
  946. MMIO_F(PLANE_WM(PIPE_A, 2, 0), 4 * 8);
  947. MMIO_F(PLANE_WM(PIPE_B, 0, 0), 4 * 8);
  948. MMIO_F(PLANE_WM(PIPE_B, 1, 0), 4 * 8);
  949. MMIO_F(PLANE_WM(PIPE_B, 2, 0), 4 * 8);
  950. MMIO_F(PLANE_WM(PIPE_C, 0, 0), 4 * 8);
  951. MMIO_F(PLANE_WM(PIPE_C, 1, 0), 4 * 8);
  952. MMIO_F(PLANE_WM(PIPE_C, 2, 0), 4 * 8);
  953. MMIO_F(CUR_WM(PIPE_A, 0), 4 * 8);
  954. MMIO_F(CUR_WM(PIPE_B, 0), 4 * 8);
  955. MMIO_F(CUR_WM(PIPE_C, 0), 4 * 8);
  956. MMIO_D(PLANE_WM_TRANS(PIPE_A, 0));
  957. MMIO_D(PLANE_WM_TRANS(PIPE_A, 1));
  958. MMIO_D(PLANE_WM_TRANS(PIPE_A, 2));
  959. MMIO_D(PLANE_WM_TRANS(PIPE_B, 0));
  960. MMIO_D(PLANE_WM_TRANS(PIPE_B, 1));
  961. MMIO_D(PLANE_WM_TRANS(PIPE_B, 2));
  962. MMIO_D(PLANE_WM_TRANS(PIPE_C, 0));
  963. MMIO_D(PLANE_WM_TRANS(PIPE_C, 1));
  964. MMIO_D(PLANE_WM_TRANS(PIPE_C, 2));
  965. MMIO_D(CUR_WM_TRANS(PIPE_A));
  966. MMIO_D(CUR_WM_TRANS(PIPE_B));
  967. MMIO_D(CUR_WM_TRANS(PIPE_C));
  968. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 0));
  969. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 1));
  970. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 2));
  971. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 3));
  972. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 0));
  973. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 1));
  974. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 2));
  975. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 3));
  976. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 0));
  977. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 1));
  978. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 2));
  979. MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 3));
  980. MMIO_D(PLANE_AUX_DIST(PIPE_A, 0));
  981. MMIO_D(PLANE_AUX_DIST(PIPE_A, 1));
  982. MMIO_D(PLANE_AUX_DIST(PIPE_A, 2));
  983. MMIO_D(PLANE_AUX_DIST(PIPE_A, 3));
  984. MMIO_D(PLANE_AUX_DIST(PIPE_B, 0));
  985. MMIO_D(PLANE_AUX_DIST(PIPE_B, 1));
  986. MMIO_D(PLANE_AUX_DIST(PIPE_B, 2));
  987. MMIO_D(PLANE_AUX_DIST(PIPE_B, 3));
  988. MMIO_D(PLANE_AUX_DIST(PIPE_C, 0));
  989. MMIO_D(PLANE_AUX_DIST(PIPE_C, 1));
  990. MMIO_D(PLANE_AUX_DIST(PIPE_C, 2));
  991. MMIO_D(PLANE_AUX_DIST(PIPE_C, 3));
  992. MMIO_D(PLANE_AUX_OFFSET(PIPE_A, 0));
  993. MMIO_D(PLANE_AUX_OFFSET(PIPE_A, 1));
  994. MMIO_D(PLANE_AUX_OFFSET(PIPE_A, 2));
  995. MMIO_D(PLANE_AUX_OFFSET(PIPE_A, 3));
  996. MMIO_D(PLANE_AUX_OFFSET(PIPE_B, 0));
  997. MMIO_D(PLANE_AUX_OFFSET(PIPE_B, 1));
  998. MMIO_D(PLANE_AUX_OFFSET(PIPE_B, 2));
  999. MMIO_D(PLANE_AUX_OFFSET(PIPE_B, 3));
  1000. MMIO_D(PLANE_AUX_OFFSET(PIPE_C, 0));
  1001. MMIO_D(PLANE_AUX_OFFSET(PIPE_C, 1));
  1002. MMIO_D(PLANE_AUX_OFFSET(PIPE_C, 2));
  1003. MMIO_D(PLANE_AUX_OFFSET(PIPE_C, 3));
  1004. MMIO_D(PLANE_CTL(PIPE_A, 2));
  1005. MMIO_D(PLANE_CTL(PIPE_B, 2));
  1006. MMIO_D(PLANE_CTL(PIPE_C, 2));
  1007. MMIO_D(PLANE_SURF(PIPE_A, 2));
  1008. MMIO_D(PLANE_SURF(PIPE_B, 2));
  1009. MMIO_D(PLANE_SURF(PIPE_C, 2));
  1010. MMIO_D(DMC_SSP_BASE);
  1011. MMIO_D(DMC_HTP_SKL);
  1012. MMIO_D(DMC_LAST_WRITE);
  1013. MMIO_D(BDW_SCRATCH1);
  1014. MMIO_D(SKL_DFSM);
  1015. MMIO_D(DISPIO_CR_TX_BMU_CR0);
  1016. MMIO_F(GEN9_GFX_MOCS(0), 0x7f8);
  1017. MMIO_F(GEN7_L3CNTLREG2, 0x80);
  1018. MMIO_D(RPM_CONFIG0);
  1019. MMIO_D(_MMIO(0xd08));
  1020. MMIO_D(RC6_LOCATION);
  1021. MMIO_D(GEN7_FF_SLICE_CS_CHICKEN1);
  1022. MMIO_D(GEN9_CS_DEBUG_MODE1);
  1023. /* TRTT */
  1024. MMIO_D(TRVATTL3PTRDW(0));
  1025. MMIO_D(TRVATTL3PTRDW(1));
  1026. MMIO_D(TRVATTL3PTRDW(2));
  1027. MMIO_D(TRVATTL3PTRDW(3));
  1028. MMIO_D(TRVADR);
  1029. MMIO_D(TRTTE);
  1030. MMIO_D(_MMIO(0x4dfc));
  1031. MMIO_D(_MMIO(0x46430));
  1032. MMIO_D(_MMIO(0x46520));
  1033. MMIO_D(_MMIO(0xc403c));
  1034. MMIO_D(GEN8_GARBCNTL);
  1035. MMIO_D(DMA_CTRL);
  1036. MMIO_D(_MMIO(0x65900));
  1037. MMIO_D(GEN6_STOLEN_RESERVED);
  1038. MMIO_D(_MMIO(0x4068));
  1039. MMIO_D(_MMIO(0x67054));
  1040. MMIO_D(_MMIO(0x6e560));
  1041. MMIO_D(_MMIO(0x6e554));
  1042. MMIO_D(_MMIO(0x2b20));
  1043. MMIO_D(_MMIO(0x65f00));
  1044. MMIO_D(_MMIO(0x65f08));
  1045. MMIO_D(_MMIO(0x320f0));
  1046. MMIO_D(_MMIO(0x70034));
  1047. MMIO_D(_MMIO(0x71034));
  1048. MMIO_D(_MMIO(0x72034));
  1049. MMIO_D(PLANE_KEYVAL(PIPE_A, 0));
  1050. MMIO_D(PLANE_KEYVAL(PIPE_B, 0));
  1051. MMIO_D(PLANE_KEYVAL(PIPE_C, 0));
  1052. MMIO_D(PLANE_KEYMAX(PIPE_A, 0));
  1053. MMIO_D(PLANE_KEYMAX(PIPE_B, 0));
  1054. MMIO_D(PLANE_KEYMAX(PIPE_C, 0));
  1055. MMIO_D(PLANE_KEYMSK(PIPE_A, 0));
  1056. MMIO_D(PLANE_KEYMSK(PIPE_B, 0));
  1057. MMIO_D(PLANE_KEYMSK(PIPE_C, 0));
  1058. MMIO_D(_MMIO(0x44500));
  1059. #define CSFE_CHICKEN1_REG(base) _MMIO((base) + 0xD4)
  1060. MMIO_RING_D(CSFE_CHICKEN1_REG);
  1061. #undef CSFE_CHICKEN1_REG
  1062. MMIO_D(GEN8_HDC_CHICKEN1);
  1063. MMIO_D(GEN9_WM_CHICKEN3);
  1064. if (IS_KABYLAKE(dev_priv) ||
  1065. IS_COFFEELAKE(dev_priv) || IS_COMETLAKE(dev_priv))
  1066. MMIO_D(GAMT_CHKN_BIT_REG);
  1067. if (!IS_BROXTON(dev_priv))
  1068. MMIO_D(GEN9_CTX_PREEMPT_REG);
  1069. MMIO_F(_MMIO(DMC_MMIO_START_RANGE), 0x3000);
  1070. return 0;
  1071. }
  1072. static int iterate_bxt_mmio(struct intel_gvt_mmio_table_iter *iter)
  1073. {
  1074. struct drm_i915_private *dev_priv = iter->i915;
  1075. struct intel_display *display = dev_priv->display;
  1076. MMIO_F(_MMIO(0x80000), 0x3000);
  1077. MMIO_D(GEN7_SAMPLER_INSTDONE);
  1078. MMIO_D(GEN7_ROW_INSTDONE);
  1079. MMIO_D(GEN8_FAULT_TLB_DATA0);
  1080. MMIO_D(GEN8_FAULT_TLB_DATA1);
  1081. MMIO_D(ERROR_GEN6);
  1082. MMIO_D(DONE_REG);
  1083. MMIO_D(EIR);
  1084. MMIO_D(PGTBL_ER);
  1085. MMIO_D(_MMIO(0x4194));
  1086. MMIO_D(_MMIO(0x4294));
  1087. MMIO_D(_MMIO(0x4494));
  1088. MMIO_RING_D(RING_PSMI_CTL);
  1089. MMIO_RING_D(RING_DMA_FADD);
  1090. MMIO_RING_D(RING_DMA_FADD_UDW);
  1091. MMIO_RING_D(RING_IPEHR);
  1092. MMIO_RING_D(RING_INSTPS);
  1093. MMIO_RING_D(RING_BBADDR_UDW);
  1094. MMIO_RING_D(RING_BBSTATE);
  1095. MMIO_RING_D(RING_IPEIR);
  1096. MMIO_F(SOFT_SCRATCH(0), 16 * 4);
  1097. MMIO_D(BXT_P_CR_GT_DISP_PWRON);
  1098. MMIO_D(BXT_RP_STATE_CAP);
  1099. MMIO_D(BXT_PHY_CTL_FAMILY(DPIO_PHY0));
  1100. MMIO_D(BXT_PHY_CTL_FAMILY(DPIO_PHY1));
  1101. MMIO_D(BXT_PHY_CTL(PORT_A));
  1102. MMIO_D(BXT_PHY_CTL(PORT_B));
  1103. MMIO_D(BXT_PHY_CTL(PORT_C));
  1104. MMIO_D(BXT_PORT_PLL_ENABLE(PORT_A));
  1105. MMIO_D(BXT_PORT_PLL_ENABLE(PORT_B));
  1106. MMIO_D(BXT_PORT_PLL_ENABLE(PORT_C));
  1107. MMIO_D(BXT_PORT_CL1CM_DW0(DPIO_PHY0));
  1108. MMIO_D(BXT_PORT_CL1CM_DW9(DPIO_PHY0));
  1109. MMIO_D(BXT_PORT_CL1CM_DW10(DPIO_PHY0));
  1110. MMIO_D(BXT_PORT_CL1CM_DW28(DPIO_PHY0));
  1111. MMIO_D(BXT_PORT_CL1CM_DW30(DPIO_PHY0));
  1112. MMIO_D(BXT_PORT_CL2CM_DW6(DPIO_PHY0));
  1113. MMIO_D(BXT_PORT_REF_DW3(DPIO_PHY0));
  1114. MMIO_D(BXT_PORT_REF_DW6(DPIO_PHY0));
  1115. MMIO_D(BXT_PORT_REF_DW8(DPIO_PHY0));
  1116. MMIO_D(BXT_PORT_CL1CM_DW0(DPIO_PHY1));
  1117. MMIO_D(BXT_PORT_CL1CM_DW9(DPIO_PHY1));
  1118. MMIO_D(BXT_PORT_CL1CM_DW10(DPIO_PHY1));
  1119. MMIO_D(BXT_PORT_CL1CM_DW28(DPIO_PHY1));
  1120. MMIO_D(BXT_PORT_CL1CM_DW30(DPIO_PHY1));
  1121. MMIO_D(BXT_PORT_CL2CM_DW6(DPIO_PHY1));
  1122. MMIO_D(BXT_PORT_REF_DW3(DPIO_PHY1));
  1123. MMIO_D(BXT_PORT_REF_DW6(DPIO_PHY1));
  1124. MMIO_D(BXT_PORT_REF_DW8(DPIO_PHY1));
  1125. MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY0, DPIO_CH0));
  1126. MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY0, DPIO_CH0));
  1127. MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY0, DPIO_CH0));
  1128. MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY0, DPIO_CH0));
  1129. MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY0, DPIO_CH0));
  1130. MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY0, DPIO_CH0));
  1131. MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY0, DPIO_CH0));
  1132. MMIO_D(BXT_PORT_TX_DW2_LN(DPIO_PHY0, DPIO_CH0, 0));
  1133. MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY0, DPIO_CH0));
  1134. MMIO_D(BXT_PORT_TX_DW3_LN(DPIO_PHY0, DPIO_CH0, 0));
  1135. MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY0, DPIO_CH0));
  1136. MMIO_D(BXT_PORT_TX_DW4_LN(DPIO_PHY0, DPIO_CH0, 0));
  1137. MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY0, DPIO_CH0));
  1138. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 0));
  1139. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 1));
  1140. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 2));
  1141. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 3));
  1142. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 0));
  1143. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 1));
  1144. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 2));
  1145. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 3));
  1146. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 6));
  1147. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 8));
  1148. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 9));
  1149. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 10));
  1150. MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY0, DPIO_CH1));
  1151. MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY0, DPIO_CH1));
  1152. MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY0, DPIO_CH1));
  1153. MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY0, DPIO_CH1));
  1154. MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY0, DPIO_CH1));
  1155. MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY0, DPIO_CH1));
  1156. MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY0, DPIO_CH1));
  1157. MMIO_D(BXT_PORT_TX_DW2_LN(DPIO_PHY0, DPIO_CH1, 0));
  1158. MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY0, DPIO_CH1));
  1159. MMIO_D(BXT_PORT_TX_DW3_LN(DPIO_PHY0, DPIO_CH1, 0));
  1160. MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY0, DPIO_CH1));
  1161. MMIO_D(BXT_PORT_TX_DW4_LN(DPIO_PHY0, DPIO_CH1, 0));
  1162. MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY0, DPIO_CH1));
  1163. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 0));
  1164. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 1));
  1165. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 2));
  1166. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 3));
  1167. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 0));
  1168. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 1));
  1169. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 2));
  1170. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 3));
  1171. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 6));
  1172. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 8));
  1173. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 9));
  1174. MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 10));
  1175. MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY1, DPIO_CH0));
  1176. MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY1, DPIO_CH0));
  1177. MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY1, DPIO_CH0));
  1178. MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY1, DPIO_CH0));
  1179. MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY1, DPIO_CH0));
  1180. MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY1, DPIO_CH0));
  1181. MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY1, DPIO_CH0));
  1182. MMIO_D(BXT_PORT_TX_DW2_LN(DPIO_PHY1, DPIO_CH0, 0));
  1183. MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY1, DPIO_CH0));
  1184. MMIO_D(BXT_PORT_TX_DW3_LN(DPIO_PHY1, DPIO_CH0, 0));
  1185. MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY1, DPIO_CH0));
  1186. MMIO_D(BXT_PORT_TX_DW4_LN(DPIO_PHY1, DPIO_CH0, 0));
  1187. MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY1, DPIO_CH0));
  1188. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 0));
  1189. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 1));
  1190. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 2));
  1191. MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 3));
  1192. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 0));
  1193. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 1));
  1194. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 2));
  1195. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 3));
  1196. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 6));
  1197. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 8));
  1198. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 9));
  1199. MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 10));
  1200. MMIO_D(BXT_DE_PLL_CTL);
  1201. MMIO_D(BXT_DE_PLL_ENABLE);
  1202. MMIO_D(BXT_DSI_PLL_CTL);
  1203. MMIO_D(BXT_DSI_PLL_ENABLE);
  1204. MMIO_D(GEN9_CLKGATE_DIS_0);
  1205. MMIO_D(GEN9_CLKGATE_DIS_4);
  1206. MMIO_D(HSW_TVIDEO_DIP_GCP(display, TRANSCODER_A));
  1207. MMIO_D(HSW_TVIDEO_DIP_GCP(display, TRANSCODER_B));
  1208. MMIO_D(HSW_TVIDEO_DIP_GCP(display, TRANSCODER_C));
  1209. MMIO_D(RC6_CTX_BASE);
  1210. MMIO_D(GEN8_PUSHBUS_CONTROL);
  1211. MMIO_D(GEN8_PUSHBUS_ENABLE);
  1212. MMIO_D(GEN8_PUSHBUS_SHIFT);
  1213. MMIO_D(GEN6_GFXPAUSE);
  1214. MMIO_D(GEN8_L3SQCREG1);
  1215. MMIO_D(GEN8_L3CNTLREG);
  1216. MMIO_D(_MMIO(0x20D8));
  1217. MMIO_F(GEN8_RING_CS_GPR(RENDER_RING_BASE, 0), 0x40);
  1218. MMIO_F(GEN8_RING_CS_GPR(GEN6_BSD_RING_BASE, 0), 0x40);
  1219. MMIO_F(GEN8_RING_CS_GPR(BLT_RING_BASE, 0), 0x40);
  1220. MMIO_F(GEN8_RING_CS_GPR(VEBOX_RING_BASE, 0), 0x40);
  1221. MMIO_D(GEN9_CTX_PREEMPT_REG);
  1222. MMIO_D(GEN8_PRIVATE_PAT_LO);
  1223. return 0;
  1224. }
  1225. /**
  1226. * intel_gvt_iterate_mmio_table - Iterate the GVT MMIO table
  1227. * @iter: the iterator
  1228. *
  1229. * This function is called for iterating the GVT MMIO table when i915 is
  1230. * taking the snapshot of the HW and GVT is building MMIO tracking table.
  1231. */
  1232. int intel_gvt_iterate_mmio_table(struct intel_gvt_mmio_table_iter *iter)
  1233. {
  1234. struct drm_i915_private *i915 = iter->i915;
  1235. int ret;
  1236. ret = iterate_generic_mmio(iter);
  1237. if (ret)
  1238. goto err;
  1239. if (IS_BROADWELL(i915)) {
  1240. ret = iterate_bdw_only_mmio(iter);
  1241. if (ret)
  1242. goto err;
  1243. ret = iterate_bdw_plus_mmio(iter);
  1244. if (ret)
  1245. goto err;
  1246. ret = iterate_pre_skl_mmio(iter);
  1247. if (ret)
  1248. goto err;
  1249. } else if (IS_SKYLAKE(i915) ||
  1250. IS_KABYLAKE(i915) ||
  1251. IS_COFFEELAKE(i915) ||
  1252. IS_COMETLAKE(i915)) {
  1253. ret = iterate_bdw_plus_mmio(iter);
  1254. if (ret)
  1255. goto err;
  1256. ret = iterate_skl_plus_mmio(iter);
  1257. if (ret)
  1258. goto err;
  1259. } else if (IS_BROXTON(i915)) {
  1260. ret = iterate_bdw_plus_mmio(iter);
  1261. if (ret)
  1262. goto err;
  1263. ret = iterate_skl_plus_mmio(iter);
  1264. if (ret)
  1265. goto err;
  1266. ret = iterate_bxt_mmio(iter);
  1267. if (ret)
  1268. goto err;
  1269. }
  1270. return 0;
  1271. err:
  1272. return ret;
  1273. }
  1274. EXPORT_SYMBOL_NS_GPL(intel_gvt_iterate_mmio_table, "I915_GVT");