Hi, I have an IBM thinkpad 560 with Trident TGUI 9660/Cyber9382 card and a 12.1" TFT. XF86 3.3.6 works fine on this computer, 4.2.0 does not. The LCD becomes garbled and an external monitor doesn't sync. Fiddling with the XF86Config settings doesn't seem to help, so I wrote a simple register dump tool to find out exactly what 4.2.0 does different from 3.3.6, and what presumeably causes it to break.
Here are the diff'ing registers, I hope someone who has access to the documentation for this chip can help me out. I doubt trident will send it to me if I ask :( diff is 3.3.6 vs 4.2.0, i.e. < means 3.3.6 > means 4.2.0: < 0x3c4:0xd(NewMode2) = 0x0(0) < 0x3c4:0xe(OldMode1) = 0x2(2) < 0x3c4:0xe(NewMode1) = 0x2(2) < 0x3d4:0x14(Underline) = 0x40(64) - > 0x3c4:0xd(NewMode2) = 0x20(32) > 0x3c4:0xe(OldMode1) = 0xc0(192) > 0x3c4:0xe(NewMode1) = 0xc0(192) > 0x3d4:0x14(Underline) = 0x0(0) - < 0x3d4:0x3a(DRAMControl) = 0x0(0) > 0x3d4:0x3a(DRAMControl) = 0x30(48) - < 0x3d4:0x40(CursorXLow) = 0x0(0) < 0x3d4:0x41(CursorXHigh) = 0x0(0) < 0x3d4:0x42(CursorYLow) = 0x0(0) < 0x3d4:0x43(CursorYHigh) = 0x0(0) < 0x3d4:0x44(CursorLocLow) = 0x0(0) < 0x3d4:0x45(CursorLocHigh) = 0x0(0) < 0x3d4:0x4c(CursorBG1) = 0x0(0) < 0x3d4:0x50(CursorControl) = 0x0(0) - > 0x3d4:0x40(CursorXLow) = 0x89(137) > 0x3d4:0x41(CursorXHigh) = 0x1(1) > 0x3d4:0x42(CursorYLow) = 0x25(37) > 0x3d4:0x43(CursorYHigh) = 0x1(1) > 0x3d4:0x44(CursorLocLow) = 0xfc(252) > 0x3d4:0x45(CursorLocHigh) = 0x3(3) > 0x3d4:0x4c(CursorBG1) = 0x1(1) > 0x3d4:0x50(CursorControl) = 0xc1(193) - < 0x3d4:0x55(PCIRetry) = 0x0(0) < 0x3d4:0x56(PreEndControl) = 0x0(0) < 0x3d4:0x57(PreEndFetch) = 0xff(255) < 0x3ce:0xf(MiscExtFunc) = 0x17(23) - > 0x3d4:0x55(PCIRetry) = 0x1f(31) > 0x3d4:0x56(PreEndControl) = 0x2(2) > 0x3d4:0x57(PreEndFetch) = 0x74(116) > 0x3ce:0xf(MiscExtFunc) = 0x12(18) - < 0x3ce:0x52(VertStretch) = 0x32(50) < 0x3ce:0x53(HorStretch) = 0x22(34) < 0x3ce:0x5c(BiosMode) = 0xa2(162) - > 0x3ce:0x52(VertStretch) = 0xb0(176) > 0x3ce:0x53(HorStretch) = 0xa0(160) > 0x3ce:0x5c(BiosMode) = 0x5e(94) - < 0x3ce:0x5c(BiosNewMode2) = 0xa2(162) < 0x3ce:0x5d(BiosReg) = 0x3f(63) - > 0x3ce:0x5c(BiosNewMode2) = 0x5e(94) > 0x3ce:0x5d(BiosReg) = 0x0(0) This is the modeline used: Modeline "IBM" 40.09 800 840 864 992 600 601 605 626 +hsync +vsync And the complete register dump from when 3.3.6 is running: 0x3c4:0x9(RevisionID) = 0x42(66) 0x3c4:0xc(ConfPort1) = 0xf8(248) 0x3c4:0xc(ConfPort2) = 0xf8(248) 0x3c4:0xd(NewMode2) = 0x0(0) 0x3c4:0x0(OldMode2) = 0x3(3) 0x3c4:0xe(OldMode1) = 0x2(2) 0x3c4:0xe(NewMode1) = 0x2(2) 0x3c4:0x11(Protection) = 0x0(0) 0x3c4:0x16(MCLKLow) = 0x0(0) 0x3c4:0x17(MCLKHigh) = 0x0(0) 0x3c4:0x18(ClockLow) = 0x0(0) 0x3c4:0x19(ClockHigh) = 0x0(0) 0x3c4:0x20(SSetup) = 0x3(3) 0x3c4:0x37(SKey) = 0x0(0) 0x3c4:0x57(SPKey) = 0x0(0) 0x3d4:0x13(Offset) = 0x64(100) 0x3d4:0x14(Underline) = 0x40(64) 0x3d4:0x17(CRTCMode) = 0xc3(195) 0x3d4:0x1e(CRTCModuleTest) = 0x80(128) 0x3d4:0x20(FIFOControl) = 0x30(48) 0x3d4:0x21(LinearAddReg) = 0x20(32) 0x3d4:0x23(DRAMTiming) = 0xc8(200) 0x3d4:0x23(New32) = 0xc8(200) 0x3d4:0x25(RAMDACTiming) = 0x7(7) 0x3d4:0x27(CRTHiOrd) = 0x8(8) 0x3d4:0x29(AddColReg) = 0x8c(140) 0x3d4:0x2a(InterfaceSel) = 0x54(84) 0x3d4:0x2b(HorizOverflow) = 0x0(0) 0x3d4:0x2d(GETest) = 0x0(0) 0x3d4:0x2f(Performance) = 0x5f(95) 0x3d4:0x36(GraphEngReg) = 0x0(0) 0x3d4:0x37(I2C) = 0x0(0) 0x3d4:0x38(PixelBusReg) = 0x0(0) 0x3d4:0x39(PCIReg) = 0x6(6) 0x3d4:0x3a(DRAMControl) = 0x0(0) 0x3d4:0x3c(MiscContReg) = 0x0(0) 0x3d4:0x40(CursorXLow) = 0x0(0) 0x3d4:0x41(CursorXHigh) = 0x0(0) 0x3d4:0x42(CursorYLow) = 0x0(0) 0x3d4:0x43(CursorYHigh) = 0x0(0) 0x3d4:0x44(CursorLocLow) = 0x0(0) 0x3d4:0x45(CursorLocHigh) = 0x0(0) 0x3d4:0x46(CursorXOffset) = 0x0(0) 0x3d4:0x47(CursorYOffset) = 0x0(0) 0x3d4:0x48(CursorFG1) = 0x0(0) 0x3d4:0x49(CursorFG2) = 0x0(0) 0x3d4:0x4a(CursorFG3) = 0x0(0) 0x3d4:0x4b(CursorFG4) = 0x0(0) 0x3d4:0x4c(CursorBG1) = 0x0(0) 0x3d4:0x4d(CursorBG2) = 0x0(0) 0x3d4:0x4e(CursorBG3) = 0x0(0) 0x3d4:0x4f(CursorBG4) = 0x0(0) 0x3d4:0x50(CursorControl) = 0x0(0) 0x3d4:0x55(PCIRetry) = 0x0(0) 0x3d4:0x56(PreEndControl) = 0x0(0) 0x3d4:0x57(PreEndFetch) = 0xff(255) 0x3d4:0x60(PCIMaster) = 0x0(0) 0x3d4:0x62(Enhancement0) = 0x0(0) 0x3d4:0x64(NewEDO) = 0x0(0) 0x3d4:0xc0(TVinterface) = 0x0(0) 0x3d4:0xc1(TVMode) = 0x0(0) 0x3d4:0xcf(ClockControl) = 0x0(0) 0x3ce:0xf(MiscExtFunc) = 0x17(23) 0x3ce:0x2f(MiscIntContReg) = 0xa7(167) 0x3ce:0x30(CyberControl) = 0x0(0) 0x3ce:0x31(CyberEnhance) = 0x10(16) 0x3ce:0x33(FPConfig) = 0x30(48) 0x3ce:0x52(VertStretch) = 0x32(50) 0x3ce:0x53(HorStretch) = 0x22(34) 0x3ce:0x5c(BiosMode) = 0xa2(162) 0x3ce:0x5a(BiosNewMode1) = 0x51(81) 0x3ce:0x5c(BiosNewMode2) = 0xa2(162) 0x3ce:0x5d(BiosReg) = 0x3f(63) Since MCLKLow = MCLKHigh = 0 I fear that my program may not be 100% accurate in querying the card. Do I need some different routine to read it? I hope someone can make some sense out of this, I'm pretty much stuck. Cheers, Tobias Nygren [EMAIL PROTECTED] _______________________________________________ Xpert mailing list [EMAIL PROTECTED] http://XFree86.Org/mailman/listinfo/xpert