On Thu, 2005-05-19 at 10:22 +0200, Nicolas Huillard wrote: > What I would like to do is retrofit the 720x576Noscale into the tables > found inside the viafb kernel module. For this, I have to : > 1) find the differences between the 720x576scaled and 720x576Noscale > modes in the new table structure > 2) and find where those differences should go in the old table structure > (where the 720x576Noscale didn't exist) > 3) modify and test the kernel frame-buffer driver > > Anything that could help would be very useful, since : > * the kernel module cannot be unloaded, so each test mean a reboot > * the tables are inside the code, so each modification mean a > recompilation (thus moprobe, thus reboot) Nasty! > So if you have any tool, diff, advice, etc. I'm interested. Have a look at the vt1622.c tool at http://cvs.sourceforge.net/viewcvs.py/unichrome/utils/ This lets you alter register values of the vt1622 o r1622a on-the-fly. This is what I used to get the Noscale table for the vt1622a. It lets you change syncs, scaling, etc., and see how it affects the picture. It can then be used to output a table entry in the format below. I got my vt1622a Noscale table entry by changing about 2 of the registers (I think) from an entry suggested by Terry. When I wrote out the table, it had a lot more than just those two values changed but it did work. Here are the relevant table entries I have in my unichrome driver (may have changed in current CVS but hopefully you can work out which bits are which: N.B. the table entries are anonymous due to Via's NDA about what information can be released) from xc/programs/Xserver/hw/xfree86/drivers/via/via_vt1622x.h: /* * * VT1622 modetables * */ static DisplayModeRec VT1622Modes[] = { { MODEPREFIX("720x576"), 28500, 720, 728, 744, 760, 0, 576, 635 , 643, 750, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL }, { MODEPREFIX("720x576Over"), 30000, 720, 728, 864, 1000, 0, 576, 576 , 579, 600, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL }, { MODEPREFIX("720x576Noscale"), 28000, 720, 728, 864, 896, 0, 576, 576 , 579, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL }, static struct VT162XTableRec VT1622Table[] = { { "720x576", 720, 576, TVTYPE_PAL, 0, 0, { 0x04, 0, 0, 0xA2, 0, 0, 0x10, 0x1E, 0xAC, 0x38, 0x67, 0, 0x57, 0x49, 0x0F, 0, 0, 0, 0xF0, 0x0F, 0xD1, 0x38, 0, 0, 0, 0, 0xF2, 0, 0x02, 0, 0, 0x84, 0x13, 0x0C, 0x04, 0x7B, 0x48, 0x64, 0x30, 0x93, 0x49, 0x5F, 0x15, 0xA5, 0x23, 0x8B, 0xBD, 0 }, { 0xE7, 0x45, 0x04, 0, 0, 0x45, 0xF7, 0xD1, 0x22, 0xED, 0x02, 0x1D, 0x29, 0x75, 0x23, 0x88, 0xC6, 0xF0, 0xFA, 0x0F, 0xCC, 0x30, 0x14, 0, 0, 0x8F, 0x03 }, { 0xB5, 0xB1, 0xB1, 0, 0, 0 }, { 0x59, 0x4D, 0x4A }, 0x2D839832, 0, }, { "720x576Over", 720, 576, TVTYPE_PAL, 0, 0, { 0x04, 0, 0, 0xA6, 0, 0, 0x10, 0x10, 0x7D, 0x32, 0x60, 0, 0x57, 0x46, 0x0F, 0, 0, 0, 0xEC, 0x15, 0xDC, 0x28, 0, 0, 0, 0, 0xEE, 0, 0x0A, 0, 0, 0x84, 0x13, 0x0C, 0x04, 0x7B, 0x48, 0x64, 0x30, 0x93, 0x49, 0x5F, 0x15, 0xA5, 0x23, 0x77, 0xFF, 0 }, { 0xE7, 0x45, 0x04, 0, 0, 0x45, 0xE7, 0xCF, 0x23, 0x57, 0x02, 0x1F, 0x80, 0x75, 0x23, 0x89, 0xC7, 0xF1, 0xFF, 0x05, 0xD7, 0x80, 0x03, 0, 0, 0xBF, 0x03 }, { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 }, { 0x58, 0x48, 0x49 }, 0x2D66772D, 0, }, { "720x576Noscale", 720, 576, TVTYPE_PAL, 0, 0, { 0x04, 0, 0, 0xA4, 0, 0, 0x10, 0x75, 0xA5, 0x3A, 0x5A, 0, 0x49, 0x46, 0, 0x89, 0, 0, 0xE9, 0x19, 0xDC, 0x24, 0, 0, 0, 0, 0xEE, 0, 0x0A, 0, 0, 0x04, 0x13, 0x0C, 0x04, 0x7B, 0x48, 0x64, 0x30, 0x93, 0x49, 0x5F, 0x15, 0xA5, 0x23, 0x77, 0xFF, 0 }, { 0xE7, 0x45, 0x04, 0, 0, 0x45, 0x7F, 0xD0, 0x23, 0x70, 0x02, 0x7F, 0xD0, 0x93, 0x23, 0x89, 0xC7, 0xF1, 0xBD, 0x06, 0, 0, 0, 0, 0, 0x7F, 0x03 }, { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 }, /* added later - untested */ { 0x58, 0x48, 0x49 }, /* added later - untested */ 0x288933E3, 0, }, /* * * VT1622A/VT1623 modetables * */ static DisplayModeRec VT1623Modes[] = { { MODEPREFIX("720x576"), 28500, 720, 728, 744, 760, 0, 576, 635, 643, 750, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL }, { MODEPREFIX("720x576Over"), 27000, 720, 768, 800, 864, 0, 576, 577, 579, 625, 0, V_NHSYNC | V_PVSYNC, MODESUFFIXPAL }, { MODEPREFIX("720x576Noscale"), 28000, 720, 728, 864, 896, 0, 576, 576 , 579, 625, 0, V_NHSYNC | V_NVSYNC, MODESUFFIXPAL }, static struct VT162XTableRec VT1623Table[] = { { "720x576", 720, 576, TVTYPE_PAL, 0, 0, { 0x04, 0, 0, 0x06, 0, 0, 0x20, 0x0F, 0xAF, 0x35, 0x5D, 0, 0x4F, 0x41, 0x0F, 0, 0, 0, 0xF8, 0x3C, 0x73, 0x56, 0, 0, 0, 0, 0xED, 0, 0x02, 0, 0, 0x99, 0x18, 0x0C, 0x76, 0x7A, 0x44, 0x62, 0x30, 0x8E, 0x49, 0x5B, 0x15, 0xA0, 0x22, 0x5C, 0xBD, 0 }, { 0, 0, 0, 0, 0, 0x43, 0xF7, 0xCF, 0x22, 0xED, 0x02, 0x1D, 0x29, 0x75, 0x63, 0x88, 0xC6, 0xF0, 0xFA, 0x0F, 0xCC, 0x30, 0x94, 0, 0, 0x8F, 0x03 }, { 0x6A, 0x62, 0x65, 0, 0, 0 }, { 0x59, 0x4D, 0x4A }, 0x2D839832, 0, }, { "720x576Over", 720, 576, TVTYPE_PAL, 0, 0, { 0x04, 0, 0, 0, 0, 0, 0x20, 0x3F, 0x89, 0x35, 0x50, 0, 0x43, 0x2E, 0x0F, 0, 0, 0, 0xE8, 0x23, 0x84, 0x20, 0, 0, 0, 0, 0xFF, 0, 0x02, 0, 0, 0x99, 0x17, 0x0C, 0x6F, 0x79, 0x48, 0x62, 0x34, 0x8E, 0x4F, 0x5B, 0x15, 0xA0, 0x22, 0x67, 0xFF, 0 }, { 0, 0, 0, 0, 0, 0x3A, 0x5F, 0xCF, 0x23, 0x70, 0x02, 0x5F, 0xBF, 0x7E, 0x23, 0x94, 0xD0, 0x27, 0x8F, 0x16, 0, 0, 0x04, 0, 0, 0x5F, 0x03 }, { 0x6A, 0x62, 0x65, 0x90, 0x99, 0 }, { 0x58, 0x48, 0x49 }, 0x2A098ACB, 0, }, { "720x576Noscale", 720, 576, TVTYPE_PAL, 0, 0, { 0x04, 0, 0, 0x00, 0, 0, 0x20, 0x75, 0xA5, 0x3A, 0x5A, 0, 0x49, 0x46, 0, 0x89, 0, 0, 0xE9, 0x19, 0x6E, 0x24, 0, 0, 0, 0, 0xEE, 0, 0x0A, 0, 0, 0x00, 0x13, 0x0C, 0x04, 0x7B, 0x48, 0x64, 0x30, 0x93, 0x49, 0x5F, 0x15, 0xA5, 0x23, 0x77, 0xFF, 0 }, { 0x00, 0x00, 0x04, 0, 0, 0x45, 0x7F, 0x4B, 0x33, 0x70, 0x02, 0x7F, 0xD0, 0x93, 0x23, 0x89, 0xC7, 0xF1, 0xBD, 0x06, 0, 0, 0, 0, 0, 0x7F, 0x03 }, { 0xBA, 0xB8, 0xB8, 0x90, 0x99, 0 }, /* added later - untested */ { 0x58, 0x48, 0x49 }, /* added later - untested */ 0x288933E3, 0, }, Yummy! ;) I hope that is of some use to you. Let me know if you want the whole file sending! > > I'll give it a go... Debian currently doesn't have DFB++ packages, or not that > > I've found. > > I have one, which is not very useful outside softdevice. I'll provide > the necessary packages for the Debian official repository. Cool. Cheers, Laz