Here are some instructions to get droid 4 xt894 booted with mainline kernel.
There is a debug uart at tty[SO]2 multiplexed with the USB connector. To use
it, you need a custom cable with D+ and D- connected to a 3.3V UART. You need
to leave VBUS disconnected to avoid the connector getting multiplexed back to
USB. It's easiest to make the custom UART by ordering a micro-USB-B breakout
board and connecting the USB serial cable wires to it. I used the sparkfun
break out board here, others should work fine too.
The wire connections are:
d- device uart tx usb serial rx ftdi yellow, pl2303 white
d+ device uart rx usb serial tx ftdi orange, pl2303 green
gnd device ground usb serial gnd
vbus do not connect
Sebastian Reichel has written some instructions on device table, rooting
and install. There used to be pretty good instructions on how to unlock
droid 4 and install cyanogenmod here. Basically after installing SafeStrap,
you have the kexec tools needed to boot mainline kernel with appended dtb.
It will multiplex the debug UART on, so you will have some console output.
To boot v4.10-rc1 and later mainline kernels built with omap2plus_defconfig,
please download the mainline kernel and mainline kexec tools and read the README
file here ddroid4-mainline-kexec-0.3.tar.xz. The sha256sum for
the file is here.
You probably also want to create an installable SafeStrap ROM image. To do
clone the ddroid git repo, and follow the instructions in the README file.
You will also need the kexec tools above.
Note that droid 4 has few limitations. The eMMC partitions are locked down,
and changing them risks bricking the system. So it's best to treat eMMC
as a giant bootloader for kexec with just few usable partitions :) At least
mmcblk1p23 webtop partition can be reformatted as ext4 and used as a minimal
root file system and mmcblk1p22 preinstall can be used as home. Or just use
the micro-SD card.
Also note that droid 4's modem is locked to be usable only with verizon
network in the U.S, in other countries any operator seems to work. With
patches heading for v4.12, both the mdm6600 and the w3g modem are visible
on the USB bus if ohci-omap3 and ehci-omap modules are loaded. The mdm6600
responds to qmicli commands, and w3g responds to AT commands over ttyACM0.
It seems something more is needed for LTE though as w3g does not have the
SIM card visible. For the w3g modem, there's some earlier information
available here, and some reviews here and here.
Droid 4 has a motorola custom PMIC called cpcap. It's connected over
SPI and controls things like regulators, USB and audio. Linux v4.11 will
have a basic MFD CPCAP driver the related regulator driver merged and
v4.12 will have various drivers and basic battery charging merged.
Unfortunately there is no documentation available for cpcap, but some
of the internal components like charging and ADC seem simlar to the ones
documented in an NXP PMIC MC1378.
Quite a few of the devices on droid 4 can be supported with just a
dts configuration. For the droid 4 related patches currently queued into
Linux next for merging into the mainline Linux kernel during the next merge
window, you can always check the git.kernel.org next branch search page.
To search what has been queued for "droid 4", you can click here.
The keyboard is using omap4-keypad driver and just needs to be configured.
I also managed to get the LCD working with the n950-display branch.
The lm3532 LCD backlight works with the TI LMU driver patches.
Looks like HDMI is working too but only with console right now and only if
you plug it in before loading the modules.
I have posted some work-in-progress patches against current Linux next to
here. As patches get posted and applied to Linux next, and there are omapdrm
changes in Linux next, you need to use the Linux next tag as specified
in the tar.gz name. For the kernel .config, I'm just using patched up
I'm currently working on CPCAP ADC and USB PHY drivers. And with the ADC
driver we can also read battery status. And after that we can enable battery
charging. The ADC driver is needed to detect USB VBUS and ID pin states.
Adding support for CPCAP RTC and watchdog should be possible now if somebody
has spare cycles to upstream Linux device drivers :) The CPCAP audio I know
nothing about, except it seems to use McBSP like twl4030 for example. The
modems should be both on EHCI/OHCI USB bus but I have not played with them,
they probably need some GPIO pin toggled to enable them and maybe some PHY
If you plan on working on adding more support, please coordinate the work
on linux-omap mailing list to avoid duplicate work.