diff mbox series

drm/i915/mtl: Extend PSR support

Message ID 20220907081543.92268-1-mika.kahola@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/mtl: Extend PSR support | expand

Commit Message

Kahola, Mika Sept. 7, 2022, 8:15 a.m. UTC
From: José Roberto de Souza <jose.souza@intel.com>

Meteorlake and display 14 platform don't have any PSR differences
when comparing to Alderlake-P display, so it was only necessary to
extend some checks to properly program hardware.

BSpec: 55229, 49196

Cc: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_psr.c | 31 +++++++++++++++---------
 drivers/gpu/drm/i915/i915_reg.h          |  5 ++++
 2 files changed, 25 insertions(+), 11 deletions(-)

Comments

Lisovskiy, Stanislav Sept. 23, 2022, 8:09 a.m. UTC | #1
On Wed, Sep 07, 2022 at 11:15:43AM +0300, Mika Kahola wrote:
> From: José Roberto de Souza <jose.souza@intel.com>
> 
> Meteorlake and display 14 platform don't have any PSR differences
> when comparing to Alderlake-P display, so it was only necessary to
> extend some checks to properly program hardware.
> 
> BSpec: 55229, 49196

Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>

> 
> Cc: Mika Kahola <mika.kahola@intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_psr.c | 31 +++++++++++++++---------
>  drivers/gpu/drm/i915/i915_reg.h          |  5 ++++
>  2 files changed, 25 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
> index 079b7d3d0c53..4170017969c9 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -515,7 +515,7 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
>  
>  	val |= psr_compute_idle_frames(intel_dp) << EDP_PSR2_IDLE_FRAME_SHIFT;
>  
> -	if (!IS_ALDERLAKE_P(dev_priv))
> +	if (DISPLAY_VER(dev_priv) <= 13 && !IS_ALDERLAKE_P(dev_priv))
>  		val |= EDP_SU_TRACK_ENABLE;
>  
>  	if (DISPLAY_VER(dev_priv) >= 10 && DISPLAY_VER(dev_priv) <= 12)
> @@ -598,7 +598,7 @@ static void hsw_activate_psr2(struct intel_dp *intel_dp)
>  static bool
>  transcoder_has_psr2(struct drm_i915_private *dev_priv, enum transcoder trans)
>  {
> -	if (IS_ALDERLAKE_P(dev_priv))
> +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
>  		return trans == TRANSCODER_A || trans == TRANSCODER_B;
>  	else if (DISPLAY_VER(dev_priv) >= 12)
>  		return trans == TRANSCODER_A;
> @@ -678,7 +678,7 @@ dc3co_is_pipe_port_compatible(struct intel_dp *intel_dp,
>  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
>  	enum port port = dig_port->base.port;
>  
> -	if (IS_ALDERLAKE_P(dev_priv))
> +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
>  		return pipe <= PIPE_B && port <= PORT_B;
>  	else
>  		return pipe == PIPE_A && port == PORT_A;
> @@ -777,11 +777,11 @@ static bool psr2_granularity_check(struct intel_dp *intel_dp,
>  		return intel_dp->psr.su_y_granularity == 4;
>  
>  	/*
> -	 * adl_p has 1 line granularity. For other platforms with SW tracking we
> -	 * can adjust the y coordinates to match sink requirement if multiple of
> -	 * 4.
> +	 * adl_p and display 14+ platforms has 1 line granularity.
> +	 * For other platforms with SW tracking we can adjust the y coordinates
> +	 * to match sink requirement if multiple of 4.
>  	 */
> -	if (IS_ALDERLAKE_P(dev_priv))
> +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
>  		y_granularity = intel_dp->psr.su_y_granularity;
>  	else if (intel_dp->psr.su_y_granularity <= 2)
>  		y_granularity = 4;
> @@ -864,7 +864,8 @@ static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
>  	 * resolution requires DSC to be enabled, priority is given to DSC
>  	 * over PSR2.
>  	 */
> -	if (crtc_state->dsc.compression_enable) {
> +	if (crtc_state->dsc.compression_enable &&
> +	    (DISPLAY_VER(dev_priv) <= 13 && !IS_ALDERLAKE_P(dev_priv))) {
>  		drm_dbg_kms(&dev_priv->drm,
>  			    "PSR2 cannot be enabled since DSC is enabled\n");
>  		return false;
> @@ -1457,7 +1458,7 @@ static u32 man_trk_ctl_enable_bit_get(struct drm_i915_private *dev_priv)
>  
>  static u32 man_trk_ctl_single_full_frame_bit_get(struct drm_i915_private *dev_priv)
>  {
> -	return IS_ALDERLAKE_P(dev_priv) ?
> +	return IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14 ?
>  	       ADLP_PSR2_MAN_TRK_CTL_SF_SINGLE_FULL_FRAME :
>  	       PSR2_MAN_TRK_CTL_SF_SINGLE_FULL_FRAME;
>  }
> @@ -1610,7 +1611,7 @@ static void psr2_man_trk_ctl_calc(struct intel_crtc_state *crtc_state,
>  	if (clip->y1 == -1)
>  		goto exit;
>  
> -	if (IS_ALDERLAKE_P(dev_priv)) {
> +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14) {
>  		val |= ADLP_PSR2_MAN_TRK_CTL_SU_REGION_START_ADDR(clip->y1);
>  		val |= ADLP_PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR(clip->y2 - 1);
>  	} else {
> @@ -1647,7 +1648,15 @@ static void intel_psr2_sel_fetch_pipe_alignment(const struct intel_crtc_state *c
>  						struct drm_rect *pipe_clip)
>  {
>  	struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev);
> -	const u16 y_alignment = crtc_state->su_y_granularity;
> +	const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config;
> +	u16 y_alignment;
> +
> +	/* ADLP aligns the SU region to vdsc slice height in case dsc is enabled */
> +	if (crtc_state->dsc.compression_enable &&
> +	    (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14))
> +		y_alignment = vdsc_cfg->slice_height;
> +	else
> +		y_alignment = crtc_state->su_y_granularity;
>  
>  	pipe_clip->y1 -= pipe_clip->y1 % y_alignment;
>  	if (pipe_clip->y2 % y_alignment)
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index c413eec3373f..260d9b680a73 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -8292,6 +8292,11 @@ enum skl_power_gate {
>  #define GEN12_CULLBIT2			_MMIO(0x7030)
>  #define GEN12_STATE_ACK_DEBUG		_MMIO(0x20BC)
>  
> +#define _MTL_CLKGATE_DIS_TRANS_A			0x604E8
> +#define _MTL_CLKGATE_DIS_TRANS_B			0x614E8
> +#define MTL_CLKGATE_DIS_TRANS(trans)			_MMIO_TRANS2(trans, _MTL_CLKGATE_DIS_TRANS_A)
> +#define  MTL_CLKGATE_DIS_TRANS_DMASC_GATING_DIS		REG_BIT(7)
> +
>  #define MTL_LATENCY_LP0_LP1		_MMIO(0x45780)
>  #define MTL_LATENCY_LP2_LP3		_MMIO(0x45784)
>  #define MTL_LATENCY_LP4_LP5		_MMIO(0x45788)
> -- 
> 2.34.1
>
Sripada, Radhakrishna Oct. 4, 2022, 8:35 p.m. UTC | #2
Merged the patch. Thank you for the patch and review.

- Radhakrishna(RK) Sripada

> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of
> Lisovskiy, Stanislav
> Sent: Friday, September 23, 2022 1:09 AM
> To: Kahola, Mika <mika.kahola@intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Subject: Re: [Intel-gfx] [PATCH] drm/i915/mtl: Extend PSR support
> 
> On Wed, Sep 07, 2022 at 11:15:43AM +0300, Mika Kahola wrote:
> > From: José Roberto de Souza <jose.souza@intel.com>
> >
> > Meteorlake and display 14 platform don't have any PSR differences
> > when comparing to Alderlake-P display, so it was only necessary to
> > extend some checks to properly program hardware.
> >
> > BSpec: 55229, 49196
> 
> Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
> 
> >
> > Cc: Mika Kahola <mika.kahola@intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_psr.c | 31 +++++++++++++++---------
> >  drivers/gpu/drm/i915/i915_reg.h          |  5 ++++
> >  2 files changed, 25 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> > index 079b7d3d0c53..4170017969c9 100644
> > --- a/drivers/gpu/drm/i915/display/intel_psr.c
> > +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> > @@ -515,7 +515,7 @@ static void hsw_activate_psr2(struct intel_dp
> *intel_dp)
> >
> >  	val |= psr_compute_idle_frames(intel_dp) <<
> EDP_PSR2_IDLE_FRAME_SHIFT;
> >
> > -	if (!IS_ALDERLAKE_P(dev_priv))
> > +	if (DISPLAY_VER(dev_priv) <= 13 && !IS_ALDERLAKE_P(dev_priv))
> >  		val |= EDP_SU_TRACK_ENABLE;
> >
> >  	if (DISPLAY_VER(dev_priv) >= 10 && DISPLAY_VER(dev_priv) <= 12)
> > @@ -598,7 +598,7 @@ static void hsw_activate_psr2(struct intel_dp
> *intel_dp)
> >  static bool
> >  transcoder_has_psr2(struct drm_i915_private *dev_priv, enum transcoder
> trans)
> >  {
> > -	if (IS_ALDERLAKE_P(dev_priv))
> > +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
> >  		return trans == TRANSCODER_A || trans == TRANSCODER_B;
> >  	else if (DISPLAY_VER(dev_priv) >= 12)
> >  		return trans == TRANSCODER_A;
> > @@ -678,7 +678,7 @@ dc3co_is_pipe_port_compatible(struct intel_dp
> *intel_dp,
> >  	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
> >  	enum port port = dig_port->base.port;
> >
> > -	if (IS_ALDERLAKE_P(dev_priv))
> > +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
> >  		return pipe <= PIPE_B && port <= PORT_B;
> >  	else
> >  		return pipe == PIPE_A && port == PORT_A;
> > @@ -777,11 +777,11 @@ static bool psr2_granularity_check(struct intel_dp
> *intel_dp,
> >  		return intel_dp->psr.su_y_granularity == 4;
> >
> >  	/*
> > -	 * adl_p has 1 line granularity. For other platforms with SW tracking we
> > -	 * can adjust the y coordinates to match sink requirement if multiple of
> > -	 * 4.
> > +	 * adl_p and display 14+ platforms has 1 line granularity.
> > +	 * For other platforms with SW tracking we can adjust the y coordinates
> > +	 * to match sink requirement if multiple of 4.
> >  	 */
> > -	if (IS_ALDERLAKE_P(dev_priv))
> > +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
> >  		y_granularity = intel_dp->psr.su_y_granularity;
> >  	else if (intel_dp->psr.su_y_granularity <= 2)
> >  		y_granularity = 4;
> > @@ -864,7 +864,8 @@ static bool intel_psr2_config_valid(struct intel_dp
> *intel_dp,
> >  	 * resolution requires DSC to be enabled, priority is given to DSC
> >  	 * over PSR2.
> >  	 */
> > -	if (crtc_state->dsc.compression_enable) {
> > +	if (crtc_state->dsc.compression_enable &&
> > +	    (DISPLAY_VER(dev_priv) <= 13 && !IS_ALDERLAKE_P(dev_priv))) {
> >  		drm_dbg_kms(&dev_priv->drm,
> >  			    "PSR2 cannot be enabled since DSC is enabled\n");
> >  		return false;
> > @@ -1457,7 +1458,7 @@ static u32 man_trk_ctl_enable_bit_get(struct
> drm_i915_private *dev_priv)
> >
> >  static u32 man_trk_ctl_single_full_frame_bit_get(struct drm_i915_private
> *dev_priv)
> >  {
> > -	return IS_ALDERLAKE_P(dev_priv) ?
> > +	return IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14 ?
> >  	       ADLP_PSR2_MAN_TRK_CTL_SF_SINGLE_FULL_FRAME :
> >  	       PSR2_MAN_TRK_CTL_SF_SINGLE_FULL_FRAME;
> >  }
> > @@ -1610,7 +1611,7 @@ static void psr2_man_trk_ctl_calc(struct
> intel_crtc_state *crtc_state,
> >  	if (clip->y1 == -1)
> >  		goto exit;
> >
> > -	if (IS_ALDERLAKE_P(dev_priv)) {
> > +	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14) {
> >  		val |=
> ADLP_PSR2_MAN_TRK_CTL_SU_REGION_START_ADDR(clip->y1);
> >  		val |=
> ADLP_PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR(clip->y2 - 1);
> >  	} else {
> > @@ -1647,7 +1648,15 @@ static void
> intel_psr2_sel_fetch_pipe_alignment(const struct intel_crtc_state *c
> >  						struct drm_rect *pipe_clip)
> >  {
> >  	struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc-
> >dev);
> > -	const u16 y_alignment = crtc_state->su_y_granularity;
> > +	const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config;
> > +	u16 y_alignment;
> > +
> > +	/* ADLP aligns the SU region to vdsc slice height in case dsc is enabled */
> > +	if (crtc_state->dsc.compression_enable &&
> > +	    (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14))
> > +		y_alignment = vdsc_cfg->slice_height;
> > +	else
> > +		y_alignment = crtc_state->su_y_granularity;
> >
> >  	pipe_clip->y1 -= pipe_clip->y1 % y_alignment;
> >  	if (pipe_clip->y2 % y_alignment)
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h
> b/drivers/gpu/drm/i915/i915_reg.h
> > index c413eec3373f..260d9b680a73 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -8292,6 +8292,11 @@ enum skl_power_gate {
> >  #define GEN12_CULLBIT2			_MMIO(0x7030)
> >  #define GEN12_STATE_ACK_DEBUG		_MMIO(0x20BC)
> >
> > +#define _MTL_CLKGATE_DIS_TRANS_A			0x604E8
> > +#define _MTL_CLKGATE_DIS_TRANS_B			0x614E8
> > +#define MTL_CLKGATE_DIS_TRANS(trans)
> 	_MMIO_TRANS2(trans, _MTL_CLKGATE_DIS_TRANS_A)
> > +#define  MTL_CLKGATE_DIS_TRANS_DMASC_GATING_DIS
> 	REG_BIT(7)
> > +
> >  #define MTL_LATENCY_LP0_LP1		_MMIO(0x45780)
> >  #define MTL_LATENCY_LP2_LP3		_MMIO(0x45784)
> >  #define MTL_LATENCY_LP4_LP5		_MMIO(0x45788)
> > --
> > 2.34.1
> >
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c b/drivers/gpu/drm/i915/display/intel_psr.c
index 079b7d3d0c53..4170017969c9 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -515,7 +515,7 @@  static void hsw_activate_psr2(struct intel_dp *intel_dp)
 
 	val |= psr_compute_idle_frames(intel_dp) << EDP_PSR2_IDLE_FRAME_SHIFT;
 
-	if (!IS_ALDERLAKE_P(dev_priv))
+	if (DISPLAY_VER(dev_priv) <= 13 && !IS_ALDERLAKE_P(dev_priv))
 		val |= EDP_SU_TRACK_ENABLE;
 
 	if (DISPLAY_VER(dev_priv) >= 10 && DISPLAY_VER(dev_priv) <= 12)
@@ -598,7 +598,7 @@  static void hsw_activate_psr2(struct intel_dp *intel_dp)
 static bool
 transcoder_has_psr2(struct drm_i915_private *dev_priv, enum transcoder trans)
 {
-	if (IS_ALDERLAKE_P(dev_priv))
+	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
 		return trans == TRANSCODER_A || trans == TRANSCODER_B;
 	else if (DISPLAY_VER(dev_priv) >= 12)
 		return trans == TRANSCODER_A;
@@ -678,7 +678,7 @@  dc3co_is_pipe_port_compatible(struct intel_dp *intel_dp,
 	struct drm_i915_private *dev_priv = dp_to_i915(intel_dp);
 	enum port port = dig_port->base.port;
 
-	if (IS_ALDERLAKE_P(dev_priv))
+	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
 		return pipe <= PIPE_B && port <= PORT_B;
 	else
 		return pipe == PIPE_A && port == PORT_A;
@@ -777,11 +777,11 @@  static bool psr2_granularity_check(struct intel_dp *intel_dp,
 		return intel_dp->psr.su_y_granularity == 4;
 
 	/*
-	 * adl_p has 1 line granularity. For other platforms with SW tracking we
-	 * can adjust the y coordinates to match sink requirement if multiple of
-	 * 4.
+	 * adl_p and display 14+ platforms has 1 line granularity.
+	 * For other platforms with SW tracking we can adjust the y coordinates
+	 * to match sink requirement if multiple of 4.
 	 */
-	if (IS_ALDERLAKE_P(dev_priv))
+	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14)
 		y_granularity = intel_dp->psr.su_y_granularity;
 	else if (intel_dp->psr.su_y_granularity <= 2)
 		y_granularity = 4;
@@ -864,7 +864,8 @@  static bool intel_psr2_config_valid(struct intel_dp *intel_dp,
 	 * resolution requires DSC to be enabled, priority is given to DSC
 	 * over PSR2.
 	 */
-	if (crtc_state->dsc.compression_enable) {
+	if (crtc_state->dsc.compression_enable &&
+	    (DISPLAY_VER(dev_priv) <= 13 && !IS_ALDERLAKE_P(dev_priv))) {
 		drm_dbg_kms(&dev_priv->drm,
 			    "PSR2 cannot be enabled since DSC is enabled\n");
 		return false;
@@ -1457,7 +1458,7 @@  static u32 man_trk_ctl_enable_bit_get(struct drm_i915_private *dev_priv)
 
 static u32 man_trk_ctl_single_full_frame_bit_get(struct drm_i915_private *dev_priv)
 {
-	return IS_ALDERLAKE_P(dev_priv) ?
+	return IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14 ?
 	       ADLP_PSR2_MAN_TRK_CTL_SF_SINGLE_FULL_FRAME :
 	       PSR2_MAN_TRK_CTL_SF_SINGLE_FULL_FRAME;
 }
@@ -1610,7 +1611,7 @@  static void psr2_man_trk_ctl_calc(struct intel_crtc_state *crtc_state,
 	if (clip->y1 == -1)
 		goto exit;
 
-	if (IS_ALDERLAKE_P(dev_priv)) {
+	if (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14) {
 		val |= ADLP_PSR2_MAN_TRK_CTL_SU_REGION_START_ADDR(clip->y1);
 		val |= ADLP_PSR2_MAN_TRK_CTL_SU_REGION_END_ADDR(clip->y2 - 1);
 	} else {
@@ -1647,7 +1648,15 @@  static void intel_psr2_sel_fetch_pipe_alignment(const struct intel_crtc_state *c
 						struct drm_rect *pipe_clip)
 {
 	struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev);
-	const u16 y_alignment = crtc_state->su_y_granularity;
+	const struct drm_dsc_config *vdsc_cfg = &crtc_state->dsc.config;
+	u16 y_alignment;
+
+	/* ADLP aligns the SU region to vdsc slice height in case dsc is enabled */
+	if (crtc_state->dsc.compression_enable &&
+	    (IS_ALDERLAKE_P(dev_priv) || DISPLAY_VER(dev_priv) >= 14))
+		y_alignment = vdsc_cfg->slice_height;
+	else
+		y_alignment = crtc_state->su_y_granularity;
 
 	pipe_clip->y1 -= pipe_clip->y1 % y_alignment;
 	if (pipe_clip->y2 % y_alignment)
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index c413eec3373f..260d9b680a73 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -8292,6 +8292,11 @@  enum skl_power_gate {
 #define GEN12_CULLBIT2			_MMIO(0x7030)
 #define GEN12_STATE_ACK_DEBUG		_MMIO(0x20BC)
 
+#define _MTL_CLKGATE_DIS_TRANS_A			0x604E8
+#define _MTL_CLKGATE_DIS_TRANS_B			0x614E8
+#define MTL_CLKGATE_DIS_TRANS(trans)			_MMIO_TRANS2(trans, _MTL_CLKGATE_DIS_TRANS_A)
+#define  MTL_CLKGATE_DIS_TRANS_DMASC_GATING_DIS		REG_BIT(7)
+
 #define MTL_LATENCY_LP0_LP1		_MMIO(0x45780)
 #define MTL_LATENCY_LP2_LP3		_MMIO(0x45784)
 #define MTL_LATENCY_LP4_LP5		_MMIO(0x45788)