[Intel-gfx] [PATCH v2] drm/i915/dp: do not proceed with autotests if we don't ACK them
Manasi Navare
manasi.d.navare at intel.com
Mon Jan 23 22:49:12 UTC 2017
Thanks for this patch. I have tested this on DPR 120 compliance test device
and verified that it works as expected.
Manasi
On Fri, Jan 20, 2017 at 07:04:06PM +0200, Jani Nikula wrote:
> There is no point in setting intel_dp->compliance.test_type, and
> proceeding with the autotests, if we're about to NAK the request. Some
> drive-by cleanups while at it.
>
> v2: look at the ACK bit, as the result may also contain
> TEST_EDID_CHECKSUM_WRITE
>
Reviewed-by: Manasi Navare <manasi.d.navare at intel.com>
Tested-by: Manasi Navare <manasi.d.navare at intel.com>
> Cc: Manasi Navare <manasi.d.navare at intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
> drivers/gpu/drm/i915/intel_dp.c | 21 +++++++++------------
> 1 file changed, 9 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
> index e80d620846c8..247fbf352576 100644
> --- a/drivers/gpu/drm/i915/intel_dp.c
> +++ b/drivers/gpu/drm/i915/intel_dp.c
> @@ -3985,45 +3985,42 @@ static uint8_t intel_dp_autotest_phy_pattern(struct intel_dp *intel_dp)
> static void intel_dp_handle_test_request(struct intel_dp *intel_dp)
> {
> uint8_t response = DP_TEST_NAK;
> - uint8_t rxdata = 0;
> - int status = 0;
> + uint8_t request = 0;
> + int status;
>
> - status = drm_dp_dpcd_read(&intel_dp->aux, DP_TEST_REQUEST, &rxdata, 1);
> + status = drm_dp_dpcd_readb(&intel_dp->aux, DP_TEST_REQUEST, &request);
> if (status <= 0) {
> DRM_DEBUG_KMS("Could not read test request from sink\n");
> goto update_status;
> }
>
> - switch (rxdata) {
> + switch (request) {
> case DP_TEST_LINK_TRAINING:
> DRM_DEBUG_KMS("LINK_TRAINING test requested\n");
> - intel_dp->compliance.test_type = DP_TEST_LINK_TRAINING;
> response = intel_dp_autotest_link_training(intel_dp);
> break;
> case DP_TEST_LINK_VIDEO_PATTERN:
> DRM_DEBUG_KMS("TEST_PATTERN test requested\n");
> - intel_dp->compliance.test_type = DP_TEST_LINK_VIDEO_PATTERN;
> response = intel_dp_autotest_video_pattern(intel_dp);
> break;
> case DP_TEST_LINK_EDID_READ:
> DRM_DEBUG_KMS("EDID test requested\n");
> - intel_dp->compliance.test_type = DP_TEST_LINK_EDID_READ;
> response = intel_dp_autotest_edid(intel_dp);
> break;
> case DP_TEST_LINK_PHY_TEST_PATTERN:
> DRM_DEBUG_KMS("PHY_PATTERN test requested\n");
> - intel_dp->compliance.test_type = DP_TEST_LINK_PHY_TEST_PATTERN;
> response = intel_dp_autotest_phy_pattern(intel_dp);
> break;
> default:
> - DRM_DEBUG_KMS("Invalid test request '%02x'\n", rxdata);
> + DRM_DEBUG_KMS("Invalid test request '%02x'\n", request);
> break;
> }
>
> + if (response & DP_TEST_ACK)
> + intel_dp->compliance.test_type = request;
> +
> update_status:
> - status = drm_dp_dpcd_write(&intel_dp->aux,
> - DP_TEST_RESPONSE,
> - &response, 1);
> + status = drm_dp_dpcd_writeb(&intel_dp->aux, DP_TEST_RESPONSE, response);
> if (status <= 0)
> DRM_DEBUG_KMS("Could not write test response to sink\n");
> }
> --
> 2.1.4
>
More information about the Intel-gfx
mailing list