> From: Suraj Kandpal <suraj.kand...@intel.com>
> 
> Adding WD Types, WD transcoder to enum list and WD Transcoder offsets.
> Adding i915 register definitions related to WD transcoder
> 
> Signed-off-by: Suraj Kandpal <suraj.kand...@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display.h  |   6 +
>  .../drm/i915/display/intel_display_types.h    |   1 +
>  drivers/gpu/drm/i915/i915_reg.h               | 139 ++++++++++++++++++
>  3 files changed, 146 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index fa5371036239..4e9f22954a41 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -120,6 +120,8 @@ enum transcoder {
>       TRANSCODER_DSI_1,
>       TRANSCODER_DSI_A = TRANSCODER_DSI_0,    /* legacy DSI */
>       TRANSCODER_DSI_C = TRANSCODER_DSI_1,    /* legacy DSI */
> +     TRANSCODER_WD_0,
> +     TRANSCODER_WD_1,
> 
>       I915_MAX_TRANSCODERS
>  };
> @@ -141,6 +143,10 @@ static inline const char *transcoder_name(enum
> transcoder transcoder)
>               return "DSI A";
>       case TRANSCODER_DSI_C:
>               return "DSI C";
> +     case TRANSCODER_WD_0:
> +             return "WD 0";
> +     case TRANSCODER_WD_1:
> +             return "WD 1";
>       default:
>               return "<invalid>";
>       }
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 0da9b208d56e..0e94bd430bcb 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -79,6 +79,7 @@ enum intel_output_type {
>       INTEL_OUTPUT_DSI = 9,
>       INTEL_OUTPUT_DDI = 10,
>       INTEL_OUTPUT_DP_MST = 11,
> +     INTEL_OUTPUT_WD = 12,
>  };
> 
>  enum hdmi_force_audio {
> diff --git a/drivers/gpu/drm/i915/i915_reg.h
> b/drivers/gpu/drm/i915/i915_reg.h index bf5c39d9f953..e3fced4b9980
> 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -2059,6 +2059,8 @@
>  #define TRANSCODER_EDP_OFFSET 0x6f000
>  #define TRANSCODER_DSI0_OFFSET       0x6b000
>  #define TRANSCODER_DSI1_OFFSET       0x6b800
> +#define TRANSCODER_WD0_OFFSET        0x6e000
> +#define TRANSCODER_WD1_OFFSET        0x6e800
> 
>  #define HTOTAL(trans)                _MMIO_TRANS2(trans, _HTOTAL_A)
>  #define HBLANK(trans)                _MMIO_TRANS2(trans, _HBLANK_A)
> @@ -3831,6 +3833,11 @@
>  #define PIPE_DSI0_OFFSET     0x7b000
>  #define PIPE_DSI1_OFFSET     0x7b800
> 
> +/* WD 0 and 1 */
Can this be changed to 
/* WD offset */

> +#define PIPE_WD0_OFFSET              0x7e000
> +#define PIPE_WD1_OFFSET              0x7d000
> +
> +
>  #define PIPECONF(pipe)               _MMIO_PIPE2(pipe, _PIPEACONF)
>  #define PIPEDSL(pipe)                _MMIO_PIPE2(pipe, _PIPEADSL)
>  #define PIPEFRAME(pipe)              _MMIO_PIPE2(pipe,
> _PIPEAFRAMEHIGH)
> @@ -4495,6 +4502,10 @@
>  #define _PIPEDSI0CONF                0x7b008
>  #define _PIPEDSI1CONF                0x7b808
> 
> +/* WD 0 and 1 */
Can this be changed to 
/* WD config regs */

> +#define _PIPEWD0CONF         0x7e008
> +#define _PIPEWD1CONF         0x7d008
> +
>  /* Sprite A control */
>  #define _DVSACNTR            0x72180
>  #define   DVS_ENABLE                 REG_BIT(31)
> @@ -5720,6 +5731,7 @@
>  #define GEN8_DE_MISC_IER _MMIO(0x4446c)
>  #define  GEN8_DE_MISC_GSE            (1 << 27)
>  #define  GEN8_DE_EDP_PSR             (1 << 19)
> +#define  GEN8_DE_MISC_WD0            (1 << 23)
> 
>  #define GEN8_PCU_ISR _MMIO(0x444e0)
>  #define GEN8_PCU_IMR _MMIO(0x444e4)
> @@ -8714,6 +8726,133 @@ enum skl_power_gate {
>  #define   DSB_ENABLE                 (1 << 31)
>  #define   DSB_STATUS                 (1 << 0)
> 
> +#define TGL_ROOT_DEVICE_ID           0x9A00
> +#define TGL_ROOT_DEVICE_MASK         0xFF00
> +#define TGL_ROOT_DEVICE_SKU_MASK     0xF
> +#define TGL_ROOT_DEVICE_SKU_ULX              0x2
> +#define TGL_ROOT_DEVICE_SKU_ULT              0x4
> +
> +/* Gen12 WD */
> +#define _MMIO_WD(tc, wd0, wd1)               _MMIO_TRANS((tc) -
> TRANSCODER_WD_0, \
> +                                                     wd0, wd1)
> +
> +#define WD_TRANS_ENABLE                      (1 << 31)
> +#define WD_TRANS_DISABLE             0
> +#define WD_TRANS_ACTIVE                      (1 << 30)
> +
> +/* WD transcoder control */
> +#define _WD_TRANS_FUNC_CTL_0         0x6e400
> +#define _WD_TRANS_FUNC_CTL_1         0x6ec00
> +#define WD_TRANS_FUNC_CTL(tc)                _MMIO_WD(tc,\
> +                                     _WD_TRANS_FUNC_CTL_0,\
> +                                     _WD_TRANS_FUNC_CTL_1)
> +
> +#define TRANS_WD_FUNC_ENABLE         (1 << 31)
> +#define WD_TRIGGERED_CAP_MODE_ENABLE (1 << 30)
> +#define START_TRIGGER_FRAME          (1 << 29)
> +#define STOP_TRIGGER_FRAME           (1 << 28)
> +#define WD_CTL_POINTER_ETEH          (0 << 18)
> +#define WD_CTL_POINTER_ETDH          (1 << 18)
> +#define WD_CTL_POINTER_DTDH          (2 << 18)
> +#define WD_INPUT_SELECT_MASK         (7 << 12)
> +#define WD_INPUT_PIPE_A                      (0 << 12)
> +#define WD_INPUT_PIPE_B                      (5 << 12)
> +#define WD_INPUT_PIPE_C                      (6 << 12)
> +#define WD_INPUT_PIPE_D                      (7 << 12)
> +
> +#define WD_PIX_FMT_MASK                      (0x3 << 20)
> +#define WD_PIX_FMT_YUYV                      (0x1 << 20)
> +#define WD_PIX_FMT_XYUV8888          (0x2 << 20)
> +#define WD_PIX_FMT_XBGR8888          (0x3 << 20)
> +#define WD_PIX_FMT_Y410                      (0x4 << 20)
> +#define WD_PIX_FMT_YUV422            (0x5 << 20)
> +#define WD_PIX_FMT_XBGR2101010               (0x6 << 20)
> +#define WD_PIX_FMT_RGB565            (0x7 << 20)
> +
> +#define WD_FRAME_NUMBER_MASK         15
> +
> +#define _WD_STRIDE_0                 0x6e510
> +#define _WD_STRIDE_1                 0x6ed10
> +#define WD_STRIDE(tc)                        _MMIO_WD(tc,\
> +                                     _WD_STRIDE_0,\
> +                                     _WD_STRIDE_1)
> +#define WD_STRIDE_SHIFT                      6
> +#define WD_STRIDE_MASK                       (0x3ff << WD_STRIDE_SHIFT)
> +
> +#define _WD_STREAMCAP_CTL0           0x6e590
> +#define _WD_STREAMCAP_CTL1           0x6ed90
> +#define WD_STREAMCAP_CTL(tc)         _MMIO_WD(tc,\
> +                                     _WD_STREAMCAP_CTL0,\
> +                                     _WD_STREAMCAP_CTL1)
> +
> +#define WD_STREAM_CAP_MODE_EN                (1 << 31)
> +#define WD_STRAT_MASK                        (3 << 24)
> +#define WD_SLICING_STRAT_1_1         (0 << 24)
> +#define WD_SLICING_STRAT_2_1         (1 << 24)
> +#define WD_SLICING_STRAT_4_1         (2 << 24)
> +#define WD_SLICING_STRAT_8_1         (3 << 24)
> +#define WD_STREAM_OVERRUN_STATUS     1
> +
> +#define _WD_SURF_0                   0x6e514
> +#define _WD_SURF_1                   0x6ed14
> +#define WD_SURF(tc)                  _MMIO_WD(tc,\
> +                                     _WD_SURF_0,\
> +                                     _WD_SURF_1)
> +
> +#define _WD_IMR_0                    0x6e560
> +#define _WD_IMR_1                    0x6ed60
> +#define WD_IMR(tc)                   _MMIO_WD(tc,\
> +                                     _WD_IMR_0,\
> +                                     _WD_IMR_1)
> +#define WD_FRAME_COMPLETE_INT                (1 << 7)
> +#define WD_GTT_FAULT_INT             (1 << 6)
> +#define WD_VBLANK_INT                        (1 << 5)
> +#define WD_OVERRUN_INT                       (1 << 4)
> +#define WD_CAPTURING_INT             (1 << 3)
> +#define WD_WRITE_COMPLETE_INT                (1 << 2)
> +
> +#define _WD_IIR_0                    0x6e564
> +#define _WD_IIR_1                    0x6ed64
> +#define WD_IIR(tc)                   _MMIO_WD(tc,\
> +                                     _WD_IIR_0,\
> +                                     _WD_IIR_1)
> +
> +#define _WD_FRAME_STATUS_0           0x6e56b
> +#define _WD_FRAME_STATUS_1           0x6ed6b
> +#define WD_FRAME_STATUS(tc)          _MMIO_WD(tc,\
> +                                     _WD_FRAME_STATUS_0,\
> +                                     _WD_FRAME_STATUS_1)
> +
> +#define WD_FRAME_COMPLETE            (1 << 31)
> +#define WD_STATE_IDLE                        (0 << 24)
> +#define WD_STATE_CAPSTART            (1 << 24)
> +#define WD_STATE_FRAME_START         (2 << 24)
> +#define WD_STATE_CAPACITIVE          (3 << 24)
> +#define WD_STATE_TG_DONE             (4 << 24)
> +#define WD_STATE_WDX_DONE            (5 << 24)
> +#define WD_STATE_QUICK_CAP           (6 << 24)
> +
> +#define _WD_27_M_0                   0x6e524
> +#define _WD_27_M_1                   0x6ed24
> +#define WD_27_M(tc)                  _MMIO_WD(tc,\
> +                                     _WD_27_M_0,\
> +                                     _WD_27_M_1)
> +
> +#define _WD_27_N_0                   0x6e528
> +
> +//Address looks wrong in bspec:
> +#define _WD_27_N_1                   0x6ec28
> +#define WD_27_N(tc)                  _MMIO_WD(tc,\
> +                                     _WD_27_N_0,\
> +                                     _WD_27_N_1)
> +
> +#define _WD_TAIL_CFG_0                       0x6e520
> +#define _WD_TAIL_CFG_1                       0x6ed20
> +
> +#define WD_TAIL_CFG(tc)                      _MMIO_WD(tc,\
> +                                     _WD_TAIL_CFG_0,\
> +                                     _WD_TAIL_CFG_1)
> +
>  #define CLKREQ_POLICY                        _MMIO(0x101038)
>  #define  CLKREQ_POLICY_MEM_UP_OVRD   REG_BIT(1)
> 
With the above said changes
Reviewed-by: Arun R Murthy <arun.r.murthy>

Thanks and Regards,
Arun R Murthy
--------------------

Reply via email to