The 4.12 merge window will most likely close on Sunday, so its a good time to check the Droid 4 status matrix. This merge window lots of changes were queued:
New drivers: real time clock (RTC), power button, analogue digital converter (ADC), battery charger, LEDs (RGB, capslock status, android buttons)
DTS additions: LCD (no driver yet), HDMI, Keyboard/LCD backlight (no driver yet), Touchscreen, Temperature sensor, Accelerometer, Compass, Regulators, RTC, Power button, ADC, USB PHY (no driver yet), Battery charger, LEDs, Keyboard, Poweroff, USB configuration for modems
All in all the Device Tree is almost complete with just a few things missing. So let’s also have a look at hardware support currently being worked on:
- omapdrm changes for LCD (needs rebasing & reworking)
- LCD Backlight driver (needs rework)
- Proximity driver changes + DTS (waiting to be queued)
- USB phy support (waiting for review)
- Battery monitoring (worked on by Tony, probably in time for 4.13)
- Audio codec (worked on by by me, probably in time for 4.13)
- Bluetooth driver changes + DTS (waiting to be queued)
- Vibrator driver + DTS (needs reworking)
If all of that makes it into 4.13 the phone will be quite usable with mainline with just a few H/W components not being supported:
- LTE modem
- FM radio
- PowerVR GPU
Unfortunately those require much more efforts. The LTE modem works in principle, but needs to communicate with the MDM6600 modem to access the SIM card. This looks quite complex and is currently being worked on by Tony.
The FM radio driver needs to be changed, so that it works together with the serdev bluetooth device. This is probably not very hard, but nobody is working on it at the moment.
The GPS requires a couple of things. First of all it must be verified, that GPS from wl1285 is used. Then a new driver must be written, that hooks into the serdev based bluetooth driver. That’s the “easy” part. The kernel currently has no subsystem for GPS devices, so something must be invented to get the data to userspace. Also the protocol for exchanging the GPS information seems to be closed & unknown. So this task will take some time to discuss how GPS devices should be presented to userspace and requires some reverse engineering.
Similarly adding support for the cameras will need quite some efforts. The stock system does not handle the chips directly using the usual V4L APIs. Instead a small firmware is loaded into the OMAP co-processor, which takes over control over the camera chips. Also there doesn’t seem to be a public datasheet for the main sensor :(. OTOH the chip has been used on other devices, so their driver (mirror) could be used as reference instead.
Last but not least the GPU is completly unsupported. As far as I know nobody is working on a free driver for PowerVR, there is almost no public documentation (a few bits have been reverse engineered a couple of years ago) and even adding simple support requires reading lots of code. I don’t expect anything will be written for the GPU.