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