From: Gustavo Sousa <gustavo.sousa@intel.com>
To: Matt Roper <matthew.d.roper@intel.com>
Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
"Ankit Nautiyal" <ankit.k.nautiyal@intel.com>,
"Dnyaneshwar Bhadane" <dnyaneshwar.bhadane@intel.com>,
"Jouni Högander" <jouni.hogander@intel.com>,
"Juha-pekka Heikkila" <juha-pekka.heikkila@intel.com>,
"Luca Coelho" <luciano.coelho@intel.com>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Matt Atwood" <matthew.s.atwood@intel.com>,
"Ravi Kumar Vodapalli" <ravi.kumar.vodapalli@intel.com>,
"Shekhar Chauhan" <shekhar.chauhan@intel.com>,
"Vinod Govindapillai" <vinod.govindapillai@intel.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>
Subject: Re: [PATCH v2 13/32] drm/i915/xe3p_lpd: Adapt to updates on MBUS_CTL/DBUF_CTL registers
Date: Thu, 30 Oct 2025 23:48:55 -0300 [thread overview]
Message-ID: <176187893526.3303.4396397116272962497@intel.com> (raw)
In-Reply-To: <20251029212215.GC2806654@mdroper-desk1.amr.corp.intel.com>
Quoting Matt Roper (2025-10-29 18:22:15-03:00)
>On Tue, Oct 21, 2025 at 09:28:38PM -0300, Gustavo Sousa wrote:
>> From: Ravi Kumar Vodapalli <ravi.kumar.vodapalli@intel.com>
>>
>> Some of the register fields of MBUS_CTL and DBUF_CTL register are
>> changed for Xe3p_LPD platforms. Update the changed fields in the driver.
>> Below are the changes:
>>
>> MBUS_CTL:
>> Translation Throttle Min
>> It changed from BIT[15:13] to BIT[16:13]
>>
>> DBUF_CTL:
>> Min Tracker State Service
>> It changed from BIT[18:16] to BIT[20:16]
>> Max Tracker State Service
>> It changed to from BIT[23:19] to BIT[14:10]
>> but using default value, so no need to define
>> in code.
>
>In a lot of cases when a register field picks up extra high bit(s), the
>extra bits were previously reserved, so it's fine to just adjust the
>existing definition (since reserved bits are required to always read out
>of hardware as zeroes). However in these cases, the new bits these
>fields are extending into were actively used by the hardware for other
>purposes on previous platforms, which is why it's necessary to keep the
>existing pre-Xe3p definitions unchanged and create separate Xe3p ones
>that can be used only on the newer Xe3p platforms. You should make some
>mention of that in the commit message so it's clear why we're handling
>these a bit differently than a lot of other registers.
Agreed. Just updated the local v3 to make that clear.
>
>>
>> v2:
>> - Keep definitions in the same line (i.e. without line continuation
>> breaks) for better readability. (Jani)
>>
>> Bspec: 68868, 68872
>> Cc: Jani Nikula <jani.nikula@linux.intel.com>
>> Signed-off-by: Ravi Kumar Vodapalli <ravi.kumar.vodapalli@intel.com>
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>> drivers/gpu/drm/i915/display/skl_watermark.c | 16 +++++--
>> drivers/gpu/drm/i915/display/skl_watermark_regs.h | 52 ++++++++++++-----------
>> 2 files changed, 40 insertions(+), 28 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
>> index 256162da9afc..c141d575009f 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
>> @@ -3477,7 +3477,10 @@ void intel_dbuf_mdclk_cdclk_ratio_update(struct intel_display *display,
>> if (!HAS_MBUS_JOINING(display))
>> return;
>>
>> - if (DISPLAY_VER(display) >= 20)
>> + if (DISPLAY_VER(display) >= 35)
>> + intel_de_rmw(display, MBUS_CTL, XE3P_MBUS_TRANSLATION_THROTTLE_MIN_MASK,
>> + XE3P_MBUS_TRANSLATION_THROTTLE_MIN(ratio - 1));
>> + else if (DISPLAY_VER(display) >= 20)
>> intel_de_rmw(display, MBUS_CTL, MBUS_TRANSLATION_THROTTLE_MIN_MASK,
>> MBUS_TRANSLATION_THROTTLE_MIN(ratio - 1));
>>
>> @@ -3488,9 +3491,14 @@ void intel_dbuf_mdclk_cdclk_ratio_update(struct intel_display *display,
>> ratio, str_yes_no(joined_mbus));
>>
>> for_each_dbuf_slice(display, slice)
>> - intel_de_rmw(display, DBUF_CTL_S(slice),
>> - DBUF_MIN_TRACKER_STATE_SERVICE_MASK,
>> - DBUF_MIN_TRACKER_STATE_SERVICE(ratio - 1));
>> + if (DISPLAY_VER(display) >= 35)
>> + intel_de_rmw(display, DBUF_CTL_S(slice),
>> + XE3P_DBUF_MIN_TRACKER_STATE_SERVICE_MASK,
>> + XE3P_DBUF_MIN_TRACKER_STATE_SERVICE(ratio - 1));
>> + else
>> + intel_de_rmw(display, DBUF_CTL_S(slice),
>> + DBUF_MIN_TRACKER_STATE_SERVICE_MASK,
>> + DBUF_MIN_TRACKER_STATE_SERVICE(ratio - 1));
>> }
>>
>> static void intel_dbuf_mdclk_min_tracker_update(struct intel_atomic_state *state)
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark_regs.h b/drivers/gpu/drm/i915/display/skl_watermark_regs.h
>> index c5572fc0e847..94915afc6b0b 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark_regs.h
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark_regs.h
>> @@ -32,16 +32,18 @@
>> #define MBUS_BBOX_CTL_S1 _MMIO(0x45040)
>> #define MBUS_BBOX_CTL_S2 _MMIO(0x45044)
>>
>> -#define MBUS_CTL _MMIO(0x4438C)
>> -#define MBUS_JOIN REG_BIT(31)
>> -#define MBUS_HASHING_MODE_MASK REG_BIT(30)
>> -#define MBUS_HASHING_MODE_2x2 REG_FIELD_PREP(MBUS_HASHING_MODE_MASK, 0)
>> -#define MBUS_HASHING_MODE_1x4 REG_FIELD_PREP(MBUS_HASHING_MODE_MASK, 1)
>> -#define MBUS_JOIN_PIPE_SELECT_MASK REG_GENMASK(28, 26)
>> -#define MBUS_JOIN_PIPE_SELECT(pipe) REG_FIELD_PREP(MBUS_JOIN_PIPE_SELECT_MASK, pipe)
>> -#define MBUS_JOIN_PIPE_SELECT_NONE MBUS_JOIN_PIPE_SELECT(7)
>> -#define MBUS_TRANSLATION_THROTTLE_MIN_MASK REG_GENMASK(15, 13)
>> -#define MBUS_TRANSLATION_THROTTLE_MIN(val) REG_FIELD_PREP(MBUS_TRANSLATION_THROTTLE_MIN_MASK, val)
>> +#define MBUS_CTL _MMIO(0x4438C)
>> +#define MBUS_JOIN REG_BIT(31)
>> +#define MBUS_HASHING_MODE_MASK REG_BIT(30)
>> +#define MBUS_HASHING_MODE_2x2 REG_FIELD_PREP(MBUS_HASHING_MODE_MASK, 0)
>> +#define MBUS_HASHING_MODE_1x4 REG_FIELD_PREP(MBUS_HASHING_MODE_MASK, 1)
>> +#define MBUS_JOIN_PIPE_SELECT_MASK REG_GENMASK(28, 26)
>> +#define MBUS_JOIN_PIPE_SELECT(pipe) REG_FIELD_PREP(MBUS_JOIN_PIPE_SELECT_MASK, pipe)
>> +#define MBUS_JOIN_PIPE_SELECT_NONE MBUS_JOIN_PIPE_SELECT(7)
>> +#define MBUS_TRANSLATION_THROTTLE_MIN_MASK REG_GENMASK(15, 13)
>> +#define MBUS_TRANSLATION_THROTTLE_MIN(val) REG_FIELD_PREP(MBUS_TRANSLATION_THROTTLE_MIN_MASK, val)
>> +#define XE3P_MBUS_TRANSLATION_THROTTLE_MIN_MASK REG_GENMASK(16, 13)
>> +#define XE3P_MBUS_TRANSLATION_THROTTLE_MIN(val) REG_FIELD_PREP(XE3P_MBUS_TRANSLATION_THROTTLE_MIN_MASK, val)
>
>Nitpick: I'm not sure if we're 100% consistent, but I feel like we
>usually sort bitfields based on their upper bound rather than their
>lower bound. So even though xe3p and pre-xe3p start at the same bit 13,
>the xe3p should probably be sorted first since it ends at a higher bit
>(16 vs 15).
Ack.
Thanks!
--
Gustavo Sousa
>
>>
>> /*
>> * The below are numbered starting from "S1" on gen11/gen12, but starting
>> @@ -51,21 +53,23 @@
>> * way things will be named by the hardware team going forward, plus it's more
>> * consistent with how most of the rest of our registers are named.
>> */
>> -#define _DBUF_CTL_S0 0x45008
>> -#define _DBUF_CTL_S1 0x44FE8
>> -#define _DBUF_CTL_S2 0x44300
>> -#define _DBUF_CTL_S3 0x44304
>> -#define DBUF_CTL_S(slice) _MMIO(_PICK(slice, \
>> - _DBUF_CTL_S0, \
>> - _DBUF_CTL_S1, \
>> - _DBUF_CTL_S2, \
>> - _DBUF_CTL_S3))
>> -#define DBUF_POWER_REQUEST REG_BIT(31)
>> -#define DBUF_POWER_STATE REG_BIT(30)
>> -#define DBUF_TRACKER_STATE_SERVICE_MASK REG_GENMASK(23, 19)
>> -#define DBUF_TRACKER_STATE_SERVICE(x) REG_FIELD_PREP(DBUF_TRACKER_STATE_SERVICE_MASK, x)
>> -#define DBUF_MIN_TRACKER_STATE_SERVICE_MASK REG_GENMASK(18, 16) /* ADL-P+ */
>> +#define _DBUF_CTL_S0 0x45008
>> +#define _DBUF_CTL_S1 0x44FE8
>> +#define _DBUF_CTL_S2 0x44300
>> +#define _DBUF_CTL_S3 0x44304
>> +#define DBUF_CTL_S(slice) _MMIO(_PICK(slice, \
>> + _DBUF_CTL_S0, \
>> + _DBUF_CTL_S1, \
>> + _DBUF_CTL_S2, \
>> + _DBUF_CTL_S3))
>> +#define DBUF_POWER_REQUEST REG_BIT(31)
>> +#define DBUF_POWER_STATE REG_BIT(30)
>> +#define DBUF_TRACKER_STATE_SERVICE_MASK REG_GENMASK(23, 19)
>> +#define DBUF_TRACKER_STATE_SERVICE(x) REG_FIELD_PREP(DBUF_TRACKER_STATE_SERVICE_MASK, x)
>> +#define DBUF_MIN_TRACKER_STATE_SERVICE_MASK REG_GENMASK(18, 16) /* ADL-P+ */
>> #define DBUF_MIN_TRACKER_STATE_SERVICE(x) REG_FIELD_PREP(DBUF_MIN_TRACKER_STATE_SERVICE_MASK, x) /* ADL-P+ */
>> +#define XE3P_DBUF_MIN_TRACKER_STATE_SERVICE_MASK REG_GENMASK(20, 16)
>> +#define XE3P_DBUF_MIN_TRACKER_STATE_SERVICE(x) REG_FIELD_PREP(XE3P_DBUF_MIN_TRACKER_STATE_SERVICE_MASK, x)
>
>Same here.
>
>
>Matt
>
>>
>> #define MTL_LATENCY_LP0_LP1 _MMIO(0x45780)
>> #define MTL_LATENCY_LP2_LP3 _MMIO(0x45784)
>>
>> --
>> 2.51.0
>>
>
>--
>Matt Roper
>Graphics Software Engineer
>Linux GPU Platform Enablement
>Intel Corporation
next prev parent reply other threads:[~2025-10-31 2:49 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-22 0:28 [PATCH v2 00/32] drm/i915/display: Add initial support for Xe3p_LPD Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 01/32] drm/i915/xe3p_lpd: Add Xe3p_LPD display IP features Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 02/32] drm/i915/xe3p_lpd: Drop north display reset option programming Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 03/32] drm/i915/display: Use braces for if-ladder in intel_bw_init_hw() Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 04/32] drm/i915/dram: Add field ecc_impacting_de_bw Gustavo Sousa
2025-10-22 11:37 ` Gustavo Sousa
2025-10-22 11:53 ` Jani Nikula
2025-10-22 12:12 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 05/32] drm/i915/xe3p_lpd: Update bandwidth parameters Gustavo Sousa
2025-10-22 14:56 ` Matt Roper
2025-10-27 22:26 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 06/32] drm/i915/xe3p_lpd: Expand bifield masks dbuf blocks fields Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 07/32] drm/i915/xe3p_lpd: Support UINT16 formats Gustavo Sousa
2025-10-22 12:28 ` Ville Syrjälä
2025-10-22 17:58 ` Matt Roper
2025-10-27 19:41 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 08/32] drm/i915/xe3p_lpd: Extend FBC support to " Gustavo Sousa
2025-10-22 12:39 ` Ville Syrjälä
2025-10-22 0:28 ` [PATCH v2 09/32] drm/i915/xe3p_lpd: Horizontal flip support for linear surfaces Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 10/32] drm/i915/xe3p_lpd: Wait for AUX channel power status Gustavo Sousa
2025-10-29 20:06 ` Matt Roper
2025-10-29 20:50 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 11/32] drm/i915/xe3p_lpd: Underrun debuggability and error codes/hints Gustavo Sousa
2025-10-29 20:54 ` Matt Roper
2025-10-30 21:56 ` Gustavo Sousa
2025-10-31 22:17 ` Matt Roper
2025-10-31 22:41 ` Gustavo Sousa
2025-11-11 0:44 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 12/32] drm/i915/xe3p_lpd: Remove gamma,csc bottom color checks Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 13/32] drm/i915/xe3p_lpd: Adapt to updates on MBUS_CTL/DBUF_CTL registers Gustavo Sousa
2025-10-29 21:22 ` Matt Roper
2025-10-31 2:48 ` Gustavo Sousa [this message]
2025-10-22 0:28 ` [PATCH v2 14/32] drm/i915/wm: Reorder adjust_wm_latency() for Xe3_LPD Gustavo Sousa
2025-10-29 21:53 ` Matt Roper
2025-10-29 22:22 ` Ville Syrjälä
2025-10-29 22:36 ` Ville Syrjälä
2025-10-30 13:45 ` Gustavo Sousa
2025-10-30 15:38 ` Ville Syrjälä
2025-10-30 13:48 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 15/32] drm/i915/xe3p_lpd: Always apply level-0 watermark adjustment Gustavo Sousa
2025-10-29 22:08 ` Matt Roper
2025-10-29 22:39 ` Ville Syrjälä
2025-10-30 13:53 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 16/32] drm/i915/xe3p_lpd: Add CDCLK table Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 17/32] drm/i915/xe3p_lpd: Load DMC firmware Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 18/32] drm/i915/xe3p_lpd: Drop support for interlace mode Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 19/32] drm/i915/xe3p_lpd: PSR SU minimum lines is 4 Gustavo Sousa
2025-10-29 22:14 ` Matt Roper
2025-10-31 17:36 ` Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 20/32] drm/i915/xe3p_lpd: Enable system caching for FBC Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 21/32] drm/i915/xe3p_lpd: Extend Wa_16025573575 Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 22/32] drm/i915/xe3p_lpd: Don't allow odd ypan or ysize with semiplanar format Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 23/32] drm/i915/xe3p_lpd: Reload DMC MMIO for pipes C and D Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 24/32] drm/i915/xe3p_lpd: Introduce pixel normalizer config support Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 25/32] drm/i915/xe3p_lpd: Add FBC support for FP16 formats Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 26/32] drm/i915/xe3p_lpd: Enable pixel normalizer for fp16 formats for FBC Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 27/32] drm/i915/vbt: Add fields dedicated_external and dyn_port_over_tc Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 28/32] drm/i915/power: Use intel_encoder_is_tc() Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 29/32] drm/i915/display: Handle dedicated external ports in intel_encoder_is_tc() Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 30/32] drm/i915/wm: don't use method1 in Xe3p_LPD onwards Gustavo Sousa
2025-10-22 15:08 ` Shekhar Chauhan
2025-10-22 0:28 ` [PATCH v2 31/32] drm/i915/xe3p_lpd: Extend Type-C flow for static DDI allocation Gustavo Sousa
2025-10-22 0:28 ` [PATCH v2 32/32] drm/i915/nvls: Add NVL-S display support Gustavo Sousa
2025-10-22 15:12 ` Shekhar Chauhan
2025-10-22 1:38 ` ✗ CI.checkpatch: warning for drm/i915/display: Add initial support for Xe3p_LPD (rev2) Patchwork
2025-10-22 1:39 ` ✓ CI.KUnit: success " Patchwork
2025-10-22 1:46 ` ✗ i915.CI.BAT: failure " Patchwork
2025-10-22 1:55 ` ✗ CI.checksparse: warning " Patchwork
2025-10-22 2:25 ` ✓ Xe.CI.BAT: success " Patchwork
2025-10-22 4:56 ` ✓ Xe.CI.Full: " Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=176187893526.3303.4396397116272962497@intel.com \
--to=gustavo.sousa@intel.com \
--cc=ankit.k.nautiyal@intel.com \
--cc=dnyaneshwar.bhadane@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jouni.hogander@intel.com \
--cc=juha-pekka.heikkila@intel.com \
--cc=lucas.demarchi@intel.com \
--cc=luciano.coelho@intel.com \
--cc=matthew.d.roper@intel.com \
--cc=matthew.s.atwood@intel.com \
--cc=ravi.kumar.vodapalli@intel.com \
--cc=shekhar.chauhan@intel.com \
--cc=vinod.govindapillai@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.