[Galaxy Tab 10.1 Android Development] decatf:
Build 20150320

aosp-5.1.0-p4wifi-20150320.zip

aosp-5.1.0-p4-20150320.zip

No more bootimage non-sense to set SELinux to enforcing mode. These are TWRP zips are scripted to modify the ro.boot.selinux property. That's the only change necessary. The default mode is still permissive.

aosp-5.1.0-p75xx-Set_SELinux_enforcing.zip

aosp-5.1.0-p75xx-Set_SELinux_permissive.zip

Changes:

Add init.d support

PowerHAL: Tweak interactive scheduler parameters

Settings: Add option to scramble pin layout when unlocking (1/2).

Keyguard: Add option to scramble pin layout when unlocking (2/2).

Add global scramble pin layout setting.

base [1/6]: fix screenshot and rotation animation

native [2/6]: init display orientation according to panel orientation

native [3/6]: surfaceflinger: reimplement hwrotation

native [4/6]: surfaceflinger: odd hw rotation (90/270) patch for swapping width/height

native [5/6]: surfaceflinger: fix boot animation rotation problem

native [6]: surfaceflinger: consolidate display orientation compensation hooks

kernel:

Revert "defconfig: disable HW crypto engine"

arm: tegra2: Revert clocks to ICS code

ARM: tegra: clock: Update secondary pll dividers resume

ARM: tegra: clock: Add reset propagation delays

arm: tegra2: Restore p4 and p4wifi overclock

Tegra2 voltage control

defconfig: Enable overclock and voltage control

ARM: Tegra: Added support to run at two frequency modes

Revert "Revert "arm: config: p4wifi: Enable zRAM options suggested by Google""

arm: tegra2: Set tegra_pm_notify to nvidia nv-3.1 behaviour

arm: tegra2: Remove 150Mhz step

Additional Notes:

There were a couple of issues with the CPU clocks and voltages that I've tried to address.

1. The overclock configuration had been setting the voltages higher than necessary for stock CPU clock speeds . The voltages for stock clock speeds have been reverted to default voltages. The voltages for overclocked speeds (1.2Ghz/1.4Ghz/1.5Ghz/1.6Ghz) remain unchanged.

Here's a table of what the reference voltage should be versus what they actually were.

p4/pwifi - Actual CPU Voltage:
| CPU freq (khz) | Reference Nvidia | Actual CPU | overvolt (mV) | delta(%) |
| | CPU Voltage (mV) | Voltage (mV)| | |
|----------------|-------------------|-------------|---------------|----------|
| 150000 | - | 900 | - | -% |
| 216000 | 750 | 900 | 150 | 20.00% |
| 312000 | 750 | 900 | 150 | 20.00% |
| 456000 | 800 | 950 | 150 | 18.75% |
| 608000 | 850 | 1000 | 150 | 17.65% |
| 760000 | 875 | 1025 | 150 | 17.14% |
| 816000 | 950 | 1100 | 150 | 15.79% |
| 912000 | 950 | 1100 | 150 | 15.79% |
| 1000000 | 975 | 1150 | 175 | 17.95% |

2. The 150Mhz CPU speed step was added when the overclock configuration was created years ago. It is not a standard clock speed for the Tegra 2. It is probably not optimal to be configured this way.

The minimum CPU clock should be 216Mhz and not 150Mhz. At 216Mhz the CPU can be switched to a low speed clock source (pll_p) and the high speed reference clock (pll_x) can be turned off. The CPU runs on pll_x at any speed other than 216Mhz.

Proof

Nvidia Tegra 2 Technical Reference Manual:

Clock Tree - /sys/kernel/debug/clock/clock_tree

CPU clock at 150Mhz. CPU is running on pll_x.

clock state ref div rate (shared rate)
------------------------------------------------------------------------------
...
pll_x on 1 x5.7.. 150000000
cclk on 1 150000000
cpu $ on 16 150000000
vdd_cpu 725 mV
...

CPU clock at 216Mhz. CPU is running on pll_p and pll_x is off.

clock state ref div rate (shared rate)
------------------------------------------------------------------------------
...
pll_x off 0 x17.5.. 456000000
...
pll_p on 9 x8.3.. 216000000
cclk on 1 216000000
cpu $ on 3 216000000
vdd_cpu 750 mV
...

3. There's a small change here that might fix the issue with DeviceControl app where the device wouldn't wake after suspend. I'm not entirely sure if it fixed it. If you used to use it then please test it.​

4. Added undervolting support. It only works with the SetCPU app.

I've checked a few apps and it seems no app developer agreed on any standard interface for undervolting (other than the path to the kernel interface /sys/devices/system/cpu/cpu0/cpufreq/UV_mV_table). So it is impossible to support undervolting for all apps. I've implement the format that SetCPU uses so it will only work with this app. Using any other app will have unpredictable behavior.
​