[Intel-gfx] [PATCH 1/8] drm/i915: Added eDP PSR registers

Paulo Zanoni przanoni at gmail.com
Tue Jan 15 14:36:19 CET 2013


Hi

2013/1/11 Rodrigo Vivi <rodrigo.vivi at gmail.com>:
> From: Shobhit Kumar <shobhit.kumar at intel.com>
>
> v2: Add support for psr perfromance counter register and corrected
> register names to reflect they are PSR registers. Also added bit
> definitions for the registers
>
> v3: Add missing CDCLK_FREQ register needed for PSR enabling.
>
> Signed-off-by: Sateesh Kavuri <sateesh.kavuri at intel.com>
> Signed-off-by: Shobhit Kumar <shobhit.kumar at intel.com>
> Signed-off-by: Rodrigo Vivi <rodrigo.vivi at gmail.com>
> ---
>  drivers/gpu/drm/i915/i915_reg.h | 47 +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 5b3020f..61de724 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -1561,6 +1561,40 @@
>  #define BCLRPAT(pipe) _PIPE(pipe, _BCLRPAT_A, _BCLRPAT_B)
>  #define VSYNCSHIFT(trans) _TRANSCODER(trans, _VSYNCSHIFT_A, _VSYNCSHIFT_B)
>
> +/* HSW eDP PSR registers */
> +#define EDP_PSR_CTL    0x64800
> +#define  EDP_PSR_ENABLE                (1<<31)
> +#define  EDP_PSR_LINK_DISABLE  (0<<27)
> +#define  EDP_PSR_LINK_STANDBY  (1<<27)
> +#define  EDP_PSR_MIN_LINK_ENTRY_TIME_MASK      (3<<25)
> +#define  EDP_PSR_MIN_LINK_ENTRY_TIME_8_LINES   (0<<25)
> +#define  EDP_PSR_MIN_LINK_ENTRY_TIME_4_LINES   (1<<25)
> +#define  EDP_PSR_MIN_LINK_ENTRY_TIME_2_LINES   (2<<25)
> +#define  EDP_PSR_MIN_LINK_ENTRY_TIME_0_LINES   (3<<25)
> +#define  EDP_PSR_MAX_SLEEP_TIME_SHIFT          20

Or you could also do something like: #define EDP_PSR_MAX_SLEEP_TIME(x)
((x) << 20)
And maybe also #define EDP_PSR_MAX_SLEEP_TIME_MASK (0x1F << 20)

> +#define  EDP_PSR_SKIP_AUX_EXIT (1<<12)
> +#define  EDP_PSR_TP1_TP2_SEL   (0<<11)
> +#define  EDP_PSR_TP1_TP3_SEL   (1<<11)
> +#define  EDP_PSR_TP2_TP3_TIME_500us    (0<<8)
> +#define  EDP_PSR_TP2_TP3_TIME_100us    (1<<8)
> +#define  EDP_PSR_TP2_TP3_TIME_2500us   (2<<8)
> +#define  EDP_PSR_TP2_TP3_TIME_0us      (3<<8)
> +#define  EDP_PSR_TP1_TIME_500us                (0<<4)
> +#define  EDP_PSR_TP1_TIME_100us                (1<<4)
> +#define  EDP_PSR_TP1_TIME_2500us       (2<<4)
> +#define  EDP_PSR_TP1_TIME_0us          (3<<4)
> +#define  EDP_PSR_IDLE_FRAME_SHIFT      0

Same thing here.

> +
> +#define EDP_PSR_AUX_CTL        0x64810
> +#define EDP_PSR_AUX_DATA1      0x64814
> +#define EDP_PSR_AUX_DATA2      0x64818
> +#define EDP_PSR_AUX_DATA3      0x6481c
> +#define EDP_PSR_AUX_DATA4      0x64820
> +#define EDP_PSR_AUX_DATA5      0x64824
> +#define EDP_PSR_STATUS_CTL     0x64840
> +#define  EDP_PSR_STATUS_MASK   (7<<29)
> +#define EDP_PSR_PERF_CNT       0x64844
> +
>  /* VGA port control */
>  #define ADPA                   0x61100
>  #define PCH_ADPA                0xe1100
> @@ -1822,6 +1856,16 @@
>  #define   VIDEO_DIP_ENABLE_GMP_HSW     (1 << 4)
>  #define   VIDEO_DIP_ENABLE_SPD_HSW     (1 << 0)
>
> +#define VIDEO_DIP_CTL_EDP      0x6F200

This is not needed. Take a look at HSW_VIDEO_DIP_CTL_A and the macro
HSW_TVIDEO_DIP_CTL. You need to make the HSW_TVIDEO_DIP_CTL macro use
cpu_transcoder instead of pipe. You can use previous patches like this
one as example:
http://lists.freedesktop.org/archives/intel-gfx/2012-October/020907.html

> + #define VIDEOP_DIP_VSC                (1<<20)

See VIDEO_DIP_ENABLE_VSC_HSW.

> + #define VIDEOP_DIP_GCP                (1<<16)

See VIDEO_DIP_ENABLE_GCP_HSW.

> + #define VIDEOP_DIP_AVI                (1<<12)

See VIDEO_DIP_ENABLE_AVI_HSW.

> + #define VIDEOP_DIP_VS         (1<<8)

See VIDEO_DIP_ENABLE_VS_HSW.

> + #define VIDEOP_DIP_GMP                (1<<4)

See VIDEO_DIP_ENABLE_GMP_HSW.

> + #define VIDEOP_DIP_SPD                (1<<0)

See VIDEO_DIP_ENABLE_SPD_HSW.

> +
> +#define VIDEO_DIP_VSC_DATA_EDP 0x6F320
> +

Take a look at the definition of HSW_TVIDEO_DIP_CTL and similar
macros. You'lll probably have to port them to use cpu_transcoder
instead of pipe too.

>  /* Panel power sequencing */
>  #define PP_STATUS      0x61200
>  #define   PP_ON                (1 << 31)
> @@ -3463,6 +3507,9 @@
>  #define HSW_FUSE_STRAP         0x42014
>  #define  HSW_CDCLK_LIMIT       (1 << 24)
>
> +#define CDCLK_FREQ             0x46200
> +#define CDCLK_FREQ_MASK                0x3ff

Last time I checked, these registers should not be used. Please see
intel_ddi_get_cdclk_freq() from intel_ddi.c.

> +
>  /* PCH */
>
>  /* south display engine interrupt: IBX */
> --
> 1.7.11.7
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Paulo Zanoni



More information about the Intel-gfx mailing list