viafb 720x576Noscale (was : EPIA M with FF Card)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux