[Nexus One Android Development] Ivan Dimkovic:
Diet Android Kernel 2.6.33.2 by PsyQ

I am releasing the kernel which I use by myself :) I removed most of the debugging options useful for kernel/driver debugging and maxed-out possible compiler optimizations. It has Hybrid AVS support using IntersectRaven's improved method as well as optional overclocking (see note)

These kernels feature:

* Hybrid Adaptive Voltage Scaling for extra battery life

* Optional 1.1 GHz Overclocking Support

* Extra 8 MB of RAM reclaimed from Camera

* Based on Cyanogen's 5.0.6 kernel

* Maximum possible compiler optimizations (loop unrolling, tree vectorization, NEON, Cortex A8 compiler tuning, armv7a target, and many more)

* Removed all unnecessary features from the kernel configuration, including debugging options (these kernels are not useful for kernel debugging / driver development)

* All cpufreq governors (ondemand, powersave, conservative, ...) for people that want to tweak the CPU frequency scaling

Following kernels are available:

diet_2.6.33.3.hybrid_avs_800mv.zip --> Hybrid AVS support, goes down to 0.8 volts and has stock frequency (998 MHz) as max.

diet_2.6.33.3.hybrid_avs_800mv_OC.zip--> EXPERIMENTAL Hybrid AVS with overclocking to 1.1 GHz (0.8v min voltage)

diet_2.6.33.3.hybrid_avs_925mv.zip --> Hybrid AVS support, goes down to 0.925 volts and has stock frequency (998 MHz) as max.

diet_2.6.33.3.hybrid_avs_925mv_OC.zip--> EXPERIMENTAL Hybrid AVS with overclocking to 1.1 GHz. (0.925v min voltage)

To use it, flash the zimage with fastboot and push the bcm4329.ko to the /system/lib/modules:

[power off your phone and boot into fastboot]
fastboot flash zimage zImage
[reboot]
adb remount
adb push bcm4329.ko /system/lib/modules/bcm4329.ko

Pushing of the bcm4329.ko is necessary as WiFi support would be broken otherwise. If you don't do it, WiFi will not work.

Changelog:

V1.11 - Update - May/02nd/2010

- Moved to 2.6.33.3 Kernel

V1.10 - Update - Apr/26th/2010

- Changed floating point model to VFP
- There are two AVS versions with different lowest voltage limits (800/925mv)

V1.09 - Update

- Implemented IntersectRaven's Hybrid AVS method
- Synced with the latest code snapshot of CM kernel

V1.08 - Update

- Non AVS kernel is now undervolted down to 0.925v
- Kernel RCU is now of uniprocessor type, saving memory
- DMA speedup patch from latest CM source
- Removed "loopback" file device (this is not related to network)
- Further compiler optimizations

V1.07 - Update

- 8 MB RAM reclaimed from Camera
- Further kernel trimming
- AVS is now available with 0.925v and 0.850v flavors
- Some attempts to make AVS more stable (still work in progress)

V1.06 - Update

- Moved to kernel 2.6.33.2 from Cyanogen's 5.0.5.6 source
- AVS kernels are capable of undervolting down to 0.925v instead of 1.000v
- Minor cleanups

V1.05 - Update

- Further fixes in AVS Support (thx intersectRaven!)

V1.04 - Update

- Fixed bugs in AVS Support
- More kernel tweaks
- Removed "normal" version of the kernel, as _xtra seems to be stable enough
- Added non-overclocked AVS kernel for maximum battery life

V1.03 - Update

- Added Experimental Adaptive Voltage Support (AVS)
- Currently AVS is "for test only", and this kernel has debug support and no loop unrolling

V1.02 - Update

- Switched to CFQ I/O Scheduler
- Removed some more stuff (e.g. 10 Gbit Ethernet Support)

V1.01 - Update

- Added Conservative Governor
- Fixed table lookup bug (thanks pershoot!)

V1.0 - Initial Release

- Based on CyanogenMod 5.0.5.3 source
- Overclocking Support (1.1 GHz)
- Undervolted
- Optional extra undervolt (see attachments - _xtra is additional UV)
- Added Powersave CPU governor
- Removed most of the debugging stuff from Kernel (which makes this kernel useless for kernel debugging!)
- Even more C compiler optimizations (almost -O3 level + extra stuff, like loop unrolling, etc...)
- Audioboost patch

For other kernel developers - you can find the source code here (note that for AVS support you need AVS sources from ChromeOS):

http://github.com/psyq321/nexus_one_kernel_additions