|
@@ -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");
|
|
|
}
|