isaacj87
Android Expert
Ugh, I'm very confused about the Android driver landscape right now. I'm used to having all the drivers I needed in mainline... does the Android kernel tree keep any more around? Or is it the job of CM7 to keep track of all the drivers? Or individual port maintainers?
Also, if you're using your Gingerbread kernel, why would the touchscreen suddenly stop working? Or is there some userspace component?
BTW, why are you using prebuilt SDK ROMs? Is AOSP in such bad shape that you can't build the SDK ROM yourself?
Simply put, Android kernels are a mess. I guess, technically, you could say there is a "mainline" kernel (https://github.com/android/kernel_common), but if you were to try and build it for our device, nothing would work. Manufacturers put out kernel sources for each specific device (with absolutely no documentation I might add). They package up what they got and literally just throw it at us. And yes, I know what you're thinking, it is a HUGE pain in the ass.

I'm not sure why they do this, but I'm assuming it's to cut down on the size. Plus, hardware varies so drastically from device to device. So, to answer your question, it's up to individual maintainers. I'm not using a Gingerbread kernel (2.6.35). I'm using the only version Motorola gave to us (2.6.32). I've been looking for a long time to find a mailing list or something that will inform us of upstream changes, but I haven't found anything. Basically, ICS, on the userspace side, changed the way touch events are recognized. The kernel changes I'm doing are a workaround until something like this (Gerrit Code Review) happens.
The reason why the Cyanogenmod team is so important to the community is because they make it possible for anyone to build AOSP for their specific device. Just add your device configs to their tree and viola. ATM, CM9 can only be built for one device (I believe it's the Nexus S). I don't dare try and build AOSP ICS. Honestly, it would probably take less time to just wait until CM9 is ready. However, I want to be prepared for the day that CM9 is in better position. That's why I'm using the SDK to get the touchscreen working. More importantly, if I'm not around when that day comes, I'd like to get the next dev in a good position too.
The touchscreen driver (IMO) was a mess. It turns out we don't have any issues with axis inversion, but if we did, it would of been a pain in the ass to try and fix it in its previous state.
)
.