Comparing Sabre Lite and Nitrogen6X i.MX6 development boards

Published on June 26, 2012

Archived Notice

This article has been archived and may contain broken links, photos and out-of-date information. If you have any questions, please Contact Us.

As you may or may not be aware, the Nitrogen6X and Sabre Lite boards are very similar. With a handful of caveats, you can boot a Nitrogen6X using an image created for the Sabre Lite. We've also put together a detection mechanism that will allow those differences to be handled in the start-up of U-Boot and Linux. In this post, we'll walk through the differences in detail, with references to the sources.

Overview

The source of the differences stems from the addition of the TWL127X WiFi-Bluetooth module to the Nitrogen6X. That device uses an SDIO channel to communicate with the WiFi part and a UART to communicate with the Bluetooth component. Because of this, we needed to free up another SDIO channel, and the most convenient was SD2.

Unfortunately, the SD2 pads are used to communicate with the SGTL5000 audio codec through AUDMUX channel 4. On Nitrogen6X, we moved these connections to previously unused pads CSI0:DAT4-7.

Other, more minor changes include:

  • We moved the PHY Reset signal from EIM_D23 (GPIO3:23) to ENET_RXD0 (GPIO1:27)
  • Both SD cards are microSD, so there's no write-protect pin on SDHC3
  • We're using different ethernet jacks, so the PHY address has changed

The details:

Detection

The Linux code to detect a Nitrogen6X is in this patch. It defines a routine is_nitrogen6w() that returns non-zero if running on a Nitrogen6X and zero if running on a Sabre Lite. That patch also adds a printk statement so you can see the result by running dmesg.

AUDMUX

The next patch on our boundary-L3.0.15_12.04.01 branch shows how we re-route the SGTL5000's pins to AUDMUX3 from AUDMUX4 and also routes the AUDMUX3 channel to pads CSI0:4-7, which are unused on Sabre Lite.

PHY Reset

The PHY Reset pin is not currently touched by Linux. U-Boot configures the pad and de-asserts both pins in this patch.

SD Card write protect pins

The full-sized SD card on Sabre Lite is connected to SD channel SDHC3. On the Nitrogen6X, this channel is a microSD card, which doesn't have a write-protect pin. This patch contains fixup code for SDHC3. It also removes the write-protect pin designation for SDHC4, since neither Sabre Lite nor Nitrogen6X have a connection for it.

PHY address

The Sabre Lite uses a dual-stack USB+Ethernet connector to save space. Furthermore, the Nitrogen6X supports Power Over Ethernet (PoE) and the RJ-45 connectors which support that are slightly different than those that don't. Because the PHY samples the LED lines to determine the PHY address, each of these communicates on a different address.

Under Linux, this PHY detection is handled automatically.

To handle this under U-Boot, we've added support for a bit mask of PHY addresses.

Addition of wl12xx WiFI module

WiFi support is added to Nitrogen6X in a few patches.

Addition of wl12xx Bluetooth

The Bluetooth channel on the wl12xx module is connected to the Nitrogen6X through UART3.

This patch enables UART3 on Nitrogen6X. It also disables UART3 on Sabre Lite because those signals aren't routed.

Note that this patch is also needed in order to support changing the UART to 3Mbps.

Nitrogen6X SOM

The Nitrogen6X SOM module has quite a bit more flexibility in its' pin assignments, but our reference carrier board exposes the same functionality as the Nitrogen6X using the same pads, so it's 100% compatible with Nitrogen6X.

Final notes

While reading this, you may have noticed that we're hacking the Sabre Lite board-support files in both Linux and U-Boot to add Nitrogen6X support. We should really stop doing this, but will make that transition when we upgrade to a kernel which supports device trees.

Because of the chicken-and-egg problem, we'll cut over to main-line U-Boot first, then we'll follow up with the Linux kernel.

Stay tuned for details