[LinuxBIOS] Epia ML 5000 progress (sort of)

Eric Poulsen eric at zyxod.com
Sun Apr 23 06:52:02 CEST 2006

[NB: I wrote this originally as a reply to my original post to 
LinuxBIOS. I didn't realize that the LB mailing list did not set the 
'reply-to' field.  In conjunction with how my email filters work, I 
thought this email went to the list, but it only came to me!  In any 
case, I'll send it for posterity, but I'll add additional remarks in 
square brackets WRT what I have discovered]

I've created an Epia-ML target, and I'm making changes that I hope will
work.  Presently, I'm trying to change the VGA settings, but I'm a bit
confused on the PCI device IDs

I know that the ML Shows up as a 3122 instead of the 3123 as found on
the M series. AFAIK, 3122 == ML and 3123 == M.  The
write_protect_vgabios function in src/mainboard/via/epia-ml/mainboard.c
looks like this:

void write_protect_vgabios(void)
        device_t dev;

        /* there are two possible devices. Just do both. */
        dev = dev_find_device(PCI_VENDOR_ID_VIA, 0x3123, 0);
                pci_write_config8(dev, 0x61, 0xaa);

        dev = dev_find_device(PCI_VENDOR_ID_VIA, 0x3122, 0);
                pci_write_config8(dev, 0x61, 0xaa);

Since this is an ML specific target, can I remove the 3123 attempt?


[The supposition I make below is wrong.  The VT 8623 and CLE266_VGA are 
different.  When I changed the PCI_DEVICE_ID_VIA_8623 to 
PCI_DEVICE_ID_VIA_CLE266_VGA in the struct, LB did not work.]

src/include/device/pci_ids.h has these declarations:

#define PCI_DEVICE_ID_VIA_CLE266_VGA    0x3122
#define PCI_DEVICE_ID_VIA_8623          0x3123

The file src/northbridge/via/vt8623/northbridge.c has this struct defined:

static struct pci_driver northbridge_driver __pci_driver = {
        .ops = &northbridge_operations,
        .vendor = PCI_VENDOR_ID_VIA,
        .device = PCI_DEVICE_ID_VIA_8623,

I know pretty much zero about how PCI and the chipset works.  Both the M
and ML datasheets say they have the CLE266 northbridge.  Web searches
seem to imply that "vt8623" and "cle266" are interchangeable terms.  I'm
wondering if the ML target should have a struct that refers to
PCI_DEVICE_ID_VIA_CLE266_VGA (3122) instead of PCI_DEVICE_ID_VIA_8623
(3123).  If so, since this file is in
src/src/northbridge/via/vt8623/northbridge.c, is there a way of
separating it to have two versions (or #defines) for the M and ML targets?

More information about the coreboot mailing list