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.
In addition to SafeStrap, there is now droid4-kexecboot boot loader
available that boots the stock kernel to a 4MB buildroot image on mmcblk1p13
bpsw partition with kexecboot as the GUI. It uses the utagboot boot loader
configurator that can boot the stock kernel directly to any partition.
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 droid4-mainline-kexec-0.4.tar.xz. The sha256sum for
the file is here. Note that starting with v0.4, these modules now work for
SafeStrap too for booting legacy v3.0.8 kernels when using the custom kexec
binary provided in SafeStrap package. The mainline kexec-tools will not work
for booting legacy v3.0.8 kernels because of the non-standard dtb, atags and
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 cpcap 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 NXP PMIC MC1378UG.pdf.
Quite a few of the devices on droid 4 will be supported in v4.12 with
just a dts configuration. For the current status of droid 4 related patches,
please see Sebastian Reichel's device status table. And for the droid 4
related patches currently queued into Linux next for the the next merge
window, you can always search for "droid 4" in the
git.kernel.org next branch search page.
I have posted occasional 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 omap2plus_defconfig.
If you plan on working on adding more support, please coordinate the work
on linux-omap mailing list to avoid duplicate work.