Hi,
For F2A85-M I did that via config option. I think best would be to use similar approach as you noted.
How to find out? I would say best approach so far is to monitor changes on GPIO or I2C devices.
I did this on asrock board I think. I wrote some script which dumped all GPIO settings in hex from SB and superIO.
Then i changed value in bios and compared what GPIO has been changed.
http://www.coreboot.org/ASRock_939A785GMH-128M
Here is how it is working.
On F2A85-M it was not-so-easy. No GPIO was ever changed and it drove me crazy. It turned out that the answer was that there is a device on I2C bus which controls this. But beware, modern AMD chipsets usualy have more than 1 i2c bus and not all is supported in linux driver. In my case I had to modify the linux driver so I could see the bus and the I used i2cdump to dump the device.
Good approach is to use also some overclocking utils for windows, if you are lucky some of them contain *.ini files where is written for example GP50 for this and that.
Thanks Rudolf