From: Jani Nikula <jani.nikula@intel.com>
To: "Murthy, Arun R" <arun.r.murthy@intel.com>,
"intel-gfx@lists.freedesktop.org"
<intel-gfx@lists.freedesktop.org>
Cc: "dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>,
"Ville Syrjälä" <ville.syrjala@linux.intel.com>
Subject: RE: [PATCH v2 1/6] drm/mst: read sideband messaging cap
Date: Tue, 13 Feb 2024 15:42:19 +0200 [thread overview]
Message-ID: <87cyt08oqs.fsf@intel.com> (raw)
In-Reply-To: <IA0PR11MB7307E7130A93748F85E2CBB8BA4F2@IA0PR11MB7307.namprd11.prod.outlook.com>
On Tue, 13 Feb 2024, "Murthy, Arun R" <arun.r.murthy@intel.com> wrote:
>> -----Original Message-----
>> From: Nikula, Jani <jani.nikula@intel.com>
>> Sent: Tuesday, February 13, 2024 5:01 PM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: dri-devel@lists.freedesktop.org; intel-xe@lists.freedesktop.org; Nikula, Jani
>> <jani.nikula@intel.com>; Murthy, Arun R <arun.r.murthy@intel.com>; Ville
>> Syrjälä <ville.syrjala@linux.intel.com>
>> Subject: [PATCH v2 1/6] drm/mst: read sideband messaging cap
>>
>> Amend drm_dp_read_mst_cap() to return an enum, indicating "SST", "SST with
>> sideband messaging", or "MST". Modify all call sites to take the new return
>> value into account.
>>
>> v2:
>> - Rename enumerators (Ville)
>>
>> Cc: Arun R Murthy <arun.r.murthy@intel.com>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>> drivers/gpu/drm/display/drm_dp_mst_topology.c | 20 ++++++++++------
>> drivers/gpu/drm/i915/display/intel_dp.c | 4 ++--
>> drivers/gpu/drm/nouveau/nouveau_dp.c | 2 +-
>> include/drm/display/drm_dp_mst_helper.h | 23 ++++++++++++++++++-
>> 4 files changed, 38 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> index 03d528209426..c193be3577f7 100644
>> --- a/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> +++ b/drivers/gpu/drm/display/drm_dp_mst_topology.c
>> @@ -3608,24 +3608,30 @@ fixed20_12 drm_dp_get_vc_payload_bw(const
>> struct drm_dp_mst_topology_mgr *mgr,
>> EXPORT_SYMBOL(drm_dp_get_vc_payload_bw);
>>
>> /**
>> - * drm_dp_read_mst_cap() - check whether or not a sink supports MST
>> + * drm_dp_read_mst_cap() - Read the sink's MST mode capability
>> * @aux: The DP AUX channel to use
>> * @dpcd: A cached copy of the DPCD capabilities for this sink
>> *
>> - * Returns: %True if the sink supports MST, %false otherwise
>> + * Returns: enum drm_dp_mst_mode to indicate MST mode capability
>> */
>> -bool drm_dp_read_mst_cap(struct drm_dp_aux *aux,
>> - const u8 dpcd[DP_RECEIVER_CAP_SIZE])
>> +enum drm_dp_mst_mode drm_dp_read_mst_cap(struct drm_dp_aux *aux,
>> + const u8
>> dpcd[DP_RECEIVER_CAP_SIZE])
>> {
>> u8 mstm_cap;
>>
>> if (dpcd[DP_DPCD_REV] < DP_DPCD_REV_12)
>> - return false;
>> + return DRM_DP_SST;
>>
>> if (drm_dp_dpcd_readb(aux, DP_MSTM_CAP, &mstm_cap) != 1)
>> - return false;
>> + return DRM_DP_SST;
>> +
>> + if (mstm_cap & DP_MST_CAP)
>> + return DRM_DP_MST;
>> +
>> + if (mstm_cap & DP_SINGLE_STREAM_SIDEBAND_MSG)
>> + return DRM_DP_SST_SIDEBAND_MSG;
> Bit[1] of MSTM_CAP indicates sideband messaging is supported or not
> and nothing to do with MST/SST. So would it make more sense to have it
> as DRM_DP_SIDEBAND_MSG?
Bit 1 is literally described as SINGLE_STREAM_SIDEBAND_MSG_SUPPORT in
the spec, "Supports Sideband MSG while not supporting multi-stream
transport".
Bit 1 is also only valid when bit 0 says, "Does not support MST mode".
BR,
Jani.
>
> Thanks and Regards,
> Arun R Murthy
> --------------------
>>
>> - return mstm_cap & DP_MST_CAP;
>> + return DRM_DP_SST;
>> }
>> EXPORT_SYMBOL(drm_dp_read_mst_cap);
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
>> b/drivers/gpu/drm/i915/display/intel_dp.c
>> index 5045c34a16be..a1c304f451bd 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -4014,7 +4014,7 @@ intel_dp_can_mst(struct intel_dp *intel_dp)
>>
>> return i915->display.params.enable_dp_mst &&
>> intel_dp_mst_source_support(intel_dp) &&
>> - drm_dp_read_mst_cap(&intel_dp->aux, intel_dp->dpcd);
>> + drm_dp_read_mst_cap(&intel_dp->aux, intel_dp->dpcd) ==
>> DRM_DP_MST;
>> }
>>
>> static void
>> @@ -4023,7 +4023,7 @@ intel_dp_configure_mst(struct intel_dp *intel_dp)
>> struct drm_i915_private *i915 = dp_to_i915(intel_dp);
>> struct intel_encoder *encoder =
>> &dp_to_dig_port(intel_dp)->base;
>> - bool sink_can_mst = drm_dp_read_mst_cap(&intel_dp->aux, intel_dp-
>> >dpcd);
>> + bool sink_can_mst = drm_dp_read_mst_cap(&intel_dp->aux,
>> +intel_dp->dpcd) == DRM_DP_MST;
>>
>> drm_dbg_kms(&i915->drm,
>> "[ENCODER:%d:%s] MST support: port: %s, sink: %s,
>> modparam: %s\n", diff --git a/drivers/gpu/drm/nouveau/nouveau_dp.c
>> b/drivers/gpu/drm/nouveau/nouveau_dp.c
>> index 7de7707ec6a8..fb06ee17d9e5 100644
>> --- a/drivers/gpu/drm/nouveau/nouveau_dp.c
>> +++ b/drivers/gpu/drm/nouveau/nouveau_dp.c
>> @@ -181,7 +181,7 @@ nouveau_dp_probe_dpcd(struct nouveau_connector
>> *nv_connector,
>> if (nouveau_mst) {
>> mstm = outp->dp.mstm;
>> if (mstm)
>> - mstm->can_mst = drm_dp_read_mst_cap(aux, dpcd);
>> + mstm->can_mst = drm_dp_read_mst_cap(aux, dpcd)
>> == DRM_DP_MST;
>> }
>>
>> if (nouveau_dp_has_sink_count(connector, outp)) { diff --git
>> a/include/drm/display/drm_dp_mst_helper.h
>> b/include/drm/display/drm_dp_mst_helper.h
>> index 9b19d8bd520a..3c9e128c444a 100644
>> --- a/include/drm/display/drm_dp_mst_helper.h
>> +++ b/include/drm/display/drm_dp_mst_helper.h
>> @@ -818,7 +818,28 @@ int drm_dp_mst_topology_mgr_init(struct
>> drm_dp_mst_topology_mgr *mgr,
>>
>> void drm_dp_mst_topology_mgr_destroy(struct drm_dp_mst_topology_mgr
>> *mgr);
>>
>> -bool drm_dp_read_mst_cap(struct drm_dp_aux *aux, const u8
>> dpcd[DP_RECEIVER_CAP_SIZE]);
>> +/**
>> + * enum drm_dp_mst_mode - sink's MST mode capability */ enum
>> +drm_dp_mst_mode {
>> + /**
>> + * @DRM_DP_SST: The sink does not support MST nor single stream
>> sideband
>> + * messaging.
>> + */
>> + DRM_DP_SST,
>> + /**
>> + * @DRM_DP_MST: Sink supports MST, more than one stream and
>> single
>> + * stream sideband messaging.
>> + */
>> + DRM_DP_MST,
>> + /**
>> + * @DRM_DP_SST_SIDEBAND_MSG: Sink supports only one stream and
>> single
>> + * stream sideband messaging.
>> + */
>> + DRM_DP_SST_SIDEBAND_MSG,
>> +};
>> +
>> +enum drm_dp_mst_mode drm_dp_read_mst_cap(struct drm_dp_aux *aux,
>> const
>> +u8 dpcd[DP_RECEIVER_CAP_SIZE]);
>> int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr
>> *mgr, bool mst_state);
>>
>> int drm_dp_mst_hpd_irq_handle_event(struct drm_dp_mst_topology_mgr
>> *mgr,
>> --
>> 2.39.2
>
--
Jani Nikula, Intel
next prev parent reply other threads:[~2024-02-13 13:42 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-13 11:30 [PATCH v2 0/6] drm/i915/mst: enable MST mode for 128b/132b single-stream sideband Jani Nikula
2024-02-13 11:30 ` [PATCH v2 1/6] drm/mst: read sideband messaging cap Jani Nikula
2024-02-13 12:56 ` Murthy, Arun R
2024-02-13 13:42 ` Jani Nikula [this message]
2024-02-14 18:14 ` Ville Syrjälä
2024-02-13 11:30 ` [PATCH v2 2/6] drm/i915/mst: improve debug logging of DP MST mode detect Jani Nikula
2024-02-14 18:18 ` Ville Syrjälä
2024-02-15 11:46 ` Jani Nikula
2024-02-15 15:16 ` Ville Syrjälä
2024-02-13 11:30 ` [PATCH v2 3/6] drm/i915/mst: abstract choosing the MST mode to use Jani Nikula
2024-02-14 18:18 ` Ville Syrjälä
2024-02-13 11:30 ` [PATCH v2 4/6] drm/i915/mst: use the MST mode detected previously Jani Nikula
2024-02-14 18:34 ` Ville Syrjälä
2024-02-14 18:41 ` Jani Nikula
2024-02-13 11:31 ` [PATCH v2 5/6] drm/i915/mst: add intel_dp_mst_disconnect() Jani Nikula
2024-02-14 18:34 ` Ville Syrjälä
2024-02-13 11:31 ` [PATCH v2 6/6] drm/i915/mst: enable MST mode for 128b/132b single-stream sideband Jani Nikula
2024-02-13 12:28 ` ✓ CI.Patch_applied: success for " Patchwork
2024-02-13 12:28 ` ✗ CI.checkpatch: warning " Patchwork
2024-02-13 12:29 ` ✓ CI.KUnit: success " Patchwork
2024-02-13 12:39 ` ✓ CI.Build: " Patchwork
2024-02-13 12:40 ` ✓ CI.Hooks: " Patchwork
2024-02-13 12:41 ` ✗ CI.checksparse: warning " Patchwork
2024-02-13 13:05 ` ✓ CI.BAT: success " Patchwork
2024-02-13 13:53 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/mst: enable MST mode for 128b/132b single-stream sideband (rev3) Patchwork
2024-02-13 13:53 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-02-13 14:07 ` ✓ Fi.CI.BAT: success " Patchwork
2024-02-13 15:40 ` ✓ 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=87cyt08oqs.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=arun.r.murthy@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@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.