[Nexus S Android Development] netarchy:
Changelog:
Revision 1.4.1:
- Updated Ezekeel's Touchkey Dimmer to version 3.0 bugfix 4
- Integrated Ezekeel's Deep Idle mod, current to bugfix 5
- 45,333 rabid naked bunnies were harmed during the making of this kernel

Revision 1.4.0:
- Revert a patch that caused random reboots in certain usage situations
- Added Ezekeel's backlight dimmer sysfs interface (See instructions in second post on how to use)

Revision 1.3.9:
- Return to Deadline as default IO scheduler, using BFQ v2 could cause bugged encounters such as a never ending boot
- Applied kernel tweaks from the recent 2.3.5 OTA (mostly relevant for sprint users)

Revision 1.3.8:
- BFQ updated to BFQv2-r1
- Some build options that may have contributed to random reboots have been modified

Revision 1.3.7:
- Voodoo Sound driver updated to v10
- Testing out tiny rcu
- Touchscreen tweaks are no longer applied by default on boot. Users can still custom tweak touchscreen settings if desired
by editing /system/etc/init.d/98touchscreen and rebooting as before.

Revision 1.3.6:
- Wifi driver changes, rolled back some code that was causing problems
- Added Cyaniris' touchscreen tweaks back in the form of a user customizable sysfs interface (courtesy of work by Cyaniris).
Users can set custom values by editing /system/etc/init.d/98touchscreen , followed by a reboot for the changes to take effect.
Currently the default values are set, users that find the defaults not optimal might want to try some suggested settings by Cyaniris
of 35 for touchthr, and 20 for noisethr.
- Corrected a bug that would have caused reboots and/or other assorted badness when having the phone sleep at a frequency other than 800mhz
(Confession: I was an idiot and forgot to move over this fix from my 2.3.3 kernel trees when making the new kernel trees for 2.3.4, woops!)

Revision 1.3.5:
- Wifi driver updates, bugfixes
- JHash3 Added
- Cpu cache clearing fixes
- New compiler toolchain for builds, using gcc 4.5.2
- Interactive governor adjustments
- IO scheduler set to Deadline, seems to have a nice balance in performance

Revision 1.3.4:
- Remove touchscreen adjustments for now, they were causing problems on some phones.
Touchscreen tweaks will be revisited for a future build
- Add auto group process scheduler for CFS builds

Revision 1.3.3:
- Touchscreen adjustments that may improve touch response
- Update Voodoo Sound driver to version 9

Revision 1.3.2:
- Update BFS builds to BFS404
- Add Simple IO Scheduler and set as default

Revision 1.3.1:
- Smartass screen-off speed adjusted to address unresponsive programs during screen-off
- Smartass adjustments to improve responsiveness
- SLQB slab allocator added to help optimize memory allocation performance
- Some build configuration changes that may improve overall feel
- Ondemand governor up threshold adjusted to improve battery usage while still maintaining responsiveness

Revision 1.3.0.12:
- Adjustments to smartass to improve performance (there is probably still room for improvement)
- Default I/O Scheduler set to CFQ (previously BFQ), this may prove to be more stable in certain situations
- Some adjustments made to the CFS scheduler that may result in a better overall feel to CFS builds

Revision 1.3.0.11:
- Added Smartass Governor
(Not enabled by default, use setcpu or CM's cpu performance
settings to change if you want to try it out)
- Raised voltage cap to 1600mV for crazy people that
want to turn their phone into a reactor ;D
- Set config options in 2.3.4 kernel builds that should enable
NS4G compatibility for our newly arriving sprint friends.
Welcome to club nexus ;D

Revision 1.3.0.10:
- Update kernel base to 2.6.35.13
- Excessive stuttering in apps such as Gun Bros should be resolved
or significantly improved; some problems with memory handling
were introduced in 2.6.35.12 and are resolved in .13

Revision 1.3.0.9:
- The cause of super-lag has been found (Big thanks to twitch153 for helping me test)
- Introducing Universal builds! These universal builds are designed to be flashed on any
non-stock rom of the series marked (ie; Universal 2.3.3)
- Misc other tweaks to the kernel config that may result in an even smoother overall
experience

Revision 1.3.0.8a:
- Fix issue preventing USB debugging (and adb), and sdcard space from working

Revision 1.3.0.8:
- Updated to support the 2.3.4 rom update
- Lots of updates from upstream, including components needed to support
the forthcoming nexus s 4g (yes that means that I will be supporting the ns4g)
- Back to the 2.6.35.12 kernel base, the sdcard tweak has been scaled back
as it appears to have been causing excess lag
- BLN work for i9023 models from akent included (not tested), i9023 users may
find they can now use BLN

Revision 1.3.0.7:
- Revert back to 2.6.35.11 base until I can track down the cause of ridiculous lag in the .12 base
(Not that .11 was a bad performer by any means ;D)
- BFS builds updated to BFS401
- BFS users should find that they have regained their bootanimation

Revision 1.3.0.6:
- Voodoo driver updated to v8
- Custom voltage sysfs interface has changed,
the method used in 1.3.0.4 and 1.3.0.5 is not compatible.
See the guide in the 2nd post for details on the new method.

Revision 1.3.0.5:
- Raised max voltage cap by 50 mV for people who want to try raising the voltage a little bit on 1.4ghz
- More tweaks to try and address instances of "super-lag"

Revision 1.3.0.4:
- Corrected a bug that could cause a slightly higher voltage to be used at certain speeds (resulting in slightly faster battery drain)
- Added a sysfs interface for manipulating voltage levels at various speeds, see 2nd post for details
(read: this allows the possibility of custom under/over volting in realtime)
- Used a different build configuration that may address the occasional "super-lag" that appeared in 1.3.0.3

Revision 1.3.0.3:
- Update kernel base from 2.6.35.11 to 2.6.35.12
- Updated BFS version from BFS 363 to BFS 400 (BFS builds only)
- Raised default read-ahead value from 128 to 2048 (read: sd speed tweak built-in, scripts not necessary)

Revision 1.3.0.2:
- Updated Voodoo Sound driver to version 7
- Fixed a bug that made the sysfs file "scaling_available_freqs" not exist
Programs that must read this file for discovering/controlling available cpu speeds can now do so.
(This also means that CM7 users can set their cpu speeds from the cyanogenmod performance
settings instead of having to use SetCPU)

Revision 1.3.0.1:
- Add initial BLN support (Currently only functional on SAMOLED models [i9020])
Download the BLN control app from the market to use BLN functionality

Revision 1.3.0.0:
- More adjustments to the default colours to try and de-smurf the
previous adjusted defaults while still avoiding "Yellow tint shock"
- Voodoo sound updates (see github commit if you want more details)
- Fixed a bug that caused boot times to take significantly longer than necessary

Revision 1.2.9:
- Voodoo Sound v5 driver update
- Adjust default colours to avoid the initial "Yellow tint shock"

Revision 1.2.8:
- Voodoo Color gamma fix

Revision 1.2.7:
- Voodoo Color driver updates/fixes

Revision 1.2.6:
- Bring panel code up to date with official kernel
- Update Voodoo Color driver to v2
- Release initial cm7 2.3.3 compatible builds

Revision 1.2.5:
- Add 2.3.3 compatible builds
- Incorporate many updates from the newer 2.3.3 kernel sources,
including wifi driver updates, touchscreen updates, drivers for
future SLCD nexus-s variants, and more
(far too many bugfixes and updates to list, review the commit list on my github if you want details)
- Ext4 tweak should be working again in stock builds

Revision 1.2.4:
- Add NFS modules
- Make TUN built-in rather than modular (this may address issues some have had loading the driver)
- Add Voodoo Color

Revision 1.2.3:
- Update kernel base to 2.6.35.11
- Removed the ~56fps cap
- Conservative governor tweaked to perform better for users that choose to use it
- Greater rom compatiblity, particularly with roms that use specialized init scripts

Revision 1.2.2:
- 1.3ghz and 1.4ghz added to the frequency table for overclockers
- Default cpu speed on boot is 1000mhz, use a tool such as SetCPU to overclock
(No doubt I'll get some flack for this, but it's a very bad idea to boot into the max possible overclock when not all phones can tolerate it, so I consider it a necessary evil)
- Interactive Governor added, use a tool such as SetCPU to change to it if you want to try it out (Probably needs a bit of tuning to avoid annihilating battery, we shall see)
- CFS and BFS variants are now available
- Infused with the power of 1000 rabid naked bunnies

Revision 1.2.1:
- Ext4 hack should be working properly now

Revision 1.2:
- Fixed a condition where limiting max speed to 1000 would result in
potential underclocking to 800 (Thanks DebauchedSloth)
- Set hi-res timer to 1000hz
- Gave a little more power to the cpu at 1.2ghz, this may help those
having trouble running at 1.2 be more stable
- Integrated ext4 hack into the ramdisk builds
(ext4 hack is not technically a kernel issue but worth pointing out)

Revision 1.1:
- 1.2ghz overclock *really* works now -Thanks for the help Morfic-
- Cpu policy fix to avoid crashes with SetCPU and screen off profiles
(Courtesy of work by coolbho3000)

Revision 1.0:
- Initial release
- Add BFS scheduler
- Add 1.2ghz overclock
- Add BFQ
- Add Voodoo Sound driver
- Add CIFS support
- Add TUN support
- Update kernel base to 2.6.35.10

Custom Under/Over volting 101:

**As of 1.3.0.6 the method of custom voltage control has changed, read carefully!**

It is now possible for users to define custom levels of under/over
volting via a new interface in sysfs.
The interface file in sysfs can be found at
/sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table

By default, the custom values are all zeroed out, so a
` cat /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table `
will show:
1400mhz: 1450 mV
1300mhz: 1400 mV
1200mhz: 1350 mV
1000mhz: 1250 mV
800mhz: 1200 mV
400mhz: 1050 mV
200mhz: 950 mV
100mhz: 950 mV

Modification of voltages is possible by echoing a string of 8 values
to the sysfs interface via the console, where the order of values
goes left to right from highest frequency affected to lowest.
To adjust the mV for a particular higher or lower than the default,
echo values divisible by 5 like in the following example from an adb shell (this is JUST an example, not guaranteed working values ;D):

` echo "1500 1400 1325 1275 1200 1050 900 850" > /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table `

Which has the following effect when examining UV_mV_table:

1400mhz: 1500 mV
1300mhz: 1400 mV
1200mhz: 1325 mV
1000mhz: 1275 mV
800mhz: 1200 mV
400mhz: 1050 mV
200mhz: 900 mV
100mhz: 850 mV

Rom developers, you can conceivably create custom scripts to
apply various under/over volt settings

For reference, these are the default voltages:
Default Frequency Voltage Table:
1400mhz: 1450 mV
1300mhz: 1400 mV
1200mhz: 1350 mV
1000mhz: 1250 mV
800mhz: 1200 mV
400mhz: 1050 mV
200mhz: 950 mV
100mhz: 950 mV

Additionally, there is currently a safety cap of 1600mV for max voltage,
setting a value higher than 1600mV will currently not have an effect greater than 1600mV.
(Read: You can set a value higher than 1600, but it will get dropped to 1600 behind the scenes)

This can be altered for future builds if I get feedback asking for it.

Backlight Dimmer:

FAQ:

Q: I'm getting a "Device or Kernel version not supported" error in Voodoo Control Plus!
A:The error is referring to the generic modules that voodoo control plus comes with to support
kernels that don't already have voodoo built-in (such as a completely stock kernel).
You can safely ignore this error, as voodoo is already built into the kernel.

Q: I'm getting SOD's (Sleep of Death) when undervolting!
A: You are probably undervolting too far

Q: OMG I'm getting a black screen (no boot animation) when booting a 2.3.3-based rom!
A: This tends to happen mostly on BFS builds, though it *can* occur on cfs builds (and even on the
stock kernel). The exact cause of this glitch is not known at this time, however, it is purely cosmetic.
You will notice that the bottom buttons are lit, and if you were to run adb logcat, you will see that the
phone is active. The phone is actually booting, just be patient.

Q: What are BFS and CFS?
A: They are task schedulers (they determine what processes get cpu time, how much, etc).

CFS (Completely Fair Scheduler) is the default scheduler in the official mainline kernel. It's a tried, tested, stable scheduler.

BFS (Brain **** Scheduler) is a third party scheduler written by Con Kolivas that must be patched into the kernel, and replaces the CFS scheduler. It tends to be faster in certain tasks, and is usually pretty stable, but sometimes there can be performance quirks.