Had a few minutes today to play around and wrote a few quick programs in native code to overclock the OMAP4430 to run at 1.1GHz or 1.2GHz instead of the stock 1GHz. You need to force the CPU to run at it's highest clock rate at all times if you want to verify that it works but this is not required if you take my word for it. Long story short, it is possible to change the maximum clock speed by directly manipulating the registers responsible for the clocking of the OMAP4430 but doing so in this manner doesn't alter the frequency tables that the kernel looks to, so as a result the phone thinks it is still capping out at 1000MHz. I'm working on this, don't worry.
This requires root privileges. To set the max clockspeed to 1.1GHz, run "1100" from the adb shell or terminal. Make sure the permissions are set to 755, ie: "chmod 755 1100" in the terminal in the directory you have placed the executable. (I just placed them both in /data/local/)
To reset it back to 1GHz, run "1000", same permissions as before.
To try out 1.2GHz, use "1200". 1.3GHz, use "1300".
It doesn't survive a reboot, so it won't do much damage. That being said, I take no responsibility whatsoever for any damage done to your phone, this is extremely experimental. I also take no credit for this, yang.felix was the one who figured out how to do this first:
Now, the real fun part is making this persist a reboot, and notify the kernel about the changes so that overclocking/underclocking can be easily performed with SetCPU or other apps.
**** EDIT ****
I removed the 1400 and 1500 binaries because in layman's terms... I screwed up. I don't have much time to work on this tonight but I'll try and put something better up; in the meantime, I removed the binaries because they are useless. I'm suspicious that the 1300 binary is destined to fail as well but apparently some of you out there are able to execute it without an immediate reboot so maybe it is a voltage problem. I'll keep you all posted.
**** N00B INSTRUCTIONS ****
Here's how I do it. If you don't already have them, I suggest downloading the following from the Market: "SetCPU", "Root Explorer" and "Better Terminal Emulator". I bought them; the $5 or so was well spent as these three apps are probably ones that I use the most. If you don't want to pay, you can find SetCPU here on xda-developers if you search for it; Root Explorer you'll have to pony up the $1.99 or whatever it is, Better Terminal Emulator you can do without if you look for "Terminal Emulator" in the Market.
Connect your phone via USB to your PC, select from the drop-down in your status bar "USB Storage" or whatever it says, and browse to your phone on your PC. Unzip the attachment from the first post to the root of your sdcard, ie: don't unzip it into any folders after browsing to your phone on your PC, just put them in the root of the drive. You can put them in whatever folder you like but if you want to keep it simple, don't bother putting them in a random folder unless you know what you're doing.
First, open up SetCPU and slide the sliders for Maximum and Minimum all the way to 1000. You can leave everything else alone, after sliding the bars just exit the app. This step is important so don't skip it.
Open Root Explorer. Navigate to "/system/xbin". Press the button at the top that says "Mount RW". This will allow you to save the binaries in this folder as it is normally mounted as read-only.
Now, open Better Terminal Emulator (or whichever terminal program you like, or even use adb if you are so inclined... although if you know how to use adb the following probably goes without saying) and assuming you followed my instructions earlier and saved the files "1000", "1100" and "1200" to the root of your sdcard, type the following commands in, pushing Enter/Return after each one:
(Click on Allow)
cp 1000 /system/xbin/
cp 1100 /system/xbin/
cp 1200 /system/xbin/
chmod 755 1000
chmod 755 1100
chmod 755 1200
Now you can run the binaries from anywhere in your terminal without the requirement of being in the folder you've saved them because /system/xbin is typically included in your $PATH variable. Simply put, your phone always looks in this folder for any executable file you try to run if it doesn't find it in the current working directory.
In order to run "1000", simply type:
And push Enter. You can do this from anywhere on your phone. You should see a message that says your phone has been reset to 1GHz.
To run "1100", you guessed it:
Rinse and repeat.