xf86-video-ati: Branch 'master' - 3 commits
Matthias Hopf
mhopf at kemper.freedesktop.org
Thu Apr 19 12:56:27 EEST 2007
src/radeon_display.c | 14 ++++++--------
src/radeon_driver.c | 10 +++++++---
src/radeon_modes.c | 18 ++++++++----------
3 files changed, 21 insertions(+), 21 deletions(-)
New commits:
diff-tree ad119960095b4b64f4c6793f65950c9967ce4989 (from 16ef77df4ebaf5ea13baa82972aaf98e71ac32ee)
Author: Matthias Hopf <mhopf at suse.de>
Date: Thu Apr 19 11:54:46 2007 +0200
Disable RMX for IBM Lewis server.
Due to the hardware layout RMX ddc_mode has to be set.
If ddc_mode is set, RADEONValdiateFPModes() shouldn't be called.
Bugzilla #10620 (3).
diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 0f9e2d6..bcc0882 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -2029,15 +2029,19 @@ static Bool RADEONPreInitModes(ScrnInfoP
xf86ReturnOptValBool(info->Options, OPTION_DDC_MODE, FALSE);
/* don't use RMX if we have a dual-tmds panels */
-
if ((connector = RADEONGetCrtcConnector(pScrn, 2)))
if (connector->MonType == MT_DFP)
info->ddc_mode = TRUE;
/* don't use RMX if we are Dell Server */
if (info->IsDellServer)
- {
info->ddc_mode = TRUE;
+ /* IBM Lewis server have troubles using the on-chip RMX mode */
+ if (info->ChipFamily == CHIP_FAMILY_RV100 && !info->HasCRTC2 && pRADEONEnt->PortInfo[0]->MonInfo) {
+ struct vendor *ven = &pRADEONEnt->PortInfo[0].MonInfo->vendor;
+ if (ven && ven->prod_id == 0x029a && ven->serial == 0x01010101)
+ info->ddc_mode = TRUE;
}
+
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
"Validating modes on %s head ---------\n",
info->IsSecondary ? "Secondary" : "Primary");
@@ -2219,7 +2223,7 @@ static Bool RADEONPreInitModes(ScrnInfoP
pScrn->display->virtualY,
info->FbMapSize,
LOOKUP_BEST_REFRESH);
- else if (!info->IsSecondary)
+ else if (!info->IsSecondary && !info->ddc_mode)
modesFound = RADEONValidateFPModes(pScrn, pScrn->display->modes);
}
}
diff-tree 16ef77df4ebaf5ea13baa82972aaf98e71ac32ee (from 0abce69f0d826a7ca1a41d963cd4730b6e01c145)
Author: Matthias Hopf <mhopf at suse.de>
Date: Wed Apr 18 17:36:15 2007 +0200
Set sync polarity restriction flags even for non-"digital separate" monitors.
According to Lisa Wu, this is correct regarding the VESA EEDID standard.
Bugzilla #10620 (2), original patch by Lisa Wu @ATI
diff --git a/src/radeon_display.c b/src/radeon_display.c
index ac05648..57e752e 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -755,13 +755,11 @@ static void RADEONUpdatePanelSize(ScrnIn
info->VSyncWidth = d_timings->v_sync_width;
info->VBlank = d_timings->v_blanking;
info->Flags = (d_timings->interlaced ? V_INTERLACE : 0);
- if (d_timings->sync == 3) {
- switch (d_timings->misc) {
- case 0: info->Flags |= V_NHSYNC | V_NVSYNC; break;
- case 1: info->Flags |= V_PHSYNC | V_NVSYNC; break;
- case 2: info->Flags |= V_NHSYNC | V_PVSYNC; break;
- case 3: info->Flags |= V_PHSYNC | V_PVSYNC; break;
- }
+ switch (d_timings->misc) {
+ case 0: info->Flags |= V_NHSYNC | V_NVSYNC; break;
+ case 1: info->Flags |= V_PHSYNC | V_NVSYNC; break;
+ case 2: info->Flags |= V_NHSYNC | V_PVSYNC; break;
+ case 3: info->Flags |= V_PHSYNC | V_PVSYNC; break;
}
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Panel infos found from DDC detailed: %dx%d\n",
info->PanelXRes, info->PanelYRes);
diff --git a/src/radeon_modes.c b/src/radeon_modes.c
index 6b8577e..3d147e2 100644
--- a/src/radeon_modes.c
+++ b/src/radeon_modes.c
@@ -190,13 +190,11 @@ static DisplayModePtr RADEONDDCModes(Scr
#endif
new->type |= M_T_DRIVER;
- if (d_timings->sync == 3) {
- switch (d_timings->misc) {
- case 0: new->Flags |= V_NHSYNC | V_NVSYNC; break;
- case 1: new->Flags |= V_PHSYNC | V_NVSYNC; break;
- case 2: new->Flags |= V_NHSYNC | V_PVSYNC; break;
- case 3: new->Flags |= V_PHSYNC | V_PVSYNC; break;
- }
+ switch (d_timings->misc) {
+ case 0: new->Flags |= V_NHSYNC | V_NVSYNC; break;
+ case 1: new->Flags |= V_PHSYNC | V_NVSYNC; break;
+ case 2: new->Flags |= V_NHSYNC | V_PVSYNC; break;
+ case 3: new->Flags |= V_PHSYNC | V_PVSYNC; break;
}
count++;
diff-tree 0abce69f0d826a7ca1a41d963cd4730b6e01c145 (from aea801cf9a5ce519a53d6fffd9a3a2e526ec79ea)
Author: Matthias Hopf <mhopf at suse.de>
Date: Wed Apr 18 17:32:52 2007 +0200
Fix inconsistent use of Mode lists.
Some scans used to only check every second entry, some stopped at the entry
before the last entry.
Bugzilla #10620 (1), original patch by Lisa Wu @ATI
diff --git a/src/radeon_display.c b/src/radeon_display.c
index d661c17..ac05648 100644
--- a/src/radeon_display.c
+++ b/src/radeon_display.c
@@ -776,7 +776,7 @@ static void RADEONUpdatePanelSize(ScrnIn
for (j = 0; j < 8; j++) {
if ((info->PanelXRes < ddc->timings2[j].hsize) &&
(info->PanelYRes < ddc->timings2[j].vsize)) {
- for (p = pScrn->monitor->Modes; p && p->next; p = p->next->next) {
+ for (p = pScrn->monitor->Modes; p; p = p->next) {
if ((ddc->timings2[j].hsize == p->HDisplay) &&
(ddc->timings2[j].vsize == p->VDisplay)) {
float refresh =
diff --git a/src/radeon_modes.c b/src/radeon_modes.c
index 372b2ed..6b8577e 100644
--- a/src/radeon_modes.c
+++ b/src/radeon_modes.c
@@ -212,7 +212,7 @@ static DisplayModePtr RADEONDDCModes(Scr
for (j = 0; j < 8; j++) {
if (ddc->timings2[j].hsize == 0 || ddc->timings2[j].vsize == 0)
continue;
- for (p = pScrn->monitor->Modes; p && p->next; p = p->next) {
+ for (p = pScrn->monitor->Modes; p; p = p->next) {
/* Ignore all double scan modes */
if (p->Flags & V_DBLSCAN)
continue;
@@ -248,7 +248,7 @@ static DisplayModePtr RADEONDDCModes(Scr
tmp = (ddc->timings1.t1 << 8) | ddc->timings1.t2;
for (j = 0; j < 16; j++) {
if (tmp & (1 << j)) {
- for (p = pScrn->monitor->Modes; p && p->next; p = p->next) {
+ for (p = pScrn->monitor->Modes; p; p = p->next) {
/* Ignore all double scan modes */
if (p->Flags & V_DBLSCAN)
continue;
@@ -560,7 +560,7 @@ int RADEONValidateFPModes(ScrnInfoPtr pS
}
/* add in all default vesa modes smaller than panel size, used for randr*/
- for (p = pScrn->monitor->Modes; p && p->next; p = p->next->next) {
+ for (p = pScrn->monitor->Modes; p; p = p->next) {
if ((p->HDisplay <= info->PanelXRes) && (p->VDisplay <= info->PanelYRes)) {
tmp = first;
while (tmp) {
More information about the xorg-commit
mailing list