Am Sonntag, den 15.08.2010, 01:00 +0200 schrieb Mattias Mattsson:
This patch changes the intel_piix4_gpo_set() function to always check the GENCFG and XBCS registers for the availability of the requested GPO line before raising/lowering it and fails otherwise. It makes no attempt to bypass the values in these configuration registers.
Please mark all board enables using intel_piix4_gpo_set() untested then, because we don't know whether the reconfiguration to output is needed. It shouldn't be that much.
The old flashrom code did consider it safe to reprogram (multiplexed) GPO:s 22-26 without checking the value of the controlling register (GENCFG). I do not really know why.
Probably because vendor BIOS board enables (which have been reverse engineered to make the flashrom code) uses boilerplate code that makes a pin GPO and sets it at the same time.
Signed-off-by: Mattias Mattsson vitplister@gmail.com
One question remaining: Why do you think GPO8 is "never available". The only special behaviour about GPO8 I could find in the data sheet is that GPO8 has a defined low level in standby mode, but it should work as usual in all other modes. Otherwise the patch looks great. I verified the table against the datasheet, looks correct.
Thanks for your work, Michael Karcher