Message ID | 1471430989-28161-9-git-send-email-mika.kahola@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Aug 17, 2016 at 01:49:44PM +0300, Mika Kahola wrote: > SW revision is mandatory field for DisplayPort branch > devices. This is defined in DPCD register field 0x50A. To be precise, the revision info is in 0x50A and 0x50B. Since both the major and minor versions are called out separately in the DP spec it's probably worth mentioning both addresses in the commit message. > > v2: move drm_dp_ds_revision structure to be part of > drm_dp_link structure (Daniel) > v3: remove dependency to drm_dp_helper but instead parse > DPCD and print SW revision info to dmesg (Ville) > > Signed-off-by: Mika Kahola <mika.kahola@intel.com> With the commit message change requested above, this is: Reviewed-by: Jim Bride <jim.bride@linux.intel.com> > --- > drivers/gpu/drm/i915/intel_dp.c | 20 ++++++++++++++++++++ > include/drm/drm_dp_helper.h | 1 + > 2 files changed, 21 insertions(+) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 9aebdf6..91ffb79 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -1438,6 +1438,25 @@ static void intel_dp_print_hw_revision(struct intel_dp *intel_dp) > DRM_DEBUG_KMS("sink hw revision: %d.%d\n", (rev & 0xf0) >> 4, rev & 0xf); > } > > +static void intel_dp_print_sw_revision(struct intel_dp *intel_dp) > +{ > + uint8_t rev[2]; > + int len; > + > + if ((drm_debug & DRM_UT_KMS) == 0) > + return; > + > + if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & > + DP_DWN_STRM_PORT_PRESENT)) > + return; > + > + len = drm_dp_dpcd_read(&intel_dp->aux, DP_BRANCH_SW_REV, &rev, 2); > + if (len < 0) > + return; > + > + DRM_DEBUG_KMS("sink sw revision: %d.%d\n", rev[0], rev[1]); > +} > + > static int rate_to_index(int find, const int *rates) > { > int i = 0; > @@ -4302,6 +4321,7 @@ intel_dp_long_pulse(struct intel_connector *intel_connector) > intel_dp_probe_oui(intel_dp); > > intel_dp_print_hw_revision(intel_dp); > + intel_dp_print_sw_revision(intel_dp); > > intel_dp_configure_mst(intel_dp); > > diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h > index 19ac599..215202f 100644 > --- a/include/drm/drm_dp_helper.h > +++ b/include/drm/drm_dp_helper.h > @@ -447,6 +447,7 @@ > #define DP_BRANCH_OUI 0x500 > #define DP_BRANCH_ID 0x503 > #define DP_BRANCH_HW_REV 0x509 > +#define DP_BRANCH_SW_REV 0x50A > > #define DP_SET_POWER 0x600 > # define DP_SET_POWER_D0 0x1 > -- > 1.9.1
> -----Original Message----- > From: Jim Bride [mailto:jim.bride@linux.intel.com] > Sent: Thursday, September 8, 2016 12:20 AM > To: Kahola, Mika <mika.kahola@intel.com> > Cc: intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org; > ville.syrjala@linux.intel.com; daniel.vetter@ffwll.ch > Subject: Re: [PATCH v8 08/12] drm/i915: Read DP branch device SW revision > > On Wed, Aug 17, 2016 at 01:49:44PM +0300, Mika Kahola wrote: > > SW revision is mandatory field for DisplayPort branch devices. This is > > defined in DPCD register field 0x50A. > > To be precise, the revision info is in 0x50A and 0x50B. Since both the major > and minor versions are called out separately in the DP spec it's probably > worth mentioning both addresses in the commit message. You're right. I will update the commit message to be more exact. > > > > > v2: move drm_dp_ds_revision structure to be part of > > drm_dp_link structure (Daniel) > > v3: remove dependency to drm_dp_helper but instead parse > > DPCD and print SW revision info to dmesg (Ville) > > > > Signed-off-by: Mika Kahola <mika.kahola@intel.com> > > With the commit message change requested above, this is: > > Reviewed-by: Jim Bride <jim.bride@linux.intel.com> > > > --- > > drivers/gpu/drm/i915/intel_dp.c | 20 ++++++++++++++++++++ > > include/drm/drm_dp_helper.h | 1 + > > 2 files changed, 21 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/intel_dp.c > > b/drivers/gpu/drm/i915/intel_dp.c index 9aebdf6..91ffb79 100644 > > --- a/drivers/gpu/drm/i915/intel_dp.c > > +++ b/drivers/gpu/drm/i915/intel_dp.c > > @@ -1438,6 +1438,25 @@ static void intel_dp_print_hw_revision(struct > intel_dp *intel_dp) > > DRM_DEBUG_KMS("sink hw revision: %d.%d\n", (rev & 0xf0) >> 4, > rev & > > 0xf); } > > > > +static void intel_dp_print_sw_revision(struct intel_dp *intel_dp) { > > + uint8_t rev[2]; > > + int len; > > + > > + if ((drm_debug & DRM_UT_KMS) == 0) > > + return; > > + > > + if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & > > + DP_DWN_STRM_PORT_PRESENT)) > > + return; > > + > > + len = drm_dp_dpcd_read(&intel_dp->aux, DP_BRANCH_SW_REV, > &rev, 2); > > + if (len < 0) > > + return; > > + > > + DRM_DEBUG_KMS("sink sw revision: %d.%d\n", rev[0], rev[1]); } > > + > > static int rate_to_index(int find, const int *rates) { > > int i = 0; > > @@ -4302,6 +4321,7 @@ intel_dp_long_pulse(struct intel_connector > *intel_connector) > > intel_dp_probe_oui(intel_dp); > > > > intel_dp_print_hw_revision(intel_dp); > > + intel_dp_print_sw_revision(intel_dp); > > > > intel_dp_configure_mst(intel_dp); > > > > diff --git a/include/drm/drm_dp_helper.h > b/include/drm/drm_dp_helper.h > > index 19ac599..215202f 100644 > > --- a/include/drm/drm_dp_helper.h > > +++ b/include/drm/drm_dp_helper.h > > @@ -447,6 +447,7 @@ > > #define DP_BRANCH_OUI 0x500 > > #define DP_BRANCH_ID 0x503 > > #define DP_BRANCH_HW_REV 0x509 > > +#define DP_BRANCH_SW_REV 0x50A > > > > #define DP_SET_POWER 0x600 > > # define DP_SET_POWER_D0 0x1 > > -- > > 1.9.1
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 9aebdf6..91ffb79 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -1438,6 +1438,25 @@ static void intel_dp_print_hw_revision(struct intel_dp *intel_dp) DRM_DEBUG_KMS("sink hw revision: %d.%d\n", (rev & 0xf0) >> 4, rev & 0xf); } +static void intel_dp_print_sw_revision(struct intel_dp *intel_dp) +{ + uint8_t rev[2]; + int len; + + if ((drm_debug & DRM_UT_KMS) == 0) + return; + + if (!(intel_dp->dpcd[DP_DOWNSTREAMPORT_PRESENT] & + DP_DWN_STRM_PORT_PRESENT)) + return; + + len = drm_dp_dpcd_read(&intel_dp->aux, DP_BRANCH_SW_REV, &rev, 2); + if (len < 0) + return; + + DRM_DEBUG_KMS("sink sw revision: %d.%d\n", rev[0], rev[1]); +} + static int rate_to_index(int find, const int *rates) { int i = 0; @@ -4302,6 +4321,7 @@ intel_dp_long_pulse(struct intel_connector *intel_connector) intel_dp_probe_oui(intel_dp); intel_dp_print_hw_revision(intel_dp); + intel_dp_print_sw_revision(intel_dp); intel_dp_configure_mst(intel_dp); diff --git a/include/drm/drm_dp_helper.h b/include/drm/drm_dp_helper.h index 19ac599..215202f 100644 --- a/include/drm/drm_dp_helper.h +++ b/include/drm/drm_dp_helper.h @@ -447,6 +447,7 @@ #define DP_BRANCH_OUI 0x500 #define DP_BRANCH_ID 0x503 #define DP_BRANCH_HW_REV 0x509 +#define DP_BRANCH_SW_REV 0x50A #define DP_SET_POWER 0x600 # define DP_SET_POWER_D0 0x1
SW revision is mandatory field for DisplayPort branch devices. This is defined in DPCD register field 0x50A. v2: move drm_dp_ds_revision structure to be part of drm_dp_link structure (Daniel) v3: remove dependency to drm_dp_helper but instead parse DPCD and print SW revision info to dmesg (Ville) Signed-off-by: Mika Kahola <mika.kahola@intel.com> --- drivers/gpu/drm/i915/intel_dp.c | 20 ++++++++++++++++++++ include/drm/drm_dp_helper.h | 1 + 2 files changed, 21 insertions(+)