rpms/kernel/F-11 drm-modesetting-radeon.patch, 1.79, 1.80 kernel.spec, 1.1564, 1.1565
Dave Airlie
airlied at fedoraproject.org
Tue Apr 21 05:20:52 UTC 2009
- Previous message (by thread): rpms/sagator/F-11 .cvsignore, 1.7, 1.8 import.log, 1.5, 1.6 sagator.spec, 1.8, 1.9 sources, 1.7, 1.8
- Next message (by thread): rpms/midori/devel midori.spec,1.21,1.22
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: airlied
Update of /cvs/pkgs/rpms/kernel/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv31699
Modified Files:
drm-modesetting-radeon.patch kernel.spec
Log Message:
* Tue Apr 21 2009 Dave Airlie <airlied at redhat.com> 2.6.29.1-103
- radeon kms: fix lcd edid detection + fix legacy crtc setup
drm-modesetting-radeon.patch:
Index: drm-modesetting-radeon.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/drm-modesetting-radeon.patch,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- drm-modesetting-radeon.patch 17 Apr 2009 10:37:36 -0000 1.79
+++ drm-modesetting-radeon.patch 21 Apr 2009 05:20:50 -0000 1.80
@@ -1,3 +1,42 @@
+commit ef416eafca3c5ed83b089e90fb50c15062accecd
+Merge: fa4687f f891418
+Author: Dave Airlie <airlied at redhat.com>
+Date: Tue Apr 21 15:13:21 2009 +1000
+
+ Merge remote branch 'origin/drm-rawhide' into drm-f11
+
+commit f891418afa0e216bfaba22865ef06a72a6c74474
+Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
+Date: Tue Apr 21 14:29:32 2009 +1000
+
+ radeon: legacy fix more desktop layout scenarios
+
+commit 4b59aa2f4e377fd35bb00462030549eafde0a39c
+Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
+Date: Tue Apr 21 13:34:38 2009 +1000
+
+ radeon: legacy crtc, set buffer pitch at set base time.
+
+ this deals with the case where the fb resizes but we don't switch modes
+
+commit cd12e87b4f13f717caf4bd81b46b25072f6d9ed0
+Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
+Date: Tue Apr 21 11:55:16 2009 +1000
+
+ radeon: fixup bandwidth calcs for second legacy head
+
+commit b462b817a8dee1e8b69f8118862e77674a56faa4
+Author: Dave Airlie <airlied at dhcp-1-203.bne.redhat.com>
+Date: Tue Apr 21 11:15:52 2009 +1000
+
+ radeon: fix bios parsing bug for LCD DDC, also make LCD code use core ddc
+
+commit 5d9a97d1d81e5d0c0115e01d7a1cf7b3f72b3c0d
+Author: Dave Airlie <airlied at redhat.com>
+Date: Fri Apr 17 20:49:35 2009 +1000
+
+ drm: add missing helper commit
+
commit fa4687fdb659e807b8e3b05bf971f79e7aebde62
Merge: 9283b7e 389363f
Author: Dave Airlie <airlied at redhat.com>
@@ -17376,10 +17415,10 @@
+}
diff --git a/drivers/gpu/drm/radeon/radeon_combios.c b/drivers/gpu/drm/radeon/radeon_combios.c
new file mode 100644
-index 0000000..fab8f75
+index 0000000..5f5a4cb
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_combios.c
-@@ -0,0 +1,1767 @@
+@@ -0,0 +1,1768 @@
+/*
+ * Copyright 2004 ATI Technologies Inc., Markham, Ontario
+ * Copyright 2007-8 Advanced Micro Devices, Inc.
@@ -18547,6 +18586,7 @@
+ ddc_i2c.get_data_mask = radeon_bios32(dev_priv, lcd_ddc_info + 7);
+ break;
+ default:
++ ddc_i2c.valid = false;
+ break;
+ }
+ DRM_DEBUG("LCD DDC Info Table found!\n");
@@ -19149,10 +19189,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..cd3acf0
+index 0000000..2696f22
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
-@@ -0,0 +1,608 @@
+@@ -0,0 +1,600 @@
+/*
+ * Copyright 2007-8 Advanced Micro Devices, Inc.
+ * Copyright 2008 Red Hat Inc.
@@ -19306,17 +19346,9 @@
+ struct drm_display_mode *mode;
+
+ if (radeon_connector->ddc_bus) {
-+ radeon_i2c_do_lock(radeon_connector, 1);
-+ edid = drm_get_edid(connector, &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);
-+ if (ret == 0)
-+ goto native;
++ ret = radeon_ddc_get_modes(radeon_connector);
++ if (ret > 0)
+ return ret;
-+ }
+ }
+
+native:
@@ -22763,7 +22795,7 @@
+
diff --git a/drivers/gpu/drm/radeon/radeon_display.c b/drivers/gpu/drm/radeon/radeon_display.c
new file mode 100644
-index 0000000..bb2f0d8
+index 0000000..78f23da
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_display.c
@@ -0,0 +1,680 @@
@@ -23427,7 +23459,7 @@
+ list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) {
+ struct radeon_crtc *radeon_crtc = to_radeon_crtc(crtc);
+
-+ if (crtc->enabled) {
++ if (crtc->enabled && crtc->fb) {
+ modes[radeon_crtc->crtc_id] = &crtc->mode;
+ pixel_bytes[radeon_crtc->crtc_id] = crtc->fb->bits_per_pixel / 8;
+ }
@@ -29373,10 +29405,10 @@
dev->max_vblank_count = 0x001fffff;
diff --git a/drivers/gpu/drm/radeon/radeon_legacy_crtc.c b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
new file mode 100644
-index 0000000..2961292
+index 0000000..7322ac3
--- /dev/null
+++ b/drivers/gpu/drm/radeon/radeon_legacy_crtc.c
-@@ -0,0 +1,1600 @@
+@@ -0,0 +1,1602 @@
+/*
+ * Copyright 2007-8 Advanced Micro Devices, Inc.
+ * Copyright 2008 Red Hat Inc.
@@ -29622,6 +29654,7 @@
+ struct drm_radeon_gem_object *obj_priv;
+ uint32_t base;
+ uint32_t crtc_offset, crtc_offset_cntl, crtc_tile_x0_y0 = 0;
++ uint32_t crtc_pitch, pitch_pixels;
+
+ DRM_DEBUG("\n");
+
@@ -29633,6 +29666,12 @@
+ if (radeon_gem_object_pin(obj, 0, RADEON_GEM_DOMAIN_VRAM))
+ return -EINVAL;
+
++ pitch_pixels = crtc->fb->pitch / (crtc->fb->bits_per_pixel / 8);
++ crtc_pitch = (((pitch_pixels * crtc->fb->bits_per_pixel) +
++ ((crtc->fb->bits_per_pixel * 8) - 1)) /
++ (crtc->fb->bits_per_pixel * 8));
++ crtc_pitch |= crtc_pitch << 16;
++
+ crtc_offset = obj_priv->bo->offset;
+
+ crtc_offset_cntl = 0;
@@ -29668,7 +29707,7 @@
+ crtc_offset_cntl |= (y % 16);
+ }
+ } else {
-+ int offset = y * crtc->fb->pitch + x;
++ int offset = y * pitch_pixels + x;
+ switch (crtc->fb->bits_per_pixel) {
+ case 15:
+ case 16:
@@ -29700,6 +29739,7 @@
+ RADEON_WRITE(R300_CRTC_TILE_X0_Y0, crtc_tile_x0_y0);
+ RADEON_WRITE(RADEON_CRTC_OFFSET_CNTL, crtc_offset_cntl);
+ RADEON_WRITE(RADEON_CRTC_OFFSET, crtc_offset);
++ RADEON_WRITE(RADEON_CRTC_PITCH, crtc_pitch);
+
+ if (old_fb) {
+ radeon_fb = to_radeon_framebuffer(old_fb);
@@ -29723,7 +29763,6 @@
+ uint32_t crtc_h_sync_strt_wid;
+ uint32_t crtc_v_total_disp;
+ uint32_t crtc_v_sync_strt_wid;
-+ uint32_t crtc_pitch;
+ uint32_t disp_merge_cntl;
+
+ DRM_DEBUG("\n");
@@ -29792,10 +29831,6 @@
+ ? RADEON_CRTC_V_SYNC_POL
+ : 0));
+
-+ crtc_pitch = ((((crtc->fb->pitch / (crtc->fb->bits_per_pixel / 8)) * crtc->fb->bits_per_pixel) +
-+ ((crtc->fb->bits_per_pixel * 8) - 1)) /
-+ (crtc->fb->bits_per_pixel * 8));
-+ crtc_pitch |= crtc_pitch << 16;
+
+ /* TODO -> Dell Server */
+ if (0) {
@@ -29835,8 +29870,6 @@
+ RADEON_WRITE(RADEON_CRTC_V_TOTAL_DISP, crtc_v_total_disp);
+ RADEON_WRITE(RADEON_CRTC_V_SYNC_STRT_WID, crtc_v_sync_strt_wid);
+
-+ RADEON_WRITE(RADEON_CRTC_PITCH, crtc_pitch);
-+
+ RADEON_WRITE(RADEON_CRTC_GEN_CNTL, crtc_gen_cntl);
+
+ return true;
@@ -30057,6 +30090,7 @@
+ struct drm_radeon_gem_object *obj_priv;
+ uint32_t base;
+ uint32_t crtc2_offset, crtc2_offset_cntl, crtc2_tile_x0_y0 = 0;
++ uint32_t crtc2_pitch, pitch_pixels;
+
+ DRM_DEBUG("\n");
+
@@ -30070,6 +30104,12 @@
+
+ crtc2_offset = obj_priv->bo->offset;
+
++ pitch_pixels = crtc->fb->pitch / (crtc->fb->bits_per_pixel / 8);
++ crtc2_pitch = (((pitch_pixels * crtc->fb->bits_per_pixel) +
++ ((crtc->fb->bits_per_pixel * 8) - 1)) /
++ (crtc->fb->bits_per_pixel * 8));
++ crtc2_pitch |= crtc2_pitch << 16;
++
+ crtc2_offset_cntl = 0;
+
+ /* TODO tiling */
@@ -30103,7 +30143,7 @@
+ crtc2_offset_cntl |= (y % 16);
+ }
+ } else {
-+ int offset = y * crtc->fb->pitch + x;
++ int offset = y * pitch_pixels + x;
+ switch (crtc->fb->bits_per_pixel) {
+ case 15:
+ case 16:
@@ -30133,6 +30173,7 @@
+ RADEON_WRITE(R300_CRTC2_TILE_X0_Y0, crtc2_tile_x0_y0);
+ RADEON_WRITE(RADEON_CRTC2_OFFSET_CNTL, crtc2_offset_cntl);
+ RADEON_WRITE(RADEON_CRTC2_OFFSET, crtc2_offset);
++ RADEON_WRITE(RADEON_CRTC2_PITCH, crtc2_pitch);
+
+ out:
+ if (old_fb) {
@@ -30158,7 +30199,6 @@
+ uint32_t crtc2_v_sync_strt_wid;
+ uint32_t fp_h2_sync_strt_wid;
+ uint32_t fp_v2_sync_strt_wid;
-+ uint32_t crtc2_pitch;
+ uint32_t disp2_merge_cntl;
+
+ DRM_DEBUG("\n");
@@ -30234,11 +30274,6 @@
+ fp_h2_sync_strt_wid = crtc2_h_sync_strt_wid;
+ fp_v2_sync_strt_wid = crtc2_v_sync_strt_wid;
+
-+ crtc2_pitch = ((((crtc->fb->pitch / (crtc->fb->bits_per_pixel / 8)) * crtc->fb->bits_per_pixel) +
-+ ((crtc->fb->bits_per_pixel * 8) - 1)) /
-+ (crtc->fb->bits_per_pixel * 8));
-+ crtc2_pitch |= crtc2_pitch << 16;
-+
+ disp2_merge_cntl = RADEON_READ(RADEON_DISP2_MERGE_CNTL);
+ disp2_merge_cntl &= ~RADEON_DISP2_RGB_OFFSET_EN;
+ RADEON_WRITE(RADEON_DISP2_MERGE_CNTL, disp2_merge_cntl);
@@ -30256,8 +30291,6 @@
+ RADEON_WRITE(RADEON_FP_H2_SYNC_STRT_WID, fp_h2_sync_strt_wid);
+ RADEON_WRITE(RADEON_FP_V2_SYNC_STRT_WID, fp_v2_sync_strt_wid);
+
-+ RADEON_WRITE(RADEON_CRTC2_PITCH, crtc2_pitch);
-+
+ RADEON_WRITE(RADEON_CRTC2_GEN_CNTL, crtc2_gen_cntl);
+
+ return true;
@@ -30881,6 +30914,7 @@
+ }
+
+ if (mode2) {
++ u32 grph2_cntl;
+ stop_req = mode2->hdisplay * pixel_bytes2 / 16;
+
+ if (stop_req > max_stop_req)
@@ -30892,17 +30926,17 @@
+ temp_ff.full = rfixed_const((16/pixel_bytes2));
+ disp_drain_rate2.full = rfixed_div(pix_clk2, temp_ff);
+
-+ temp = RADEON_READ(RADEON_GRPH2_BUFFER_CNTL);
-+ temp &= ~(RADEON_GRPH_STOP_REQ_MASK);
-+ temp |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT);
-+ temp &= ~(RADEON_GRPH_START_REQ_MASK);
++ grph2_cntl = RADEON_READ(RADEON_GRPH2_BUFFER_CNTL);
++ grph2_cntl &= ~(RADEON_GRPH_STOP_REQ_MASK);
++ grph2_cntl |= (stop_req << RADEON_GRPH_STOP_REQ_SHIFT);
++ grph2_cntl &= ~(RADEON_GRPH_START_REQ_MASK);
+ if ((dev_priv->chip_family == CHIP_R350) &&
+ (stop_req > 0x15)) {
+ stop_req -= 0x10;
+ }
-+ temp |= (stop_req << RADEON_GRPH_START_REQ_SHIFT);
-+ temp |= RADEON_GRPH_BUFFER_SIZE;
-+ temp &= ~(RADEON_GRPH_CRITICAL_CNTL |
++ grph2_cntl |= (stop_req << RADEON_GRPH_START_REQ_SHIFT);
++ grph2_cntl |= RADEON_GRPH_BUFFER_SIZE;
++ grph2_cntl &= ~(RADEON_GRPH_CRITICAL_CNTL |
+ RADEON_GRPH_CRITICAL_AT_SOF |
+ RADEON_GRPH_STOP_CNTL);
+
@@ -30944,7 +30978,7 @@
+ critical_point2 = 0x10;
+ }
+
-+ RADEON_WRITE(RADEON_GRPH2_BUFFER_CNTL, ((temp & ~RADEON_GRPH_CRITICAL_POINT_MASK) |
++ RADEON_WRITE(RADEON_GRPH2_BUFFER_CNTL, ((grph2_cntl & ~RADEON_GRPH_CRITICAL_POINT_MASK) |
+ (critical_point2 << RADEON_GRPH_CRITICAL_POINT_SHIFT)));
+
+ if ((dev_priv->chip_family == CHIP_RS400) ||
@@ -38727,9 +38761,18 @@
#endif /* __KERNEL__ */
diff --git a/include/drm/drm_crtc_helper.h b/include/drm/drm_crtc_helper.h
-index ec073d8..32ac55d 100644
+index ec073d8..86a8a87 100644
--- a/include/drm/drm_crtc_helper.h
+++ b/include/drm/drm_crtc_helper.h
+@@ -96,7 +96,7 @@ extern int drm_crtc_helper_set_config(struct drm_mode_set *set);
+ extern bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
+ struct drm_display_mode *mode,
+ int x, int y,
+- struct drm_framebuffer *old_fb);
++ struct drm_framebuffer *old_fb, int conn_changed);
+ extern bool drm_helper_crtc_in_use(struct drm_crtc *crtc);
+
+ extern int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb,
@@ -121,4 +121,6 @@ static inline void drm_connector_helper_add(struct drm_connector *connector,
}
@@ -39816,15 +39859,3 @@
+};
+
#endif
-diff -up linux-2.6.29.noarch/include/drm/drm_crtc_helper.h.dave linux-2.6.29.noarch/include/drm/drm_crtc_helper.h
---- linux-2.6.29.noarch/include/drm/drm_crtc_helper.h.dave 2009-04-17 20:35:37.000000000 +1000
-+++ linux-2.6.29.noarch/include/drm/drm_crtc_helper.h 2009-04-17 20:35:56.000000000 +1000
-@@ -96,7 +96,7 @@ extern int drm_crtc_helper_set_config(st
- extern bool drm_crtc_helper_set_mode(struct drm_crtc *crtc,
- struct drm_display_mode *mode,
- int x, int y,
-- struct drm_framebuffer *old_fb);
-+ struct drm_framebuffer *old_fbm, int conn_changed);
- extern bool drm_helper_crtc_in_use(struct drm_crtc *crtc);
-
- extern int drm_helper_mode_fill_fb_struct(struct drm_framebuffer *fb,
Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/F-11/kernel.spec,v
retrieving revision 1.1564
retrieving revision 1.1565
diff -u -r1.1564 -r1.1565
--- kernel.spec 20 Apr 2009 19:10:19 -0000 1.1564
+++ kernel.spec 21 Apr 2009 05:20:51 -0000 1.1565
@@ -1978,6 +1978,9 @@
# and build.
%changelog
+* Tue Apr 21 2009 Dave Airlie <airlied at redhat.com> 2.6.29.1-103
+- radeon kms: fix lcd edid detection + fix legacy crtc setup
+
* Mon Apr 20 2009 Kyle McMartin <kyle at redhat.com> 2.6.29.1-102
- git-bluetooth2.patch: Bluetooth fixes from 2.6.30-rc2.
- Previous message (by thread): rpms/sagator/F-11 .cvsignore, 1.7, 1.8 import.log, 1.5, 1.6 sagator.spec, 1.8, 1.9 sources, 1.7, 1.8
- Next message (by thread): rpms/midori/devel midori.spec,1.21,1.22
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list