[flashrom] Request for ideas: Asus as99127f sensor chip on I2C protects flash!
flashrom at mkarcher.dialup.fu-berlin.de
Tue Feb 23 01:35:22 CET 2010
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
Using i2cget (from i2c-tools), after loading i2c-dev module and
unloading w83781d (to prevent contention)
Flash protect is bit 3, so clearing this bit and running flashrom again
makes the chip visible:
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.
More information about the flashrom