linux_dsm_epyc7002/drivers/gpu/drm/i915/gvt
José Roberto de Souza 4ab4fa1032 drm/i915/psr: Make PSR registers relative to transcoders
PSR registers are a mess, some have the full address while others just
have the additional offset from psr_mmio_base.

For BDW+ psr_mmio_base is nothing more than TRANSCODER_EDP_OFFSET +
0x800 and using it makes more difficult for people with an PSR
register address or PSR register name from from BSpec as i915 also
don't match the BSpec names.
For HSW psr_mmio_base is _DDI_BUF_CTL_A + 0x800 and PSR registers are
only available in DDIA.

Other reason to make relative to transcoder is that since BDW every
transcoder have PSR registers, so in theory it should be possible to
have PSR enabled in a non-eDP transcoder.

So for BDW+ we can use _TRANS2() to get the register offset of any
PSR register in any transcoder while for HSW we have _HSW_PSR_ADJ
that will calculate the register offset for the single PSR instance,
noting that we are already guarded about trying to enable PSR in other
port than DDIA on HSW by the 'if (dig_port->base.port != PORT_A)' in
intel_psr_compute_config(), this check should only be valid for HSW
and will be changed in future.
PSR2 registers and PSR_EVENT was added after Haswell so that is why
_PSR_ADJ() is not used in some macros.

The only registers that can not be relative to transcoder are
PSR_IMR and PSR_IIR that are not relative to anything, so keeping it
hardcoded. That changed for TGL but it will be handled in another
patch.

Also removing BDW_EDP_PSR_BASE from GVT because it is not used as it
is the only PSR register that GVT have.

v5:
- Macros changed to be more explicit about HSW (Dhinakaran)
- Squashed with the patch that added the tran parameter to the
macros (Dhinakaran)

v6:
- Checking for interruption errors after module reload in the
transcoder that will be used (Dhinakaran)
- Using lowercase to the registers offsets

v7:
- Removing IS_HASWELL() from registers macros(Jani)

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Zhi Wang <zhi.a.wang@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190820223325.27490-1-jose.souza@intel.com
2019-08-22 13:09:06 -07:00
..
aperture_gm.c drm/i915: Track ggtt fence reservations under its own mutex 2019-08-22 08:53:40 +01:00
cfg_space.c
cmd_parser.c Merge drm/drm-next into drm-intel-next-queued 2019-08-22 00:10:36 -07:00
cmd_parser.h
debug.h
debugfs.c drm/i915/gvt: no need to check return value of debugfs_create functions 2019-08-13 17:55:06 +08:00
display.c Merge tag 'drm-intel-next-2019-04-17' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2019-04-24 10:02:20 +10:00
display.h
dmabuf.c drm/prime: Align gem_prime_export with obj_funcs.export 2019-06-21 17:30:49 +02:00
dmabuf.h
edid.c
edid.h
execlist.c drm/i915: Move intel_engine_mask_t around for use by i915_request_types.h 2019-04-02 15:09:08 +01:00
execlist.h drm/i915: Move intel_engine_mask_t around for use by i915_request_types.h 2019-04-02 15:09:08 +01:00
fb_decoder.c drm/i915/gvt: Don't use ggtt_validdate_range() with size=0 2019-07-30 14:29:48 +08:00
fb_decoder.h
firmware.c drm/i915: Remove I915_READ_NOTRACE 2019-06-12 15:33:13 +01:00
gtt.c drm/i915/gvt: Warning for invalid ggtt access 2019-07-30 14:29:48 +08:00
gtt.h drm/i915: Drop extern qualifiers from header function prototypes 2019-07-12 13:04:54 +01:00
gvt.c drm/i915/gvt: no need to check return value of debugfs_create functions 2019-08-13 17:55:06 +08:00
gvt.h drm/i915/gvt: factor out tlb and mocs register offset table 2019-08-13 17:55:06 +08:00
handlers.c drm/i915/psr: Make PSR registers relative to transcoders 2019-08-22 13:09:06 -07:00
hypercall.h Linux 5.0-rc7 2019-02-18 13:27:15 +10:00
interrupt.c drm/i915/gvt: Fix typo of VBLANK_TIMER_PERIOD 2019-08-13 17:54:41 +08:00
interrupt.h
kvmgt.c Merge drm/drm-next into drm-intel-next-queued 2019-08-22 00:10:36 -07:00
Makefile drm: prefix header search paths with $(srctree)/ 2019-04-26 17:03:23 +02:00
mmio_context.c drm/i915/gvt: factor out tlb and mocs register offset table 2019-08-13 17:55:06 +08:00
mmio_context.h
mmio.c drm/i915/gvt: remove the unused sreg 2019-03-11 11:32:07 +08:00
mmio.h
mpt.h Linux 5.0-rc7 2019-02-18 13:27:15 +10:00
opregion.c drm/i915: move modesetting core code under display/ 2019-06-17 11:48:32 +03:00
page_track.c
page_track.h
reg.h drm/i915/gvt: save RING_HEAD into vreg when vgpu switched out 2019-06-03 13:18:36 +08:00
sched_policy.c drm/i915: update rpm_get/put to use the rpm structure 2019-06-14 15:58:33 +01:00
sched_policy.h
scheduler.c Merge drm/drm-next into drm-intel-next-queued 2019-08-22 00:10:36 -07:00
scheduler.h drm/i915/gvt: save RING_HEAD into vreg when vgpu switched out 2019-06-03 13:18:36 +08:00
trace_points.c drm/i915/gvt: remove duplicate include of trace.h 2019-07-30 14:26:30 +08:00
trace.h
vgpu.c drm/i915/gvt: no need to check return value of debugfs_create functions 2019-08-13 17:55:06 +08:00