rpms/kernel/devel drm-connection-cache.patch,NONE,1.1

Adam Jackson ajax at fedoraproject.org
Wed Sep 9 14:03:43 UTC 2009


Author: ajax

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv21848

Added Files:
	drm-connection-cache.patch 
Log Message:
test patch, don't mind me

drm-connection-cache.patch:
 drivers/gpu/drm/drm_crtc_helper.c |   12 ++++++++++++
 drivers/gpu/drm/i915/intel_drv.h  |    1 +
 drivers/gpu/drm/i915/intel_lvds.c |    9 ++++++++-
 include/drm/drm_crtc.h            |    1 +
 4 files changed, 22 insertions(+), 1 deletion(-)

--- NEW FILE drm-connection-cache.patch ---
diff -up linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c.jx linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c
--- linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c.jx	2009-09-09 08:57:39.000000000 -0400
+++ linux-2.6.30.noarch/drivers/gpu/drm/drm_crtc_helper.c	2009-09-09 09:35:24.000000000 -0400
@@ -92,6 +92,18 @@ int drm_helper_probe_single_connector_mo
 
 	connector->status = connector->funcs->detect(connector);
 
+	/* fast path if the driver tracks disconnection */
+	if (connector->status == connector_status_cached) {
+		DRM_DEBUG_KMS("%s still connected\n",
+			      drm_get_connector_name(connector));
+		list_for_each_entry_safe(mode, t, &connector->modes, head) {
+			count++;
+			mode->status = MODE_OK;
+		}
+		connector->status = connector_status_connected;
+		return count;
+	}
+
 	if (connector->status == connector_status_disconnected) {
 		DRM_DEBUG_KMS("%s is disconnected\n",
 			  drm_get_connector_name(connector));
diff -up linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_crt.c.jx linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_crt.c
diff -up linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_dp.c.jx linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_dp.c
diff -up linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h.jx linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h
--- linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h.jx	2009-09-09 08:57:40.000000000 -0400
+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_drv.h	2009-09-09 09:56:19.000000000 -0400
@@ -107,6 +107,7 @@ struct intel_output {
 	void (*hot_plug)(struct intel_output *);
 	int crtc_mask;
 	int clone_mask;
+	bool cached;
 };
 
 struct intel_crtc {
diff -up linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c.jx linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c
--- linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c.jx	2009-09-09 08:57:39.000000000 -0400
+++ linux-2.6.30.noarch/drivers/gpu/drm/i915/intel_lvds.c	2009-09-09 09:56:18.000000000 -0400
@@ -593,7 +593,14 @@ static void intel_lvds_mode_set(struct d
  */
 static enum drm_connector_status intel_lvds_detect(struct drm_connector *connector)
 {
-	return connector_status_connected;
+	static int done;
+
+	if (!done) {
+		done = 1;
+		return connector_status_connected;
+	} else {
+		return connector_status_cached;
+	}
 }
 
 /**
diff -up linux-2.6.30.noarch/include/drm/drm_crtc.h.jx linux-2.6.30.noarch/include/drm/drm_crtc.h
--- linux-2.6.30.noarch/include/drm/drm_crtc.h.jx	2009-09-09 08:57:39.000000000 -0400
+++ linux-2.6.30.noarch/include/drm/drm_crtc.h	2009-09-09 09:35:24.000000000 -0400
@@ -172,6 +172,7 @@ enum drm_connector_status {
 	connector_status_connected = 1,
 	connector_status_disconnected = 2,
 	connector_status_unknown = 3,
+	connector_status_cached = 4,
 };
 
 enum subpixel_order {




More information about the scm-commits mailing list