[Intel-gfx] [PATCH v6 3/4] drm/i915/psr: Make PSR registers relative to transcoders
Souza, Jose
jose.souza at intel.com
Thu Jun 20 17:36:55 UTC 2019
On Thu, 2019-06-20 at 11:13 +0300, Jani Nikula wrote:
> On Wed, 19 Jun 2019, José Roberto de Souza <jose.souza at intel.com>
> wrote:
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h
> > b/drivers/gpu/drm/i915/i915_reg.h
> > index 4fc8dc083766..31fb4de5081c 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -4225,10 +4225,18 @@ enum {
> > #define PIPESRC(trans) _MMIO_TRANS2(trans, _PIPEASRC)
> > #define PIPE_MULT(trans) _MMIO_TRANS2(trans, _PIPE_MULT_A)
> >
> > -/* HSW+ eDP PSR registers */
> > -#define HSW_EDP_PSR_BASE 0x64800
> > -#define BDW_EDP_PSR_BASE 0x6f800
> > -#define EDP_PSR_CTL _MMIO(dev_priv-
> > >psr_mmio_base + 0)
> > +/*
> > + * HSW+ eDP PSR registers
> > + *
> > + * HSW PSR registers are relative to DDIA(_DDI_BUF_CTL_A + 0x800)
> > with just one
> > + * instance of it
> > + */
> > +#define _HSW_EDP_PSR_BASE 0x64800
> > +#define _SRD_CTL_A 0x60800
> > +#define _SRD_CTL_EDP 0x6f800
> > +#define _HSW_PSR_ADJ(reg) ((reg) - _SRD_CTL_A +
> > _HSW_EDP_PSR_BASE)
> > +#define _PSR_ADJ(tran, reg) (IS_HASWELL(dev
> > _priv) ? _HSW_PSR_ADJ(reg) : _TRANS2(tran, reg))
> > +#define EDP_PSR_CTL(tran) _MMIO(_PSR_ADJ(tran,
> > _SRD_CTL_A))
>
> There are currently three instances of platform/gen checks in
> i915_reg.h. They are the exception, and they're in individual macros
> that aren't even register offset definitions let alone helpers that
> get
> proliferated to several other macros.
>
> This change here is quite a big precedent in that regard, and not to
> be
> done lightly. Usually the case is others will follow suit, so this is
> not just about this one instance. It's about deciding whether this is
> the direction we want to take. How far are we prepared to go and how
> do
> we stop there?
>
> There's really no way to set the psr->transcoder such on HSW that it
> would work with MMIO_TRANS2()?
I'm going to think about but right now the only other option that comes
in my mind is to have the transcoder offset as macro parameter:
#define _SRD_CTL 0x800
#define EDP_PSR_CTL(trans) _MMIO(trans + _SRD_CTL)
But we would lose the full offset address of PSR registers.
>
> BR,
> Jani.
>
More information about the Intel-gfx
mailing list