rpms/kernel/devel drm-modesetting-radeon.patch, 1.16, 1.17 kernel.spec, 1.909, 1.910

Dave Airlie airlied at fedoraproject.org
Thu Aug 28 11:43:01 UTC 2008


Author: airlied

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

Modified Files:
	drm-modesetting-radeon.patch kernel.spec 
Log Message:
* Thu Aug 28 2008 Dave Airlie <airlied at redhat.com>
- hopefully fix r300 lvds


drm-modesetting-radeon.patch:

Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/drm-modesetting-radeon.patch,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- drm-modesetting-radeon.patch	28 Aug 2008 08:34:19 -0000	1.16
+++ drm-modesetting-radeon.patch	28 Aug 2008 11:43:00 -0000	1.17
@@ -1,3 +1,11 @@
+commit a72fd0727c6aa05a9e5efe18bb678a5767b90dee
+Author: Dave Airlie <airlied at redhat.com>
+Date:   Thu Aug 28 21:22:27 2008 +1000
+
+    radeon: fix up LVDS panel mode
+    
+    also don't explode on lack of DDC
+
 commit cc2073a2981b46aaf1265996e7680f064f0364ee
 Author: Dave Airlie <airlied at redhat.com>
 Date:   Thu Aug 28 18:31:50 2008 +1000
@@ -30011,10 +30019,10 @@
 +}
 diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
 new file mode 100644
-index 0000000..7b2d7c4
+index 0000000..5ce66d7
 --- /dev/null
 +++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -0,0 +1,345 @@
+@@ -0,0 +1,377 @@
 +/*
 + * Copyright 2007-8 Advanced Micro Devices, Inc.
 + * Copyright 2008 Red Hat Inc.
@@ -30046,38 +30054,89 @@
 +#include "radeon_drm.h"
 +#include "radeon_drv.h"
 +
++struct drm_encoder *radeon_best_single_encoder(struct drm_connector *connector)
++{
++	int enc_id = connector->encoder_ids[0];
++	struct drm_mode_object *obj;
++	struct drm_encoder *encoder;
++
++	/* pick the encoder ids */
++	if (enc_id) {
++		obj = drm_mode_object_find(connector->dev, enc_id, DRM_MODE_OBJECT_ENCODER);
++		if (!obj)
++			return NULL;
++		encoder = obj_to_encoder(obj);
++		return encoder;
++	}
++	return NULL;
++}
++
++static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encoder)
++{
++	struct drm_device *dev = encoder->dev;
++	struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
++	struct drm_display_mode *mode = NULL;
++
++	if (radeon_encoder->panel_xres != 0 &&
++	    radeon_encoder->panel_yres != 0 &&
++	    radeon_encoder->dotclock != 0) {
++		mode = drm_mode_create(dev);
++
++		mode->hdisplay = radeon_encoder->panel_xres;
++		mode->vdisplay = radeon_encoder->panel_yres;
++
++		mode->htotal = mode->hdisplay + radeon_encoder->hblank;
++		mode->hsync_start = mode->hdisplay + radeon_encoder->hoverplus;
++		mode->hsync_end = mode->hsync_start + radeon_encoder->hsync_width;
++		mode->vtotal = mode->vdisplay + radeon_encoder->vblank;
++		mode->vsync_start = mode->vdisplay + radeon_encoder->voverplus;
++		mode->vsync_end = mode->vsync_start + radeon_encoder->vsync_width;
++		mode->clock = radeon_encoder->dotclock;
++		mode->flags = 0;
++
++		mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER;
++
++		DRM_DEBUG("Adding native panel mode %dx%d\n",
++			  radeon_encoder->panel_xres, radeon_encoder->panel_yres);
++	}
++	return mode;
++}
++
 +static int radeon_lvds_get_modes(struct drm_connector *connector)
 +{
 +	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
-+	struct drm_encoder *lvds_encoder;
++	struct drm_encoder *encoder;
 +	int ret = 0;
 +	struct edid *edid;
++	struct drm_display_mode *mode;
 +
-+	radeon_i2c_do_lock(radeon_connector, 1);
-+	edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
-+	radeon_i2c_do_lock(radeon_connector, 0);
-+	if (edid) {
-+		drm_mode_connector_update_edid_property(&radeon_connector->base, edid);
-+		ret = drm_add_edid_modes(&radeon_connector->base, edid);
-+		kfree(edid);
-+		return ret;
++	if (radeon_connector->ddc_bus) {
++		radeon_i2c_do_lock(radeon_connector, 1);
++		edid = drm_get_edid(&radeon_connector->base, &radeon_connector->ddc_bus->adapter);
++		radeon_i2c_do_lock(radeon_connector, 0);
++		if (edid) {
++			drm_mode_connector_update_edid_property(&radeon_connector->base, edid);
++			ret = drm_add_edid_modes(&radeon_connector->base, edid);
++			kfree(edid);
++			return ret;
++		}
 +	}
 +
-+#if 0
-+	lvds_encoder = radeon_best_single_encoder(connector);
-+
-+	if (!lvds_encoder)
-+		return ret;
-+
-+	radeon_encoder_update_panel_size(lvds_encoder, connector);
-+#endif
++	encoder = radeon_best_single_encoder(connector);
++	if (!encoder)
++		return connector_status_disconnected;
++	/* we have no EDID modes */
++	mode = radeon_fp_native_mode(encoder);
++	if (mode) {
++		ret = 1;
++		drm_mode_probed_add(connector, mode);
++	}
 +	return ret;
 +}
 +
 +static int radeon_lvds_mode_valid(struct drm_connector *connector,
 +				  struct drm_display_mode *mode)
 +{
-+
 +	return MODE_OK;
 +}
 +
@@ -30087,25 +30146,6 @@
 +	return connector_status_connected;
 +}
 +
-+
-+
-+struct drm_encoder *radeon_best_single_encoder(struct drm_connector *connector)
-+{
-+	int enc_id = connector->encoder_ids[0];
-+	struct drm_mode_object *obj;
-+	struct drm_encoder *encoder;
-+
-+	/* pick the encoder ids */
-+	if (enc_id) {
-+		obj = drm_mode_object_find(connector->dev, enc_id, DRM_MODE_OBJECT_ENCODER);
-+		if (!obj)
-+			return NULL;
-+		encoder = obj_to_encoder(obj);
-+		return encoder;
-+	}
-+	return NULL;
-+}
-+
 +static void radeon_connector_destroy(struct drm_connector *connector)
 +{
 +	struct radeon_connector *radeon_connector = to_radeon_connector(connector);


Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.909
retrieving revision 1.910
diff -u -r1.909 -r1.910
--- kernel.spec	28 Aug 2008 07:18:47 -0000	1.909
+++ kernel.spec	28 Aug 2008 11:43:00 -0000	1.910
@@ -1740,6 +1740,9 @@
 
 %changelog
 * Thu Aug 28 2008 Dave Airlie <airlied at redhat.com>
+- hopefully fix r300 lvds
+
+* Thu Aug 28 2008 Dave Airlie <airlied at redhat.com>
 - rebase modesetting patches - add DRI2 for intel patches from krh
 - no intel modesetting yet didn't have time
 




More information about the fedora-extras-commits mailing list