Thanks for your supports for our tab!
I'm on a train returning home. Have 40 precious minutes to check the mails and here...
Let me provide some of my experiences for anyone interested. Any corrections and helps are very welcome..
All existing kernels for smdk4210 are more or less the same. over 90% of the sources are the same for the 3.0.x kernels. All the drivers are derived from the source of Samsung.
Dorimanx use the 3.1 source (I think start from AOKP) and cherry pick some drivers from newer source up to 3.9 and Siyah. Siyah is base on the cm10 then cm10.1 source (both 3.0.x) and has a lot of changes and add new interface to CPU, GPU O/C and governors. Some of the codes are derived from 4412.
CM now use the smdk4412 kernel source for official i9100 and n7000 CM.
For hardwares:
Both i9100 and n7000 use Boardcom chips which still have driver update from newer devices. Our tabs use Athero for wifi and CSR for BT. Both are not found in new devices. CSR doesn't support bluedroid which is the standard after 4.2. I put the bluez stack in the 4.2 source to support BT. Still need some polish... The Phone chip for i9100 is the same as our tab. Actually, I modified the blobs from i9100 to make the Phone of p6800 works on cm10.1. The partition layout for n7000 is quite similar to our tab.
For CPU O/C:
Both Siyah and ezyKernel use similar codes for O/C but different way to set the voltage. Both O/C works great in HC3.2 (Up to1.8); works good for JB4.1.x - 4.2.1 and the early 4.2.2 (up to 1.6G) but not working on subsequent 4.2.2 (may lead to error any retry. As a result, slower when O/C)....
For CPU governors:
Governors are algorithm to decide the performance and power consumption. In my opinion, a too complicated and too much involving algorithm may not be a good idea. As the new wifi drivers perform quite good in power consumption, I don't want to waste time on that. I just copy a few from Siyah and Dorimanx.
For GPU O/C:
The mali-400 should work on 400MHz but the stock kernel only set it at 267MHz. As I tested for some time. Even at max. all the time, the power consumption is not significant. There are codes in new source to lock the max. speed. Same as cpu governors, I found no immediate need to add steps to save power. I reverted to two steps to keep a simple algorithm. At 400MHz, noticeable heat is generated, so I set the max. to 360MHz without voltage increased.
For wifi driver:
The one in CM has sod and drain issue. When putting the stock driver to CM, wifi will turn off at sleep!
I built two wifi drivers. One from the source of Athero(for kernel 3.9), the a driver. I add wakelock and suspend support to it. Another one from stock JB source with the same wakelock and suspend codes to solve sod, the s driver. Although I find no appearing difference myself, I use the s driver for my public releases.
For kernel, I'd tried the following:
1. Porting the stock JB kernel source to CM10.1, PA and PAC.
modifications:
- move the kernel modules from initramfs to /system/lib/modules
- replace the frame buffer driver with the one in CM. (otherwise become slow motion)
- replace the wifi driver with my driver.
- add the same CPU and GPU O/C
- some blobs need to adjust to make camera and GPS work. (haven't done)
After testing for some time, I found no appearing performance difference. The streaming and camera also need some changes to work with the replaced frame buffer driver. Don't want to waste time on another 3.0.31 source but I cherry pick a few newer driver (Power and 30pin connector..)
2. Start with the 3.4.x source and try to replace the missing drivers.
Spent a lot of time to fill all driver and found that I might start with the wrong tree! I was using the general kernel... I think using the exynos kernel source is better. Might start all over later.
3. The last attempt is to port the smdk4412 source (3.0.61) as CM. It would have better support for SELinux. Finished and put in my latest cm10.1. Camera not working yet. Streaming and related drivers needed adjust..
That's briefly what I have done... I still can't successfully upload large projects like kernel to github but I'll continue when I have time. Small one like device trees are there...
Hoping it would help anyone interested. I always welcome different opinions.
Still have a few minutes to take a nap...
Send from my Google Nexus 7 Android4.3 JSS15J