[Sony Xperia S, Acro S, Ion] RaymanFX:
​

Hi all!

After all the mess I had while testing MR2 on our Xperia S using the legacy video drivers, I decided it's time to get us a proper base on which all future Nozomi developments can be based. I want this to be a community project, so I'd like to encourage any available developer to contribute, and of course we also need testers to get proper bug reports, logcats, kernel logs. If these sound familiar to you, and you know what you're doing, you might be the person we are looking for!

Before you start reading the following, let me be very clear about one point here:

Never underestimate the power of open source.​

The Xperia S (Codename Nozomi) is based on the Sony Fuji board which itself is based on the Qualcomm msm8660 (8260) platform, which features a Snapdragon S3 CPU chip and together with the Adreno 220 GPU and the integrated tavarua radio forms the SoC.

As of MR1/Android 4.2.X, the msm8660 chipset is officially abandoned by Qualcomm. This means: No official support from CAF for our chipset anymore, which, on a further note, means that we have to adapt >=msm8960 drivers to match the >=MR1 userspace grahpics drivers.

Related to the msm8660 ASoC, we are using MDP 4.1 compatible hardware, whereas recent CAF kernel branches focus on >=MDP 4.2 support for newer chipsets.

Paying attention at the driver merge in the kernel should be top priority, in combination with excessive debugging and hard work, we can achieve a better running system than some other 'officially' supported devices on MR1/MR2, like the Xperia T (msm8960).

Long story short, here is the current progress on my current CAF based kernel:

What is (basically) working:

msm_fb - framebuffer (upgraded to match MR2, sync point support)

msm_vidc - video encoding/decoding drivers (upgraded to match MR2, 1080p support)

msm_rotator - image rotator (upgraded to match MR2, sync point support, fast YUV not yet enabled for msm8660)

msm_kgsl - KGSL driver (upgraded to match MR2 (jb_2.5))

msm_gpu/adreno driver (upgraded to match MR2 (jb_2.5))

msm_iommu - page mapping (upgraded to match MR2 (jb_2.5))

msm_qdsp6v2 (upgraded to match MR2 (jb_2.5))

sound/soc (upgraded to match MR2 (jb_2.5))

What needs to be tested:

ION memory allocation (upgraded to match MR1 (mako) - unsure if it needs to be patched)

What definately needs to be worked on:

msm_fb fence syncing - causes massive lags

..? - Soft reboots when browsing Gallery

Now coming to the resources that I (preferably) use to upgrade our kernel, there are various kernel sources that don't quite match each other's APIs, so please pay special attention when contributing:

1) Samsung Galaxy SII (Skyrocket Board, msm8660): GitHub reference

2) Sony Xperia T (Blue board, msm8960): GitHub reference

3) More to come...

If you take a look at my kernel source, you can easily see the first thing I did was bringin up our kernel space video drivers to jb_mr1_chocolate. Despite being compatible to Android 4.2.X, (and the best branch to do the dirty bringup, because chocolate branches are meant for stabilization) there are a few crucial things to watch out for:

#1 - Do not mess with the ION allocation API unless you really want to change the API kernel-wide. By default, jb_mr1_chocolate uses a different ION api than our mako-based ION and IOMMU drivers. If you just blindly merge LK 3.0.y sources into our LK 3.4.y branches, be prepared to end up having various page mapping/allocation faults.

#2 - Watch out for mdp/rotator IOMMU split changes. In all our current kernels, we use IOMMU domain splitting to gain finer granularity which is needed for secure playback. A very good example on what to look out for is a commit I made recently to patch jb_mr1_chocolate video drivers to use the domain splitting technique again: https://github.com/OpenSEMC/android_kernel_sony_msm8x60/commit/4fed72fb2e12d16df1d137247c63b45477bad624https://github.com/OpenSEMC/android_kernel_sony_msm8x60/commit/4fed72fb2e12d16df1d137247c63b45477bad624

#3 - Watch out for buffer mapping changes (display_iova). As shown in the commit above, jb_mr1_chocolate by default uses diferent code to map framebuffer memory than our LK 3.4.y kernel does.

You can find my current kernel sources at OpenSEMC's GitHub repository:

ALPHA

---GitHub

BETA

---GitHub

I am actively contributing to and mainting this branch. The final goal is to have a kernel that matches the requirements of the latest Android iteration available. It'll be a long way until we reach that goal, but I am sure we can do it.

XDA:DevDB Information

CAF kernel for Fuji boards, a Kernel for the Sony Xperia S

Contributors

RaymanFX

Kernel Special Features:

Version Information

Status: Beta

Created 2013-09-27

Last Updated 2013-10-03