0001
0002
0003
0004
0005
0006 #include "display/intel_audio_regs.h"
0007 #include "display/intel_dmc_regs.h"
0008 #include "display/vlv_dsi_pll_regs.h"
0009 #include "gt/intel_gt_regs.h"
0010 #include "gvt/gvt.h"
0011
0012 #include "i915_drv.h"
0013 #include "i915_pvinfo.h"
0014 #include "i915_reg.h"
0015 #include "intel_gvt.h"
0016 #include "intel_mchbar_regs.h"
0017
0018 #define MMIO_F(reg, s) do { \
0019 int ret; \
0020 ret = iter->handle_mmio_cb(iter, i915_mmio_reg_offset(reg), s); \
0021 if (ret) \
0022 return ret; \
0023 } while (0)
0024
0025 #define MMIO_D(reg) MMIO_F(reg, 4)
0026
0027 #define MMIO_RING_F(prefix, s) do { \
0028 MMIO_F(prefix(RENDER_RING_BASE), s); \
0029 MMIO_F(prefix(BLT_RING_BASE), s); \
0030 MMIO_F(prefix(GEN6_BSD_RING_BASE), s); \
0031 MMIO_F(prefix(VEBOX_RING_BASE), s); \
0032 if (HAS_ENGINE(to_gt(iter->i915), VCS1)) \
0033 MMIO_F(prefix(GEN8_BSD2_RING_BASE), s); \
0034 } while (0)
0035
0036 #define MMIO_RING_D(prefix) \
0037 MMIO_RING_F(prefix, 4)
0038
0039 static int iterate_generic_mmio(struct intel_gvt_mmio_table_iter *iter)
0040 {
0041 struct drm_i915_private *dev_priv = iter->i915;
0042
0043 MMIO_RING_D(RING_IMR);
0044 MMIO_D(SDEIMR);
0045 MMIO_D(SDEIER);
0046 MMIO_D(SDEIIR);
0047 MMIO_D(SDEISR);
0048 MMIO_RING_D(RING_HWSTAM);
0049 MMIO_D(BSD_HWS_PGA_GEN7);
0050 MMIO_D(BLT_HWS_PGA_GEN7);
0051 MMIO_D(VEBOX_HWS_PGA_GEN7);
0052
0053 #define RING_REG(base) _MMIO((base) + 0x28)
0054 MMIO_RING_D(RING_REG);
0055 #undef RING_REG
0056
0057 #define RING_REG(base) _MMIO((base) + 0x134)
0058 MMIO_RING_D(RING_REG);
0059 #undef RING_REG
0060
0061 #define RING_REG(base) _MMIO((base) + 0x6c)
0062 MMIO_RING_D(RING_REG);
0063 #undef RING_REG
0064 MMIO_D(_MMIO(0x2148));
0065 MMIO_D(CCID(RENDER_RING_BASE));
0066 MMIO_D(_MMIO(0x12198));
0067 MMIO_D(GEN7_CXT_SIZE);
0068 MMIO_RING_D(RING_TAIL);
0069 MMIO_RING_D(RING_HEAD);
0070 MMIO_RING_D(RING_CTL);
0071 MMIO_RING_D(RING_ACTHD);
0072 MMIO_RING_D(RING_START);
0073
0074
0075 #define RING_REG(base) _MMIO((base) + 0x29c)
0076 MMIO_RING_D(RING_REG);
0077 #undef RING_REG
0078
0079 MMIO_RING_D(RING_MI_MODE);
0080 MMIO_RING_D(RING_INSTPM);
0081 MMIO_RING_D(RING_TIMESTAMP);
0082 MMIO_RING_D(RING_TIMESTAMP_UDW);
0083 MMIO_D(GEN7_GT_MODE);
0084 MMIO_D(CACHE_MODE_0_GEN7);
0085 MMIO_D(CACHE_MODE_1);
0086 MMIO_D(CACHE_MODE_0);
0087 MMIO_D(_MMIO(0x2124));
0088 MMIO_D(_MMIO(0x20dc));
0089 MMIO_D(_3D_CHICKEN3);
0090 MMIO_D(_MMIO(0x2088));
0091 MMIO_D(FF_SLICE_CS_CHICKEN2);
0092 MMIO_D(_MMIO(0x2470));
0093 MMIO_D(GAM_ECOCHK);
0094 MMIO_D(GEN7_COMMON_SLICE_CHICKEN1);
0095 MMIO_D(COMMON_SLICE_CHICKEN2);
0096 MMIO_D(_MMIO(0x9030));
0097 MMIO_D(_MMIO(0x20a0));
0098 MMIO_D(_MMIO(0x2420));
0099 MMIO_D(_MMIO(0x2430));
0100 MMIO_D(_MMIO(0x2434));
0101 MMIO_D(_MMIO(0x2438));
0102 MMIO_D(_MMIO(0x243c));
0103 MMIO_D(_MMIO(0x7018));
0104 MMIO_D(HALF_SLICE_CHICKEN3);
0105 MMIO_D(GEN7_HALF_SLICE_CHICKEN1);
0106
0107 MMIO_F(_MMIO(0x60220), 0x20);
0108 MMIO_D(_MMIO(0x602a0));
0109 MMIO_D(_MMIO(0x65050));
0110 MMIO_D(_MMIO(0x650b4));
0111 MMIO_D(_MMIO(0xc4040));
0112 MMIO_D(DERRMR);
0113 MMIO_D(PIPEDSL(PIPE_A));
0114 MMIO_D(PIPEDSL(PIPE_B));
0115 MMIO_D(PIPEDSL(PIPE_C));
0116 MMIO_D(PIPEDSL(_PIPE_EDP));
0117 MMIO_D(PIPECONF(PIPE_A));
0118 MMIO_D(PIPECONF(PIPE_B));
0119 MMIO_D(PIPECONF(PIPE_C));
0120 MMIO_D(PIPECONF(_PIPE_EDP));
0121 MMIO_D(PIPESTAT(PIPE_A));
0122 MMIO_D(PIPESTAT(PIPE_B));
0123 MMIO_D(PIPESTAT(PIPE_C));
0124 MMIO_D(PIPESTAT(_PIPE_EDP));
0125 MMIO_D(PIPE_FLIPCOUNT_G4X(PIPE_A));
0126 MMIO_D(PIPE_FLIPCOUNT_G4X(PIPE_B));
0127 MMIO_D(PIPE_FLIPCOUNT_G4X(PIPE_C));
0128 MMIO_D(PIPE_FLIPCOUNT_G4X(_PIPE_EDP));
0129 MMIO_D(PIPE_FRMCOUNT_G4X(PIPE_A));
0130 MMIO_D(PIPE_FRMCOUNT_G4X(PIPE_B));
0131 MMIO_D(PIPE_FRMCOUNT_G4X(PIPE_C));
0132 MMIO_D(PIPE_FRMCOUNT_G4X(_PIPE_EDP));
0133 MMIO_D(CURCNTR(PIPE_A));
0134 MMIO_D(CURCNTR(PIPE_B));
0135 MMIO_D(CURCNTR(PIPE_C));
0136 MMIO_D(CURPOS(PIPE_A));
0137 MMIO_D(CURPOS(PIPE_B));
0138 MMIO_D(CURPOS(PIPE_C));
0139 MMIO_D(CURBASE(PIPE_A));
0140 MMIO_D(CURBASE(PIPE_B));
0141 MMIO_D(CURBASE(PIPE_C));
0142 MMIO_D(CUR_FBC_CTL(PIPE_A));
0143 MMIO_D(CUR_FBC_CTL(PIPE_B));
0144 MMIO_D(CUR_FBC_CTL(PIPE_C));
0145 MMIO_D(_MMIO(0x700ac));
0146 MMIO_D(_MMIO(0x710ac));
0147 MMIO_D(_MMIO(0x720ac));
0148 MMIO_D(_MMIO(0x70090));
0149 MMIO_D(_MMIO(0x70094));
0150 MMIO_D(_MMIO(0x70098));
0151 MMIO_D(_MMIO(0x7009c));
0152 MMIO_D(DSPCNTR(PIPE_A));
0153 MMIO_D(DSPADDR(PIPE_A));
0154 MMIO_D(DSPSTRIDE(PIPE_A));
0155 MMIO_D(DSPPOS(PIPE_A));
0156 MMIO_D(DSPSIZE(PIPE_A));
0157 MMIO_D(DSPSURF(PIPE_A));
0158 MMIO_D(DSPOFFSET(PIPE_A));
0159 MMIO_D(DSPSURFLIVE(PIPE_A));
0160 MMIO_D(REG_50080(PIPE_A, PLANE_PRIMARY));
0161 MMIO_D(DSPCNTR(PIPE_B));
0162 MMIO_D(DSPADDR(PIPE_B));
0163 MMIO_D(DSPSTRIDE(PIPE_B));
0164 MMIO_D(DSPPOS(PIPE_B));
0165 MMIO_D(DSPSIZE(PIPE_B));
0166 MMIO_D(DSPSURF(PIPE_B));
0167 MMIO_D(DSPOFFSET(PIPE_B));
0168 MMIO_D(DSPSURFLIVE(PIPE_B));
0169 MMIO_D(REG_50080(PIPE_B, PLANE_PRIMARY));
0170 MMIO_D(DSPCNTR(PIPE_C));
0171 MMIO_D(DSPADDR(PIPE_C));
0172 MMIO_D(DSPSTRIDE(PIPE_C));
0173 MMIO_D(DSPPOS(PIPE_C));
0174 MMIO_D(DSPSIZE(PIPE_C));
0175 MMIO_D(DSPSURF(PIPE_C));
0176 MMIO_D(DSPOFFSET(PIPE_C));
0177 MMIO_D(DSPSURFLIVE(PIPE_C));
0178 MMIO_D(REG_50080(PIPE_C, PLANE_PRIMARY));
0179 MMIO_D(SPRCTL(PIPE_A));
0180 MMIO_D(SPRLINOFF(PIPE_A));
0181 MMIO_D(SPRSTRIDE(PIPE_A));
0182 MMIO_D(SPRPOS(PIPE_A));
0183 MMIO_D(SPRSIZE(PIPE_A));
0184 MMIO_D(SPRKEYVAL(PIPE_A));
0185 MMIO_D(SPRKEYMSK(PIPE_A));
0186 MMIO_D(SPRSURF(PIPE_A));
0187 MMIO_D(SPRKEYMAX(PIPE_A));
0188 MMIO_D(SPROFFSET(PIPE_A));
0189 MMIO_D(SPRSCALE(PIPE_A));
0190 MMIO_D(SPRSURFLIVE(PIPE_A));
0191 MMIO_D(REG_50080(PIPE_A, PLANE_SPRITE0));
0192 MMIO_D(SPRCTL(PIPE_B));
0193 MMIO_D(SPRLINOFF(PIPE_B));
0194 MMIO_D(SPRSTRIDE(PIPE_B));
0195 MMIO_D(SPRPOS(PIPE_B));
0196 MMIO_D(SPRSIZE(PIPE_B));
0197 MMIO_D(SPRKEYVAL(PIPE_B));
0198 MMIO_D(SPRKEYMSK(PIPE_B));
0199 MMIO_D(SPRSURF(PIPE_B));
0200 MMIO_D(SPRKEYMAX(PIPE_B));
0201 MMIO_D(SPROFFSET(PIPE_B));
0202 MMIO_D(SPRSCALE(PIPE_B));
0203 MMIO_D(SPRSURFLIVE(PIPE_B));
0204 MMIO_D(REG_50080(PIPE_B, PLANE_SPRITE0));
0205 MMIO_D(SPRCTL(PIPE_C));
0206 MMIO_D(SPRLINOFF(PIPE_C));
0207 MMIO_D(SPRSTRIDE(PIPE_C));
0208 MMIO_D(SPRPOS(PIPE_C));
0209 MMIO_D(SPRSIZE(PIPE_C));
0210 MMIO_D(SPRKEYVAL(PIPE_C));
0211 MMIO_D(SPRKEYMSK(PIPE_C));
0212 MMIO_D(SPRSURF(PIPE_C));
0213 MMIO_D(SPRKEYMAX(PIPE_C));
0214 MMIO_D(SPROFFSET(PIPE_C));
0215 MMIO_D(SPRSCALE(PIPE_C));
0216 MMIO_D(SPRSURFLIVE(PIPE_C));
0217 MMIO_D(REG_50080(PIPE_C, PLANE_SPRITE0));
0218 MMIO_D(HTOTAL(TRANSCODER_A));
0219 MMIO_D(HBLANK(TRANSCODER_A));
0220 MMIO_D(HSYNC(TRANSCODER_A));
0221 MMIO_D(VTOTAL(TRANSCODER_A));
0222 MMIO_D(VBLANK(TRANSCODER_A));
0223 MMIO_D(VSYNC(TRANSCODER_A));
0224 MMIO_D(BCLRPAT(TRANSCODER_A));
0225 MMIO_D(VSYNCSHIFT(TRANSCODER_A));
0226 MMIO_D(PIPESRC(TRANSCODER_A));
0227 MMIO_D(HTOTAL(TRANSCODER_B));
0228 MMIO_D(HBLANK(TRANSCODER_B));
0229 MMIO_D(HSYNC(TRANSCODER_B));
0230 MMIO_D(VTOTAL(TRANSCODER_B));
0231 MMIO_D(VBLANK(TRANSCODER_B));
0232 MMIO_D(VSYNC(TRANSCODER_B));
0233 MMIO_D(BCLRPAT(TRANSCODER_B));
0234 MMIO_D(VSYNCSHIFT(TRANSCODER_B));
0235 MMIO_D(PIPESRC(TRANSCODER_B));
0236 MMIO_D(HTOTAL(TRANSCODER_C));
0237 MMIO_D(HBLANK(TRANSCODER_C));
0238 MMIO_D(HSYNC(TRANSCODER_C));
0239 MMIO_D(VTOTAL(TRANSCODER_C));
0240 MMIO_D(VBLANK(TRANSCODER_C));
0241 MMIO_D(VSYNC(TRANSCODER_C));
0242 MMIO_D(BCLRPAT(TRANSCODER_C));
0243 MMIO_D(VSYNCSHIFT(TRANSCODER_C));
0244 MMIO_D(PIPESRC(TRANSCODER_C));
0245 MMIO_D(HTOTAL(TRANSCODER_EDP));
0246 MMIO_D(HBLANK(TRANSCODER_EDP));
0247 MMIO_D(HSYNC(TRANSCODER_EDP));
0248 MMIO_D(VTOTAL(TRANSCODER_EDP));
0249 MMIO_D(VBLANK(TRANSCODER_EDP));
0250 MMIO_D(VSYNC(TRANSCODER_EDP));
0251 MMIO_D(BCLRPAT(TRANSCODER_EDP));
0252 MMIO_D(VSYNCSHIFT(TRANSCODER_EDP));
0253 MMIO_D(PIPE_DATA_M1(TRANSCODER_A));
0254 MMIO_D(PIPE_DATA_N1(TRANSCODER_A));
0255 MMIO_D(PIPE_DATA_M2(TRANSCODER_A));
0256 MMIO_D(PIPE_DATA_N2(TRANSCODER_A));
0257 MMIO_D(PIPE_LINK_M1(TRANSCODER_A));
0258 MMIO_D(PIPE_LINK_N1(TRANSCODER_A));
0259 MMIO_D(PIPE_LINK_M2(TRANSCODER_A));
0260 MMIO_D(PIPE_LINK_N2(TRANSCODER_A));
0261 MMIO_D(PIPE_DATA_M1(TRANSCODER_B));
0262 MMIO_D(PIPE_DATA_N1(TRANSCODER_B));
0263 MMIO_D(PIPE_DATA_M2(TRANSCODER_B));
0264 MMIO_D(PIPE_DATA_N2(TRANSCODER_B));
0265 MMIO_D(PIPE_LINK_M1(TRANSCODER_B));
0266 MMIO_D(PIPE_LINK_N1(TRANSCODER_B));
0267 MMIO_D(PIPE_LINK_M2(TRANSCODER_B));
0268 MMIO_D(PIPE_LINK_N2(TRANSCODER_B));
0269 MMIO_D(PIPE_DATA_M1(TRANSCODER_C));
0270 MMIO_D(PIPE_DATA_N1(TRANSCODER_C));
0271 MMIO_D(PIPE_DATA_M2(TRANSCODER_C));
0272 MMIO_D(PIPE_DATA_N2(TRANSCODER_C));
0273 MMIO_D(PIPE_LINK_M1(TRANSCODER_C));
0274 MMIO_D(PIPE_LINK_N1(TRANSCODER_C));
0275 MMIO_D(PIPE_LINK_M2(TRANSCODER_C));
0276 MMIO_D(PIPE_LINK_N2(TRANSCODER_C));
0277 MMIO_D(PIPE_DATA_M1(TRANSCODER_EDP));
0278 MMIO_D(PIPE_DATA_N1(TRANSCODER_EDP));
0279 MMIO_D(PIPE_DATA_M2(TRANSCODER_EDP));
0280 MMIO_D(PIPE_DATA_N2(TRANSCODER_EDP));
0281 MMIO_D(PIPE_LINK_M1(TRANSCODER_EDP));
0282 MMIO_D(PIPE_LINK_N1(TRANSCODER_EDP));
0283 MMIO_D(PIPE_LINK_M2(TRANSCODER_EDP));
0284 MMIO_D(PIPE_LINK_N2(TRANSCODER_EDP));
0285 MMIO_D(PF_CTL(PIPE_A));
0286 MMIO_D(PF_WIN_SZ(PIPE_A));
0287 MMIO_D(PF_WIN_POS(PIPE_A));
0288 MMIO_D(PF_VSCALE(PIPE_A));
0289 MMIO_D(PF_HSCALE(PIPE_A));
0290 MMIO_D(PF_CTL(PIPE_B));
0291 MMIO_D(PF_WIN_SZ(PIPE_B));
0292 MMIO_D(PF_WIN_POS(PIPE_B));
0293 MMIO_D(PF_VSCALE(PIPE_B));
0294 MMIO_D(PF_HSCALE(PIPE_B));
0295 MMIO_D(PF_CTL(PIPE_C));
0296 MMIO_D(PF_WIN_SZ(PIPE_C));
0297 MMIO_D(PF_WIN_POS(PIPE_C));
0298 MMIO_D(PF_VSCALE(PIPE_C));
0299 MMIO_D(PF_HSCALE(PIPE_C));
0300 MMIO_D(WM0_PIPE_ILK(PIPE_A));
0301 MMIO_D(WM0_PIPE_ILK(PIPE_B));
0302 MMIO_D(WM0_PIPE_ILK(PIPE_C));
0303 MMIO_D(WM1_LP_ILK);
0304 MMIO_D(WM2_LP_ILK);
0305 MMIO_D(WM3_LP_ILK);
0306 MMIO_D(WM1S_LP_ILK);
0307 MMIO_D(WM2S_LP_IVB);
0308 MMIO_D(WM3S_LP_IVB);
0309 MMIO_D(BLC_PWM_CPU_CTL2);
0310 MMIO_D(BLC_PWM_CPU_CTL);
0311 MMIO_D(BLC_PWM_PCH_CTL1);
0312 MMIO_D(BLC_PWM_PCH_CTL2);
0313 MMIO_D(_MMIO(0x48268));
0314 MMIO_F(PCH_GMBUS0, 4 * 4);
0315 MMIO_F(PCH_GPIO_BASE, 6 * 4);
0316 MMIO_F(_MMIO(0xe4f00), 0x28);
0317 MMIO_D(_MMIO(_PCH_TRANSACONF));
0318 MMIO_D(_MMIO(_PCH_TRANSBCONF));
0319 MMIO_D(FDI_RX_IIR(PIPE_A));
0320 MMIO_D(FDI_RX_IIR(PIPE_B));
0321 MMIO_D(FDI_RX_IIR(PIPE_C));
0322 MMIO_D(FDI_RX_IMR(PIPE_A));
0323 MMIO_D(FDI_RX_IMR(PIPE_B));
0324 MMIO_D(FDI_RX_IMR(PIPE_C));
0325 MMIO_D(FDI_RX_CTL(PIPE_A));
0326 MMIO_D(FDI_RX_CTL(PIPE_B));
0327 MMIO_D(FDI_RX_CTL(PIPE_C));
0328 MMIO_D(_MMIO(_PCH_TRANS_HTOTAL_A));
0329 MMIO_D(_MMIO(_PCH_TRANS_HBLANK_A));
0330 MMIO_D(_MMIO(_PCH_TRANS_HSYNC_A));
0331 MMIO_D(_MMIO(_PCH_TRANS_VTOTAL_A));
0332 MMIO_D(_MMIO(_PCH_TRANS_VBLANK_A));
0333 MMIO_D(_MMIO(_PCH_TRANS_VSYNC_A));
0334 MMIO_D(_MMIO(_PCH_TRANS_VSYNCSHIFT_A));
0335 MMIO_D(_MMIO(_PCH_TRANS_HTOTAL_B));
0336 MMIO_D(_MMIO(_PCH_TRANS_HBLANK_B));
0337 MMIO_D(_MMIO(_PCH_TRANS_HSYNC_B));
0338 MMIO_D(_MMIO(_PCH_TRANS_VTOTAL_B));
0339 MMIO_D(_MMIO(_PCH_TRANS_VBLANK_B));
0340 MMIO_D(_MMIO(_PCH_TRANS_VSYNC_B));
0341 MMIO_D(_MMIO(_PCH_TRANS_VSYNCSHIFT_B));
0342 MMIO_D(_MMIO(_PCH_TRANSA_DATA_M1));
0343 MMIO_D(_MMIO(_PCH_TRANSA_DATA_N1));
0344 MMIO_D(_MMIO(_PCH_TRANSA_DATA_M2));
0345 MMIO_D(_MMIO(_PCH_TRANSA_DATA_N2));
0346 MMIO_D(_MMIO(_PCH_TRANSA_LINK_M1));
0347 MMIO_D(_MMIO(_PCH_TRANSA_LINK_N1));
0348 MMIO_D(_MMIO(_PCH_TRANSA_LINK_M2));
0349 MMIO_D(_MMIO(_PCH_TRANSA_LINK_N2));
0350 MMIO_D(TRANS_DP_CTL(PIPE_A));
0351 MMIO_D(TRANS_DP_CTL(PIPE_B));
0352 MMIO_D(TRANS_DP_CTL(PIPE_C));
0353 MMIO_D(TVIDEO_DIP_CTL(PIPE_A));
0354 MMIO_D(TVIDEO_DIP_DATA(PIPE_A));
0355 MMIO_D(TVIDEO_DIP_GCP(PIPE_A));
0356 MMIO_D(TVIDEO_DIP_CTL(PIPE_B));
0357 MMIO_D(TVIDEO_DIP_DATA(PIPE_B));
0358 MMIO_D(TVIDEO_DIP_GCP(PIPE_B));
0359 MMIO_D(TVIDEO_DIP_CTL(PIPE_C));
0360 MMIO_D(TVIDEO_DIP_DATA(PIPE_C));
0361 MMIO_D(TVIDEO_DIP_GCP(PIPE_C));
0362 MMIO_D(_MMIO(_FDI_RXA_MISC));
0363 MMIO_D(_MMIO(_FDI_RXB_MISC));
0364 MMIO_D(_MMIO(_FDI_RXA_TUSIZE1));
0365 MMIO_D(_MMIO(_FDI_RXA_TUSIZE2));
0366 MMIO_D(_MMIO(_FDI_RXB_TUSIZE1));
0367 MMIO_D(_MMIO(_FDI_RXB_TUSIZE2));
0368 MMIO_D(PCH_PP_CONTROL);
0369 MMIO_D(PCH_PP_DIVISOR);
0370 MMIO_D(PCH_PP_STATUS);
0371 MMIO_D(PCH_LVDS);
0372 MMIO_D(_MMIO(_PCH_DPLL_A));
0373 MMIO_D(_MMIO(_PCH_DPLL_B));
0374 MMIO_D(_MMIO(_PCH_FPA0));
0375 MMIO_D(_MMIO(_PCH_FPA1));
0376 MMIO_D(_MMIO(_PCH_FPB0));
0377 MMIO_D(_MMIO(_PCH_FPB1));
0378 MMIO_D(PCH_DREF_CONTROL);
0379 MMIO_D(PCH_RAWCLK_FREQ);
0380 MMIO_D(PCH_DPLL_SEL);
0381 MMIO_D(_MMIO(0x61208));
0382 MMIO_D(_MMIO(0x6120c));
0383 MMIO_D(PCH_PP_ON_DELAYS);
0384 MMIO_D(PCH_PP_OFF_DELAYS);
0385 MMIO_D(_MMIO(0xe651c));
0386 MMIO_D(_MMIO(0xe661c));
0387 MMIO_D(_MMIO(0xe671c));
0388 MMIO_D(_MMIO(0xe681c));
0389 MMIO_D(_MMIO(0xe6c04));
0390 MMIO_D(_MMIO(0xe6e1c));
0391 MMIO_D(PCH_PORT_HOTPLUG);
0392 MMIO_D(LCPLL_CTL);
0393 MMIO_D(FUSE_STRAP);
0394 MMIO_D(DIGITAL_PORT_HOTPLUG_CNTRL);
0395 MMIO_D(DISP_ARB_CTL);
0396 MMIO_D(DISP_ARB_CTL2);
0397 MMIO_D(ILK_DISPLAY_CHICKEN1);
0398 MMIO_D(ILK_DISPLAY_CHICKEN2);
0399 MMIO_D(ILK_DSPCLK_GATE_D);
0400 MMIO_D(SOUTH_CHICKEN1);
0401 MMIO_D(SOUTH_CHICKEN2);
0402 MMIO_D(_MMIO(_TRANSA_CHICKEN1));
0403 MMIO_D(_MMIO(_TRANSB_CHICKEN1));
0404 MMIO_D(SOUTH_DSPCLK_GATE_D);
0405 MMIO_D(_MMIO(_TRANSA_CHICKEN2));
0406 MMIO_D(_MMIO(_TRANSB_CHICKEN2));
0407 MMIO_D(ILK_DPFC_CB_BASE(INTEL_FBC_A));
0408 MMIO_D(ILK_DPFC_CONTROL(INTEL_FBC_A));
0409 MMIO_D(ILK_DPFC_RECOMP_CTL(INTEL_FBC_A));
0410 MMIO_D(ILK_DPFC_STATUS(INTEL_FBC_A));
0411 MMIO_D(ILK_DPFC_FENCE_YOFF(INTEL_FBC_A));
0412 MMIO_D(ILK_DPFC_CHICKEN(INTEL_FBC_A));
0413 MMIO_D(ILK_FBC_RT_BASE);
0414 MMIO_D(IPS_CTL);
0415 MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_A));
0416 MMIO_D(PIPE_CSC_COEFF_BY(PIPE_A));
0417 MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_A));
0418 MMIO_D(PIPE_CSC_COEFF_BU(PIPE_A));
0419 MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_A));
0420 MMIO_D(PIPE_CSC_COEFF_BV(PIPE_A));
0421 MMIO_D(PIPE_CSC_MODE(PIPE_A));
0422 MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_A));
0423 MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_A));
0424 MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_A));
0425 MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_A));
0426 MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_A));
0427 MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_A));
0428 MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_B));
0429 MMIO_D(PIPE_CSC_COEFF_BY(PIPE_B));
0430 MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_B));
0431 MMIO_D(PIPE_CSC_COEFF_BU(PIPE_B));
0432 MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_B));
0433 MMIO_D(PIPE_CSC_COEFF_BV(PIPE_B));
0434 MMIO_D(PIPE_CSC_MODE(PIPE_B));
0435 MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_B));
0436 MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_B));
0437 MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_B));
0438 MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_B));
0439 MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_B));
0440 MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_B));
0441 MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_C));
0442 MMIO_D(PIPE_CSC_COEFF_BY(PIPE_C));
0443 MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_C));
0444 MMIO_D(PIPE_CSC_COEFF_BU(PIPE_C));
0445 MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_C));
0446 MMIO_D(PIPE_CSC_COEFF_BV(PIPE_C));
0447 MMIO_D(PIPE_CSC_MODE(PIPE_C));
0448 MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_C));
0449 MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_C));
0450 MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_C));
0451 MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_C));
0452 MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_C));
0453 MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_C));
0454 MMIO_D(PREC_PAL_INDEX(PIPE_A));
0455 MMIO_D(PREC_PAL_DATA(PIPE_A));
0456 MMIO_F(PREC_PAL_GC_MAX(PIPE_A, 0), 4 * 3);
0457 MMIO_D(PREC_PAL_INDEX(PIPE_B));
0458 MMIO_D(PREC_PAL_DATA(PIPE_B));
0459 MMIO_F(PREC_PAL_GC_MAX(PIPE_B, 0), 4 * 3);
0460 MMIO_D(PREC_PAL_INDEX(PIPE_C));
0461 MMIO_D(PREC_PAL_DATA(PIPE_C));
0462 MMIO_F(PREC_PAL_GC_MAX(PIPE_C, 0), 4 * 3);
0463 MMIO_D(_MMIO(0x60110));
0464 MMIO_D(_MMIO(0x61110));
0465 MMIO_F(_MMIO(0x70400), 0x40);
0466 MMIO_F(_MMIO(0x71400), 0x40);
0467 MMIO_F(_MMIO(0x72400), 0x40);
0468 MMIO_D(WM_LINETIME(PIPE_A));
0469 MMIO_D(WM_LINETIME(PIPE_B));
0470 MMIO_D(WM_LINETIME(PIPE_C));
0471 MMIO_D(SPLL_CTL);
0472 MMIO_D(_MMIO(_WRPLL_CTL1));
0473 MMIO_D(_MMIO(_WRPLL_CTL2));
0474 MMIO_D(PORT_CLK_SEL(PORT_A));
0475 MMIO_D(PORT_CLK_SEL(PORT_B));
0476 MMIO_D(PORT_CLK_SEL(PORT_C));
0477 MMIO_D(PORT_CLK_SEL(PORT_D));
0478 MMIO_D(PORT_CLK_SEL(PORT_E));
0479 MMIO_D(TRANS_CLK_SEL(TRANSCODER_A));
0480 MMIO_D(TRANS_CLK_SEL(TRANSCODER_B));
0481 MMIO_D(TRANS_CLK_SEL(TRANSCODER_C));
0482 MMIO_D(HSW_NDE_RSTWRN_OPT);
0483 MMIO_D(_MMIO(0x46508));
0484 MMIO_D(_MMIO(0x49080));
0485 MMIO_D(_MMIO(0x49180));
0486 MMIO_D(_MMIO(0x49280));
0487 MMIO_F(_MMIO(0x49090), 0x14);
0488 MMIO_F(_MMIO(0x49190), 0x14);
0489 MMIO_F(_MMIO(0x49290), 0x14);
0490 MMIO_D(GAMMA_MODE(PIPE_A));
0491 MMIO_D(GAMMA_MODE(PIPE_B));
0492 MMIO_D(GAMMA_MODE(PIPE_C));
0493 MMIO_D(PIPE_MULT(PIPE_A));
0494 MMIO_D(PIPE_MULT(PIPE_B));
0495 MMIO_D(PIPE_MULT(PIPE_C));
0496 MMIO_D(HSW_TVIDEO_DIP_CTL(TRANSCODER_A));
0497 MMIO_D(HSW_TVIDEO_DIP_CTL(TRANSCODER_B));
0498 MMIO_D(HSW_TVIDEO_DIP_CTL(TRANSCODER_C));
0499 MMIO_D(SFUSE_STRAP);
0500 MMIO_D(SBI_ADDR);
0501 MMIO_D(SBI_DATA);
0502 MMIO_D(SBI_CTL_STAT);
0503 MMIO_D(PIXCLK_GATE);
0504 MMIO_F(_MMIO(_DPA_AUX_CH_CTL), 6 * 4);
0505 MMIO_D(DDI_BUF_CTL(PORT_A));
0506 MMIO_D(DDI_BUF_CTL(PORT_B));
0507 MMIO_D(DDI_BUF_CTL(PORT_C));
0508 MMIO_D(DDI_BUF_CTL(PORT_D));
0509 MMIO_D(DDI_BUF_CTL(PORT_E));
0510 MMIO_D(DP_TP_CTL(PORT_A));
0511 MMIO_D(DP_TP_CTL(PORT_B));
0512 MMIO_D(DP_TP_CTL(PORT_C));
0513 MMIO_D(DP_TP_CTL(PORT_D));
0514 MMIO_D(DP_TP_CTL(PORT_E));
0515 MMIO_D(DP_TP_STATUS(PORT_A));
0516 MMIO_D(DP_TP_STATUS(PORT_B));
0517 MMIO_D(DP_TP_STATUS(PORT_C));
0518 MMIO_D(DP_TP_STATUS(PORT_D));
0519 MMIO_D(DP_TP_STATUS(PORT_E));
0520 MMIO_F(_MMIO(_DDI_BUF_TRANS_A), 0x50);
0521 MMIO_F(_MMIO(0x64e60), 0x50);
0522 MMIO_F(_MMIO(0x64eC0), 0x50);
0523 MMIO_F(_MMIO(0x64f20), 0x50);
0524 MMIO_F(_MMIO(0x64f80), 0x50);
0525 MMIO_D(HSW_AUD_CFG(PIPE_A));
0526 MMIO_D(HSW_AUD_PIN_ELD_CP_VLD);
0527 MMIO_D(HSW_AUD_MISC_CTRL(PIPE_A));
0528 MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_A));
0529 MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_B));
0530 MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_C));
0531 MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_EDP));
0532 MMIO_D(_MMIO(_TRANSA_MSA_MISC));
0533 MMIO_D(_MMIO(_TRANSB_MSA_MISC));
0534 MMIO_D(_MMIO(_TRANSC_MSA_MISC));
0535 MMIO_D(_MMIO(_TRANS_EDP_MSA_MISC));
0536 MMIO_D(FORCEWAKE);
0537 MMIO_D(FORCEWAKE_ACK);
0538 MMIO_D(GEN6_GT_CORE_STATUS);
0539 MMIO_D(GEN6_GT_THREAD_STATUS_REG);
0540 MMIO_D(GTFIFODBG);
0541 MMIO_D(GTFIFOCTL);
0542 MMIO_D(ECOBUS);
0543 MMIO_D(GEN6_RC_CONTROL);
0544 MMIO_D(GEN6_RC_STATE);
0545 MMIO_D(GEN6_RPNSWREQ);
0546 MMIO_D(GEN6_RC_VIDEO_FREQ);
0547 MMIO_D(GEN6_RP_DOWN_TIMEOUT);
0548 MMIO_D(GEN6_RP_INTERRUPT_LIMITS);
0549 MMIO_D(GEN6_RPSTAT1);
0550 MMIO_D(GEN6_RP_CONTROL);
0551 MMIO_D(GEN6_RP_UP_THRESHOLD);
0552 MMIO_D(GEN6_RP_DOWN_THRESHOLD);
0553 MMIO_D(GEN6_RP_CUR_UP_EI);
0554 MMIO_D(GEN6_RP_CUR_UP);
0555 MMIO_D(GEN6_RP_PREV_UP);
0556 MMIO_D(GEN6_RP_CUR_DOWN_EI);
0557 MMIO_D(GEN6_RP_CUR_DOWN);
0558 MMIO_D(GEN6_RP_PREV_DOWN);
0559 MMIO_D(GEN6_RP_UP_EI);
0560 MMIO_D(GEN6_RP_DOWN_EI);
0561 MMIO_D(GEN6_RP_IDLE_HYSTERSIS);
0562 MMIO_D(GEN6_RC1_WAKE_RATE_LIMIT);
0563 MMIO_D(GEN6_RC6_WAKE_RATE_LIMIT);
0564 MMIO_D(GEN6_RC6pp_WAKE_RATE_LIMIT);
0565 MMIO_D(GEN6_RC_EVALUATION_INTERVAL);
0566 MMIO_D(GEN6_RC_IDLE_HYSTERSIS);
0567 MMIO_D(GEN6_RC_SLEEP);
0568 MMIO_D(GEN6_RC1e_THRESHOLD);
0569 MMIO_D(GEN6_RC6_THRESHOLD);
0570 MMIO_D(GEN6_RC6p_THRESHOLD);
0571 MMIO_D(GEN6_RC6pp_THRESHOLD);
0572 MMIO_D(GEN6_PMINTRMSK);
0573
0574 MMIO_D(RSTDBYCTL);
0575 MMIO_D(GEN6_GDRST);
0576 MMIO_F(FENCE_REG_GEN6_LO(0), 0x80);
0577 MMIO_D(CPU_VGACNTRL);
0578 MMIO_D(TILECTL);
0579 MMIO_D(GEN6_UCGCTL1);
0580 MMIO_D(GEN6_UCGCTL2);
0581 MMIO_F(_MMIO(0x4f000), 0x90);
0582 MMIO_D(GEN6_PCODE_DATA);
0583 MMIO_D(_MMIO(0x13812c));
0584 MMIO_D(GEN7_ERR_INT);
0585 MMIO_D(HSW_EDRAM_CAP);
0586 MMIO_D(HSW_IDICR);
0587 MMIO_D(GFX_FLSH_CNTL_GEN6);
0588 MMIO_D(_MMIO(0x3c));
0589 MMIO_D(_MMIO(0x860));
0590 MMIO_D(ECOSKPD(RENDER_RING_BASE));
0591 MMIO_D(_MMIO(0x121d0));
0592 MMIO_D(ECOSKPD(BLT_RING_BASE));
0593 MMIO_D(_MMIO(0x41d0));
0594 MMIO_D(GAC_ECO_BITS);
0595 MMIO_D(_MMIO(0x6200));
0596 MMIO_D(_MMIO(0x6204));
0597 MMIO_D(_MMIO(0x6208));
0598 MMIO_D(_MMIO(0x7118));
0599 MMIO_D(_MMIO(0x7180));
0600 MMIO_D(_MMIO(0x7408));
0601 MMIO_D(_MMIO(0x7c00));
0602 MMIO_D(GEN6_MBCTL);
0603 MMIO_D(_MMIO(0x911c));
0604 MMIO_D(_MMIO(0x9120));
0605 MMIO_D(GEN7_UCGCTL4);
0606 MMIO_D(GAB_CTL);
0607 MMIO_D(_MMIO(0x48800));
0608 MMIO_D(_MMIO(0xce044));
0609 MMIO_D(_MMIO(0xe6500));
0610 MMIO_D(_MMIO(0xe6504));
0611 MMIO_D(_MMIO(0xe6600));
0612 MMIO_D(_MMIO(0xe6604));
0613 MMIO_D(_MMIO(0xe6700));
0614 MMIO_D(_MMIO(0xe6704));
0615 MMIO_D(_MMIO(0xe6800));
0616 MMIO_D(_MMIO(0xe6804));
0617 MMIO_D(PCH_GMBUS4);
0618 MMIO_D(PCH_GMBUS5);
0619 MMIO_D(_MMIO(0x902c));
0620 MMIO_D(_MMIO(0xec008));
0621 MMIO_D(_MMIO(0xec00c));
0622 MMIO_D(_MMIO(0xec008 + 0x18));
0623 MMIO_D(_MMIO(0xec00c + 0x18));
0624 MMIO_D(_MMIO(0xec008 + 0x18 * 2));
0625 MMIO_D(_MMIO(0xec00c + 0x18 * 2));
0626 MMIO_D(_MMIO(0xec008 + 0x18 * 3));
0627 MMIO_D(_MMIO(0xec00c + 0x18 * 3));
0628 MMIO_D(_MMIO(0xec408));
0629 MMIO_D(_MMIO(0xec40c));
0630 MMIO_D(_MMIO(0xec408 + 0x18));
0631 MMIO_D(_MMIO(0xec40c + 0x18));
0632 MMIO_D(_MMIO(0xec408 + 0x18 * 2));
0633 MMIO_D(_MMIO(0xec40c + 0x18 * 2));
0634 MMIO_D(_MMIO(0xec408 + 0x18 * 3));
0635 MMIO_D(_MMIO(0xec40c + 0x18 * 3));
0636 MMIO_D(_MMIO(0xfc810));
0637 MMIO_D(_MMIO(0xfc81c));
0638 MMIO_D(_MMIO(0xfc828));
0639 MMIO_D(_MMIO(0xfc834));
0640 MMIO_D(_MMIO(0xfcc00));
0641 MMIO_D(_MMIO(0xfcc0c));
0642 MMIO_D(_MMIO(0xfcc18));
0643 MMIO_D(_MMIO(0xfcc24));
0644 MMIO_D(_MMIO(0xfd000));
0645 MMIO_D(_MMIO(0xfd00c));
0646 MMIO_D(_MMIO(0xfd018));
0647 MMIO_D(_MMIO(0xfd024));
0648 MMIO_D(_MMIO(0xfd034));
0649 MMIO_D(FPGA_DBG);
0650 MMIO_D(_MMIO(0x2054));
0651 MMIO_D(_MMIO(0x12054));
0652 MMIO_D(_MMIO(0x22054));
0653 MMIO_D(_MMIO(0x1a054));
0654 MMIO_D(_MMIO(0x44070));
0655 MMIO_D(_MMIO(0x2178));
0656 MMIO_D(_MMIO(0x217c));
0657 MMIO_D(_MMIO(0x12178));
0658 MMIO_D(_MMIO(0x1217c));
0659 MMIO_F(_MMIO(0x5200), 32);
0660 MMIO_F(_MMIO(0x5240), 32);
0661 MMIO_F(_MMIO(0x5280), 16);
0662 MMIO_D(BCS_SWCTRL);
0663 MMIO_F(HS_INVOCATION_COUNT, 8);
0664 MMIO_F(DS_INVOCATION_COUNT, 8);
0665 MMIO_F(IA_VERTICES_COUNT, 8);
0666 MMIO_F(IA_PRIMITIVES_COUNT, 8);
0667 MMIO_F(VS_INVOCATION_COUNT, 8);
0668 MMIO_F(GS_INVOCATION_COUNT, 8);
0669 MMIO_F(GS_PRIMITIVES_COUNT, 8);
0670 MMIO_F(CL_INVOCATION_COUNT, 8);
0671 MMIO_F(CL_PRIMITIVES_COUNT, 8);
0672 MMIO_F(PS_INVOCATION_COUNT, 8);
0673 MMIO_F(PS_DEPTH_COUNT, 8);
0674 MMIO_D(ARB_MODE);
0675 MMIO_RING_D(RING_BBADDR);
0676 MMIO_D(_MMIO(0x2220));
0677 MMIO_D(_MMIO(0x12220));
0678 MMIO_D(_MMIO(0x22220));
0679 MMIO_RING_D(RING_SYNC_1);
0680 MMIO_RING_D(RING_SYNC_0);
0681 MMIO_D(GUC_STATUS);
0682
0683 MMIO_F(_MMIO(MCHBAR_MIRROR_BASE_SNB), 0x40000);
0684 MMIO_F(_MMIO(VGT_PVINFO_PAGE), VGT_PVINFO_SIZE);
0685 MMIO_F(LGC_PALETTE(PIPE_A, 0), 1024);
0686 MMIO_F(LGC_PALETTE(PIPE_B, 0), 1024);
0687 MMIO_F(LGC_PALETTE(PIPE_C, 0), 1024);
0688
0689 return 0;
0690 }
0691
0692 static int iterate_bdw_only_mmio(struct intel_gvt_mmio_table_iter *iter)
0693 {
0694 MMIO_D(HSW_PWR_WELL_CTL1);
0695 MMIO_D(HSW_PWR_WELL_CTL2);
0696 MMIO_D(HSW_PWR_WELL_CTL3);
0697 MMIO_D(HSW_PWR_WELL_CTL4);
0698 MMIO_D(HSW_PWR_WELL_CTL5);
0699 MMIO_D(HSW_PWR_WELL_CTL6);
0700
0701 MMIO_D(WM_MISC);
0702 MMIO_D(_MMIO(_SRD_CTL_EDP));
0703
0704 MMIO_D(_MMIO(0xb1f0));
0705 MMIO_D(_MMIO(0xb1c0));
0706 MMIO_D(_MMIO(0xb100));
0707 MMIO_D(_MMIO(0xb10c));
0708 MMIO_D(_MMIO(0xb110));
0709 MMIO_D(_MMIO(0x83a4));
0710 MMIO_D(_MMIO(0x8430));
0711 MMIO_D(_MMIO(0x2248));
0712 MMIO_D(FORCEWAKE_ACK_HSW);
0713
0714 return 0;
0715 }
0716
0717 static int iterate_bdw_plus_mmio(struct intel_gvt_mmio_table_iter *iter)
0718 {
0719 struct drm_i915_private *dev_priv = iter->i915;
0720
0721 MMIO_D(GEN8_GT_IMR(0));
0722 MMIO_D(GEN8_GT_IER(0));
0723 MMIO_D(GEN8_GT_IIR(0));
0724 MMIO_D(GEN8_GT_ISR(0));
0725 MMIO_D(GEN8_GT_IMR(1));
0726 MMIO_D(GEN8_GT_IER(1));
0727 MMIO_D(GEN8_GT_IIR(1));
0728 MMIO_D(GEN8_GT_ISR(1));
0729 MMIO_D(GEN8_GT_IMR(2));
0730 MMIO_D(GEN8_GT_IER(2));
0731 MMIO_D(GEN8_GT_IIR(2));
0732 MMIO_D(GEN8_GT_ISR(2));
0733 MMIO_D(GEN8_GT_IMR(3));
0734 MMIO_D(GEN8_GT_IER(3));
0735 MMIO_D(GEN8_GT_IIR(3));
0736 MMIO_D(GEN8_GT_ISR(3));
0737 MMIO_D(GEN8_DE_PIPE_IMR(PIPE_A));
0738 MMIO_D(GEN8_DE_PIPE_IER(PIPE_A));
0739 MMIO_D(GEN8_DE_PIPE_IIR(PIPE_A));
0740 MMIO_D(GEN8_DE_PIPE_ISR(PIPE_A));
0741 MMIO_D(GEN8_DE_PIPE_IMR(PIPE_B));
0742 MMIO_D(GEN8_DE_PIPE_IER(PIPE_B));
0743 MMIO_D(GEN8_DE_PIPE_IIR(PIPE_B));
0744 MMIO_D(GEN8_DE_PIPE_ISR(PIPE_B));
0745 MMIO_D(GEN8_DE_PIPE_IMR(PIPE_C));
0746 MMIO_D(GEN8_DE_PIPE_IER(PIPE_C));
0747 MMIO_D(GEN8_DE_PIPE_IIR(PIPE_C));
0748 MMIO_D(GEN8_DE_PIPE_ISR(PIPE_C));
0749 MMIO_D(GEN8_DE_PORT_IMR);
0750 MMIO_D(GEN8_DE_PORT_IER);
0751 MMIO_D(GEN8_DE_PORT_IIR);
0752 MMIO_D(GEN8_DE_PORT_ISR);
0753 MMIO_D(GEN8_DE_MISC_IMR);
0754 MMIO_D(GEN8_DE_MISC_IER);
0755 MMIO_D(GEN8_DE_MISC_IIR);
0756 MMIO_D(GEN8_DE_MISC_ISR);
0757 MMIO_D(GEN8_PCU_IMR);
0758 MMIO_D(GEN8_PCU_IER);
0759 MMIO_D(GEN8_PCU_IIR);
0760 MMIO_D(GEN8_PCU_ISR);
0761 MMIO_D(GEN8_MASTER_IRQ);
0762 MMIO_RING_D(RING_ACTHD_UDW);
0763
0764 #define RING_REG(base) _MMIO((base) + 0xd0)
0765 MMIO_RING_D(RING_REG);
0766 #undef RING_REG
0767
0768 #define RING_REG(base) _MMIO((base) + 0x230)
0769 MMIO_RING_D(RING_REG);
0770 #undef RING_REG
0771
0772 #define RING_REG(base) _MMIO((base) + 0x234)
0773 MMIO_RING_F(RING_REG, 8);
0774 #undef RING_REG
0775
0776 #define RING_REG(base) _MMIO((base) + 0x244)
0777 MMIO_RING_D(RING_REG);
0778 #undef RING_REG
0779
0780 #define RING_REG(base) _MMIO((base) + 0x370)
0781 MMIO_RING_F(RING_REG, 48);
0782 #undef RING_REG
0783
0784 #define RING_REG(base) _MMIO((base) + 0x3a0)
0785 MMIO_RING_D(RING_REG);
0786 #undef RING_REG
0787
0788 MMIO_D(PIPEMISC(PIPE_A));
0789 MMIO_D(PIPEMISC(PIPE_B));
0790 MMIO_D(PIPEMISC(PIPE_C));
0791 MMIO_D(_MMIO(0x1c1d0));
0792 MMIO_D(GEN6_MBCUNIT_SNPCR);
0793 MMIO_D(GEN7_MISCCPCTL);
0794 MMIO_D(_MMIO(0x1c054));
0795 MMIO_D(GEN6_PCODE_MAILBOX);
0796 if (!IS_BROXTON(dev_priv))
0797 MMIO_D(GEN8_PRIVATE_PAT_LO);
0798 MMIO_D(GEN8_PRIVATE_PAT_HI);
0799 MMIO_D(GAMTARBMODE);
0800
0801 #define RING_REG(base) _MMIO((base) + 0x270)
0802 MMIO_RING_F(RING_REG, 32);
0803 #undef RING_REG
0804
0805 MMIO_RING_D(RING_HWS_PGA);
0806 MMIO_D(HDC_CHICKEN0);
0807 MMIO_D(CHICKEN_PIPESL_1(PIPE_A));
0808 MMIO_D(CHICKEN_PIPESL_1(PIPE_B));
0809 MMIO_D(CHICKEN_PIPESL_1(PIPE_C));
0810 MMIO_D(_MMIO(0x6671c));
0811 MMIO_D(_MMIO(0x66c00));
0812 MMIO_D(_MMIO(0x66c04));
0813 MMIO_D(HSW_GTT_CACHE_EN);
0814 MMIO_D(GEN8_EU_DISABLE0);
0815 MMIO_D(GEN8_EU_DISABLE1);
0816 MMIO_D(GEN8_EU_DISABLE2);
0817 MMIO_D(_MMIO(0xfdc));
0818 MMIO_D(GEN8_ROW_CHICKEN);
0819 MMIO_D(GEN7_ROW_CHICKEN2);
0820 MMIO_D(GEN8_UCGCTL6);
0821 MMIO_D(GEN8_L3SQCREG4);
0822 MMIO_D(GEN9_SCRATCH_LNCF1);
0823 MMIO_F(_MMIO(0x24d0), 48);
0824 MMIO_D(_MMIO(0x44484));
0825 MMIO_D(_MMIO(0x4448c));
0826 MMIO_D(GEN8_L3_LRA_1_GPGPU);
0827 MMIO_D(_MMIO(0x110000));
0828 MMIO_D(_MMIO(0x48400));
0829 MMIO_D(_MMIO(0x6e570));
0830 MMIO_D(_MMIO(0x65f10));
0831 MMIO_D(_MMIO(0xe194));
0832 MMIO_D(_MMIO(0xe188));
0833 MMIO_D(HALF_SLICE_CHICKEN2);
0834 MMIO_D(_MMIO(0x2580));
0835 MMIO_D(_MMIO(0xe220));
0836 MMIO_D(_MMIO(0xe230));
0837 MMIO_D(_MMIO(0xe240));
0838 MMIO_D(_MMIO(0xe260));
0839 MMIO_D(_MMIO(0xe270));
0840 MMIO_D(_MMIO(0xe280));
0841 MMIO_D(_MMIO(0xe2a0));
0842 MMIO_D(_MMIO(0xe2b0));
0843 MMIO_D(_MMIO(0xe2c0));
0844 MMIO_D(_MMIO(0x21f0));
0845 MMIO_D(GEN8_GAMW_ECO_DEV_RW_IA);
0846 MMIO_D(_MMIO(0x215c));
0847 MMIO_F(_MMIO(0x2290), 8);
0848 MMIO_D(_MMIO(0x2b00));
0849 MMIO_D(_MMIO(0x2360));
0850 MMIO_D(_MMIO(0x1c17c));
0851 MMIO_D(_MMIO(0x1c178));
0852 MMIO_D(_MMIO(0x4260));
0853 MMIO_D(_MMIO(0x4264));
0854 MMIO_D(_MMIO(0x4268));
0855 MMIO_D(_MMIO(0x426c));
0856 MMIO_D(_MMIO(0x4270));
0857 MMIO_D(_MMIO(0x4094));
0858 MMIO_D(_MMIO(0x22178));
0859 MMIO_D(_MMIO(0x1a178));
0860 MMIO_D(_MMIO(0x1a17c));
0861 MMIO_D(_MMIO(0x2217c));
0862 MMIO_D(EDP_PSR_IMR);
0863 MMIO_D(EDP_PSR_IIR);
0864 MMIO_D(_MMIO(0xe4cc));
0865 MMIO_D(GEN7_SC_INSTDONE);
0866
0867 return 0;
0868 }
0869
0870 static int iterate_pre_skl_mmio(struct intel_gvt_mmio_table_iter *iter)
0871 {
0872 MMIO_D(FORCEWAKE_MT);
0873
0874 MMIO_D(PCH_ADPA);
0875 MMIO_F(_MMIO(_PCH_DPB_AUX_CH_CTL), 6 * 4);
0876 MMIO_F(_MMIO(_PCH_DPC_AUX_CH_CTL), 6 * 4);
0877 MMIO_F(_MMIO(_PCH_DPD_AUX_CH_CTL), 6 * 4);
0878
0879 MMIO_F(_MMIO(0x70440), 0xc);
0880 MMIO_F(_MMIO(0x71440), 0xc);
0881 MMIO_F(_MMIO(0x72440), 0xc);
0882 MMIO_F(_MMIO(0x7044c), 0xc);
0883 MMIO_F(_MMIO(0x7144c), 0xc);
0884 MMIO_F(_MMIO(0x7244c), 0xc);
0885
0886 return 0;
0887 }
0888
0889 static int iterate_skl_plus_mmio(struct intel_gvt_mmio_table_iter *iter)
0890 {
0891 struct drm_i915_private *dev_priv = iter->i915;
0892
0893 MMIO_D(FORCEWAKE_RENDER_GEN9);
0894 MMIO_D(FORCEWAKE_ACK_RENDER_GEN9);
0895 MMIO_D(FORCEWAKE_GT_GEN9);
0896 MMIO_D(FORCEWAKE_ACK_GT_GEN9);
0897 MMIO_D(FORCEWAKE_MEDIA_GEN9);
0898 MMIO_D(FORCEWAKE_ACK_MEDIA_GEN9);
0899 MMIO_F(DP_AUX_CH_CTL(AUX_CH_B), 6 * 4);
0900 MMIO_F(DP_AUX_CH_CTL(AUX_CH_C), 6 * 4);
0901 MMIO_F(DP_AUX_CH_CTL(AUX_CH_D), 6 * 4);
0902 MMIO_D(HSW_PWR_WELL_CTL1);
0903 MMIO_D(HSW_PWR_WELL_CTL2);
0904 MMIO_D(DBUF_CTL_S(0));
0905 MMIO_D(GEN9_PG_ENABLE);
0906 MMIO_D(GEN9_MEDIA_PG_IDLE_HYSTERESIS);
0907 MMIO_D(GEN9_RENDER_PG_IDLE_HYSTERESIS);
0908 MMIO_D(GEN9_GAMT_ECO_REG_RW_IA);
0909 MMIO_D(MMCD_MISC_CTRL);
0910 MMIO_D(CHICKEN_PAR1_1);
0911 MMIO_D(DC_STATE_EN);
0912 MMIO_D(DC_STATE_DEBUG);
0913 MMIO_D(CDCLK_CTL);
0914 MMIO_D(LCPLL1_CTL);
0915 MMIO_D(LCPLL2_CTL);
0916 MMIO_D(_MMIO(_DPLL1_CFGCR1));
0917 MMIO_D(_MMIO(_DPLL2_CFGCR1));
0918 MMIO_D(_MMIO(_DPLL3_CFGCR1));
0919 MMIO_D(_MMIO(_DPLL1_CFGCR2));
0920 MMIO_D(_MMIO(_DPLL2_CFGCR2));
0921 MMIO_D(_MMIO(_DPLL3_CFGCR2));
0922 MMIO_D(DPLL_CTRL1);
0923 MMIO_D(DPLL_CTRL2);
0924 MMIO_D(DPLL_STATUS);
0925 MMIO_D(SKL_PS_WIN_POS(PIPE_A, 0));
0926 MMIO_D(SKL_PS_WIN_POS(PIPE_A, 1));
0927 MMIO_D(SKL_PS_WIN_POS(PIPE_B, 0));
0928 MMIO_D(SKL_PS_WIN_POS(PIPE_B, 1));
0929 MMIO_D(SKL_PS_WIN_POS(PIPE_C, 0));
0930 MMIO_D(SKL_PS_WIN_POS(PIPE_C, 1));
0931 MMIO_D(SKL_PS_WIN_SZ(PIPE_A, 0));
0932 MMIO_D(SKL_PS_WIN_SZ(PIPE_A, 1));
0933 MMIO_D(SKL_PS_WIN_SZ(PIPE_B, 0));
0934 MMIO_D(SKL_PS_WIN_SZ(PIPE_B, 1));
0935 MMIO_D(SKL_PS_WIN_SZ(PIPE_C, 0));
0936 MMIO_D(SKL_PS_WIN_SZ(PIPE_C, 1));
0937 MMIO_D(SKL_PS_CTRL(PIPE_A, 0));
0938 MMIO_D(SKL_PS_CTRL(PIPE_A, 1));
0939 MMIO_D(SKL_PS_CTRL(PIPE_B, 0));
0940 MMIO_D(SKL_PS_CTRL(PIPE_B, 1));
0941 MMIO_D(SKL_PS_CTRL(PIPE_C, 0));
0942 MMIO_D(SKL_PS_CTRL(PIPE_C, 1));
0943 MMIO_D(PLANE_BUF_CFG(PIPE_A, 0));
0944 MMIO_D(PLANE_BUF_CFG(PIPE_A, 1));
0945 MMIO_D(PLANE_BUF_CFG(PIPE_A, 2));
0946 MMIO_D(PLANE_BUF_CFG(PIPE_A, 3));
0947 MMIO_D(PLANE_BUF_CFG(PIPE_B, 0));
0948 MMIO_D(PLANE_BUF_CFG(PIPE_B, 1));
0949 MMIO_D(PLANE_BUF_CFG(PIPE_B, 2));
0950 MMIO_D(PLANE_BUF_CFG(PIPE_B, 3));
0951 MMIO_D(PLANE_BUF_CFG(PIPE_C, 0));
0952 MMIO_D(PLANE_BUF_CFG(PIPE_C, 1));
0953 MMIO_D(PLANE_BUF_CFG(PIPE_C, 2));
0954 MMIO_D(PLANE_BUF_CFG(PIPE_C, 3));
0955 MMIO_D(CUR_BUF_CFG(PIPE_A));
0956 MMIO_D(CUR_BUF_CFG(PIPE_B));
0957 MMIO_D(CUR_BUF_CFG(PIPE_C));
0958 MMIO_F(PLANE_WM(PIPE_A, 0, 0), 4 * 8);
0959 MMIO_F(PLANE_WM(PIPE_A, 1, 0), 4 * 8);
0960 MMIO_F(PLANE_WM(PIPE_A, 2, 0), 4 * 8);
0961 MMIO_F(PLANE_WM(PIPE_B, 0, 0), 4 * 8);
0962 MMIO_F(PLANE_WM(PIPE_B, 1, 0), 4 * 8);
0963 MMIO_F(PLANE_WM(PIPE_B, 2, 0), 4 * 8);
0964 MMIO_F(PLANE_WM(PIPE_C, 0, 0), 4 * 8);
0965 MMIO_F(PLANE_WM(PIPE_C, 1, 0), 4 * 8);
0966 MMIO_F(PLANE_WM(PIPE_C, 2, 0), 4 * 8);
0967 MMIO_F(CUR_WM(PIPE_A, 0), 4 * 8);
0968 MMIO_F(CUR_WM(PIPE_B, 0), 4 * 8);
0969 MMIO_F(CUR_WM(PIPE_C, 0), 4 * 8);
0970 MMIO_D(PLANE_WM_TRANS(PIPE_A, 0));
0971 MMIO_D(PLANE_WM_TRANS(PIPE_A, 1));
0972 MMIO_D(PLANE_WM_TRANS(PIPE_A, 2));
0973 MMIO_D(PLANE_WM_TRANS(PIPE_B, 0));
0974 MMIO_D(PLANE_WM_TRANS(PIPE_B, 1));
0975 MMIO_D(PLANE_WM_TRANS(PIPE_B, 2));
0976 MMIO_D(PLANE_WM_TRANS(PIPE_C, 0));
0977 MMIO_D(PLANE_WM_TRANS(PIPE_C, 1));
0978 MMIO_D(PLANE_WM_TRANS(PIPE_C, 2));
0979 MMIO_D(CUR_WM_TRANS(PIPE_A));
0980 MMIO_D(CUR_WM_TRANS(PIPE_B));
0981 MMIO_D(CUR_WM_TRANS(PIPE_C));
0982 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 0));
0983 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 1));
0984 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 2));
0985 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 3));
0986 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 0));
0987 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 1));
0988 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 2));
0989 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 3));
0990 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 0));
0991 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 1));
0992 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 2));
0993 MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 3));
0994 MMIO_D(_MMIO(_REG_701C0(PIPE_A, 1)));
0995 MMIO_D(_MMIO(_REG_701C0(PIPE_A, 2)));
0996 MMIO_D(_MMIO(_REG_701C0(PIPE_A, 3)));
0997 MMIO_D(_MMIO(_REG_701C0(PIPE_A, 4)));
0998 MMIO_D(_MMIO(_REG_701C0(PIPE_B, 1)));
0999 MMIO_D(_MMIO(_REG_701C0(PIPE_B, 2)));
1000 MMIO_D(_MMIO(_REG_701C0(PIPE_B, 3)));
1001 MMIO_D(_MMIO(_REG_701C0(PIPE_B, 4)));
1002 MMIO_D(_MMIO(_REG_701C0(PIPE_C, 1)));
1003 MMIO_D(_MMIO(_REG_701C0(PIPE_C, 2)));
1004 MMIO_D(_MMIO(_REG_701C0(PIPE_C, 3)));
1005 MMIO_D(_MMIO(_REG_701C0(PIPE_C, 4)));
1006 MMIO_D(_MMIO(_REG_701C4(PIPE_A, 1)));
1007 MMIO_D(_MMIO(_REG_701C4(PIPE_A, 2)));
1008 MMIO_D(_MMIO(_REG_701C4(PIPE_A, 3)));
1009 MMIO_D(_MMIO(_REG_701C4(PIPE_A, 4)));
1010 MMIO_D(_MMIO(_REG_701C4(PIPE_B, 1)));
1011 MMIO_D(_MMIO(_REG_701C4(PIPE_B, 2)));
1012 MMIO_D(_MMIO(_REG_701C4(PIPE_B, 3)));
1013 MMIO_D(_MMIO(_REG_701C4(PIPE_B, 4)));
1014 MMIO_D(_MMIO(_REG_701C4(PIPE_C, 1)));
1015 MMIO_D(_MMIO(_REG_701C4(PIPE_C, 2)));
1016 MMIO_D(_MMIO(_REG_701C4(PIPE_C, 3)));
1017 MMIO_D(_MMIO(_REG_701C4(PIPE_C, 4)));
1018 MMIO_D(_MMIO(_PLANE_CTL_3_A));
1019 MMIO_D(_MMIO(_PLANE_CTL_3_B));
1020 MMIO_D(_MMIO(0x72380));
1021 MMIO_D(_MMIO(0x7239c));
1022 MMIO_D(_MMIO(_PLANE_SURF_3_A));
1023 MMIO_D(_MMIO(_PLANE_SURF_3_B));
1024 MMIO_D(DMC_SSP_BASE);
1025 MMIO_D(DMC_HTP_SKL);
1026 MMIO_D(DMC_LAST_WRITE);
1027 MMIO_D(BDW_SCRATCH1);
1028 MMIO_D(SKL_DFSM);
1029 MMIO_D(DISPIO_CR_TX_BMU_CR0);
1030 MMIO_F(GEN9_GFX_MOCS(0), 0x7f8);
1031 MMIO_F(GEN7_L3CNTLREG2, 0x80);
1032 MMIO_D(RPM_CONFIG0);
1033 MMIO_D(_MMIO(0xd08));
1034 MMIO_D(RC6_LOCATION);
1035 MMIO_D(GEN7_FF_SLICE_CS_CHICKEN1);
1036 MMIO_D(GEN9_CS_DEBUG_MODE1);
1037
1038 MMIO_D(TRVATTL3PTRDW(0));
1039 MMIO_D(TRVATTL3PTRDW(1));
1040 MMIO_D(TRVATTL3PTRDW(2));
1041 MMIO_D(TRVATTL3PTRDW(3));
1042 MMIO_D(TRVADR);
1043 MMIO_D(TRTTE);
1044 MMIO_D(_MMIO(0x4dfc));
1045 MMIO_D(_MMIO(0x46430));
1046 MMIO_D(_MMIO(0x46520));
1047 MMIO_D(_MMIO(0xc403c));
1048 MMIO_D(GEN8_GARBCNTL);
1049 MMIO_D(DMA_CTRL);
1050 MMIO_D(_MMIO(0x65900));
1051 MMIO_D(GEN6_STOLEN_RESERVED);
1052 MMIO_D(_MMIO(0x4068));
1053 MMIO_D(_MMIO(0x67054));
1054 MMIO_D(_MMIO(0x6e560));
1055 MMIO_D(_MMIO(0x6e554));
1056 MMIO_D(_MMIO(0x2b20));
1057 MMIO_D(_MMIO(0x65f00));
1058 MMIO_D(_MMIO(0x65f08));
1059 MMIO_D(_MMIO(0x320f0));
1060 MMIO_D(_MMIO(0x70034));
1061 MMIO_D(_MMIO(0x71034));
1062 MMIO_D(_MMIO(0x72034));
1063 MMIO_D(_MMIO(_PLANE_KEYVAL_1(PIPE_A)));
1064 MMIO_D(_MMIO(_PLANE_KEYVAL_1(PIPE_B)));
1065 MMIO_D(_MMIO(_PLANE_KEYVAL_1(PIPE_C)));
1066 MMIO_D(_MMIO(_PLANE_KEYMAX_1(PIPE_A)));
1067 MMIO_D(_MMIO(_PLANE_KEYMAX_1(PIPE_B)));
1068 MMIO_D(_MMIO(_PLANE_KEYMAX_1(PIPE_C)));
1069 MMIO_D(_MMIO(_PLANE_KEYMSK_1(PIPE_A)));
1070 MMIO_D(_MMIO(_PLANE_KEYMSK_1(PIPE_B)));
1071 MMIO_D(_MMIO(_PLANE_KEYMSK_1(PIPE_C)));
1072 MMIO_D(_MMIO(0x44500));
1073 #define CSFE_CHICKEN1_REG(base) _MMIO((base) + 0xD4)
1074 MMIO_RING_D(CSFE_CHICKEN1_REG);
1075 #undef CSFE_CHICKEN1_REG
1076 MMIO_D(GEN8_HDC_CHICKEN1);
1077 MMIO_D(GEN9_WM_CHICKEN3);
1078
1079 if (IS_KABYLAKE(dev_priv) ||
1080 IS_COFFEELAKE(dev_priv) || IS_COMETLAKE(dev_priv))
1081 MMIO_D(GAMT_CHKN_BIT_REG);
1082 if (!IS_BROXTON(dev_priv))
1083 MMIO_D(GEN9_CTX_PREEMPT_REG);
1084 MMIO_F(_MMIO(DMC_MMIO_START_RANGE), 0x3000);
1085 return 0;
1086 }
1087
1088 static int iterate_bxt_mmio(struct intel_gvt_mmio_table_iter *iter)
1089 {
1090 struct drm_i915_private *dev_priv = iter->i915;
1091
1092 MMIO_F(_MMIO(0x80000), 0x3000);
1093 MMIO_D(GEN7_SAMPLER_INSTDONE);
1094 MMIO_D(GEN7_ROW_INSTDONE);
1095 MMIO_D(GEN8_FAULT_TLB_DATA0);
1096 MMIO_D(GEN8_FAULT_TLB_DATA1);
1097 MMIO_D(ERROR_GEN6);
1098 MMIO_D(DONE_REG);
1099 MMIO_D(EIR);
1100 MMIO_D(PGTBL_ER);
1101 MMIO_D(_MMIO(0x4194));
1102 MMIO_D(_MMIO(0x4294));
1103 MMIO_D(_MMIO(0x4494));
1104 MMIO_RING_D(RING_PSMI_CTL);
1105 MMIO_RING_D(RING_DMA_FADD);
1106 MMIO_RING_D(RING_DMA_FADD_UDW);
1107 MMIO_RING_D(RING_IPEHR);
1108 MMIO_RING_D(RING_INSTPS);
1109 MMIO_RING_D(RING_BBADDR_UDW);
1110 MMIO_RING_D(RING_BBSTATE);
1111 MMIO_RING_D(RING_IPEIR);
1112 MMIO_F(SOFT_SCRATCH(0), 16 * 4);
1113 MMIO_D(BXT_P_CR_GT_DISP_PWRON);
1114 MMIO_D(BXT_RP_STATE_CAP);
1115 MMIO_D(BXT_PHY_CTL_FAMILY(DPIO_PHY0));
1116 MMIO_D(BXT_PHY_CTL_FAMILY(DPIO_PHY1));
1117 MMIO_D(BXT_PHY_CTL(PORT_A));
1118 MMIO_D(BXT_PHY_CTL(PORT_B));
1119 MMIO_D(BXT_PHY_CTL(PORT_C));
1120 MMIO_D(BXT_PORT_PLL_ENABLE(PORT_A));
1121 MMIO_D(BXT_PORT_PLL_ENABLE(PORT_B));
1122 MMIO_D(BXT_PORT_PLL_ENABLE(PORT_C));
1123 MMIO_D(BXT_PORT_CL1CM_DW0(DPIO_PHY0));
1124 MMIO_D(BXT_PORT_CL1CM_DW9(DPIO_PHY0));
1125 MMIO_D(BXT_PORT_CL1CM_DW10(DPIO_PHY0));
1126 MMIO_D(BXT_PORT_CL1CM_DW28(DPIO_PHY0));
1127 MMIO_D(BXT_PORT_CL1CM_DW30(DPIO_PHY0));
1128 MMIO_D(BXT_PORT_CL2CM_DW6(DPIO_PHY0));
1129 MMIO_D(BXT_PORT_REF_DW3(DPIO_PHY0));
1130 MMIO_D(BXT_PORT_REF_DW6(DPIO_PHY0));
1131 MMIO_D(BXT_PORT_REF_DW8(DPIO_PHY0));
1132 MMIO_D(BXT_PORT_CL1CM_DW0(DPIO_PHY1));
1133 MMIO_D(BXT_PORT_CL1CM_DW9(DPIO_PHY1));
1134 MMIO_D(BXT_PORT_CL1CM_DW10(DPIO_PHY1));
1135 MMIO_D(BXT_PORT_CL1CM_DW28(DPIO_PHY1));
1136 MMIO_D(BXT_PORT_CL1CM_DW30(DPIO_PHY1));
1137 MMIO_D(BXT_PORT_CL2CM_DW6(DPIO_PHY1));
1138 MMIO_D(BXT_PORT_REF_DW3(DPIO_PHY1));
1139 MMIO_D(BXT_PORT_REF_DW6(DPIO_PHY1));
1140 MMIO_D(BXT_PORT_REF_DW8(DPIO_PHY1));
1141 MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY0, DPIO_CH0));
1142 MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY0, DPIO_CH0));
1143 MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY0, DPIO_CH0));
1144 MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY0, DPIO_CH0));
1145 MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY0, DPIO_CH0));
1146 MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY0, DPIO_CH0));
1147 MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY0, DPIO_CH0));
1148 MMIO_D(BXT_PORT_TX_DW2_LN0(DPIO_PHY0, DPIO_CH0));
1149 MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY0, DPIO_CH0));
1150 MMIO_D(BXT_PORT_TX_DW3_LN0(DPIO_PHY0, DPIO_CH0));
1151 MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY0, DPIO_CH0));
1152 MMIO_D(BXT_PORT_TX_DW4_LN0(DPIO_PHY0, DPIO_CH0));
1153 MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY0, DPIO_CH0));
1154 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 0));
1155 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 1));
1156 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 2));
1157 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 3));
1158 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 0));
1159 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 1));
1160 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 2));
1161 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 3));
1162 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 6));
1163 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 8));
1164 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 9));
1165 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 10));
1166 MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY0, DPIO_CH1));
1167 MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY0, DPIO_CH1));
1168 MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY0, DPIO_CH1));
1169 MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY0, DPIO_CH1));
1170 MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY0, DPIO_CH1));
1171 MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY0, DPIO_CH1));
1172 MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY0, DPIO_CH1));
1173 MMIO_D(BXT_PORT_TX_DW2_LN0(DPIO_PHY0, DPIO_CH1));
1174 MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY0, DPIO_CH1));
1175 MMIO_D(BXT_PORT_TX_DW3_LN0(DPIO_PHY0, DPIO_CH1));
1176 MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY0, DPIO_CH1));
1177 MMIO_D(BXT_PORT_TX_DW4_LN0(DPIO_PHY0, DPIO_CH1));
1178 MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY0, DPIO_CH1));
1179 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 0));
1180 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 1));
1181 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 2));
1182 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 3));
1183 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 0));
1184 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 1));
1185 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 2));
1186 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 3));
1187 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 6));
1188 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 8));
1189 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 9));
1190 MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 10));
1191 MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY1, DPIO_CH0));
1192 MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY1, DPIO_CH0));
1193 MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY1, DPIO_CH0));
1194 MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY1, DPIO_CH0));
1195 MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY1, DPIO_CH0));
1196 MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY1, DPIO_CH0));
1197 MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY1, DPIO_CH0));
1198 MMIO_D(BXT_PORT_TX_DW2_LN0(DPIO_PHY1, DPIO_CH0));
1199 MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY1, DPIO_CH0));
1200 MMIO_D(BXT_PORT_TX_DW3_LN0(DPIO_PHY1, DPIO_CH0));
1201 MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY1, DPIO_CH0));
1202 MMIO_D(BXT_PORT_TX_DW4_LN0(DPIO_PHY1, DPIO_CH0));
1203 MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY1, DPIO_CH0));
1204 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 0));
1205 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 1));
1206 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 2));
1207 MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 3));
1208 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 0));
1209 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 1));
1210 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 2));
1211 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 3));
1212 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 6));
1213 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 8));
1214 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 9));
1215 MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 10));
1216 MMIO_D(BXT_DE_PLL_CTL);
1217 MMIO_D(BXT_DE_PLL_ENABLE);
1218 MMIO_D(BXT_DSI_PLL_CTL);
1219 MMIO_D(BXT_DSI_PLL_ENABLE);
1220 MMIO_D(GEN9_CLKGATE_DIS_0);
1221 MMIO_D(GEN9_CLKGATE_DIS_4);
1222 MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_A));
1223 MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_B));
1224 MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_C));
1225 MMIO_D(RC6_CTX_BASE);
1226 MMIO_D(GEN8_PUSHBUS_CONTROL);
1227 MMIO_D(GEN8_PUSHBUS_ENABLE);
1228 MMIO_D(GEN8_PUSHBUS_SHIFT);
1229 MMIO_D(GEN6_GFXPAUSE);
1230 MMIO_D(GEN8_L3SQCREG1);
1231 MMIO_D(GEN8_L3CNTLREG);
1232 MMIO_D(_MMIO(0x20D8));
1233 MMIO_F(GEN8_RING_CS_GPR(RENDER_RING_BASE, 0), 0x40);
1234 MMIO_F(GEN8_RING_CS_GPR(GEN6_BSD_RING_BASE, 0), 0x40);
1235 MMIO_F(GEN8_RING_CS_GPR(BLT_RING_BASE, 0), 0x40);
1236 MMIO_F(GEN8_RING_CS_GPR(VEBOX_RING_BASE, 0), 0x40);
1237 MMIO_D(GEN9_CTX_PREEMPT_REG);
1238 MMIO_D(GEN8_PRIVATE_PAT_LO);
1239
1240 return 0;
1241 }
1242
1243
1244
1245
1246
1247
1248
1249
1250 int intel_gvt_iterate_mmio_table(struct intel_gvt_mmio_table_iter *iter)
1251 {
1252 struct drm_i915_private *i915 = iter->i915;
1253 int ret;
1254
1255 ret = iterate_generic_mmio(iter);
1256 if (ret)
1257 goto err;
1258
1259 if (IS_BROADWELL(i915)) {
1260 ret = iterate_bdw_only_mmio(iter);
1261 if (ret)
1262 goto err;
1263 ret = iterate_bdw_plus_mmio(iter);
1264 if (ret)
1265 goto err;
1266 ret = iterate_pre_skl_mmio(iter);
1267 if (ret)
1268 goto err;
1269 } else if (IS_SKYLAKE(i915) ||
1270 IS_KABYLAKE(i915) ||
1271 IS_COFFEELAKE(i915) ||
1272 IS_COMETLAKE(i915)) {
1273 ret = iterate_bdw_plus_mmio(iter);
1274 if (ret)
1275 goto err;
1276 ret = iterate_skl_plus_mmio(iter);
1277 if (ret)
1278 goto err;
1279 } else if (IS_BROXTON(i915)) {
1280 ret = iterate_bdw_plus_mmio(iter);
1281 if (ret)
1282 goto err;
1283 ret = iterate_skl_plus_mmio(iter);
1284 if (ret)
1285 goto err;
1286 ret = iterate_bxt_mmio(iter);
1287 if (ret)
1288 goto err;
1289 }
1290
1291 return 0;
1292 err:
1293 return ret;
1294 }
1295 EXPORT_SYMBOL_NS_GPL(intel_gvt_iterate_mmio_table, I915_GVT);