Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Gustavo Sousa <gustavo.sousa@intel.com>
To: Jani Nikula <jani.nikula@linux.intel.com>,
	<intel-gfx@lists.freedesktop.org>,
	<intel-xe@lists.freedesktop.org>
Cc: "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>,
	"Matt Roper" <matthew.d.roper@intel.com>,
	"Ravi Kumar Vodapalli" <ravi.kumar.vodapalli@intel.com>,
	"Shekhar Chauhan" <shekhar.chauhan@intel.com>,
	"Vinod Govindapillai" <vinod.govindapillai@intel.com>
Subject: Re: [PATCH 27/32] drm/i915/vbt: Add fields dedicated_external and dyn_port_over_tc
Date: Fri, 17 Oct 2025 16:52:24 -0300	[thread overview]
Message-ID: <176073074493.2362.9794630315303321450@intel.com> (raw)
In-Reply-To: <d04fa666b1ab4737aa2a927c897e0ee7062482d9@intel.com>

Quoting Jani Nikula (2025-10-15 12:24:12-03:00)
>On Wed, 15 Oct 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> VBT version 264 adds new fields associated to Xe3p_LPD's new ways of
>> configuring SoC for TC ports and PHYs.  Update the code to match the
>> updates in VBT.
>>
>> The new field dedicated_external is used to represent TC ports that are
>> connected to PHYs outside of the Type-C subsystem, meaning that they
>> behave like dedicated ports and don't require the extra Type-C
>> programming.  In an upcoming change, we will update the driver to take
>> this field into consideration when detecting the type of port.
>>
>> The new field dyn_port_over_tc is used to inform that the TC port can be
>> dynamically allocated for a legacy connector in the Type-C subsystem,
>> which is a new feature in Xe3p_LPD.  In upcoming changes, we will use
>> that field in order to handle the IOM resource management programming
>> required for that.
>>
>> Note that, when dedicated_external is set, the fields dp_usb_type_c and
>> tbt are tagged as "don't care" in the spec, so they should be ignored in
>> that case, so also make sure to update the accessor functions to take
>> that into consideration.
>>
>> Bspec: 20124, 68954, 74304
>> Cc: Shekhar Chauhan <shekhar.chauhan@intel.com>
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_bios.c     | 20 +++++++++++++++++++-
>>  drivers/gpu/drm/i915/display/intel_bios.h     |  2 ++
>>  drivers/gpu/drm/i915/display/intel_vbt_defs.h |  7 ++++++-
>>  3 files changed, 27 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
>> index 3596dce84c28..e466728ced0f 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bios.c
>> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
>> @@ -2777,7 +2777,7 @@ static int child_device_expected_size(u16 version)
>>  {
>>          BUILD_BUG_ON(sizeof(struct child_device_config) < 40);
>>  
>> -        if (version > 263)
>> +        if (version > 264)
>>                  return -ENOENT;
>>          else if (version >= 263)
>>                  return 44;
>> @@ -3714,14 +3714,32 @@ int intel_bios_hdmi_ddc_pin(const struct intel_bios_encoder_data *devdata)
>>  
>>  bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata)
>>  {
>> +        if (intel_bios_encoder_is_dedicated_external(devdata))
>> +                return false;
>> +
>
>We already have mechanisms for this. Please don't pollute the functions.
>
>dp_usb_type_c should just be set to 0 in a new sanitize_something()
>function at the end of parse_ddi_port()
>
>>          return devdata->display->vbt.version >= 195 && devdata->child.dp_usb_type_c;
>>  }
>>  
>>  bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata)
>>  {
>> +        if (intel_bios_encoder_is_dedicated_external(devdata))
>> +                return false;
>> +
>
>Ditto.
>
>tbt should just be set to 0 in a new sanitize_something() function at
>the end of parse_ddi_port()

Aren't sanitize_*() functions, at least in the context of intel_bios.c,
for actually fixing bogus information reported by the VBT?

Arguably, that wouldn't be the case for dedicated_external and the
related fields, since it is actually about a new way to interpret bits
for the new version of the VBT.

One of my concerns with the sanitize approach would be gotchas with
anything that tries to use the fields before they are sanitized (e.g.
another sanitization function gets added in the future that would use
one of the sanitized fields).  Perhaps that's never gonna happen?

--
Gustavo Sousa

>
>>          return devdata->display->vbt.version >= 209 && devdata->child.tbt;
>>  }
>>  
>> +bool intel_bios_encoder_is_dedicated_external(const struct intel_bios_encoder_data *devdata)
>> +{
>> +        return devdata->display->vbt.version >= 264 &&
>> +                devdata->child.dedicated_external;
>> +}
>> +
>> +bool intel_bios_encoder_supports_dyn_port_over_tc(const struct intel_bios_encoder_data *devdata)
>> +{
>> +        return devdata->display->vbt.version >= 264 &&
>> +                devdata->child.dyn_port_over_tc;
>> +}
>> +
>>  bool intel_bios_encoder_lane_reversal(const struct intel_bios_encoder_data *devdata)
>>  {
>>          return devdata && devdata->child.lane_reversal;
>> diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
>> index f9e438b2787b..75dff27b4228 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bios.h
>> +++ b/drivers/gpu/drm/i915/display/intel_bios.h
>> @@ -79,6 +79,8 @@ bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdat
>>  bool intel_bios_encoder_supports_edp(const struct intel_bios_encoder_data *devdata);
>>  bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata);
>>  bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devdata);
>> +bool intel_bios_encoder_is_dedicated_external(const struct intel_bios_encoder_data *devdata);
>> +bool intel_bios_encoder_supports_dyn_port_over_tc(const struct intel_bios_encoder_data *devdata);
>>  bool intel_bios_encoder_supports_dsi(const struct intel_bios_encoder_data *devdata);
>>  bool intel_bios_encoder_supports_dp_dual_mode(const struct intel_bios_encoder_data *devdata);
>>  bool intel_bios_encoder_is_lspcon(const struct intel_bios_encoder_data *devdata);
>> diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
>> index 70e31520c560..f07ab64a8d97 100644
>> --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h
>> +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h
>> @@ -554,7 +554,12 @@ struct child_device_config {
>>          u8 dvo_function;
>>          u8 dp_usb_type_c:1;                                        /* 195+ */
>>          u8 tbt:1;                                                /* 209+ */
>> -        u8 flags2_reserved:2;                                        /* 195+ */
>> +        /*
>> +         * Fields dp_usb_type_c and tbt must be ignored when
>> +         * dedicated_external is set.
>> +         */
>
>We can add that info in the sanitize function. We don't generally add a
>whole lot of explanatory text here, because if we did, the file would be
>10x consisting mostly of VBT quirk explanations.
>
>> +        u8 dedicated_external:1;                                /* 264+ */
>> +        u8 dyn_port_over_tc:1;                                        /* 264+ */
>>          u8 dp_port_trace_length:4;                                /* 209+ */
>>          u8 dp_gpio_index;                                        /* 195+ */
>>          u16 dp_gpio_pin_num;                                        /* 195+ */
>
>-- 
>Jani Nikula, Intel

  reply	other threads:[~2025-10-18  2:42 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-15  3:15 [PATCH 00/32] drm/i915/display: Add initial support for Xe3p_LPD Gustavo Sousa
2025-10-15  3:15 ` [PATCH 01/32] drm/xe/nvl: Define NVL-S platform Gustavo Sousa
2025-10-15  8:07   ` Shekhar Chauhan
2025-10-15  8:09     ` Shekhar Chauhan
2025-10-15 17:43       ` Lucas De Marchi
2025-10-15  3:15 ` [PATCH 02/32] drm/i915/xe3p_lpd: Add Xe3p_LPD display IP features Gustavo Sousa
2025-10-15  8:11   ` Shekhar Chauhan
2025-10-15  3:15 ` [PATCH 03/32] drm/i915/xe3p_lpd: Drop north display reset option programming Gustavo Sousa
2025-10-15 15:56   ` Matt Atwood
2025-10-15  3:15 ` [PATCH 04/32] drm/i915/display: Use braces for if-ladder in intel_bw_init_hw() Gustavo Sousa
2025-10-15 17:40   ` Matt Roper
2025-10-15  3:15 ` [PATCH 05/32] drm/i915/dram: Add field ecc_impacting_de Gustavo Sousa
2025-10-15 14:46   ` Jani Nikula
2025-10-15 15:54     ` Matt Atwood
2025-10-15 16:13     ` Gustavo Sousa
2025-10-15 16:20       ` Matt Atwood
2025-10-15  3:15 ` [PATCH 06/32] drm/i915/xe3p_lpd: Update bandwidth parameters Gustavo Sousa
2025-10-15 17:48   ` Matt Roper
2025-10-15 18:12     ` Gustavo Sousa
2025-10-15 19:12       ` Matt Roper
2025-10-15 19:51         ` Gustavo Sousa
2025-10-15  3:15 ` [PATCH 07/32] drm/i915/xe3p_lpd: Expand bifield masks dbuf blocks fields Gustavo Sousa
2025-10-15 17:55   ` Matt Roper
2025-10-15  3:15 ` [PATCH 08/32] drm/i915/xe3p_lpd: Support UINT16 formats Gustavo Sousa
2025-10-15 20:23   ` Matt Atwood
2025-10-15 20:55     ` Matt Atwood
2025-10-15  3:15 ` [PATCH 09/32] drm/i915/xe3p_lpd: Extend FBC support to " Gustavo Sousa
2025-10-15  3:15 ` [PATCH 10/32] drm/i915/xe3p_lpd: Horizontal flip support for linear surfaces Gustavo Sousa
2025-10-15 17:58   ` Matt Roper
2025-10-15  3:15 ` [PATCH 11/32] drm/i915/xe3p_lpd: Wait for AUX channel power status Gustavo Sousa
2025-10-15  3:15 ` [PATCH 12/32] drm/i915/xe3p_lpd: Underrun debuggability and error codes/hints Gustavo Sousa
2025-10-15 14:56   ` Jani Nikula
2025-10-15 15:01   ` Ville Syrjälä
2025-10-15  3:15 ` [PATCH 13/32] drm/i915/xe3p_lpd: Remove gamma,csc bottom color checks Gustavo Sousa
2025-10-17  6:02   ` Borah, Chaitanya Kumar
2025-10-15  3:15 ` [PATCH 14/32] drm/i915/xe3p_lpd: Adapt to updates on MBUS_CTL/DBUF_CTL registers Gustavo Sousa
2025-10-15 14:58   ` Jani Nikula
2025-10-16 20:33     ` Gustavo Sousa
2025-10-15  3:15 ` [PATCH 15/32] drm/i915/xe3p_lpd: Always apply level-0 watermark adjustment Gustavo Sousa
2025-10-16 20:53   ` Matt Atwood
2025-10-16 21:03   ` Ville Syrjälä
2025-10-17 18:38     ` Gustavo Sousa
2025-10-15  3:15 ` [PATCH 16/32] drm/i915/xe3p_lpd: Add CDCLK table Gustavo Sousa
2025-10-15 17:39   ` Matt Roper
2025-10-15 17:43   ` Matt Atwood
2025-10-15  3:15 ` [PATCH 17/32] drm/i915/xe3p_lpd: Load DMC firmware Gustavo Sousa
2025-10-15 16:22   ` Matt Atwood
2025-10-15  3:15 ` [PATCH 18/32] drm/i915/xe3p_lpd: Drop support for interlace mode Gustavo Sousa
2025-10-15  4:21   ` Kandpal, Suraj
2025-10-15  3:15 ` [PATCH 19/32] drm/i915/xe3p_lpd: PSR SU minimum lines is 4 Gustavo Sousa
2025-10-15 15:00   ` Jani Nikula
2025-10-15 16:18     ` Gustavo Sousa
2025-10-15  3:15 ` [PATCH 20/32] drm/i915/xe3p_lpd: Enable system caching for FBC Gustavo Sousa
2025-10-15  3:15 ` [PATCH 21/32] drm/i915/xe3p_lpd: Extend Wa_16025573575 Gustavo Sousa
2025-10-15  8:13   ` Shekhar Chauhan
2025-10-15  3:15 ` [PATCH 22/32] drm/i915/xe3p_lpd: Don't allow odd ypan or ysize with semiplanar format Gustavo Sousa
2025-10-16 20:50   ` Matt Atwood
2025-10-15  3:15 ` [PATCH 23/32] drm/i915/xe3p_lpd: Reload DMC MMIO for pipes C and D Gustavo Sousa
2025-10-15 17:47   ` Matt Atwood
2025-10-15  3:15 ` [PATCH 24/32] drm/i915/xe3p_lpd: Introduce pixel normalizer config support Gustavo Sousa
2025-10-15 15:11   ` Jani Nikula
2025-10-20  9:35     ` Govindapillai, Vinod
2025-10-15  3:15 ` [PATCH 25/32] drm/i915/xe3p_lpd: Add FBC support for FP16 formats Gustavo Sousa
2025-10-15 15:13   ` Jani Nikula
2025-10-15  3:15 ` [PATCH 26/32] drm/i915/xe3p_lpd: Enable pixel normalizer for fp16 formats for FBC Gustavo Sousa
2025-10-15 15:15   ` Jani Nikula
2025-10-15  3:15 ` [PATCH 27/32] drm/i915/vbt: Add fields dedicated_external and dyn_port_over_tc Gustavo Sousa
2025-10-15 15:24   ` Jani Nikula
2025-10-17 19:52     ` Gustavo Sousa [this message]
2025-10-20  7:45       ` Jani Nikula
2025-10-20 12:43         ` Gustavo Sousa
2025-10-15 15:29   ` Jani Nikula
2025-10-17 20:20     ` Gustavo Sousa
2025-10-21  8:32       ` Jani Nikula
2025-10-15  3:15 ` [PATCH 28/32] drm/i915/power: Use intel_encoder_is_tc() Gustavo Sousa
2025-10-15  4:20   ` Kandpal, Suraj
2025-10-15  3:15 ` [PATCH 29/32] drm/i915/display: Handle dedicated external ports in intel_encoder_is_tc() Gustavo Sousa
2025-10-15 15:33   ` Jani Nikula
2025-10-15 16:25     ` Gustavo Sousa
2025-10-21  8:36       ` Jani Nikula
2025-10-15  3:15 ` [PATCH 30/32] drm/i915/wm: don't use method1 in Xe3p_LPD onwards Gustavo Sousa
2025-10-15  8:02   ` Shekhar Chauhan
2025-10-21 20:19     ` Gustavo Sousa
2025-10-15  3:15 ` [PATCH 31/32] drm/i915/xe3p_lpd: Extend Type-C flow for static DDI allocation Gustavo Sousa
2025-10-15  3:15 ` [PATCH 32/32] drm/i915/nvls: Add NVL-S display support Gustavo Sousa
2025-10-15  4:30 ` ✓ i915.CI.BAT: success for drm/i915/display: Add initial support for Xe3p_LPD Patchwork
2025-10-15 11:00 ` ✓ i915.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=176073074493.2362.9794630315303321450@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox