[PATCH 3/3] drm/i915: Add output_poll_period_get() hook
José Roberto de Souza
jose.souza at intel.com
Tue Feb 5 23:22:01 UTC 2019
When unpowered type-C dongles WA is active we need the output poll
work to execute with a very small period, so lets check if WA is
active and return a more appropriate period interval.
Cc: Imre Deak <imre.deak at intel.com>
Signed-off-by: José Roberto de Souza <jose.souza at intel.com>
---
drivers/gpu/drm/i915/intel_display.c | 35 ++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 4d5ec929f987..1522aced255b 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14905,10 +14905,45 @@ intel_mode_valid(struct drm_device *dev,
return MODE_OK;
}
+static unsigned long intel_output_poll_period_get(struct drm_device *dev)
+{
+ struct drm_connector *connector;
+ struct drm_connector_list_iter conn_iter;
+ unsigned long period = 10 * HZ;
+
+ /* Return smaller period if unpowered type-C dongles WA is active */
+ drm_connector_list_iter_begin(dev, &conn_iter);
+ drm_for_each_connector_iter(connector, &conn_iter) {
+ struct intel_connector *intel_connector;
+ struct intel_encoder *intel_encoder;
+ struct intel_digital_port *dig_port;
+
+ if (!(connector->polled & DRM_CONNECTOR_POLL_CONNECT))
+ continue;
+
+ intel_connector = to_intel_connector(connector);
+ intel_encoder = intel_connector->encoder;
+ dig_port = enc_to_dig_port(&intel_encoder->base);
+
+ if (!dig_port)
+ continue;
+
+ /* Set period to 100msec */
+ if (dig_port->tc_delay_wa_remaining_tries) {
+ period = HZ / 10;
+ break;
+ }
+ }
+ drm_connector_list_iter_end(&conn_iter);
+
+ return period;
+}
+
static const struct drm_mode_config_funcs intel_mode_funcs = {
.fb_create = intel_user_framebuffer_create,
.get_format_info = intel_get_format_info,
.output_poll_changed = intel_fbdev_output_poll_changed,
+ .output_poll_period_get = intel_output_poll_period_get,
.mode_valid = intel_mode_valid,
.atomic_check = intel_atomic_check,
.atomic_commit = intel_atomic_commit,
--
2.20.1
More information about the Intel-gfx-trybot
mailing list