Luc Verhaegen wrote:
Hi,
This patch adds initial flashrom support for matching mainboards based on pci-ids and pci subsystem/card ids.
I've been using subsystem/card ids as part of my unichrome driver for years (xf86-video-unichrome/src/via_id.c). It is a very easy and painless system for identifying boards.
It is relatively reliable, as it's always the same vendors that bugger them up (like VIA and ECS). Most vendors do play nice. But, in order to not mess up on devices like the EPIA-M, 2 sets of ids can be provided here. This gives pretty absolute reliability. Boards that don't need 2 matches can just null the second set.
This code works correctly on:
- EPIA-M with original BIOS. Matched and enabled correctly: $ Found "VIA EPIA M/MII/...": Enabling flash write... OK.
- EPIA-M with linuxbios: not matched - pci subsystem ids not set correctly (yet!) - but not a problem as linuxbios never disabled write in the first place.
- Asus A7V400-MX now works correctly (the CrashFree BIOS). This involves poking the Winbond LPC superio: $ Found "Asus A7V8-MX SE": Enabling flash write... OK. (This different name is correct. The difference is the northbridge revision and a sticker over "A7V8-MX SE")
- Mitac 8999 laptop. Here GPIO15 enables the panel backlight, while on EPIA-M it enables rom write. Hence this being highly incorrect here. Requires nothing board specific and can flash np.
- Shuttle SK43G requires nothing board specific.
There is one more VT823x based device in this house that might get tested, and possibly implemented, this weekend.
The Island Aruma support is currently kept as is.
When no match has been made, or an error occured, then the name based matching is still attempted.
I'm not a big fan of doing board specific things on the name alone. A user also shouldn't be allowed to specify a board name as that would lead to very randomly poking bits with potentially not-so-fun consequences. Testing here should imho involve editing flash_enable.c directly.
Island aruma code can be converted with little effort, all it takes is the output of lspci -vn.
Commit message, signed-off, etc are done git-style.
Luc Verhaegen.
Luc, could you check out the PCChips M789CG for me and see if this can support it? The stock bios is an AMIBIOS (if it matters), with a VT8235M southbridge and ITE IT8705f Super I/O (docs here: http://www.iteusa.com/product_info/file/pc/IT8705F_V.0.4.1.pdf). I've tried both the epia-m and asus fixups that are currently in your patch, but neither of them worked, and I know very little about the workings of flashrom. Here's the line with my vendor ids:
{ 0x1106, 0x3177, 0x1106, 0x0000, 0x1106, 0x3123, 0x1106, 0x0000, "PCChips M789CG(v3.0)", enable_flash_xxx },
Also, should we be moving these board-specific flash fixups off into another file? I get the feeling we're going to have a lot of them in the future.
Thanks, Corey