Hello flashrom people,
I have a confirmed report now that unlocking of some Asus boards (most likely many Asus boards with the VIA VT82C686 south bridge "Apollo Super South") needs i2c communication with the custom hardware sensor interface chip named as99127f, which is a derivate of the winbond w83782d, which is supported by the w83781d module. Contrary to the Winbond chip, the Asus chip is *only* reachable via I2C, connected to the I2C port of the south bridge, no ISA interface. And it has a register at I2C address 0x80 in bank one (accessed using the first subdevice) that contains a flash write protect bit. The original w83782d has no register addresses above 0x7f.
Here some logs from an Asus A7V133 board: State after reboot: Parallel flash accepts no write cycles http://coreboot.pastebin.com/m2801f3ff Using i2cget (from i2c-tools), after loading i2c-dev module and unloading w83781d (to prevent contention) http://coreboot.pastebin.com/f1255a2cc Flash protect is bit 3, so clearing this bit and running flashrom again makes the chip visible: http://coreboot.pastebin.com/f35e34cf3
How do we approach these boards? 1) Direct port access of the i2c bus in the south bridge: is a bad idea, as it might conflict with the i2c driver from the OS. 2) OS specific general i2c access: Probably working, but might interfere with hardware monitor drivers that try to access the same chip. i2c support has to be added for each OS. 3) Chip-specific driver for enabling flashing: In Linux this means adding a "flash_protect" sysfs property in the w83781d driver if the Asus chip is detect. Definitely the most clean way on linux, but needs a kernel patch, which OTOH should be easy to get into new kernels, but still makes them a prerequisite of running flashrom on these boards. No idea about non-Linux systems.
Regards, Michael Karcher