[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;
printk_info("write_protect_vgabios\n"); /* there are two possible devices. Just do both. */ dev = dev_find_device(PCI_VENDOR_ID_VIA, 0x3123, 0); if(dev) pci_write_config8(dev, 0x61, 0xaa);
dev = dev_find_device(PCI_VENDOR_ID_VIA, 0x3122, 0); if(dev) pci_write_config8(dev, 0x61, 0xaa); }
Since this is an ML specific target, can I remove the 3123 attempt?
Also:
[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?