xserver-xorg-video-ati: Changes to 'debian-unstable'
ChangeLog | 248 +++++++++++++++++++++++++++++++++++++++
debian/changelog | 5
src/atombios_crtc.c | 4
src/legacy_crtc.c | 48 ++-----
src/legacy_output.c | 11 -
src/r600_state.h | 6
src/radeon.h | 3
src/radeon_accel.c | 9 +
src/radeon_atombios.c | 46 ++++---
src/radeon_commonfuncs.c | 40 +++---
src/radeon_crtc.c | 13 +-
src/radeon_cursor.c | 70 +++++++----
src/radeon_dri.c | 9 -
src/radeon_driver.c | 68 +---------
src/radeon_exa_render.c | 16 +-
src/radeon_output.c | 86 ++++++++++---
src/radeon_probe.h | 1
src/radeon_reg.h | 38 +++--
src/radeon_textured_videofuncs.c | 22 +--
src/radeon_version.h | 1
20 files changed, 515 insertions(+), 229 deletions(-)
New commits:
commit 9ac2b8b802923eac33301424e8f00571c765cb82
Author: Brice Goglin <bgoglin@debian.org>
Date: Wed May 13 09:08:38 2009 +0200
Prepare changelog for upload
diff --git a/debian/changelog b/debian/changelog
index bb06548..30569f7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-xserver-xorg-video-ati (1:6.12.2-2) UNRELEASED; urgency=low
+xserver-xorg-video-ati (1:6.12.2-2) unstable; urgency=low
[ Brice Goglin ]
* Pull upstream commits from 6.12-branch up to 248b435a.
@@ -11,7 +11,7 @@ xserver-xorg-video-ati (1:6.12.2-2) UNRELEASED; urgency=low
* Remove 01_gen_pci_ids.diff patch as the server just uses a built-in
table to choose drivers now
- -- Brice Goglin <bgoglin@debian.org> Wed, 13 May 2009 09:04:39 +0200
+ -- Brice Goglin <bgoglin@debian.org> Wed, 13 May 2009 09:08:21 +0200
xserver-xorg-video-ati (1:6.12.2-1) unstable; urgency=low
commit 43a8b64a6fa3638b131b07fa9406196077cbee94
Author: Brice Goglin <bgoglin@debian.org>
Date: Wed May 13 09:08:04 2009 +0200
Pull from upstream stable branch
diff --git a/ChangeLog b/ChangeLog
index 483babc..8d3fa79 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,251 @@
+commit 248b435ae63d7122971a8021f8aa8e0963d8a850
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Fri May 8 12:55:26 2009 -0400
+
+ R3xx/R4xx tex vid: increase the guardband limit for rendering with a tri
+
+ limit goes from 2880 to 4021 now that we've switched to 1/12 subpixel mode.
+
+ This allows us to render with a clipped tri at higher resolutions preventing
+ diagonal tearing.
+
+commit cd03bc17ccb30f1598af61c455b623c14ea42e6b
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Fri May 8 12:54:00 2009 -0400
+
+ r3xx-r5xx: switch to 1/12 subpixel precision
+
+ - based on similar patch in Jerome's cs ddx tree
+ - also fix clipping offsets
+ - should eventually allow for 4k render targets
+ - mesa driver uses 1/12 mode, this avoids changing the
+ subpixel mode when switching between ddx and mesa
+
+commit 26472556fcbbf13e2e4ac2355d587651d6c8f662
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Fri May 8 12:37:47 2009 -0400
+
+ R3xx-R5xx: don't set TX_OFFSET_RS in RS_INST_COUNT
+
+ Isn't necessary and seems to cause problems for RS690 users
+
+commit 96667eebd8c7949873d63454746129d270bb36e5
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Sun May 3 13:09:39 2009 -0400
+
+ RS690: gpio/connector fixes
+
+ Fixes bug 21521
+
+commit faa782c7a56de99900c9b3f54714f010ce73dcf3
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Apr 16 11:58:19 2009 -0400
+
+ RS690/RS740: fix connector enumeration in some cases
+
+ Should fix Masta-G's issue reported on IRC.
+
+commit f2c0fa5e3d96f1bcc916e1a36268bdc7acd4cda7
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed May 6 12:24:35 2009 -0400
+
+ AVIVO: set default cursor mode in cursor init
+
+ Should fix bug 21557
+
+commit b6cd47ec007af2022af180f537a7ba01244b2c88
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Fri May 8 12:21:33 2009 -0400
+
+ AVIVO: fix cursor corruption bands for real
+
+ Don't have to leave both cursors enabled, just have to use
+ the same mode for both cursors whether or not they are enabled.
+
+commit cb8081a8e70b3354037f8ca99380288fe2eb9828
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon May 4 12:57:36 2009 -0400
+
+ AVIVO: move cusor offscreen when disabling
+
+ Adapted from Yang's patch. Setting size to zero is
+ actually a 1x1 cursor.
+
+commit 0e49efbe8c271c26cec4dfca063c73755dc2d25f
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Sun May 3 18:52:00 2009 -0400
+
+ r2xx-r4xx: fix typo in last i2c fix and clarify hw i2c pin sel
+
+commit 421085949e195596000e37ea6693489db7c075b5
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Apr 29 12:38:15 2009 -0400
+
+ radeon: fix several dpms issues
+
+ - atom dpms was unblanking for standby/suspend
+ - return if r600+ in radeon_crtc_modeset_ioctl()
+ - remove seprate standby/suspend handling in legacy
+ crtc dpms. we turn the outputs off, so turn the
+ crtcs off too.
+ - disable the crtcs in legacy crtc dpms
+ - move radeon_crtc_modeset_ioctl() calls to radeon_crtc_dpms()
+ so they will get called for both atom and legacy paths
+
+ Should fix bug 21321
+
+commit fbb04716e4c28347c9e627f3cc78b4420e9abfa0
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Apr 29 01:55:10 2009 -0400
+
+ AVIVO: better fix for cursor flickering/corruption issues
+
+ Should prevent ghost cursor from being left on screen.
+
+commit 666b0ff9f7fd216f7c31315b284c4bf389a51007
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Apr 29 01:05:31 2009 -0400
+
+ R6xx/r7xx: fix CURSOR_SWAPPING_* macros
+
+ r6xx/r7xx have different swapper regs
+
+commit 998fd24417d1e86ad70e15a2f55bb81320b28987
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue Apr 28 19:28:25 2009 -0400
+
+ AVIVO: fix cursor corruption/flickering issues
+
+ When both crtcs are enabled, both cursors need to be enabled
+ or you get corruption bands.
+
+ Thanks to Yang Zhao for figuring this out.
+
+commit 97c63973ff187744fe2bb72bdd7bcd16cb95e33f
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue Apr 28 12:33:24 2009 -0400
+
+ RV410: SE variants only have 1 quad pipe
+
+ Should fix EXA corruption with the 3D engine.
+ Mesa and drm patches forthcoming.
+
+ Reported by Kano on IRC.
+
+commit f2aaa70871f87f39d0c08b4652840ec4b3dc74a4
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon Apr 27 03:35:24 2009 -0400
+
+ AVIVO: make sure cursor width isn't negative
+
+commit db375c70a00865976ddb3b32bb4b25113735bf1e
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Apr 23 14:06:06 2009 -0400
+
+ r2xx/r3xx/r4xx: further i2c fixups
+
+ - hw i2c engine has pin selection on r2xx/r2xx/r3xx chips
+ - also switch hw i2c pin sel for external tmds
+
+commit 0ea75453eaa5bb41bf12666d454a203ee1481461
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Apr 22 14:31:44 2009 -0400
+
+ AVIVO: fix for cursor corruption issue
+
+commit 3b1d26f649257a13d2e929a000f911cf8016d369
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Tue Apr 21 12:06:24 2009 -0400
+
+ RS690: add quirk for acer board
+
+ thanks to Gino Badouri for testing
+
+commit 3a7be25ef1b99b30581517ffad558d52226664c8
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Mon Apr 20 13:05:18 2009 -0400
+
+ Endian fixes for object table
+
+commit dd852a4044a97bf68ad64ad2c55b3ef258d7f732
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Sun Apr 19 12:13:18 2009 -0400
+
+ Remove old messages
+
+ R5xx/r6xx support isn't really experimental anymore
+
+commit 4b042f0c0f0389529b736dccd9646a97b5297a7a
+Author: Dave Airlie <airlied@redhat.com>
+Date: Fri Apr 17 10:30:21 2009 +1000
+
+ radeon: tweak ddc fix for all r300s.
+
+ Alex seems to think this might affect some other chips
+
+commit 1ea41d7f4834037c0d16b1091f8e8e8c126f406a
+Author: Dave Airlie <airlied@redhat.com>
+Date: Fri Apr 17 10:24:15 2009 +1000
+
+ radeon: fix DDC on rv410 VGA ports for non-atom use.
+
+ The rv410 hw i2c block appears to hold down whatever i2c lines
+ it is connected to when in reset, so when doing DDC change hw i2c to
+ point at different i2c lines.
+
+commit 36d6b5f3edbb30b273aceb2452265bb7ce1ab9e0
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Apr 16 10:41:28 2009 -0400
+
+ Revert "DCE3/3.2: cleanup dpms after previous changes"
+
+ This reverts commit f8c7d6a6162196a743f6885ecaf63ba50de1722a.
+
+ This is apparently still needed for some setups, however, I can't
+ reproduce this locally anymore.
+
+commit f3b0701ac78c08b8e26145bb697e03d19d742242
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Fri Apr 10 09:37:15 2009 -0400
+
+ radeon: fix tmds_pll randr property
+
+commit 3c348091ae5d88ef3cb850889ca74674e0530b4e
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Apr 9 20:17:03 2009 -0400
+
+ radeon: remove old crtc size heuristics
+
+ IIRC, the old randr code used to use this to use for front buffer sizing,
+ but it has since been changed.
+
+commit 8c86ac945055d6168016a2c8f4600462cd63bfec
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Thu Apr 9 19:59:19 2009 -0400
+
+ R6xx/R7xx: cleanup macro
+
+commit a5597cbf9c7573a247788a5c3b33ca872dd3bd10
+Author: Michel Dänzer <daenzer@vmware.com>
+Date: Thu Apr 9 09:41:56 2009 +0200
+
+ Clear the framebuffer before initializing modes.
+
+ Fixes garbage being visible shortly on server startup or when VT switching back
+ to X.
+
+commit 2e9ab215b026a629bfb7fdf11389ef486bdd3409
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Apr 8 13:34:23 2009 -0400
+
+ radeon: chip family typo
+
+commit 031cacafb6b7de4226d13b444c195761bc934f43
+Author: Alex Deucher <alexdeucher@gmail.com>
+Date: Wed Apr 8 13:10:01 2009 -0400
+
+ R6xx/R7xx: set proper 3D client driver name for r600
+
commit 1b02b93895c31a0c9d641e47b46dce43b40edd97
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed Apr 8 10:34:44 2009 -0400
diff --git a/debian/changelog b/debian/changelog
index f8e8511..bb06548 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,7 @@
xserver-xorg-video-ati (1:6.12.2-2) UNRELEASED; urgency=low
[ Brice Goglin ]
+ * Pull upstream commits from 6.12-branch up to 248b435a.
* xserver-xorg-video-radeon now suggests firmware-linux since
a firmware may be needed to initialize DRI.
* Move -dbg packages to section debug.
@@ -10,7 +11,7 @@ xserver-xorg-video-ati (1:6.12.2-2) UNRELEASED; urgency=low
* Remove 01_gen_pci_ids.diff patch as the server just uses a built-in
table to choose drivers now
- -- David Nusinow <dnusinow@debian.org> Wed, 29 Apr 2009 21:45:58 -0400
+ -- Brice Goglin <bgoglin@debian.org> Wed, 13 May 2009 09:04:39 +0200
xserver-xorg-video-ati (1:6.12.2-1) unstable; urgency=low
commit 248b435ae63d7122971a8021f8aa8e0963d8a850
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Fri May 8 12:55:26 2009 -0400
R3xx/R4xx tex vid: increase the guardband limit for rendering with a tri
limit goes from 2880 to 4021 now that we've switched to 1/12 subpixel mode.
This allows us to render with a clipped tri at higher resolutions preventing
diagonal tearing.
diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c
index a88d0ab..9f7cd4c 100644
--- a/src/radeon_textured_videofuncs.c
+++ b/src/radeon_textured_videofuncs.c
@@ -2014,7 +2014,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
* We render a single, large triangle and use the scissor
* functionality to restrict it to the desired rectangle.
* Due to guardband limits on r3xx/r4xx, we can only use
- * the single triangle up to 2880 pixels; above that we
+ * the single triangle up to 4021 pixels; above that we
* render as a quad.
*/
@@ -2041,7 +2041,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
#endif
if (IS_R300_3D || IS_R500_3D) {
- if (IS_R300_3D && ((dstw+dsth) > 2880))
+ if (IS_R300_3D && ((dstw+dsth) > 4021))
use_quad = TRUE;
/*
* Set up the scissor area to that of the output size.
commit cd03bc17ccb30f1598af61c455b623c14ea42e6b
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Fri May 8 12:54:00 2009 -0400
r3xx-r5xx: switch to 1/12 subpixel precision
- based on similar patch in Jerome's cs ddx tree
- also fix clipping offsets
- should eventually allow for 4k render targets
- mesa driver uses 1/12 mode, this avoids changing the
subpixel mode when switching between ddx and mesa
diff --git a/src/radeon_accel.c b/src/radeon_accel.c
index 70347fe..f90b386 100644
--- a/src/radeon_accel.c
+++ b/src/radeon_accel.c
@@ -493,7 +493,7 @@ void RADEONEngineInit(ScrnInfoPtr pScrn)
"num quad-pipes is %d\n", info->accel_state->num_gb_pipes);
if (IS_R300_3D || IS_R500_3D) {
- uint32_t gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16);
+ uint32_t gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16);
switch(info->accel_state->num_gb_pipes) {
case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break;
diff --git a/src/radeon_commonfuncs.c b/src/radeon_commonfuncs.c
index a9bc7d2..13b6533 100644
--- a/src/radeon_commonfuncs.c
+++ b/src/radeon_commonfuncs.c
@@ -69,7 +69,7 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
OUT_ACCEL_REG(RADEON_WAIT_UNTIL, RADEON_WAIT_2D_IDLECLEAN | RADEON_WAIT_3D_IDLECLEAN);
FINISH_ACCEL();
- gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16 | R300_SUBPIXEL_1_16);
+ gb_tile_config = (R300_ENABLE_TILING | R300_TILE_SIZE_16);
switch(info->accel_state->num_gb_pipes) {
case 2: gb_tile_config |= R300_PIPE_COUNT_R300; break;
@@ -105,21 +105,21 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
OUT_ACCEL_REG(R300_GB_AA_CONFIG, 0);
OUT_ACCEL_REG(R300_RB3D_DSTCACHE_CTLSTAT, R300_DC_FLUSH_3D | R300_DC_FREE_3D);
OUT_ACCEL_REG(R300_RB3D_ZCACHE_CTLSTAT, R300_ZC_FLUSH | R300_ZC_FREE);
- OUT_ACCEL_REG(R300_GB_MSPOS0, ((8 << R300_MS_X0_SHIFT) |
- (8 << R300_MS_Y0_SHIFT) |
- (8 << R300_MS_X1_SHIFT) |
- (8 << R300_MS_Y1_SHIFT) |
- (8 << R300_MS_X2_SHIFT) |
- (8 << R300_MS_Y2_SHIFT) |
- (8 << R300_MSBD0_Y_SHIFT) |
- (7 << R300_MSBD0_X_SHIFT)));
- OUT_ACCEL_REG(R300_GB_MSPOS1, ((8 << R300_MS_X3_SHIFT) |
- (8 << R300_MS_Y3_SHIFT) |
- (8 << R300_MS_X4_SHIFT) |
- (8 << R300_MS_Y4_SHIFT) |
- (8 << R300_MS_X5_SHIFT) |
- (8 << R300_MS_Y5_SHIFT) |
- (8 << R300_MSBD1_SHIFT)));
+ OUT_ACCEL_REG(R300_GB_MSPOS0, ((6 << R300_MS_X0_SHIFT) |
+ (6 << R300_MS_Y0_SHIFT) |
+ (6 << R300_MS_X1_SHIFT) |
+ (6 << R300_MS_Y1_SHIFT) |
+ (6 << R300_MS_X2_SHIFT) |
+ (6 << R300_MS_Y2_SHIFT) |
+ (6 << R300_MSBD0_Y_SHIFT) |
+ (6 << R300_MSBD0_X_SHIFT)));
+ OUT_ACCEL_REG(R300_GB_MSPOS1, ((6 << R300_MS_X3_SHIFT) |
+ (6 << R300_MS_Y3_SHIFT) |
+ (6 << R300_MS_X4_SHIFT) |
+ (6 << R300_MS_Y4_SHIFT) |
+ (6 << R300_MS_X5_SHIFT) |
+ (6 << R300_MS_Y5_SHIFT) |
+ (6 << R300_MSBD1_SHIFT)));
FINISH_ACCEL();
BEGIN_ACCEL(5);
@@ -552,10 +552,10 @@ static void FUNC_NAME(RADEONInit3DEngine)(ScrnInfoPtr pScrn)
OUT_ACCEL_REG(R300_SC_EDGERULE, 0xA5294A5);
if (IS_R300_3D) {
/* clip has offset 1440 */
- OUT_ACCEL_REG(R300_SC_CLIP_0_A, ((1088 << R300_CLIP_X_SHIFT) |
- (1088 << R300_CLIP_Y_SHIFT)));
- OUT_ACCEL_REG(R300_SC_CLIP_0_B, (((1080 + 2920) << R300_CLIP_X_SHIFT) |
- ((1080 + 2920) << R300_CLIP_Y_SHIFT)));
+ OUT_ACCEL_REG(R300_SC_CLIP_0_A, ((1440 << R300_CLIP_X_SHIFT) |
+ (1440 << R300_CLIP_Y_SHIFT)));
+ OUT_ACCEL_REG(R300_SC_CLIP_0_B, ((4080 << R300_CLIP_X_SHIFT) |
+ (4080 << R300_CLIP_Y_SHIFT)));
} else {
OUT_ACCEL_REG(R300_SC_CLIP_0_A, ((0 << R300_CLIP_X_SHIFT) |
(0 << R300_CLIP_Y_SHIFT)));
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index 0724bc8..effcd89 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -1933,8 +1933,12 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
/* Clear out scissoring */
BEGIN_ACCEL(2);
- OUT_ACCEL_REG(R300_SC_SCISSOR0, ((0 << R300_SCISSOR_X_SHIFT) |
- (0 << R300_SCISSOR_Y_SHIFT)));
+ if (IS_R300_3D)
+ OUT_ACCEL_REG(R300_SC_SCISSOR0, ((1440 << R300_SCISSOR_X_SHIFT) |
+ (1440 << R300_SCISSOR_Y_SHIFT)));
+ else
+ OUT_ACCEL_REG(R300_SC_SCISSOR0, ((0 << R300_SCISSOR_X_SHIFT) |
+ (0 << R300_SCISSOR_Y_SHIFT)));
OUT_ACCEL_REG(R300_SC_SCISSOR1, ((8191 << R300_SCISSOR_X_SHIFT) |
(8191 << R300_SCISSOR_Y_SHIFT)));
FINISH_ACCEL();
diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c
index 7260356..a88d0ab 100644
--- a/src/radeon_textured_videofuncs.c
+++ b/src/radeon_textured_videofuncs.c
@@ -2049,10 +2049,10 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
BEGIN_ACCEL(2);
if (IS_R300_3D) {
/* R300 has an offset */
- OUT_ACCEL_REG(R300_SC_SCISSOR0, (((dstX + 1088) << R300_SCISSOR_X_SHIFT) |
- ((dstY + 1088) << R300_SCISSOR_Y_SHIFT)));
- OUT_ACCEL_REG(R300_SC_SCISSOR1, (((dstX + dstw + 1088 - 1) << R300_SCISSOR_X_SHIFT) |
- ((dstY + dsth + 1088 - 1) << R300_SCISSOR_Y_SHIFT)));
+ OUT_ACCEL_REG(R300_SC_SCISSOR0, (((dstX + 1440) << R300_SCISSOR_X_SHIFT) |
+ ((dstY + 1440) << R300_SCISSOR_Y_SHIFT)));
+ OUT_ACCEL_REG(R300_SC_SCISSOR1, (((dstX + dstw + 1440 - 1) << R300_SCISSOR_X_SHIFT) |
+ ((dstY + dsth + 1440 - 1) << R300_SCISSOR_Y_SHIFT)));
} else {
OUT_ACCEL_REG(R300_SC_SCISSOR0, (((dstX) << R300_SCISSOR_X_SHIFT) |
((dstY) << R300_SCISSOR_Y_SHIFT)));
commit 26472556fcbbf13e2e4ac2355d587651d6c8f662
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Fri May 8 12:37:47 2009 -0400
R3xx-R5xx: don't set TX_OFFSET_RS in RS_INST_COUNT
Isn't necessary and seems to cause problems for RS690 users
diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c
index 571204a..0724bc8 100644
--- a/src/radeon_exa_render.c
+++ b/src/radeon_exa_render.c
@@ -1492,7 +1492,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
R300_RS_COUNT_HIRES_EN));
/* R300_INST_COUNT_RS - highest RS instruction used */
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1));
OUT_ACCEL_REG(R300_US_CODE_OFFSET, (R300_ALU_CODE_OFFSET(0) |
R300_ALU_CODE_SIZE(0) |
@@ -1514,7 +1514,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
R300_RS_COUNT_HIRES_EN));
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0));
OUT_ACCEL_REG(R300_US_CODE_OFFSET, (R300_ALU_CODE_OFFSET(0) |
R300_ALU_CODE_SIZE(0) |
@@ -1741,7 +1741,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
R300_RS_COUNT_HIRES_EN));
/* 2 RS instructions: 1 for tex0 (src), 1 for tex1 (mask) */
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1));
OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) |
R500_US_CODE_END_ADDR(2)));
@@ -1753,7 +1753,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture,
((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
R300_RS_COUNT_HIRES_EN));
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0));
OUT_ACCEL_REG(R500_US_CODE_ADDR, (R500_US_CODE_START_ADDR(0) |
R500_US_CODE_END_ADDR(1)));
diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c
index 6cb2870..7260356 100644
--- a/src/radeon_textured_videofuncs.c
+++ b/src/radeon_textured_videofuncs.c
@@ -393,7 +393,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
R300_RS_COUNT_HIRES_EN));
/* R300_INST_COUNT_RS - highest RS instruction used */
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1));
/* Pixel stack frame size. */
OUT_ACCEL_REG(R300_US_PIXSIZE, 5);
@@ -770,7 +770,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
R300_RS_COUNT_HIRES_EN));
/* R300_INST_COUNT_RS - highest RS instruction used */
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0));
OUT_ACCEL_REG(R300_US_PIXSIZE, 2); /* highest temp used */
@@ -902,7 +902,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
((2 << R300_RS_COUNT_IT_COUNT_SHIFT) |
R300_RS_COUNT_HIRES_EN));
/* R300_INST_COUNT_RS - highest RS instruction used */
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0));
OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */
@@ -975,7 +975,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
R300_RS_COUNT_HIRES_EN));
/* R300_INST_COUNT_RS - highest RS instruction used */
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(1));
/* Pixel stack frame size. */
OUT_ACCEL_REG(R300_US_PIXSIZE, 5);
@@ -1447,7 +1447,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv
R300_RS_COUNT_HIRES_EN));
/* R300_INST_COUNT_RS - highest RS instruction used */
- OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0) | R300_TX_OFFSET_RS(6));
+ OUT_ACCEL_REG(R300_RS_INST_COUNT, R300_INST_COUNT_RS(0));
/* Pixel stack frame size. */
OUT_ACCEL_REG(R300_US_PIXSIZE, 0); /* highest temp used */
commit 96667eebd8c7949873d63454746129d270bb36e5
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Sun May 3 13:09:39 2009 -0400
RS690: gpio/connector fixes
Fixes bug 21521
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index 1dde10d..10158a8 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -1535,19 +1535,6 @@ static void RADEONApplyATOMQuirks(ScrnInfoPtr pScrn, int index)
}
}
- /* Acer board, gpios for DFPs are not off by one */
- if ((info->Chipset == PCI_CHIP_RS690_791E) &&
- (PCI_SUB_VENDOR_ID(info->PciInfo) == 0x105b) &&
- (PCI_SUB_DEVICE_ID(info->PciInfo) == 0x0e0b)) {
- if (index == ATOM_DEVICE_DFP3_INDEX) {
- info->BiosConnector[index].ConnectorType = CONNECTOR_DVI_I;
- info->BiosConnector[index].output_id = 0;
- info->BiosConnector[index].ddc_i2c = RADEONLookupGPIOLineForDDC(pScrn, 0);
- }
- if (index == ATOM_DEVICE_DFP2_INDEX)
- info->BiosConnector[index].ddc_i2c = RADEONLookupGPIOLineForDDC(pScrn, 1);
- }
-
/* a-bit f-i90hd - ciaranm on #radeonhd - this board has no DVI */
if ((info->Chipset == PCI_CHIP_RS600_7941) &&
(PCI_SUB_VENDOR_ID(info->PciInfo) == 0x147b) &&
@@ -2254,12 +2241,14 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
info->BiosConnector[i].ddc_i2c.valid = FALSE;
else if ((info->ChipFamily == CHIP_FAMILY_RS690) ||
(info->ChipFamily == CHIP_FAMILY_RS740)) {
- /* IGP DFP ports use non-standard gpio entries */
- if ((i == ATOM_DEVICE_DFP2_INDEX) || (i == ATOM_DEVICE_DFP3_INDEX)) {
+ /* IGP DFP ports sometimes use non-standard gpio entries */
+ if ((i == ATOM_DEVICE_DFP2_INDEX) && (ci.sucI2cId.sbfAccess.bfI2C_LineMux == 2))
info->BiosConnector[i].ddc_i2c =
RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1);
- info->BiosConnector[i].output_id = ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1;
- } else
+ else if ((i == ATOM_DEVICE_DFP3_INDEX) && (ci.sucI2cId.sbfAccess.bfI2C_LineMux == 1))
+ info->BiosConnector[i].ddc_i2c =
+ RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1);
+ else
info->BiosConnector[i].ddc_i2c =
RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux);
} else
@@ -2318,6 +2307,8 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
((j == ATOM_DEVICE_CRT1_INDEX) ||
(j == ATOM_DEVICE_CRT2_INDEX))) {
info->BiosConnector[i].devices |= info->BiosConnector[j].devices;
+ if (info->BiosConnector[i].ConnectorType == CONNECTOR_DVI_D)
+ info->BiosConnector[i].ConnectorType = CONNECTOR_DVI_I;
info->BiosConnector[j].valid = FALSE;
} else if (((j == ATOM_DEVICE_DFP1_INDEX) ||
(j == ATOM_DEVICE_DFP2_INDEX) ||
@@ -2325,6 +2316,8 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
((i == ATOM_DEVICE_CRT1_INDEX) ||
(i == ATOM_DEVICE_CRT2_INDEX))) {
info->BiosConnector[j].devices |= info->BiosConnector[i].devices;
+ if (info->BiosConnector[j].ConnectorType == CONNECTOR_DVI_D)
+ info->BiosConnector[j].ConnectorType = CONNECTOR_DVI_I;
info->BiosConnector[i].valid = FALSE;
} else {
info->BiosConnector[i].shared_ddc = TRUE;
commit faa782c7a56de99900c9b3f54714f010ce73dcf3
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Thu Apr 16 11:58:19 2009 -0400
RS690/RS740: fix connector enumeration in some cases
Should fix Masta-G's issue reported on IRC.
diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c
index b2332bb..1dde10d 100644
--- a/src/radeon_atombios.c
+++ b/src/radeon_atombios.c
@@ -2255,10 +2255,11 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn)
else if ((info->ChipFamily == CHIP_FAMILY_RS690) ||
(info->ChipFamily == CHIP_FAMILY_RS740)) {
/* IGP DFP ports use non-standard gpio entries */
- if ((i == ATOM_DEVICE_DFP2_INDEX) || (i == ATOM_DEVICE_DFP3_INDEX))
+ if ((i == ATOM_DEVICE_DFP2_INDEX) || (i == ATOM_DEVICE_DFP3_INDEX)) {
info->BiosConnector[i].ddc_i2c =
RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1);
- else
+ info->BiosConnector[i].output_id = ci.sucI2cId.sbfAccess.bfI2C_LineMux + 1;
+ } else
info->BiosConnector[i].ddc_i2c =
RADEONLookupGPIOLineForDDC(pScrn, ci.sucI2cId.sbfAccess.bfI2C_LineMux);
} else
commit f2c0fa5e3d96f1bcc916e1a36268bdc7acd4cda7
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed May 6 12:24:35 2009 -0400
AVIVO: set default cursor mode in cursor init
Should fix bug 21557
diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
index 59df132..5ecdfad 100644
--- a/src/radeon_cursor.c
+++ b/src/radeon_cursor.c
@@ -342,23 +342,17 @@ Bool RADEONCursorInit(ScreenPtr pScreen)
{
ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
RADEONInfoPtr info = RADEONPTR(pScrn);
+ unsigned char *RADEONMMIO = info->MMIO;
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- int width;
- int width_bytes;
- int height;
- int size_bytes;
int c;
- size_bytes = CURSOR_WIDTH * 4 * CURSOR_HEIGHT;
- width = pScrn->displayWidth;
- width_bytes = width * (pScrn->bitsPerPixel / 8);
- height = ((size_bytes * xf86_config->num_crtc) + width_bytes - 1) / width_bytes;
- int align = IS_AVIVO_VARIANT ? 4096 : 256;
+ for (c = 0; c < xf86_config->num_crtc; c++) {
+ xf86CrtcPtr crtc = xf86_config->crtc[c];
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
- if (!info->useEXA) {
- for (c = 0; c < xf86_config->num_crtc; c++) {
- xf86CrtcPtr crtc = xf86_config->crtc[c];
- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+ if (!info->useEXA) {
+ int size_bytes = CURSOR_WIDTH * 4 * CURSOR_HEIGHT;
+ int align = IS_AVIVO_VARIANT ? 4096 : 256;
radeon_crtc->cursor_offset =
radeon_legacy_allocate_memory(pScrn, &radeon_crtc->cursor_mem, size_bytes, align);
@@ -372,6 +366,10 @@ Bool RADEONCursorInit(ScreenPtr pScreen)
c,
(unsigned int)radeon_crtc->cursor_offset);
}
+ /* set the cursor mode the same on both crtcs to avoid corruption */
+ if (IS_AVIVO_VARIANT)
+ OUTREG(AVIVO_D1CUR_CONTROL + radeon_crtc->crtc_offset,
+ (AVIVO_D1CURSOR_MODE_24BPP << AVIVO_D1CURSOR_MODE_SHIFT));
}
return xf86_cursors_init (pScreen, CURSOR_WIDTH, CURSOR_HEIGHT,
commit b6cd47ec007af2022af180f537a7ba01244b2c88
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Fri May 8 12:21:33 2009 -0400
AVIVO: fix cursor corruption bands for real
Don't have to leave both cursors enabled, just have to use
the same mode for both cursors whether or not they are enabled.
diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
index 4f646bc..59df132 100644
--- a/src/radeon_cursor.c
+++ b/src/radeon_cursor.c
@@ -100,7 +100,10 @@ avivo_setup_cursor(xf86CrtcPtr crtc, Bool enable)
RADEONInfoPtr info = RADEONPTR(crtc->scrn);
unsigned char *RADEONMMIO = info->MMIO;
- OUTREG(AVIVO_D1CUR_CONTROL + radeon_crtc->crtc_offset, 0);
+ /* always use the same cursor mode even if the cursor is disabled,
+ * otherwise you may end up with cursor curruption bands
+ */
+ OUTREG(AVIVO_D1CUR_CONTROL + radeon_crtc->crtc_offset, (AVIVO_D1CURSOR_MODE_24BPP << AVIVO_D1CURSOR_MODE_SHIFT));
if (enable) {
OUTREG(AVIVO_D1CUR_SURFACE_ADDRESS + radeon_crtc->crtc_offset,
@@ -156,7 +159,6 @@ radeon_crtc_show_cursor (xf86CrtcPtr crtc)
OUTREGP(RADEON_MM_DATA, RADEON_CRTC_CUR_EN | 2 << 20,
~(RADEON_CRTC_CUR_EN | RADEON_CRTC_CUR_MODE_MASK));
}
- radeon_crtc->cursor_enabled = TRUE;
}
void
@@ -169,18 +171,7 @@ radeon_crtc_hide_cursor (xf86CrtcPtr crtc)
unsigned char *RADEONMMIO = info->MMIO;
if (IS_AVIVO_VARIANT) {
- DisplayModePtr mode = &crtc->mode;
-
avivo_lock_cursor(crtc, TRUE);
- /* Set position offscreen. This will prevent the cursor
- * from showing up even if it's enabled to work-around
- * corruption issues.
- */
- if (mode) {
- OUTREG(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset,
- ((crtc->x + mode->CrtcHDisplay) << 16) | (crtc->y + mode->CrtcVDisplay));
- OUTREG(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, 0);
- }
avivo_setup_cursor(crtc, FALSE);
avivo_lock_cursor(crtc, FALSE);
} else {
@@ -197,13 +188,13 @@ radeon_crtc_hide_cursor (xf86CrtcPtr crtc)
OUTREGP(RADEON_MM_DATA, 0, ~RADEON_CRTC_CUR_EN);
}
- radeon_crtc->cursor_enabled = FALSE;
}
void
radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
{
ScrnInfoPtr pScrn = crtc->scrn;
+ RADEONEntPtr pRADEONEnt = RADEONEntPriv(pScrn);
RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
int crtc_id = radeon_crtc->crtc_id;
RADEONInfoPtr info = RADEONPTR(pScrn);
@@ -218,9 +209,7 @@ radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
if (yorigin >= CURSOR_HEIGHT) yorigin = CURSOR_HEIGHT - 1;
if (IS_AVIVO_VARIANT) {
- xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
int w = CURSOR_WIDTH;
- int i;
/* avivo cursor spans the full fb width */
if (crtc->rotatedData == NULL) {
@@ -228,15 +217,8 @@ radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
y += crtc->y;
}
- for (i = 0; i < xf86_config->num_crtc; i++) {
- xf86CrtcPtr crtc = xf86_config->crtc[i];
- RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
-
- if (!radeon_crtc->enabled)
- break;
- }
-
- if (i == xf86_config->num_crtc) {
+ if (pRADEONEnt->Controller[0]->enabled &&
+ pRADEONEnt->Controller[1]->enabled) {
int cursor_end, frame_end;
cursor_end = x - xorigin + w;
@@ -252,22 +234,6 @@ radeon_crtc_set_cursor_position (xf86CrtcPtr crtc, int x, int y)
}
if (w <= 0)
w = 1;
-
- /* both cursors should be enabled when dualhead is active
- * or you may get corruption bands
- */
- if (!pRADEONEnt->Controller[0]->cursor_enabled) {
- avivo_lock_cursor(pRADEONEnt->pCrtc[0], TRUE);
- avivo_setup_cursor(pRADEONEnt->pCrtc[0], TRUE);
- avivo_lock_cursor(pRADEONEnt->pCrtc[0], FALSE);
- pRADEONEnt->Controller[0]->cursor_enabled = TRUE;
- }
- if (!pRADEONEnt->Controller[1]->cursor_enabled) {
- avivo_lock_cursor(pRADEONEnt->pCrtc[1], TRUE);
- avivo_setup_cursor(pRADEONEnt->pCrtc[1], TRUE);
- avivo_lock_cursor(pRADEONEnt->pCrtc[1], FALSE);
- pRADEONEnt->Controller[1]->cursor_enabled = TRUE;
- }
}
avivo_lock_cursor(crtc, TRUE);
diff --git a/src/radeon_probe.h b/src/radeon_probe.h
index dbccd85..3e4f47c 100644
--- a/src/radeon_probe.h
+++ b/src/radeon_probe.h
@@ -159,7 +159,6 @@ typedef struct _RADEONCrtcPrivateRec {
int can_tile;
Bool enabled;
Bool initialized;
- Bool cursor_enabled;
} RADEONCrtcPrivateRec, *RADEONCrtcPrivatePtr;
typedef struct _radeon_encoder {
commit cb8081a8e70b3354037f8ca99380288fe2eb9828
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Mon May 4 12:57:36 2009 -0400
AVIVO: move cusor offscreen when disabling
Adapted from Yang's patch. Setting size to zero is
actually a 1x1 cursor.
diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
index 96df1d7..4f646bc 100644
--- a/src/radeon_cursor.c
+++ b/src/radeon_cursor.c
@@ -169,13 +169,18 @@ radeon_crtc_hide_cursor (xf86CrtcPtr crtc)
unsigned char *RADEONMMIO = info->MMIO;
if (IS_AVIVO_VARIANT) {
+ DisplayModePtr mode = &crtc->mode;
+
avivo_lock_cursor(crtc, TRUE);
- /* set size to zero as proper size will get set in
- * set_cursor_postion(). This will prevent the cursor
+ /* Set position offscreen. This will prevent the cursor
* from showing up even if it's enabled to work-around
* corruption issues.
*/
- OUTREG(AVIVO_D1CUR_SIZE + radeon_crtc->crtc_offset, 0);
+ if (mode) {
+ OUTREG(AVIVO_D1CUR_POSITION + radeon_crtc->crtc_offset,
+ ((crtc->x + mode->CrtcHDisplay) << 16) | (crtc->y + mode->CrtcVDisplay));
+ OUTREG(AVIVO_D1CUR_HOT_SPOT + radeon_crtc->crtc_offset, 0);
+ }
avivo_setup_cursor(crtc, FALSE);
avivo_lock_cursor(crtc, FALSE);
} else {
commit 0e49efbe8c271c26cec4dfca063c73755dc2d25f
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Sun May 3 18:52:00 2009 -0400
r2xx-r4xx: fix typo in last i2c fix and clarify hw i2c pin sel
diff --git a/src/radeon_output.c b/src/radeon_output.c
index 67d94fe..ee8de6a 100644
--- a/src/radeon_output.c
+++ b/src/radeon_output.c
@@ -1656,12 +1656,12 @@ RADEONI2CDoLock(xf86OutputPtr output, I2CBusPtr b, int lock_state)
* holds the i2c port in a bad state - switch hw i2c away before
* doing DDC - do this for all r200s/r300s for safety sakes */
if ((info->ChipFamily >= CHIP_FAMILY_R200) && (!IS_AVIVO_VARIANT)) {
- if (pRADEONI2CBus->mask_clk_reg == RADEON_GPIO_CRT2_DDC)
+ if (pRADEONI2CBus->mask_clk_reg == RADEON_GPIO_MONID)
OUTREG(RADEON_DVI_I2C_CNTL_0, (RADEON_I2C_SOFT_RST |
- R200_DVI_I2C_PIN_SEL(R200_SEL_DVI_DDC)));
+ R200_DVI_I2C_PIN_SEL(R200_SEL_DDC1)));
else
OUTREG(RADEON_DVI_I2C_CNTL_0, (RADEON_I2C_SOFT_RST |
- R200_DVI_I2C_PIN_SEL(R200_SEL_CRT2_DDC)));
+ R200_DVI_I2C_PIN_SEL(R200_SEL_DDC3)));
}
temp = INREG(pRADEONI2CBus->a_clk_reg);
diff --git a/src/radeon_reg.h b/src/radeon_reg.h
index c0d34d1..914fe51 100644
--- a/src/radeon_reg.h
+++ b/src/radeon_reg.h
@@ -936,11 +936,11 @@
#define RADEON_GENMO_WT 0x03c2 /* VGA */
#define RADEON_GENS0 0x03c2 /* VGA */
#define RADEON_GENS1 0x03da /* VGA, 0x03ba */
-#define RADEON_GPIO_MONID 0x0068 /* DDC interface via I2C */
+#define RADEON_GPIO_MONID 0x0068 /* DDC interface via I2C */ /* DDC3 */
#define RADEON_GPIO_MONIDB 0x006c
#define RADEON_GPIO_CRT2_DDC 0x006c
-#define RADEON_GPIO_DVI_DDC 0x0064
-#define RADEON_GPIO_VGA_DDC 0x0060
+#define RADEON_GPIO_DVI_DDC 0x0064 /* DDC2 */
+#define RADEON_GPIO_VGA_DDC 0x0060 /* DDC1 */
# define RADEON_GPIO_A_0 (1 << 0)
# define RADEON_GPIO_A_1 (1 << 1)
# define RADEON_GPIO_Y_0 (1 << 8)
@@ -997,9 +997,9 @@
#define RADEON_DVI_I2C_CNTL_0 0x02e0
# define R200_DVI_I2C_PIN_SEL(x) ((x) << 3)
-# define R200_SEL_DVI_DDC 0
-# define R200_SEL_VGA_DDC 1
-# define R200_SEL_CRT2_DDC 2
+# define R200_SEL_DDC1 0 /* 0x60 - VGA_DDC */
+# define R200_SEL_DDC2 1 /* 0x64 - DVI_DDC */
+# define R200_SEL_DDC3 2 /* 0x68 - MONID_DDC */
#define RADEON_DVI_I2C_CNTL_1 0x02e4
#define RADEON_DVI_I2C_DATA 0x02e8
commit 421085949e195596000e37ea6693489db7c075b5
Author: Alex Deucher <alexdeucher@gmail.com>
Date: Wed Apr 29 12:38:15 2009 -0400
radeon: fix several dpms issues
- atom dpms was unblanking for standby/suspend
- return if r600+ in radeon_crtc_modeset_ioctl()
- remove seprate standby/suspend handling in legacy
crtc dpms. we turn the outputs off, so turn the
crtcs off too.
- disable the crtcs in legacy crtc dpms
- move radeon_crtc_modeset_ioctl() calls to radeon_crtc_dpms()
so they will get called for both atom and legacy paths
Should fix bug 21321
diff --git a/src/atombios_crtc.c b/src/atombios_crtc.c
index 31c032b..f060d8d 100644
--- a/src/atombios_crtc.c
+++ b/src/atombios_crtc.c
@@ -167,13 +167,13 @@ atombios_crtc_dpms(xf86CrtcPtr crtc, int mode)
RADEONInfoPtr info = RADEONPTR(crtc->scrn);
switch (mode) {
case DPMSModeOn:
- case DPMSModeStandby:
- case DPMSModeSuspend:
if (IS_DCE3_VARIANT)
Reply to: