All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@intel.com>
To: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH] drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid
Date: Thu, 05 Oct 2023 17:30:41 +0300	[thread overview]
Message-ID: <8734ypcfam.fsf@intel.com> (raw)
In-Reply-To: <ZR2dQ0YZ-1pcn5p6@intel.com>

On Wed, 04 Oct 2023, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Wed, Oct 04, 2023 at 07:21:49PM +0300, Jani Nikula wrote:
>> Prefer struct drm_edid where possible. With limited users for the
>> drm_dp_downstream_*() helpers, this is fairly straightforward.
>> 
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Thanks, pushed to drm-misc-next.

BR,
Jani.

>
>> ---
>>  drivers/gpu/drm/display/drm_dp_helper.c       | 39 ++++++++++---------
>>  .../drm/i915/display/intel_display_debugfs.c  |  3 +-
>>  drivers/gpu/drm/i915/display/intel_dp.c       | 10 ++---
>>  include/drm/display/drm_dp_helper.h           | 12 +++---
>>  4 files changed, 31 insertions(+), 33 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/display/drm_dp_helper.c b/drivers/gpu/drm/display/drm_dp_helper.c
>> index 8a1b64c57dfd..f3680f4e6970 100644
>> --- a/drivers/gpu/drm/display/drm_dp_helper.c
>> +++ b/drivers/gpu/drm/display/drm_dp_helper.c
>> @@ -746,8 +746,11 @@ int drm_dp_dpcd_read_phy_link_status(struct drm_dp_aux *aux,
>>  }
>>  EXPORT_SYMBOL(drm_dp_dpcd_read_phy_link_status);
>>  
>> -static bool is_edid_digital_input_dp(const struct edid *edid)
>> +static bool is_edid_digital_input_dp(const struct drm_edid *drm_edid)
>>  {
>> +	/* FIXME: get rid of drm_edid_raw() */
>> +	const struct edid *edid = drm_edid_raw(drm_edid);
>> +
>>  	return edid && edid->revision >= 4 &&
>>  		edid->input & DRM_EDID_INPUT_DIGITAL &&
>>  		(edid->input & DRM_EDID_DIGITAL_TYPE_MASK) == DRM_EDID_DIGITAL_TYPE_DP;
>> @@ -779,13 +782,13 @@ EXPORT_SYMBOL(drm_dp_downstream_is_type);
>>   * drm_dp_downstream_is_tmds() - is the downstream facing port TMDS?
>>   * @dpcd: DisplayPort configuration data
>>   * @port_cap: port capabilities
>> - * @edid: EDID
>> + * @drm_edid: EDID
>>   *
>>   * Returns: whether the downstream facing port is TMDS (HDMI/DVI).
>>   */
>>  bool drm_dp_downstream_is_tmds(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  			       const u8 port_cap[4],
>> -			       const struct edid *edid)
>> +			       const struct drm_edid *drm_edid)
>>  {
>>  	if (dpcd[DP_DPCD_REV] < 0x11) {
>>  		switch (dpcd[DP_DOWNSTREAMPORT_PRESENT] & DP_DWN_STRM_PORT_TYPE_MASK) {
>> @@ -798,7 +801,7 @@ bool drm_dp_downstream_is_tmds(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  
>>  	switch (port_cap[0] & DP_DS_PORT_TYPE_MASK) {
>>  	case DP_DS_PORT_TYPE_DP_DUALMODE:
>> -		if (is_edid_digital_input_dp(edid))
>> +		if (is_edid_digital_input_dp(drm_edid))
>>  			return false;
>>  		fallthrough;
>>  	case DP_DS_PORT_TYPE_DVI:
>> @@ -1036,14 +1039,14 @@ EXPORT_SYMBOL(drm_dp_downstream_max_dotclock);
>>   * drm_dp_downstream_max_tmds_clock() - extract downstream facing port max TMDS clock
>>   * @dpcd: DisplayPort configuration data
>>   * @port_cap: port capabilities
>> - * @edid: EDID
>> + * @drm_edid: EDID
>>   *
>>   * Returns: HDMI/DVI downstream facing port max TMDS clock in kHz on success,
>>   * or 0 if max TMDS clock not defined
>>   */
>>  int drm_dp_downstream_max_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  				     const u8 port_cap[4],
>> -				     const struct edid *edid)
>> +				     const struct drm_edid *drm_edid)
>>  {
>>  	if (!drm_dp_is_branch(dpcd))
>>  		return 0;
>> @@ -1059,7 +1062,7 @@ int drm_dp_downstream_max_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  
>>  	switch (port_cap[0] & DP_DS_PORT_TYPE_MASK) {
>>  	case DP_DS_PORT_TYPE_DP_DUALMODE:
>> -		if (is_edid_digital_input_dp(edid))
>> +		if (is_edid_digital_input_dp(drm_edid))
>>  			return 0;
>>  		/*
>>  		 * It's left up to the driver to check the
>> @@ -1101,14 +1104,14 @@ EXPORT_SYMBOL(drm_dp_downstream_max_tmds_clock);
>>   * drm_dp_downstream_min_tmds_clock() - extract downstream facing port min TMDS clock
>>   * @dpcd: DisplayPort configuration data
>>   * @port_cap: port capabilities
>> - * @edid: EDID
>> + * @drm_edid: EDID
>>   *
>>   * Returns: HDMI/DVI downstream facing port min TMDS clock in kHz on success,
>>   * or 0 if max TMDS clock not defined
>>   */
>>  int drm_dp_downstream_min_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  				     const u8 port_cap[4],
>> -				     const struct edid *edid)
>> +				     const struct drm_edid *drm_edid)
>>  {
>>  	if (!drm_dp_is_branch(dpcd))
>>  		return 0;
>> @@ -1124,7 +1127,7 @@ int drm_dp_downstream_min_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  
>>  	switch (port_cap[0] & DP_DS_PORT_TYPE_MASK) {
>>  	case DP_DS_PORT_TYPE_DP_DUALMODE:
>> -		if (is_edid_digital_input_dp(edid))
>> +		if (is_edid_digital_input_dp(drm_edid))
>>  			return 0;
>>  		fallthrough;
>>  	case DP_DS_PORT_TYPE_DVI:
>> @@ -1145,13 +1148,13 @@ EXPORT_SYMBOL(drm_dp_downstream_min_tmds_clock);
>>   *                               bits per component
>>   * @dpcd: DisplayPort configuration data
>>   * @port_cap: downstream facing port capabilities
>> - * @edid: EDID
>> + * @drm_edid: EDID
>>   *
>>   * Returns: Max bpc on success or 0 if max bpc not defined
>>   */
>>  int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  			      const u8 port_cap[4],
>> -			      const struct edid *edid)
>> +			      const struct drm_edid *drm_edid)
>>  {
>>  	if (!drm_dp_is_branch(dpcd))
>>  		return 0;
>> @@ -1169,7 +1172,7 @@ int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  	case DP_DS_PORT_TYPE_DP:
>>  		return 0;
>>  	case DP_DS_PORT_TYPE_DP_DUALMODE:
>> -		if (is_edid_digital_input_dp(edid))
>> +		if (is_edid_digital_input_dp(drm_edid))
>>  			return 0;
>>  		fallthrough;
>>  	case DP_DS_PORT_TYPE_HDMI:
>> @@ -1362,14 +1365,14 @@ EXPORT_SYMBOL(drm_dp_downstream_id);
>>   * @m: pointer for debugfs file
>>   * @dpcd: DisplayPort configuration data
>>   * @port_cap: port capabilities
>> - * @edid: EDID
>> + * @drm_edid: EDID
>>   * @aux: DisplayPort AUX channel
>>   *
>>   */
>>  void drm_dp_downstream_debug(struct seq_file *m,
>>  			     const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  			     const u8 port_cap[4],
>> -			     const struct edid *edid,
>> +			     const struct drm_edid *drm_edid,
>>  			     struct drm_dp_aux *aux)
>>  {
>>  	bool detailed_cap_info = dpcd[DP_DOWNSTREAMPORT_PRESENT] &
>> @@ -1432,15 +1435,15 @@ void drm_dp_downstream_debug(struct seq_file *m,
>>  		if (clk > 0)
>>  			seq_printf(m, "\t\tMax dot clock: %d kHz\n", clk);
>>  
>> -		clk = drm_dp_downstream_max_tmds_clock(dpcd, port_cap, edid);
>> +		clk = drm_dp_downstream_max_tmds_clock(dpcd, port_cap, drm_edid);
>>  		if (clk > 0)
>>  			seq_printf(m, "\t\tMax TMDS clock: %d kHz\n", clk);
>>  
>> -		clk = drm_dp_downstream_min_tmds_clock(dpcd, port_cap, edid);
>> +		clk = drm_dp_downstream_min_tmds_clock(dpcd, port_cap, drm_edid);
>>  		if (clk > 0)
>>  			seq_printf(m, "\t\tMin TMDS clock: %d kHz\n", clk);
>>  
>> -		bpc = drm_dp_downstream_max_bpc(dpcd, port_cap, edid);
>> +		bpc = drm_dp_downstream_max_bpc(dpcd, port_cap, drm_edid);
>>  
>>  		if (bpc > 0)
>>  			seq_printf(m, "\t\tMax bpc: %d\n", bpc);
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
>> index f6d7c4d45fae..fbe75d47a165 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
>> @@ -237,14 +237,13 @@ static void intel_dp_info(struct seq_file *m, struct intel_connector *connector)
>>  {
>>  	struct intel_encoder *intel_encoder = intel_attached_encoder(connector);
>>  	struct intel_dp *intel_dp = enc_to_intel_dp(intel_encoder);
>> -	const struct edid *edid = drm_edid_raw(connector->detect_edid);
>>  
>>  	seq_printf(m, "\tDPCD rev: %x\n", intel_dp->dpcd[DP_DPCD_REV]);
>>  	seq_printf(m, "\taudio support: %s\n",
>>  		   str_yes_no(connector->base.display_info.has_audio));
>>  
>>  	drm_dp_downstream_debug(m, intel_dp->dpcd, intel_dp->downstream_ports,
>> -				edid, &intel_dp->aux);
>> +				connector->detect_edid, &intel_dp->aux);
>>  }
>>  
>>  static void intel_dp_mst_info(struct seq_file *m,
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
>> index f0f43aeabd21..0ef7cb8134b6 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -5207,14 +5207,10 @@ intel_dp_update_dfp(struct intel_dp *intel_dp,
>>  {
>>  	struct drm_i915_private *i915 = dp_to_i915(intel_dp);
>>  	struct intel_connector *connector = intel_dp->attached_connector;
>> -	const struct edid *edid;
>> -
>> -	/* FIXME: Get rid of drm_edid_raw() */
>> -	edid = drm_edid_raw(drm_edid);
>>  
>>  	intel_dp->dfp.max_bpc =
>>  		drm_dp_downstream_max_bpc(intel_dp->dpcd,
>> -					  intel_dp->downstream_ports, edid);
>> +					  intel_dp->downstream_ports, drm_edid);
>>  
>>  	intel_dp->dfp.max_dotclock =
>>  		drm_dp_downstream_max_dotclock(intel_dp->dpcd,
>> @@ -5223,11 +5219,11 @@ intel_dp_update_dfp(struct intel_dp *intel_dp,
>>  	intel_dp->dfp.min_tmds_clock =
>>  		drm_dp_downstream_min_tmds_clock(intel_dp->dpcd,
>>  						 intel_dp->downstream_ports,
>> -						 edid);
>> +						 drm_edid);
>>  	intel_dp->dfp.max_tmds_clock =
>>  		drm_dp_downstream_max_tmds_clock(intel_dp->dpcd,
>>  						 intel_dp->downstream_ports,
>> -						 edid);
>> +						 drm_edid);
>>  
>>  	intel_dp->dfp.pcon_max_frl_bw =
>>  		drm_dp_get_pcon_max_frl_bw(intel_dp->dpcd,
>> diff --git a/include/drm/display/drm_dp_helper.h b/include/drm/display/drm_dp_helper.h
>> index 3369104e2d25..3d74b2cec72f 100644
>> --- a/include/drm/display/drm_dp_helper.h
>> +++ b/include/drm/display/drm_dp_helper.h
>> @@ -272,8 +272,8 @@ struct drm_dp_aux_msg {
>>  };
>>  
>>  struct cec_adapter;
>> -struct edid;
>>  struct drm_connector;
>> +struct drm_edid;
>>  
>>  /**
>>   * struct drm_dp_aux_cec - DisplayPort CEC-Tunneling-over-AUX
>> @@ -507,18 +507,18 @@ bool drm_dp_downstream_is_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  			       const u8 port_cap[4], u8 type);
>>  bool drm_dp_downstream_is_tmds(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  			       const u8 port_cap[4],
>> -			       const struct edid *edid);
>> +			       const struct drm_edid *drm_edid);
>>  int drm_dp_downstream_max_dotclock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  				   const u8 port_cap[4]);
>>  int drm_dp_downstream_max_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  				     const u8 port_cap[4],
>> -				     const struct edid *edid);
>> +				     const struct drm_edid *drm_edid);
>>  int drm_dp_downstream_min_tmds_clock(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  				     const u8 port_cap[4],
>> -				     const struct edid *edid);
>> +				     const struct drm_edid *drm_edid);
>>  int drm_dp_downstream_max_bpc(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  			      const u8 port_cap[4],
>> -			      const struct edid *edid);
>> +			      const struct drm_edid *drm_edid);
>>  bool drm_dp_downstream_420_passthrough(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  				       const u8 port_cap[4]);
>>  bool drm_dp_downstream_444_to_420_conversion(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>> @@ -530,7 +530,7 @@ int drm_dp_downstream_id(struct drm_dp_aux *aux, char id[6]);
>>  void drm_dp_downstream_debug(struct seq_file *m,
>>  			     const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>>  			     const u8 port_cap[4],
>> -			     const struct edid *edid,
>> +			     const struct drm_edid *drm_edid,
>>  			     struct drm_dp_aux *aux);
>>  enum drm_mode_subconnector
>>  drm_dp_subconnector_type(const u8 dpcd[DP_RECEIVER_CAP_SIZE],
>> -- 
>> 2.39.2

-- 
Jani Nikula, Intel

  reply	other threads:[~2023-10-05 14:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-04 16:21 [Intel-gfx] [PATCH] drm/dp: switch drm_dp_downstream_*() helpers to struct drm_edid Jani Nikula
2023-10-04 16:21 ` Jani Nikula
2023-10-04 17:13 ` [Intel-gfx] " Ville Syrjälä
2023-10-05 14:30   ` Jani Nikula [this message]
2023-10-04 23:16 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork
2023-10-04 23:30 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-10-05 10:11 ` [Intel-gfx] ✓ Fi.CI.IGT: " 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=8734ypcfam.fsf@intel.com \
    --to=jani.nikula@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=ville.syrjala@linux.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.