|
Lines 1483-1490
SiSGenerateModeListFromLargestModes(Scrn
Link Here
|
| 1483 |
return result; |
1483 |
return result; |
| 1484 |
} |
1484 |
} |
| 1485 |
|
1485 |
|
| 1486 |
/* Generate the merged-fb mode modelist from metamodes |
1486 |
/* Generate the merged-fb mode modelist |
| 1487 |
* (Code base taken from mga driver) |
1487 |
* (Taken from mga driver) |
| 1488 |
*/ |
1488 |
*/ |
| 1489 |
static DisplayModePtr |
1489 |
static DisplayModePtr |
| 1490 |
SiSGenerateModeListFromMetaModes(ScrnInfoPtr pScrn, char* str, |
1490 |
SiSGenerateModeListFromMetaModes(ScrnInfoPtr pScrn, char* str, |
|
Lines 1496-1502
SiSGenerateModeListFromMetaModes(ScrnInf
Link Here
|
| 1496 |
#endif |
1496 |
#endif |
| 1497 |
char* strmode = str; |
1497 |
char* strmode = str; |
| 1498 |
char modename[256]; |
1498 |
char modename[256]; |
| 1499 |
Bool gotdash = FALSE, gotplus = FALSE; |
1499 |
Bool gotdash = FALSE; |
|
|
1500 |
char gotsep = 0; |
| 1500 |
SiSScrn2Rel sr; |
1501 |
SiSScrn2Rel sr; |
| 1501 |
DisplayModePtr mode1 = NULL; |
1502 |
DisplayModePtr mode1 = NULL; |
| 1502 |
DisplayModePtr mode2 = NULL; |
1503 |
DisplayModePtr mode2 = NULL; |
|
Lines 1513-1518
SiSGenerateModeListFromMetaModes(ScrnInf
Link Here
|
| 1513 |
case '-': |
1514 |
case '-': |
| 1514 |
case '+': |
1515 |
case '+': |
| 1515 |
case ' ': |
1516 |
case ' ': |
|
|
1517 |
case ',': |
| 1518 |
case ';': |
| 1516 |
if(strmode != str) { |
1519 |
if(strmode != str) { |
| 1517 |
|
1520 |
|
| 1518 |
myslen = str - strmode; |
1521 |
myslen = str - strmode; |
|
Lines 1531-1539
SiSGenerateModeListFromMetaModes(ScrnInf
Link Here
|
| 1531 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
1534 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 1532 |
"Mode \"%s\" is not a supported mode for CRT2\n", modename); |
1535 |
"Mode \"%s\" is not a supported mode for CRT2\n", modename); |
| 1533 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
1536 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 1534 |
"\t(Skipping metamode \"%s%s%s\")\n", mode1->name, gotplus ? "+" : "-", modename); |
1537 |
"\t(Skipping metamode \"%s%c%s\")\n", mode1->name, gotsep, modename); |
| 1535 |
mode1 = NULL; |
1538 |
mode1 = NULL; |
| 1536 |
gotplus = FALSE; |
1539 |
gotsep = 0; |
| 1537 |
} |
1540 |
} |
| 1538 |
} else { |
1541 |
} else { |
| 1539 |
mode1 = SiSGetModeFromName(modename, i); |
1542 |
mode1 = SiSGetModeFromName(modename, i); |
|
Lines 1541-1569
SiSGenerateModeListFromMetaModes(ScrnInf
Link Here
|
| 1541 |
char* tmps = str; |
1544 |
char* tmps = str; |
| 1542 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
1545 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 1543 |
"Mode \"%s\" is not a supported mode for CRT1\n", modename); |
1546 |
"Mode \"%s\" is not a supported mode for CRT1\n", modename); |
| 1544 |
while(*tmps == ' ') tmps++; |
1547 |
while(*tmps == ' ' || *tmps == ';') tmps++; |
| 1545 |
/* skip the next mode */ |
1548 |
/* skip the next mode */ |
| 1546 |
if((*tmps == '-') || (*tmps == '+')) { |
1549 |
if(*tmps == '-' || *tmps == '+' || *tmps == ',') { |
| 1547 |
tmps++; |
1550 |
tmps++; |
| 1548 |
/* skip spaces */ |
1551 |
/* skip spaces */ |
| 1549 |
while(*tmps == ' ') tmps++; |
1552 |
while(*tmps == ' ' || *tmps == ';') tmps++; |
| 1550 |
/* skip modename */ |
1553 |
/* skip modename */ |
| 1551 |
while((*tmps != ' ') && (*tmps != '-') && (*tmps != '+') && (*tmps != 0)) tmps++; |
1554 |
while(*tmps && *tmps != ' ' && *tmps != ';' && *tmps != '-' && *tmps != '+' && *tmps != ',') tmps++; |
| 1552 |
myslen = tmps - strmode; |
1555 |
myslen = tmps - strmode; |
| 1553 |
if(myslen > 255) myslen = 255; |
1556 |
if(myslen > 255) myslen = 255; |
| 1554 |
strncpy(modename,strmode,myslen); |
1557 |
strncpy(modename,strmode,myslen); |
| 1555 |
modename[myslen] = 0; |
1558 |
modename[myslen] = 0; |
| 1556 |
str = tmps - 1; |
1559 |
str = tmps - 1; |
| 1557 |
} |
1560 |
} |
|
|
1561 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 1562 |
"\t(Skipping metamode \"%s\")\n", modename); |
| 1558 |
mode1 = NULL; |
1563 |
mode1 = NULL; |
| 1559 |
gotplus = FALSE; |
1564 |
gotsep = 0; |
| 1560 |
} |
1565 |
} |
| 1561 |
} |
1566 |
} |
| 1562 |
gotdash = FALSE; |
1567 |
gotdash = FALSE; |
| 1563 |
} |
1568 |
} |
| 1564 |
strmode = str + 1; |
1569 |
strmode = str + 1; |
| 1565 |
gotdash |= ((*str == '-') || (*str == '+')); |
1570 |
gotdash |= (*str == '-' || *str == '+' || *str == ','); |
| 1566 |
gotplus |= (*str == '+'); |
1571 |
if (*str == '-' || *str == '+' || *str == ',') |
|
|
1572 |
gotsep = *str; |
| 1567 |
|
1573 |
|
| 1568 |
if(*str != 0) break; |
1574 |
if(*str != 0) break; |
| 1569 |
/* Fall through otherwise */ |
1575 |
/* Fall through otherwise */ |
|
Lines 1571-1577
SiSGenerateModeListFromMetaModes(ScrnInf
Link Here
|
| 1571 |
default: |
1577 |
default: |
| 1572 |
if(!gotdash && mode1) { |
1578 |
if(!gotdash && mode1) { |
| 1573 |
sr = srel; |
1579 |
sr = srel; |
| 1574 |
if(gotplus) sr = sisClone; |
1580 |
if(gotsep == '+') sr = sisClone; |
| 1575 |
if(!mode2) { |
1581 |
if(!mode2) { |
| 1576 |
mode2 = SiSGetModeFromName(mode1->name, j); |
1582 |
mode2 = SiSGetModeFromName(mode1->name, j); |
| 1577 |
sr = sisClone; |
1583 |
sr = sisClone; |
|
Lines 1579-1591
SiSGenerateModeListFromMetaModes(ScrnInf
Link Here
|
| 1579 |
if(!mode2) { |
1585 |
if(!mode2) { |
| 1580 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
1586 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 1581 |
"Mode \"%s\" is not a supported mode for CRT2\n", mode1->name); |
1587 |
"Mode \"%s\" is not a supported mode for CRT2\n", mode1->name); |
|
|
1588 |
xf86DrvMsg(pScrn->scrnIndex, X_WARNING, |
| 1589 |
"\t(Skipping metamode \"%s\")\n", modename); |
| 1582 |
mode1 = NULL; |
1590 |
mode1 = NULL; |
| 1583 |
} else { |
1591 |
} else { |
| 1584 |
result = SiSCopyModeNLink(pScrn, result, mode1, mode2, sr); |
1592 |
result = SiSCopyModeNLink(pScrn, result, mode1, mode2, sr); |
| 1585 |
mode1 = NULL; |
1593 |
mode1 = NULL; |
| 1586 |
mode2 = NULL; |
1594 |
mode2 = NULL; |
| 1587 |
} |
1595 |
} |
| 1588 |
gotplus = FALSE; |
1596 |
gotsep = 0; |
| 1589 |
} |
1597 |
} |
| 1590 |
break; |
1598 |
break; |
| 1591 |
|
1599 |
|