Difference between revisions of "CM-T43: Linux: Kernel"

From Compulab Mediawiki
Jump to: navigation, search
(See also)
 
(2 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
Linux kernel for the CompuLab CM-T43 System-on-Module / Computer-on-Module provides support for on-board peripherals and abstracts the functionality provided by the hardware.
 
Linux kernel for the CompuLab CM-T43 System-on-Module / Computer-on-Module provides support for on-board peripherals and abstracts the functionality provided by the hardware.
 
CompuLab provides ready-to-run binary kernel images, and source code of the modifications and additions made to the Linux kernel to work properly with CM-T43 modules.
 
CompuLab provides ready-to-run binary kernel images, and source code of the modifications and additions made to the Linux kernel to work properly with CM-T43 modules.
 
== Device Tree ==
 
 
Device Tree (DT), is a data structure and language for describing hardware. More specifically, it is a description of hardware that is readable by an operating system so that the operating system doesn't need to hard code details of the machine.
 
 
A device tree file, named *.dts, is a text file that describes the hardware platform. It is compiled into a device tree blob, *.dtb, which is loaded into memory before the Linux kernel is started. The Linux kernel then uses that device tree blob to initialize itself at runtime.
 
 
CM-T43 DT related files are :
 
 
* {{filename | arch/arm/boot/dts/am437x-cm-t43.dts }} - CM-T43 core SoM/CoM Device Tree
 
* {{filename | arch/arm/boot/dts/compulab-sb-som.dtsi }} - SB-SOM baseboard Device Tree
 
* {{filename | arch/arm/boot/dts/am437x-sb-som-t43.dts }} - SB-SOM-T43 single board computer (eval board) Device Tree
 
 
For more details visit official [http://devicetree.org/Device_Tree_Usage Device Tree WiKi] pages and make an overview of a [http://events.linuxfoundation.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf  Device Tree tutorial]
 
  
 
== Building kernel for CM-T43 ==
 
== Building kernel for CM-T43 ==
=== Cross-Compiler ===
 
There are several options for cross-compilation toolchain setup. You can either compile your cross-compiler or use an already built cross-compiler. The cross-compiler should support the ARM embedded-application binary interface ("[http://en.wikipedia.org/wiki/Application_binary_interface#EABI EABI]")
 
* Pre-built toolchain (recommended):
 
** [http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/ Sourcery CodeBench Lite]
 
* Tools for creating cross-compilers:
 
** [http://crosstool-ng.org/ Crosstool-ng]: Builds a cross-compiler from source. Non-distribution specific.
 
** [http://www.gentoo.org/proj/en/base/embedded/handbook/index.xml?part=1&chap=4 Crossdev]: Gentoo's cross-compiler builder. Needs Gentoo.
 
  
 
=== Getting kernel sources ===
 
=== Getting kernel sources ===
Line 33: Line 12:
  
 
==== Snapshot download ====
 
==== Snapshot download ====
* Download [https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.19.tar.gz v3.19] snapshot with a web browser.
+
* Download [https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.13.tar.gz v4.4.13] snapshot with a web browser.
* Extract the downloaded archive {{filename|linux-3.19.tar.gz}}
+
* Extract the downloaded archive {{filename|linux-4.4.13.tar.gz}}
 
<pre>
 
<pre>
 
cd /home/development/cm-t43/kernel
 
cd /home/development/cm-t43/kernel
tar xvf /path/to/downloaded/linux-3.19.tar.gz
+
tar xvf /path/to/downloaded/linux-4.4.13.tar.gz
mv linux-3.19 linux-cm-t43
+
mv linux-4.4.13 linux-cm-t43
 
</pre>
 
</pre>
 
: This will create {{filename|/home/development/cm-t43/kernel/linux-cm-t43}} directory containing linux kernel tree.
 
: This will create {{filename|/home/development/cm-t43/kernel/linux-cm-t43}} directory containing linux kernel tree.
Line 44: Line 23:
 
<pre>
 
<pre>
 
cd /home/development/cm-t43/kernel/linux-cm-t43
 
cd /home/development/cm-t43/kernel/linux-cm-t43
patch -p1 < /path/to/cm-t43-linux/kernel/linux-3.19.0-cm-t43-2.patch
+
patch -p1 < /path/to/cm-t43-linux/kernel/linux-4.4.13-cm-t43-5.patch
 
</pre>
 
</pre>
  
Line 54: Line 33:
 
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-cm-t43
 
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-cm-t43
 
</pre>
 
</pre>
* Create a branch for CM-T43 development. The CM-T43 patches are generated vs. v3.19 tag (bfa76d49576599a4b9f9b7a71f23d73d6dcff735 commit) in the Linux tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
+
* Create a branch for CM-T43 development. The CM-T43 patches are generated vs. v4.4.13 tag (ba760d4302e4fce130007b8bdbce7fcafc9bd9a9 commit) in the Linux tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
 
<pre>
 
<pre>
 
cd /home/development/cm-t43/kernel/linux-cm-t43
 
cd /home/development/cm-t43/kernel/linux-cm-t43
git checkout -b cm-t43-dev v3.19
+
git checkout -b cm-t43-dev v4.4.13
 
</pre>
 
</pre>
 
* Apply the CM-T43 patch
 
* Apply the CM-T43 patch
 
<pre>
 
<pre>
git apply /path/to/cm-t43-linux/kernel/linux-3.19.0-cm-t43-2.patch
+
git apply /path/to/cm-t43-linux/kernel/linux-4.4.13-cm-t43-5.patch
 
</pre>
 
</pre>
  
{{Note|Future stable kernel versions of 3.19 can also be used by adding the Linux kernel stable repository as a remote and checking out any later tag of the v3.19.y stable kernel branch.}}
+
{{Note|Future stable kernel versions of 4.4.13 can also be used by adding the Linux kernel stable repository as a remote and checking out any later tag of the v4.4.y stable kernel branch.}}
  
 
=== Building the kernel ===
 
=== Building the kernel ===
Line 72: Line 51:
 
export CROSS_COMPILE=arm-none-linux-eabi-
 
export CROSS_COMPILE=arm-none-linux-eabi-
 
make cm_t43_defconfig && make menuconfig
 
make cm_t43_defconfig && make menuconfig
make && make zImage && make am437x-sb-som-t43.dtb \
+
make && INSTALL_MOD_PATH=/home/development/cm-t43/rootfs make modules_install
    INSTALL_MOD_PATH=/home/development/cm-t43/rootfs make modules_install
 
 
</pre>
 
</pre>
  
Line 83: Line 61:
  
 
When the CM-T43 is booted with the kernel image and Device Tree binary created as described above and with networked root filesystem at {{filename|/home/development/cm-t43/rootfs/}}, the system will be able to load the kernel modules properly, thus avoiding module version problems.
 
When the CM-T43 is booted with the kernel image and Device Tree binary created as described above and with networked root filesystem at {{filename|/home/development/cm-t43/rootfs/}}, the system will be able to load the kernel modules properly, thus avoiding module version problems.
 +
 +
== Basic platform support ==
 +
The CM-T43 basic platform support is implemented in device tree files located in {{filename|arch/arm/boot/dts/}} folder of Linux kernel source tree.
 +
 +
=== Device Tree ===
 +
Device Tree (DT), is a data structure and language for describing hardware. More specifically, it is a description of hardware that is readable by an operating system so that the operating system doesn't need to hard code details of the machine.
 +
 +
A device tree file, named *.dts, is a text file that describes the hardware platform. It is compiled into a device tree blob, *.dtb, which is loaded into memory before the Linux kernel is started. The Linux kernel then uses that device tree blob to initialize itself at runtime.
 +
 +
==== CM-T43 device tree organization ====
 +
The SBC-T43 product is built from 3 major components:
 +
<pre>
 +
┌───────────────────────────────┐
 +
│ SB-SOM baseboard            │
 +
│                    │
 +
│  ┌─────────────────────┐  │
 +
│  │ CM-T43 SoM        │    │
 +
│  │          │ │
 +
│  │  ┌─────────────┐   │ │
 +
│  │ │TI AM437x SoC│   │ │
 +
│  │ └─────────────┘   │ │
 +
│  └─────────────────────┘ │
 +
└───────────────────────────────┘
 +
</pre>
 +
The SB-SOM baseboard is a general purpose baseboard, capable of supporting multiple CompuLab SoMs, including: CM-T43, CM-T54, CM-QS600. This leads us to the following device tree division:
 +
<pre>
 +
        am4372.dtsi
 +
 +
 +
 +
        am437x-cm-t43.dts          compulab-sb-som.dtsi
 +
      ∧             ∧
 +
    │     │
 +
            └───────┐          ┌───────┘
 +
      │          │
 +
    am437x-sb-som-t43.dts
 +
</pre>
 +
   
 +
* {{filename | am4372.dtsi}} is the SoC vendor device tree describing the AM437x SoC.
 +
* {{filename | am437x-cm-t43.dts}} is the SoM vendor device tree describing the CM-T43 SoM.
 +
* {{filename | compulab-sb-som.dtsi}} describes the SB-SOM baseboard. Only hardware properties that remain constant regardless of which SoM is installed on the baseboard are described here.
 +
* {{filename | am437x-sb-som-t43.dts}} describes the integration between CM-T43 SoM and the SB-SOM baseboard. Everything that is related to the SB-SOM baseboard and would change if we were to swap the CM-T43 module with another SoM is described here. For example: SB-SOM contains TFP410, an RGB-to-DVI encoder. The encoder is located on an I2C bus, but depending on the installed SoC it might be i2c1, i2c2, or i2c3. Therefore, it is not described in the generic {{filename | compulab-sb-som.dtsi}} device tree, but in the device tree describing the SB-SOM/CM-T43 combination. On the other hand, in order to describe the DVI connector on SB-SOM, there is no need to reference any SoM specific information, and therefore it is described in the generic {{filename | compulab-sb-som.dtsi}} file.
 +
 +
For more details visit official [http://devicetree.org/Device_Tree_Usage Device Tree WiKi] pages and make an overview of a [http://events.linuxfoundation.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf  Device Tree tutorial]
 +
 +
=== Kernel configuration ===
 +
 +
==== USB support ====
 +
CM-T43 features a DRD USB 2.0 controller. A DRD (Dual Role Device) controller is similar to an OTG controller in the sense that it supports both host and slave modes, but it lacks the ability to dynamically switch between them based on which USB plug is connected to it. CM-T43 defaults to running the USB controller as a host, but enables support for both so that a switch to device mode could be accomplished by editing the device tree.
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> USB support''' submenu and enable:
 +
* Support for Host-side USB
 +
* EHCI HCD (USB 2.0) support
 +
* DesignWare USB3 DRD Core Support
 +
** Set DWC3 Mode Selection to Dual Role mode
 +
* Texas Instruments OMAP5 and similar Platforms
 +
  ┌───────────────────────────────────── USB support ──────────────────────────────────────┐
 +
  │ ┌────────────────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │      --- USB support                                                              │ │ 
 +
  │ │      <*>  Support for Host-side USB                                              │ │ 
 +
  │ │      [*]    USB announce new devices                                            │ │ 
 +
  │ │              *** Miscellaneous USB options ***                                    │ │ 
 +
  │ │      [*]    Enable USB persist by default                                        │ │ 
 +
  │ │      [ ]    Dynamic USB minor allocation                                        │ │ 
 +
  │ │      [*]    OTG support                                                          │ │ 
 +
  │ │      [ ]    Rely on OTG and EH Targeted Peripherals List                        │ │ 
 +
  │ │      [ ]    Disable external hubs                                                │ │ 
 +
  │ │      < >    USB 2.0 OTG FSM implementation                                      │ │ 
 +
  │ │      < >    USB ULPI PHY interface support                                      │ │ 
 +
  │ │      < >    USB Monitor                                                          │ │ 
 +
  │ │      < >    Support WUSB Cable Based Association (CBA)                          │ │ 
 +
  │ │              *** USB Host Controller Drivers ***                                  │ │ 
 +
  │ │      < >    Cypress C67x00 HCD support                                          │ │ 
 +
  │ │      <*>    xHCI HCD (USB 3.0) support                                          │ │ 
 +
  │ │      <*>    EHCI HCD (USB 2.0) support                                          │ │ 
 +
  │ │      [*]      Root Hub Transaction Translators                                  │ │ 
 +
  │ │      [*]      Improved Transaction Translator scheduling                        │ │ 
 +
  │ │      < >    EHCI support for OMAP3 and later chips                              │ │ 
 +
  │ │      <*>    Generic EHCI driver for a platform device                            │ │ 
 +
  │ │      < >    OXU210HP HCD support                                                │ │ 
 +
  │ │      < >    ISP116X HCD support                                                  │ │ 
 +
  │ │      < >    ISP1362 HCD support                                                  │ │ 
 +
  │ │      < >    FUSBH200 HCD support                                                │ │ 
 +
  │ │      < >    FOTG210 HCD support                                                  │ │ 
 +
  │ │      < >    MAX3421 HCD (USB-over-SPI) support                                  │ │ 
 +
  │ │      < >    OHCI HCD (USB 1.1) support                                          │ │ 
 +
  │ │      < >    SL811HS HCD support                                                  │ │ 
 +
  │ │      < >    R8A66597 HCD support                                                │ │ 
 +
  │ │      [ ]    HCD test mode support                                                │ │ 
 +
  │ │              *** USB Device Class drivers ***                                    │ │ 
 +
  │ │      < >    USB Modem (CDC ACM) support                                          │ │ 
 +
  │ │      < >    USB Printer support                                                  │ │ 
 +
  │ │      < >    USB Wireless Device Management support                              │ │ 
 +
  │ │      < >    USB Test and Measurement Class support                              │ │ 
 +
  │ │              *** NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may ***        │ │ 
 +
  │ │              *** also be needed; see USB_STORAGE Help for more info ***          │ │ 
 +
  │ │      <*>    USB Mass Storage support                                            │ │ 
 +
  │ │      [ ]      USB Mass Storage verbose debug                                    │ │ 
 +
  │ │      < >      Realtek Card Reader support                                        │ │ 
 +
  │ │      < >      Datafab Compact Flash Reader support                              │ │ 
 +
  │ │      < >      Freecom USB/ATAPI Bridge support                                  │ │ 
 +
  │ │      < >      ISD-200 USB/ATA Bridge support                                    │ │ 
 +
  │ │      < >      USBAT/USBAT02-based storage support                                │ │ 
 +
  │ │      < >      SanDisk SDDR-09 (and other SmartMedia, including DPCM) support    │ │ 
 +
  │ │      < >      SanDisk SDDR-55 SmartMedia support                                │ │ 
 +
  │ │      < >      Lexar Jumpshot Compact Flash Reader                                │ │ 
 +
  │ │      < >      Olympus MAUSB-10/Fuji DPC-R1 support                              │ │ 
 +
  │ │      < >      Support OneTouch Button on Maxtor Hard Drives                      │ │ 
 +
  │ │      < >      Support for Rio Karma music player                                │ │ 
 +
  │ │      < >      SAT emulation on Cypress USB/ATA Bridge with ATACB                │ │ 
 +
  │ │      < >      USB ENE card reader support                                        │ │ 
 +
  │ │      < >      USB Attached SCSI                                                  │ │ 
 +
  │ │              *** USB Imaging devices ***                                          │ │ 
 +
  │ │      < >    USB Mustek MDC800 Digital Camera support                            │ │ 
 +
  │ │      < >    Microtek X6USB scanner support                                      │ │ 
 +
  │ │      < >    USB/IP support                                                      │ │ 
 +
  │ │      < >  Inventra Highspeed Dual Role Controller (TI, ADI, ...)                │ │ 
 +
  │ │      <*>  DesignWare USB3 DRD Core Support                                      │ │ 
 +
  │ │              DWC3 Mode Selection (Dual Role mode)  --->                          │ │ 
 +
  │ │              *** Platform Glue Driver Support ***                                │ │ 
 +
  │ │      <*>    Texas Instruments OMAP5 and similar Platforms                        │ │ 
 +
  │ │              *** Debugging features ***                                          │ │ 
 +
  │ │      [ ]    Enable Debugging Messages                                            │ │ 
 +
  │ └───────┴(+)─────────────────────────────────────────────────────────────────────────┘ │
 +
  ├────────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │                <Select>    < Exit >    < Help >    < Save >    < Load >                │ 
 +
  └────────────────────────────────────────────────────────────────────────────────────────┘
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> PHY subsystem''' submenu and enable:
 +
* OMAP USB2 PHY Driver
 +
<pre>
 +
  ┌────────────────────────────── PHY Subsystem ──────────────────────────────┐
 +
  │ ┌───────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    -*- PHY Core                                                      │ │ 
 +
  │ │    < > TI dm816x USB PHY driver                                      │ │ 
 +
  │ │    < > Marvell USB HSIC 28nm PHY Driver                              │ │ 
 +
  │ │    < > Marvell USB 2.0 28nm PHY Driver                                │ │ 
 +
  │ │    -*- OMAP CONTROL PHY Driver                                        │ │ 
 +
  │ │    <*> OMAP USB2 PHY Driver                                          │ │ 
 +
  │ │    < > TI PIPE3 PHY Driver                                            │ │ 
 +
  │ │    < > Broadcom Kona USB2 PHY Driver                                  │ │ 
 +
  │ └───────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────────────┤ 
 +
  │        <Select>    < Exit >    < Help >    < Save >    < Load >          │ 
 +
  └───────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
==== MMC/SDIO support ====
 +
In the kernel configuration menu choose '''Device Drivers ---> MMC/SD/SDIO card support''' submenu and enable:
 +
* TI OMAP High Speed Multimedia Card Interface support
 +
<pre>
 +
  ┌─────────────────────────────── MMC/SD/SDIO card support ───────────────────────────────┐
 +
  │ ┌────────────────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │      --- MMC/SD/SDIO card support                                                │ │ 
 +
  │ │      [ ]  MMC debugging                                                          │ │ 
 +
  │ │      [ ]  MMC host clock gating                                                  │ │ 
 +
  │ │            *** MMC/SD/SDIO Card Drivers ***                                      │ │ 
 +
  │ │      <*>  MMC block device driver                                                │ │ 
 +
  │ │      (8)    Number of minors per block device                                    │ │ 
 +
  │ │      [*]    Use bounce buffer for simple hosts                                  │ │ 
 +
  │ │      <*>  SDIO UART/GPS class support                                            │ │ 
 +
  │ │      < >  MMC host test driver                                                  │ │ 
 +
  │ │            *** MMC/SD/SDIO Host Controller Drivers ***                            │ │ 
 +
  │ │      < >  Secure Digital Host Controller Interface support                      │ │ 
 +
  │ │      < >  TI OMAP Multimedia Card Interface support                              │ │ 
 +
  │ │      <*>  TI OMAP High Speed Multimedia Card Interface support                  │ │ 
 +
  │ │      < >  Synopsys DesignWare Memory Card Interface                              │ │ 
 +
  │ │      < >  VUB300 USB to SDIO/SD/MMC Host Controller support                      │ │ 
 +
  │ │      < >  USB SD Host Controller (USHC) support                                  │ │ 
 +
  │ │      < >  Renesas USDHI6ROL0 SD/SDIO Host Controller support                    │ │ 
 +
  │ │      < >  MediaTek SD/MMC Card Interface support                                │ │ 
 +
  │ │                                                                                    │ │ 
 +
  │ └────────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├────────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │                <Select>    < Exit >    < Help >    < Save >    < Load >                │ 
 +
  └────────────────────────────────────────────────────────────────────────────────────────┘
 +
</pre>
 +
 +
==== NAND support ====
 +
In the kernel configuration menu choose '''Device Drivers ---> Memory Technology Device (MTD) support ---> NAND Device Support''' submenu and enable:
 +
* NAND Flash device on OMAP2, OMAP3 and OMAP4
 +
* Support hardware based BCH error correction
 +
* Support software BCH ECC
 +
<pre>
 +
  ┌─────────────────────────── NAND Device Support ───────────────────────────┐
 +
  │ ┌───────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    --- NAND Device Support                                            │ │ 
 +
  │ │    [*]  Support software BCH ECC                                    │ │ 
 +
  │ │    < >  Support Denali NAND controller                              │ │ 
 +
  │ │    < >  GPIO assisted NAND Flash driver                              │ │ 
 +
  │ │    <*>  NAND Flash device on OMAP2, OMAP3 and OMAP4                  │ │ 
 +
  │ │    [*]    Support hardware based BCH error correction                │ │ 
 +
  │ │    < >  DiskOnChip 2000, Millennium and Millennium Plus (NAND reimple│ │ 
 +
  │ │    < >  Support for DiskOnChip G4                                    │ │ 
 +
  │ │    < >  Support for NAND Flash Simulator                            │ │ 
 +
  │ │    < >  Broadcom STB NAND controller                                │ │ 
 +
  │ │    < >  Support for generic platform NAND driver                    │ │ 
 +
  │ │    < >  Support for NAND controller on Hisilicon SoC Hip04          │ │ 
 +
  │ └───────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────────────┤ 
 +
  │        <Select>    < Exit >    < Help >    < Save >    < Load >          │ 
 +
  └───────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
==== SPI support ====
 +
In the kernel configuration menu choose '''Device Drivers ---> SPI support''' submenu and enable:
 +
* McSPI driver for OMAP
 +
<pre>
 +
  ┌─────────────────────────────── SPI support ───────────────────────────────┐
 +
  │ ┌───────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    --- SPI support                                                    │ │ 
 +
  │ │          *** SPI Master Controller Drivers ***                        │ │ 
 +
  │ │    < >  Altera SPI Controller                                        │ │ 
 +
  │ │    < >  Utilities for Bitbanging SPI masters                        │ │ 
 +
  │ │    < >  Cadence SPI controller                                      │ │ 
 +
  │ │    < >  GPIO-based bitbanging SPI Master                            │ │ 
 +
  │ │    < >  Freescale SPI controller and Aeroflex Gaisler GRLIB SPI contr│ │ 
 +
  │ │    < >  OpenCores tiny SPI                                          │ │ 
 +
  │ │    <*>  McSPI driver for OMAP                                        │ │ 
 +
  │ │    < >  DRA7xxx QSPI controller support                              │ │ 
 +
  │ │    < >  Rockchip SPI controller driver                              │ │ 
 +
  │ └────┴(+)───────────────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────────────┤ 
 +
  │        <Select>    < Exit >    < Help >    < Save >    < Load >          │ 
 +
  └───────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
===== SPI-flash support =====
 +
In the kernel configuration menu choose '''Device Drivers ---> Memory Technology Device (MTD) support''' submenu and enable:
 +
* SPI-NOR device support
 +
<pre>
 +
  ┌───────────────── Memory Technology Device (MTD) support ──────────────────┐
 +
  │ ┌────^(-)───────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    [ ]  Retain master device when partitioned                        │ │ 
 +
  │ │          RAM/ROM/Flash chip drivers  --->                            │ │ 
 +
  │ │          Mapping drivers for chip access  --->                        │ │ 
 +
  │ │          Self-contained MTD device drivers  --->                      │ │ 
 +
  │ │    [ ]  NAND ECC Smart Media byte order                              │ │ 
 +
  │ │    <*>  NAND Device Support  --->                                    │ │ 
 +
  │ │    <*>  OneNAND Device Support  --->                                │ │ 
 +
  │ │          LPDDR & LPDDR2 PCM memory drivers  --->                      │ │ 
 +
  │ │    <*>  SPI-NOR device support  --->                                │ │ 
 +
  │ │    <*>  Enable UBI - Unsorted block images  --->                    │ │ 
 +
  │ └───────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────────────┤ 
 +
  │        <Select>    < Exit >    < Help >    < Save >    < Load >          │ 
 +
  └───────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Memory Technology Device (MTD) support ---> Self-contained MTD device drivers''' submenu and enable:
 +
* Support most SPI Flash chips (AT26DF, M25P, W25X, ...)
 +
<pre>
 +
  ┌──────────────────── Self-contained MTD device drivers ────────────────────┐
 +
  │ ┌───────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    < > Support for AT45xxx DataFlash                                  │ │ 
 +
  │ │    <*> Support most SPI Flash chips (AT26DF, M25P, W25X, ...)        │ │ 
 +
  │ │    < > Support SST25L (non JEDEC) SPI Flash chips                    │ │ 
 +
  │ │    < > Uncached system RAM                                            │ │ 
 +
  │ │    < > Physical system RAM                                            │ │ 
 +
  │ │    < > Test driver using RAM                                          │ │ 
 +
  │ │    < > MTD using block device                                        │ │ 
 +
  │ │        *** Disk-On-Chip Device Drivers ***                            │ │ 
 +
  │ │    < > M-Systems Disk-On-Chip G3                                      │ │ 
 +
  │ │                                                                      │ │ 
 +
  │ └───────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────────────┤ 
 +
  │        <Select>    < Exit >    < Help >    < Save >    < Load >          │ 
 +
  └───────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
==== UART support ====
 +
In the kernel configuration menu choose '''Device Drivers ---> Character devices ---> Serial drivers''' submenu and enable:
 +
* OMAP serial port support
 +
* Console on OMAP serial port
 +
<pre>
 +
  ┌─────────────────────────────────── Serial drivers ───────────────────────────────────┐
 +
  │ ┌──────^(-)────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │      < > MAX3100 support                                                        │ │ 
 +
  │ │      < > MAX310X support                                                        │ │ 
 +
  │ │      <*> Serial port on Open Firmware platform bus                              │ │ 
 +
  │ │      <*> OMAP serial port support                                                │ │ 
 +
  │ │      [*]  Console on OMAP serial port                                          │ │ 
 +
  │ │      < > SCCNXP serial port support                                              │ │ 
 +
  │ │      < > SC16IS7xx serial support                                                │ │ 
 +
  │ │      < > Broadcom BCM63xx/BCM33xx UART support                                  │ │ 
 +
  │ │      < > Altera JTAG UART support                                                │ │ 
 +
  │ │      < > Altera UART support                                                    │ │ 
 +
  │ │      < > SPI protocol driver for Infineon 6x60 modem (EXPERIMENTAL)              │ │ 
 +
  │ │      < > Cadence (Xilinx Zynq) UART support                                      │ │ 
 +
  │ │      < > ARC UART driver support                                                │ │ 
 +
  │ │      < > Freescale lpuart serial port support                                    │ │ 
 +
  │ │      < > Conexant Digicolor CX92xxx USART serial port support                    │ │ 
 +
  │ │      < > ST ASC serial port support                                              │ │ 
 +
  │ │      < > STMicroelectronics STM32 serial port support                            │ │ 
 +
  │ └──────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├──────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │              <Select>    < Exit >    < Help >    < Save >    < Load >              │ 
 +
  └──────────────────────────────────────────────────────────────────────────────────────┘
 +
</pre>
 +
 +
==== Ethernet support ====
 +
CM-T43 features an ethernet controller that can operate as a Layer-2 3-port ethernet switch. Alternatively, the ethernet controller can be setup in dualEMAC mode, which is the default on CM-T43. The mode of operation can be changed to ethernet switch by editing the device tree.
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Network device support ---> Ethernet driver support''' submenu and enable:
 +
* Texas Instruments (TI) devices
 +
* TI DaVinci MDIO Support
 +
* TI DaVinci CPDMA Support
 +
* TI CPSW Switch Phy sel Support
 +
* TI CPSW ALE Support
 +
* TI CPSW Switch Support
 +
<pre>
 +
  ┌────────────────────────────── Ethernet driver support ───────────────────────────────┐
 +
  │ ┌──────^(-)────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │      [*]  Rocker devices                                                        │ │ 
 +
  │ │      [ ]  Samsung Ethernet devices                                              │ │ 
 +
  │ │      [ ]  SEEQ devices                                                          │ │ 
 +
  │ │      [*]  SMC (SMSC)/Western Digital devices                                    │ │ 
 +
  │ │      <*>    SMC 91C9x/91C1xxx support                                          │ │ 
 +
  │ │      < >    SMSC LAN911[5678] support                                          │ │ 
 +
  │ │      <*>    SMSC LAN911x/LAN921x families embedded ethernet support            │ │ 
 +
  │ │      [ ]  STMicroelectronics devices                                            │ │ 
 +
  │ │      [*]  Texas Instruments (TI) devices                                        │ │ 
 +
  │ │      -*-    TI DaVinci MDIO Support                                            │ │ 
 +
  │ │      -*-    TI DaVinci CPDMA Support                                            │ │ 
 +
  │ │      -*-    TI CPSW Switch Phy sel Support                                      │ │ 
 +
  │ │      -*-    TI CPSW ALE Support                                                │ │ 
 +
  │ │      <*>    TI CPSW Switch Support                                              │ │ 
 +
  │ │      [ ]      TI Common Platform Time Sync (CPTS) Support                      │ │ 
 +
  │ │      [ ]  VIA devices                                                          │ │ 
 +
  │ │      [ ]  WIZnet devices                                                        │ │ 
 +
  │ └──────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├──────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │              <Select>    < Exit >    < Help >    < Save >    < Load >              │ 
 +
  └──────────────────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Network device support ---> PHY Device support and infrastructure''' submenu and enable:
 +
* Drivers for Atheros AT803X PHYs
 +
<pre>
 +
  ┌────────────── PHY Device support and infrastructure ──────────────┐
 +
  │ ┌───────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    --- PHY Device support and infrastructure                  │ │ 
 +
  │ │          *** MII PHY device drivers ***                      │ │ 
 +
  │ │    <*>  Drivers for Atheros AT803X PHYs                      │ │ 
 +
  │ │    < >  Drivers for the AMD PHYs                            │ │ 
 +
  │ │    < >  Drivers for Marvell PHYs                            │ │ 
 +
  │ │    < >  Drivers for Davicom PHYs                            │ │ 
 +
  │ │    < >  Drivers for Quality Semiconductor PHYs              │ │ 
 +
  │ │    < >  Drivers for the Intel LXT PHYs                      │ │ 
 +
  │ │    < >  Drivers for the Cicada PHYs                          │ │ 
 +
  │ │    < >  Drivers for the Vitesse PHYs                        │ │ 
 +
  │ └────┴(+)───────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────┤ 
 +
  │    <Select>    < Exit >    < Help >    < Save >    < Load >      │ 
 +
  └───────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
==== Display support ====
 +
CM-T43 has a single parallel RGB display interface which drives multiple display connectors, including: a parallel RGP LCD + touchscreen connector, a DVI connector, and an LVDS connector. Since all 3 connectors are driven by the same interface, they cannot simultaneously output images at different resolutions.
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Graphics support ---> Frame buffer Devices ---> OMAP2+ Display Subsystem support''' submenu and enable:
 +
* DPI support
 +
* OMAP2+ frame buffer support
 +
<pre>
 +
  ┌──────────────────── OMAP2+ Display Subsystem support ─────────────────────┐
 +
  │ ┌───────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    --- OMAP2+ Display Subsystem support                              │ │ 
 +
  │ │    [ ]  Debug support                                                │ │ 
 +
  │ │    [*]  Debugfs filesystem support                                  │ │ 
 +
  │ │    [ ]    Collect DSS IRQ statistics                                │ │ 
 +
  │ │    [*]  DPI support                                                  │ │ 
 +
  │ │    [ ]  VENC support                                                │ │ 
 +
  │ │    [ ]  HDMI support for OMAP4                                      │ │ 
 +
  │ │    [ ]  HDMI support for OMAP5                                      │ │ 
 +
  │ │    [ ]  SDI support                                                  │ │ 
 +
  │ │    [ ]  DSI support                                                  │ │ 
 +
  │ │    (0)  Minimum FCK/PCK ratio (for scaling)                          │ │ 
 +
  │ │    [ ]  Sleep 20ms after VENC reset                                  │ │ 
 +
  │ │    <M>  OMAP2+ frame buffer support  --->                            │ │ 
 +
  │ │          OMAP Display Device Drivers (new device model)  --->        │ │ 
 +
  │ └───────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────────────┤ 
 +
  │        <Select>    < Exit >    < Help >    < Save >    < Load >          │ 
 +
  └───────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Graphics support ---> Frame buffer Devices ---> OMAP2+ Display Subsystem support --- OMAP Display Device Driver''' submenu and enable:
 +
* TFP410 DPI to DVI Encoder
 +
* DVI Connector
 +
 +
<pre>
 +
  ┌───────────── OMAP Display Device Drivers (new device model) ──────────────┐
 +
  │ ┌───────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    < > OPA362 external analog amplifier                              │ │ 
 +
  │ │    <M> TFP410 DPI to DVI Encoder                                      │ │ 
 +
  │ │    < > TPD12S015 HDMI ESD protection and level shifter                │ │ 
 +
  │ │    <M> DVI Connector                                                  │ │ 
 +
  │ │    < > HDMI Connector                                                │ │ 
 +
  │ │    < > Analog TV Connector                                            │ │ 
 +
  │ │    <M> Generic DPI panel                                              │ │ 
 +
  │ │    < > Generic DSI Command Mode Panel                                │ │ 
 +
  │ │    <M> ACX565AKM Panel                                                │ │ 
 +
  │ │    <M> LG.Philips LB035Q02 LCD Panel                                  │ │ 
 +
  │ │    <M> Sharp LS037V7DW01 LCD Panel                                    │ │ 
 +
  │ │    <M> TPO TD028TTEC1 LCD Panel                                      │ │ 
 +
  │ │    <M> TPO TD043MTEA1 LCD Panel                                      │ │ 
 +
  │ │    <M> NEC NL8048HL11 Panel                                          │ │ 
 +
  │ └───────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├───────────────────────────────────────────────────────────────────────────┤ 
 +
  │        <Select>    < Exit >    < Help >    < Save >    < Load >          │ 
 +
  └───────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
==== Wifi support ====
 +
The WiFi chip is connected to the SoC via SDIO interface, so make sure you have MMC support turned on. Also, make sure wireless support is turned on under '''Network support'''.
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Network device support ---> Wireless LAN''' submenu and enable:
 +
* Marvell WiFi-Ex Driver
 +
* Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897
 +
<pre>
 +
  ┌─────────────────────────────────────── Wireless LAN ───────────────────────────────────────┐
 +
  │ ┌─────────^(-)───────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │        <M>  Marvell 8xxx Libertas WLAN driver support                                │ │ 
 +
  │ │        <M>    Marvell Libertas 8388 USB 802.11b/g cards                              │ │ 
 +
  │ │        <M>    Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards                  │ │ 
 +
  │ │        < >    Marvell Libertas 8686 SPI 802.11b/g cards                              │ │ 
 +
  │ │        [*]    Enable full debugging output in the Libertas module.                  │ │ 
 +
  │ │        [ ]    Enable mesh support                                                    │ │ 
 +
  │ │        < >  Softmac Prism54 support                                                  │ │ 
 +
  │ │        < >  Ralink driver support  ----                                              │ │ 
 +
  │ │        [ ]  Mediatek Wireless LAN support  ----                                      │ │ 
 +
  │ │        <M>  Realtek rtlwifi family of devices  --->                                  │ │ 
 +
  │ │        [*]  TI Wireless LAN support  --->                                            │ │ 
 +
  │ │        < >  ZyDAS ZD1211/ZD1211B USB-wireless support                                │ │ 
 +
  │ │        <M>  Marvell WiFi-Ex Driver                                                  │ │ 
 +
  │ │        <M>    Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897          │ │ 
 +
  │ │        <M>    Marvell WiFi-Ex Driver for USB8766/8797/8897                          │ │ 
 +
  │ │        < >  CW1200 WLAN support                                                      │ │ 
 +
  │ │        < >  Redpine Signals Inc 91x WLAN driver support                              │ │ 
 +
  │ └────────────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├────────────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │                  <Select>    < Exit >    < Help >    < Save >    < Load >                  │ 
 +
  └────────────────────────────────────────────────────────────────────────────────────────────┘ 
 +
   
 +
</pre>
 +
 +
==== Bluetooth support ====
 +
The Bluetooth chip is connected to the SoC via SDIO interface, so make sure you have MMC support turned on. Also, make sure bluetooth support is turned on under '''Network support ---> Bluetooth subsystem support'''.
 +
 +
In the kernel configuration menu choose '''Networking support ---> Bluetooth subsystem support ---> Bluetooth device drivers''' submenu and enable:
 +
* HCI SDIO driver
 +
* HCI UART driver
 +
* Marvell Bluetooth driver support
 +
* Marvell BT-over-SDIO driver
 +
<pre>
 +
  ┌───────────────────────────── Bluetooth device drivers ──────────────────────────────┐
 +
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    <M> HCI USB driver                                                          │ │ 
 +
  │ │    [*]  Broadcom protocol support                                            │ │ 
 +
  │ │    [*]  Realtek protocol support                                              │ │ 
 +
  │ │    <M> HCI SDIO driver                                                        │ │ 
 +
  │ │    <M> HCI UART driver                                                        │ │ 
 +
  │ │    [*]  UART (H4) protocol support                                            │ │ 
 +
  │ │    [*]  BCSP protocol support                                                │ │ 
 +
  │ │    [ ]  Atheros AR300x serial support                                        │ │ 
 +
  │ │    [*]  HCILL protocol support                                                │ │ 
 +
  │ │    [ ]  Three-wire UART (H5) protocol support                                │ │ 
 +
  │ │    [ ]  Intel protocol support                                                │ │ 
 +
  │ │    [ ]  Broadcom protocol support                                            │ │ 
 +
  │ │    <M> HCI BCM203x USB driver                                                  │ │ 
 +
  │ │    <M> HCI BPA10x USB driver                                                  │ │ 
 +
  │ │    < > HCI BlueFRITZ! USB driver                                              │ │ 
 +
  │ │    < > HCI VHCI (Virtual HCI device) driver                                    │ │ 
 +
  │ │    <M> Marvell Bluetooth driver support                                        │ │ 
 +
  │ │    <M>  Marvell BT-over-SDIO driver                                          │ │ 
 +
  │ │    <M> Atheros firmware download driver                                        │ │ 
 +
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├─────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │              <Select>    < Exit >    < Help >    < Save >    < Load >              │ 
 +
  └─────────────────────────────────────────────────────────────────────────────────────┘
 +
</pre>
 +
 +
==== Audio support ====
 +
In the kernel configuration menu choose '''Device Drivers ---> Sound card support ---> Advanced Linux Sound Architecture ---> ALSA for SoC audio support''' submenu and enable:
 +
* SoC Audio for Texas Instruments chips using eDMA
 +
* Multichannel Audio Serial Port (McASP) support
 +
* SoC Audio for the Texas Instruments OMAP chips
 +
* ASoC Simple sound card support
 +
<pre>
 +
  ┌──────────────────────────── ALSA for SoC audio support ─────────────────────────────┐
 +
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    --- ALSA for SoC audio support                                              │ │ 
 +
  │ │    < >  SoC Audio for the Atmel System-on-Chip                                │ │ 
 +
  │ │    <M>  SoC Audio for Texas Instruments chips using eDMA                      │ │ 
 +
  │ │    <M>  Multichannel Audio Serial Port (McASP) support                        │ │ 
 +
  │ │    < >  SoC Audio for the AM33XX chip based boards                            │ │ 
 +
  │ │    < >  Synopsys I2S Device Driver                                            │ │ 
 +
  │ │          SoC Audio for Freescale CPUs  --->                                    │ │ 
 +
  │ │    <M>  SoC Audio for the Texas Instruments OMAP chips                        │ │ 
 +
  │ │    < >  HDMI audio support for OMAP4+ based SoCs                              │ │ 
 +
  │ │    < >  SoC Audio support for Nokia N900 (RX-51)                              │ │ 
 +
  │ │    <M>  SoC Audio support for TI SoC based boards with twl4030 codec          │ │ 
 +
  │ │    < >  ASoC support for QCOM platforms                                      │ │ 
 +
  │ │    < >  XTFPGA I2S master                                                    │ │ 
 +
  │ │          CODEC drivers  --->                                                  │ │ 
 +
  │ │    <M>  ASoC Simple sound card support                                        │ │ 
 +
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├─────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │              <Select>    < Exit >    < Help >    < Save >    < Load >              │ 
 +
  └─────────────────────────────────────────────────────────────────────────────────────┘
 +
</pre>
 +
 +
Under the '''CODEC drivers''' submenu of the same section enable:
 +
* Wolfson Microelectronics WM8731 CODEC
 +
<pre>
 +
  ┌─────────────────────────────────── CODEC drivers ───────────────────────────────────┐
 +
  │ ┌─────^(-)────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    < > Wolfson Microelectronics WM8523 CODEC                                  │ │ 
 +
  │ │    < > Wolfson Microelectronics WM8711 CODEC                                  │ │ 
 +
  │ │    < > Wolfson Microelectronics WM8728 DAC                                    │ │ 
 +
  │ │    <M> Wolfson Microelectronics WM8731 CODEC                                  │ │ 
 +
  │ │    < > Wolfson Microelectronics WM8737 ADC                                    │ │ 
 +
  │ │    < > Wolfson Microelectronics WM8737 DAC                                    │ │ 
 +
  │ │    < > Wolfson Microelectronics WM8750 CODEC                                  │ │ 
 +
  │ │    < > Wolfson Microelectronics WM8753 CODEC                                  │ │ 
 +
  │ │    < > Wolfson Microelectronics WM8770 CODEC                                  │ │ 
 +
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├─────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │              <Select>    < Exit >    < Help >    < Save >    < Load >              │ 
 +
  └─────────────────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
 +
 +
==== CAN bus support ====
 +
Make sure to enable generic CAN bus support under '''Networking support ---> CAN bus subsystem support'''.
 +
 +
In the kernel configuration menu choose '''Networking support ---> CAN bus subsystem support ---> CAN Device Drivers''' submenu and enable:
 +
* Platform CAN drivers with Netlink support
 +
* Bosch C_CAN/D_CAN devices
 +
** Generic Platform Bus based C_CAN/D_CAN driver
 +
<pre>
 +
  ┌──────────────────────────────── CAN Device Drivers ─────────────────────────────────┐
 +
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │ 
 +
  │ │    < > Virtual Local CAN Interface (vcan)                                      │ │ 
 +
  │ │    < > Serial / USB serial CAN Adaptors (slcan)                                │ │ 
 +
  │ │    <M> Platform CAN drivers with Netlink support                              │ │ 
 +
  │ │    [*]  CAN bit-timing calculation                                            │ │ 
 +
  │ │    [ ]  Enable LED triggers for Netlink based drivers                        │ │ 
 +
  │ │    < >  TI High End CAN Controller                                            │ │ 
 +
  │ │    < >  Support for Freescale FLEXCAN based chips                            │ │ 
 +
  │ │    < >  Aeroflex Gaisler GRCAN and GRHCAN CAN devices                        │ │ 
 +
  │ │    < >  Renesas R-Car CAN controller                                          │ │ 
 +
  │ │    < >  Philips/NXP SJA1000 devices  ----                                    │ │ 
 +
  │ │    <M>  Bosch C_CAN/D_CAN devices  --->                                      │ │ 
 +
  │ │    < >  Bosch M_CAN devices                                                  │ │ 
 +
  │ │    < >  Bosch CC770 and Intel AN82527 devices  ----                          │ │ 
 +
  │ │          CAN SPI interfaces  --->                                              │ │ 
 +
  │ │          CAN USB interfaces  --->                                              │ │ 
 +
  │ │    < >  Softing Gmbh CAN generic support                                      │ │ 
 +
  │ │    [ ] CAN devices debugging messages                                          │ │ 
 +
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │ 
 +
  ├─────────────────────────────────────────────────────────────────────────────────────┤ 
 +
  │              <Select>    < Exit >    < Help >    < Save >    < Load >              │ 
 +
  └─────────────────────────────────────────────────────────────────────────────────────┘ 
 +
</pre>
  
 
== See also ==
 
== See also ==
* [[CM-T43: Linux: Getting started]]
+
* [[CM-T43: Linux: Manual Installation]]
 
* [[CM-T43: Linux: Debian]]
 
* [[CM-T43: Linux: Debian]]
  
 
[[Category:Linux]]
 
[[Category:Linux]]
 
[[Category:CM-T43]]
 
[[Category:CM-T43]]

Latest revision as of 11:27, 29 June 2016

Overview

Linux kernel for the CompuLab CM-T43 System-on-Module / Computer-on-Module provides support for on-board peripherals and abstracts the functionality provided by the hardware. CompuLab provides ready-to-run binary kernel images, and source code of the modifications and additions made to the Linux kernel to work properly with CM-T43 modules.

Building kernel for CM-T43

Getting kernel sources

There are various ways to get Linux kernel sources that can be used as a baseline for CM-T43 kernel. For instance, a copy of linux-stable git tree can be created or a Linux kernel sources snapshot can be downloaded.

Assuming that the /home/development/cm-t43/kernel directory structure has been created for CM-T43 kernel development.

Snapshot download

  • Download v4.4.13 snapshot with a web browser.
  • Extract the downloaded archive linux-4.4.13.tar.gz
cd /home/development/cm-t43/kernel
tar xvf /path/to/downloaded/linux-4.4.13.tar.gz
mv linux-4.4.13 linux-cm-t43
This will create /home/development/cm-t43/kernel/linux-cm-t43 directory containing linux kernel tree.
  • Apply the CM-T43 patch
cd /home/development/cm-t43/kernel/linux-cm-t43
patch -p1 < /path/to/cm-t43-linux/kernel/linux-4.4.13-cm-t43-5.patch

Git clone

  • Install git version control system.
  • Create a clone of linux kernel tree
cd /home/development/cm-t43/kernel
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git linux-cm-t43
  • Create a branch for CM-T43 development. The CM-T43 patches are generated vs. v4.4.13 tag (ba760d4302e4fce130007b8bdbce7fcafc9bd9a9 commit) in the Linux tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
cd /home/development/cm-t43/kernel/linux-cm-t43
git checkout -b cm-t43-dev v4.4.13
  • Apply the CM-T43 patch
git apply /path/to/cm-t43-linux/kernel/linux-4.4.13-cm-t43-5.patch


Admolition note.png Future stable kernel versions of 4.4.13 can also be used by adding the Linux kernel stable repository as a remote and checking out any later tag of the v4.4.y stable kernel branch.

Building the kernel

  • Run the following commands:
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-eabi-
make cm_t43_defconfig && make menuconfig
make && INSTALL_MOD_PATH=/home/development/cm-t43/rootfs make modules_install

In the example above:

  • The Linux kernel image zImage will be created in /home/development/cm-t43/kernel/linux-cm-t43/arch/arm/boot
  • The Device Tree binary am437x-sb-som-t43.dtb will be created in /home/development/cm-t43/kernel/linux-cm-t43/arch/arm/boot/dts
  • The loadable kernel modules will be installed into the /home/development/cm-t43/rootfs/lib/modules directory.

When the CM-T43 is booted with the kernel image and Device Tree binary created as described above and with networked root filesystem at /home/development/cm-t43/rootfs/, the system will be able to load the kernel modules properly, thus avoiding module version problems.

Basic platform support

The CM-T43 basic platform support is implemented in device tree files located in arch/arm/boot/dts/ folder of Linux kernel source tree.

Device Tree

Device Tree (DT), is a data structure and language for describing hardware. More specifically, it is a description of hardware that is readable by an operating system so that the operating system doesn't need to hard code details of the machine.

A device tree file, named *.dts, is a text file that describes the hardware platform. It is compiled into a device tree blob, *.dtb, which is loaded into memory before the Linux kernel is started. The Linux kernel then uses that device tree blob to initialize itself at runtime.

CM-T43 device tree organization

The SBC-T43 product is built from 3 major components:

┌───────────────────────────────┐
│ SB-SOM baseboard     	        │
│      	       	       	   	│
│   ┌─────────────────────┐  	│
│   │ CM-T43 SoM       	  │    	│
│   │  	       		  │	│
│   │  	┌─────────────┐	  │	│
│   │ 	│TI AM437x SoC│	  │	│
│   │	└─────────────┘	  │	│
│   └─────────────────────┘	│
└───────────────────────────────┘

The SB-SOM baseboard is a general purpose baseboard, capable of supporting multiple CompuLab SoMs, including: CM-T43, CM-T54, CM-QS600. This leads us to the following device tree division:

       	   am4372.dtsi
		∧
		│
		│
        am437x-cm-t43.dts           compulab-sb-som.dtsi
	       	∧		            ∧
	     	│			    │
       	       	└───────┐      	    ┌───────┘
		       	│      	    │
		    am437x-sb-som-t43.dts
  • am4372.dtsi is the SoC vendor device tree describing the AM437x SoC.
  • am437x-cm-t43.dts is the SoM vendor device tree describing the CM-T43 SoM.
  • compulab-sb-som.dtsi describes the SB-SOM baseboard. Only hardware properties that remain constant regardless of which SoM is installed on the baseboard are described here.
  • am437x-sb-som-t43.dts describes the integration between CM-T43 SoM and the SB-SOM baseboard. Everything that is related to the SB-SOM baseboard and would change if we were to swap the CM-T43 module with another SoM is described here. For example: SB-SOM contains TFP410, an RGB-to-DVI encoder. The encoder is located on an I2C bus, but depending on the installed SoC it might be i2c1, i2c2, or i2c3. Therefore, it is not described in the generic compulab-sb-som.dtsi device tree, but in the device tree describing the SB-SOM/CM-T43 combination. On the other hand, in order to describe the DVI connector on SB-SOM, there is no need to reference any SoM specific information, and therefore it is described in the generic compulab-sb-som.dtsi file.

For more details visit official Device Tree WiKi pages and make an overview of a Device Tree tutorial

Kernel configuration

USB support

CM-T43 features a DRD USB 2.0 controller. A DRD (Dual Role Device) controller is similar to an OTG controller in the sense that it supports both host and slave modes, but it lacks the ability to dynamically switch between them based on which USB plug is connected to it. CM-T43 defaults to running the USB controller as a host, but enables support for both so that a switch to device mode could be accomplished by editing the device tree.

In the kernel configuration menu choose Device Drivers ---> USB support submenu and enable:

  • Support for Host-side USB
  • EHCI HCD (USB 2.0) support
  • DesignWare USB3 DRD Core Support
    • Set DWC3 Mode Selection to Dual Role mode
  • Texas Instruments OMAP5 and similar Platforms
 ┌───────────────────────────────────── USB support ──────────────────────────────────────┐
 │ ┌────────────────────────────────────────────────────────────────────────────────────┐ │  
 │ │       --- USB support                                                              │ │  
 │ │       <*>   Support for Host-side USB                                              │ │  
 │ │       [*]     USB announce new devices                                             │ │  
 │ │               *** Miscellaneous USB options ***                                    │ │  
 │ │       [*]     Enable USB persist by default                                        │ │  
 │ │       [ ]     Dynamic USB minor allocation                                         │ │  
 │ │       [*]     OTG support                                                          │ │  
 │ │       [ ]     Rely on OTG and EH Targeted Peripherals List                         │ │  
 │ │       [ ]     Disable external hubs                                                │ │  
 │ │       < >     USB 2.0 OTG FSM implementation                                       │ │  
 │ │       < >     USB ULPI PHY interface support                                       │ │  
 │ │       < >     USB Monitor                                                          │ │  
 │ │       < >     Support WUSB Cable Based Association (CBA)                           │ │  
 │ │               *** USB Host Controller Drivers ***                                  │ │  
 │ │       < >     Cypress C67x00 HCD support                                           │ │  
 │ │       <*>     xHCI HCD (USB 3.0) support                                           │ │  
 │ │       <*>     EHCI HCD (USB 2.0) support                                           │ │  
 │ │       [*]       Root Hub Transaction Translators                                   │ │  
 │ │       [*]       Improved Transaction Translator scheduling                         │ │  
 │ │       < >     EHCI support for OMAP3 and later chips                               │ │  
 │ │       <*>     Generic EHCI driver for a platform device                            │ │  
 │ │       < >     OXU210HP HCD support                                                 │ │  
 │ │       < >     ISP116X HCD support                                                  │ │  
 │ │       < >     ISP1362 HCD support                                                  │ │  
 │ │       < >     FUSBH200 HCD support                                                 │ │  
 │ │       < >     FOTG210 HCD support                                                  │ │  
 │ │       < >     MAX3421 HCD (USB-over-SPI) support                                   │ │  
 │ │       < >     OHCI HCD (USB 1.1) support                                           │ │  
 │ │       < >     SL811HS HCD support                                                  │ │  
 │ │       < >     R8A66597 HCD support                                                 │ │  
 │ │       [ ]     HCD test mode support                                                │ │  
 │ │               *** USB Device Class drivers ***                                     │ │  
 │ │       < >     USB Modem (CDC ACM) support                                          │ │  
 │ │       < >     USB Printer support                                                  │ │  
 │ │       < >     USB Wireless Device Management support                               │ │  
 │ │       < >     USB Test and Measurement Class support                               │ │  
 │ │               *** NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may ***         │ │  
 │ │               *** also be needed; see USB_STORAGE Help for more info ***           │ │  
 │ │       <*>     USB Mass Storage support                                             │ │  
 │ │       [ ]       USB Mass Storage verbose debug                                     │ │  
 │ │       < >       Realtek Card Reader support                                        │ │  
 │ │       < >       Datafab Compact Flash Reader support                               │ │  
 │ │       < >       Freecom USB/ATAPI Bridge support                                   │ │  
 │ │       < >       ISD-200 USB/ATA Bridge support                                     │ │  
 │ │       < >       USBAT/USBAT02-based storage support                                │ │  
 │ │       < >       SanDisk SDDR-09 (and other SmartMedia, including DPCM) support     │ │  
 │ │       < >       SanDisk SDDR-55 SmartMedia support                                 │ │  
 │ │       < >       Lexar Jumpshot Compact Flash Reader                                │ │  
 │ │       < >       Olympus MAUSB-10/Fuji DPC-R1 support                               │ │  
 │ │       < >       Support OneTouch Button on Maxtor Hard Drives                      │ │  
 │ │       < >       Support for Rio Karma music player                                 │ │  
 │ │       < >       SAT emulation on Cypress USB/ATA Bridge with ATACB                 │ │  
 │ │       < >       USB ENE card reader support                                        │ │  
 │ │       < >       USB Attached SCSI                                                  │ │  
 │ │               *** USB Imaging devices ***                                          │ │  
 │ │       < >     USB Mustek MDC800 Digital Camera support                             │ │  
 │ │       < >     Microtek X6USB scanner support                                       │ │  
 │ │       < >     USB/IP support                                                       │ │  
 │ │       < >   Inventra Highspeed Dual Role Controller (TI, ADI, ...)                 │ │  
 │ │       <*>   DesignWare USB3 DRD Core Support                                       │ │  
 │ │               DWC3 Mode Selection (Dual Role mode)  --->                           │ │  
 │ │               *** Platform Glue Driver Support ***                                 │ │  
 │ │       <*>     Texas Instruments OMAP5 and similar Platforms                        │ │  
 │ │               *** Debugging features ***                                           │ │  
 │ │       [ ]     Enable Debugging Messages                                            │ │  
 │ └───────┴(+)─────────────────────────────────────────────────────────────────────────┘ │ 
 ├────────────────────────────────────────────────────────────────────────────────────────┤  
 │                <Select>    < Exit >    < Help >    < Save >    < Load >                │  
 └────────────────────────────────────────────────────────────────────────────────────────┘

In the kernel configuration menu choose Device Drivers ---> PHY subsystem submenu and enable:

  • OMAP USB2 PHY Driver
  ┌────────────────────────────── PHY Subsystem ──────────────────────────────┐
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  
  │ │    -*- PHY Core                                                       │ │  
  │ │    < > TI dm816x USB PHY driver                                       │ │  
  │ │    < > Marvell USB HSIC 28nm PHY Driver                               │ │  
  │ │    < > Marvell USB 2.0 28nm PHY Driver                                │ │  
  │ │    -*- OMAP CONTROL PHY Driver                                        │ │  
  │ │    <*> OMAP USB2 PHY Driver                                           │ │  
  │ │    < > TI PIPE3 PHY Driver                                            │ │  
  │ │    < > Broadcom Kona USB2 PHY Driver                                  │ │  
  │ └───────────────────────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────────────┤  
  │         <Select>    < Exit >    < Help >    < Save >    < Load >          │  
  └───────────────────────────────────────────────────────────────────────────┘  

MMC/SDIO support

In the kernel configuration menu choose Device Drivers ---> MMC/SD/SDIO card support submenu and enable:

  • TI OMAP High Speed Multimedia Card Interface support
  ┌─────────────────────────────── MMC/SD/SDIO card support ───────────────────────────────┐
  │ ┌────────────────────────────────────────────────────────────────────────────────────┐ │  
  │ │       --- MMC/SD/SDIO card support                                                 │ │  
  │ │       [ ]   MMC debugging                                                          │ │  
  │ │       [ ]   MMC host clock gating                                                  │ │  
  │ │             *** MMC/SD/SDIO Card Drivers ***                                       │ │  
  │ │       <*>   MMC block device driver                                                │ │  
  │ │       (8)     Number of minors per block device                                    │ │  
  │ │       [*]     Use bounce buffer for simple hosts                                   │ │  
  │ │       <*>   SDIO UART/GPS class support                                            │ │  
  │ │       < >   MMC host test driver                                                   │ │  
  │ │             *** MMC/SD/SDIO Host Controller Drivers ***                            │ │  
  │ │       < >   Secure Digital Host Controller Interface support                       │ │  
  │ │       < >   TI OMAP Multimedia Card Interface support                              │ │  
  │ │       <*>   TI OMAP High Speed Multimedia Card Interface support                   │ │  
  │ │       < >   Synopsys DesignWare Memory Card Interface                              │ │  
  │ │       < >   VUB300 USB to SDIO/SD/MMC Host Controller support                      │ │  
  │ │       < >   USB SD Host Controller (USHC) support                                  │ │  
  │ │       < >   Renesas USDHI6ROL0 SD/SDIO Host Controller support                     │ │  
  │ │       < >   MediaTek SD/MMC Card Interface support                                 │ │  
  │ │                                                                                    │ │  
  │ └────────────────────────────────────────────────────────────────────────────────────┘ │  
  ├────────────────────────────────────────────────────────────────────────────────────────┤  
  │                <Select>    < Exit >    < Help >    < Save >    < Load >                │  
  └────────────────────────────────────────────────────────────────────────────────────────┘ 

NAND support

In the kernel configuration menu choose Device Drivers ---> Memory Technology Device (MTD) support ---> NAND Device Support submenu and enable:

  • NAND Flash device on OMAP2, OMAP3 and OMAP4
  • Support hardware based BCH error correction
  • Support software BCH ECC
  ┌─────────────────────────── NAND Device Support ───────────────────────────┐
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  
  │ │    --- NAND Device Support                                            │ │  
  │ │    [*]   Support software BCH ECC                                     │ │  
  │ │    < >   Support Denali NAND controller                               │ │  
  │ │    < >   GPIO assisted NAND Flash driver                              │ │  
  │ │    <*>   NAND Flash device on OMAP2, OMAP3 and OMAP4                  │ │  
  │ │    [*]     Support hardware based BCH error correction                │ │  
  │ │    < >   DiskOnChip 2000, Millennium and Millennium Plus (NAND reimple│ │  
  │ │    < >   Support for DiskOnChip G4                                    │ │  
  │ │    < >   Support for NAND Flash Simulator                             │ │  
  │ │    < >   Broadcom STB NAND controller                                 │ │  
  │ │    < >   Support for generic platform NAND driver                     │ │  
  │ │    < >   Support for NAND controller on Hisilicon SoC Hip04           │ │  
  │ └───────────────────────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────────────┤  
  │         <Select>    < Exit >    < Help >    < Save >    < Load >          │  
  └───────────────────────────────────────────────────────────────────────────┘  

SPI support

In the kernel configuration menu choose Device Drivers ---> SPI support submenu and enable:

  • McSPI driver for OMAP
  ┌─────────────────────────────── SPI support ───────────────────────────────┐
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  
  │ │    --- SPI support                                                    │ │  
  │ │          *** SPI Master Controller Drivers ***                        │ │  
  │ │    < >   Altera SPI Controller                                        │ │  
  │ │    < >   Utilities for Bitbanging SPI masters                         │ │  
  │ │    < >   Cadence SPI controller                                       │ │  
  │ │    < >   GPIO-based bitbanging SPI Master                             │ │  
  │ │    < >   Freescale SPI controller and Aeroflex Gaisler GRLIB SPI contr│ │  
  │ │    < >   OpenCores tiny SPI                                           │ │  
  │ │    <*>   McSPI driver for OMAP                                        │ │  
  │ │    < >   DRA7xxx QSPI controller support                              │ │  
  │ │    < >   Rockchip SPI controller driver                               │ │  
  │ └────┴(+)───────────────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────────────┤  
  │         <Select>    < Exit >    < Help >    < Save >    < Load >          │  
  └───────────────────────────────────────────────────────────────────────────┘  
SPI-flash support

In the kernel configuration menu choose Device Drivers ---> Memory Technology Device (MTD) support submenu and enable:

  • SPI-NOR device support
  ┌───────────────── Memory Technology Device (MTD) support ──────────────────┐
  │ ┌────^(-)───────────────────────────────────────────────────────────────┐ │  
  │ │    [ ]   Retain master device when partitioned                        │ │  
  │ │          RAM/ROM/Flash chip drivers  --->                             │ │  
  │ │          Mapping drivers for chip access  --->                        │ │  
  │ │          Self-contained MTD device drivers  --->                      │ │  
  │ │    [ ]   NAND ECC Smart Media byte order                              │ │  
  │ │    <*>   NAND Device Support  --->                                    │ │  
  │ │    <*>   OneNAND Device Support  --->                                 │ │  
  │ │          LPDDR & LPDDR2 PCM memory drivers  --->                      │ │  
  │ │    <*>   SPI-NOR device support  --->                                 │ │  
  │ │    <*>   Enable UBI - Unsorted block images  --->                     │ │  
  │ └───────────────────────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────────────┤  
  │         <Select>    < Exit >    < Help >    < Save >    < Load >          │  
  └───────────────────────────────────────────────────────────────────────────┘  

In the kernel configuration menu choose Device Drivers ---> Memory Technology Device (MTD) support ---> Self-contained MTD device drivers submenu and enable:

  • Support most SPI Flash chips (AT26DF, M25P, W25X, ...)
  ┌──────────────────── Self-contained MTD device drivers ────────────────────┐
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  
  │ │    < > Support for AT45xxx DataFlash                                  │ │  
  │ │    <*> Support most SPI Flash chips (AT26DF, M25P, W25X, ...)         │ │  
  │ │    < > Support SST25L (non JEDEC) SPI Flash chips                     │ │  
  │ │    < > Uncached system RAM                                            │ │  
  │ │    < > Physical system RAM                                            │ │  
  │ │    < > Test driver using RAM                                          │ │  
  │ │    < > MTD using block device                                         │ │  
  │ │        *** Disk-On-Chip Device Drivers ***                            │ │  
  │ │    < > M-Systems Disk-On-Chip G3                                      │ │  
  │ │                                                                       │ │  
  │ └───────────────────────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────────────┤  
  │         <Select>    < Exit >    < Help >    < Save >    < Load >          │  
  └───────────────────────────────────────────────────────────────────────────┘  

UART support

In the kernel configuration menu choose Device Drivers ---> Character devices ---> Serial drivers submenu and enable:

  • OMAP serial port support
  • Console on OMAP serial port
  ┌─────────────────────────────────── Serial drivers ───────────────────────────────────┐
  │ ┌──────^(-)────────────────────────────────────────────────────────────────────────┐ │  
  │ │      < > MAX3100 support                                                         │ │  
  │ │      < > MAX310X support                                                         │ │  
  │ │      <*> Serial port on Open Firmware platform bus                               │ │  
  │ │      <*> OMAP serial port support                                                │ │  
  │ │      [*]   Console on OMAP serial port                                           │ │  
  │ │      < > SCCNXP serial port support                                              │ │  
  │ │      < > SC16IS7xx serial support                                                │ │  
  │ │      < > Broadcom BCM63xx/BCM33xx UART support                                   │ │  
  │ │      < > Altera JTAG UART support                                                │ │  
  │ │      < > Altera UART support                                                     │ │  
  │ │      < > SPI protocol driver for Infineon 6x60 modem (EXPERIMENTAL)              │ │  
  │ │      < > Cadence (Xilinx Zynq) UART support                                      │ │  
  │ │      < > ARC UART driver support                                                 │ │  
  │ │      < > Freescale lpuart serial port support                                    │ │  
  │ │      < > Conexant Digicolor CX92xxx USART serial port support                    │ │  
  │ │      < > ST ASC serial port support                                              │ │  
  │ │      < > STMicroelectronics STM32 serial port support                            │ │  
  │ └──────────────────────────────────────────────────────────────────────────────────┘ │  
  ├──────────────────────────────────────────────────────────────────────────────────────┤  
  │               <Select>    < Exit >    < Help >    < Save >    < Load >               │  
  └──────────────────────────────────────────────────────────────────────────────────────┘

Ethernet support

CM-T43 features an ethernet controller that can operate as a Layer-2 3-port ethernet switch. Alternatively, the ethernet controller can be setup in dualEMAC mode, which is the default on CM-T43. The mode of operation can be changed to ethernet switch by editing the device tree.

In the kernel configuration menu choose Device Drivers ---> Network device support ---> Ethernet driver support submenu and enable:

  • Texas Instruments (TI) devices
  • TI DaVinci MDIO Support
  • TI DaVinci CPDMA Support
  • TI CPSW Switch Phy sel Support
  • TI CPSW ALE Support
  • TI CPSW Switch Support
  ┌────────────────────────────── Ethernet driver support ───────────────────────────────┐
  │ ┌──────^(-)────────────────────────────────────────────────────────────────────────┐ │  
  │ │      [*]   Rocker devices                                                        │ │  
  │ │      [ ]   Samsung Ethernet devices                                              │ │  
  │ │      [ ]   SEEQ devices                                                          │ │  
  │ │      [*]   SMC (SMSC)/Western Digital devices                                    │ │  
  │ │      <*>     SMC 91C9x/91C1xxx support                                           │ │  
  │ │      < >     SMSC LAN911[5678] support                                           │ │  
  │ │      <*>     SMSC LAN911x/LAN921x families embedded ethernet support             │ │  
  │ │      [ ]   STMicroelectronics devices                                            │ │  
  │ │      [*]   Texas Instruments (TI) devices                                        │ │  
  │ │      -*-     TI DaVinci MDIO Support                                             │ │  
  │ │      -*-     TI DaVinci CPDMA Support                                            │ │  
  │ │      -*-     TI CPSW Switch Phy sel Support                                      │ │  
  │ │      -*-     TI CPSW ALE Support                                                 │ │  
  │ │      <*>     TI CPSW Switch Support                                              │ │  
  │ │      [ ]       TI Common Platform Time Sync (CPTS) Support                       │ │  
  │ │      [ ]   VIA devices                                                           │ │  
  │ │      [ ]   WIZnet devices                                                        │ │  
  │ └──────────────────────────────────────────────────────────────────────────────────┘ │  
  ├──────────────────────────────────────────────────────────────────────────────────────┤  
  │               <Select>    < Exit >    < Help >    < Save >    < Load >               │  
  └──────────────────────────────────────────────────────────────────────────────────────┘  

In the kernel configuration menu choose Device Drivers ---> Network device support ---> PHY Device support and infrastructure submenu and enable:

  • Drivers for Atheros AT803X PHYs
  ┌────────────── PHY Device support and infrastructure ──────────────┐
  │ ┌───────────────────────────────────────────────────────────────┐ │  
  │ │    --- PHY Device support and infrastructure                  │ │  
  │ │          *** MII PHY device drivers ***                       │ │  
  │ │    <*>   Drivers for Atheros AT803X PHYs                      │ │  
  │ │    < >   Drivers for the AMD PHYs                             │ │  
  │ │    < >   Drivers for Marvell PHYs                             │ │  
  │ │    < >   Drivers for Davicom PHYs                             │ │  
  │ │    < >   Drivers for Quality Semiconductor PHYs               │ │  
  │ │    < >   Drivers for the Intel LXT PHYs                       │ │  
  │ │    < >   Drivers for the Cicada PHYs                          │ │  
  │ │    < >   Drivers for the Vitesse PHYs                         │ │  
  │ └────┴(+)───────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────┤  
  │     <Select>    < Exit >    < Help >    < Save >    < Load >      │  
  └───────────────────────────────────────────────────────────────────┘  

Display support

CM-T43 has a single parallel RGB display interface which drives multiple display connectors, including: a parallel RGP LCD + touchscreen connector, a DVI connector, and an LVDS connector. Since all 3 connectors are driven by the same interface, they cannot simultaneously output images at different resolutions.

In the kernel configuration menu choose Device Drivers ---> Graphics support ---> Frame buffer Devices ---> OMAP2+ Display Subsystem support submenu and enable:

  • DPI support
  • OMAP2+ frame buffer support
  ┌──────────────────── OMAP2+ Display Subsystem support ─────────────────────┐
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  
  │ │    --- OMAP2+ Display Subsystem support                               │ │  
  │ │    [ ]   Debug support                                                │ │  
  │ │    [*]   Debugfs filesystem support                                   │ │  
  │ │    [ ]     Collect DSS IRQ statistics                                 │ │  
  │ │    [*]   DPI support                                                  │ │  
  │ │    [ ]   VENC support                                                 │ │  
  │ │    [ ]   HDMI support for OMAP4                                       │ │  
  │ │    [ ]   HDMI support for OMAP5                                       │ │  
  │ │    [ ]   SDI support                                                  │ │  
  │ │    [ ]   DSI support                                                  │ │  
  │ │    (0)   Minimum FCK/PCK ratio (for scaling)                          │ │  
  │ │    [ ]   Sleep 20ms after VENC reset                                  │ │  
  │ │    <M>   OMAP2+ frame buffer support  --->                            │ │  
  │ │          OMAP Display Device Drivers (new device model)  --->         │ │  
  │ └───────────────────────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────────────┤  
  │         <Select>    < Exit >    < Help >    < Save >    < Load >          │  
  └───────────────────────────────────────────────────────────────────────────┘  

In the kernel configuration menu choose Device Drivers ---> Graphics support ---> Frame buffer Devices ---> OMAP2+ Display Subsystem support --- OMAP Display Device Driver submenu and enable:

  • TFP410 DPI to DVI Encoder
  • DVI Connector
  ┌───────────── OMAP Display Device Drivers (new device model) ──────────────┐
  │ ┌───────────────────────────────────────────────────────────────────────┐ │  
  │ │    < > OPA362 external analog amplifier                               │ │  
  │ │    <M> TFP410 DPI to DVI Encoder                                      │ │  
  │ │    < > TPD12S015 HDMI ESD protection and level shifter                │ │  
  │ │    <M> DVI Connector                                                  │ │  
  │ │    < > HDMI Connector                                                 │ │  
  │ │    < > Analog TV Connector                                            │ │  
  │ │    <M> Generic DPI panel                                              │ │  
  │ │    < > Generic DSI Command Mode Panel                                 │ │  
  │ │    <M> ACX565AKM Panel                                                │ │  
  │ │    <M> LG.Philips LB035Q02 LCD Panel                                  │ │  
  │ │    <M> Sharp LS037V7DW01 LCD Panel                                    │ │  
  │ │    <M> TPO TD028TTEC1 LCD Panel                                       │ │  
  │ │    <M> TPO TD043MTEA1 LCD Panel                                       │ │  
  │ │    <M> NEC NL8048HL11 Panel                                           │ │  
  │ └───────────────────────────────────────────────────────────────────────┘ │  
  ├───────────────────────────────────────────────────────────────────────────┤  
  │         <Select>    < Exit >    < Help >    < Save >    < Load >          │  
  └───────────────────────────────────────────────────────────────────────────┘  

Wifi support

The WiFi chip is connected to the SoC via SDIO interface, so make sure you have MMC support turned on. Also, make sure wireless support is turned on under Network support.

In the kernel configuration menu choose Device Drivers ---> Network device support ---> Wireless LAN submenu and enable:

  • Marvell WiFi-Ex Driver
  • Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897
  ┌─────────────────────────────────────── Wireless LAN ───────────────────────────────────────┐
  │ ┌─────────^(-)───────────────────────────────────────────────────────────────────────────┐ │  
  │ │         <M>   Marvell 8xxx Libertas WLAN driver support                                │ │  
  │ │         <M>     Marvell Libertas 8388 USB 802.11b/g cards                              │ │  
  │ │         <M>     Marvell Libertas 8385/8686/8688 SDIO 802.11b/g cards                   │ │  
  │ │         < >     Marvell Libertas 8686 SPI 802.11b/g cards                              │ │  
  │ │         [*]     Enable full debugging output in the Libertas module.                   │ │  
  │ │         [ ]     Enable mesh support                                                    │ │  
  │ │         < >   Softmac Prism54 support                                                  │ │  
  │ │         < >   Ralink driver support  ----                                              │ │  
  │ │         [ ]   Mediatek Wireless LAN support  ----                                      │ │  
  │ │         <M>   Realtek rtlwifi family of devices  --->                                  │ │  
  │ │         [*]   TI Wireless LAN support  --->                                            │ │  
  │ │         < >   ZyDAS ZD1211/ZD1211B USB-wireless support                                │ │  
  │ │         <M>   Marvell WiFi-Ex Driver                                                   │ │  
  │ │         <M>     Marvell WiFi-Ex Driver for SD8786/SD8787/SD8797/SD8887/SD8897          │ │  
  │ │         <M>     Marvell WiFi-Ex Driver for USB8766/8797/8897                           │ │  
  │ │         < >   CW1200 WLAN support                                                      │ │  
  │ │         < >   Redpine Signals Inc 91x WLAN driver support                              │ │  
  │ └────────────────────────────────────────────────────────────────────────────────────────┘ │  
  ├────────────────────────────────────────────────────────────────────────────────────────────┤  
  │                  <Select>    < Exit >    < Help >    < Save >    < Load >                  │  
  └────────────────────────────────────────────────────────────────────────────────────────────┘  
    

Bluetooth support

The Bluetooth chip is connected to the SoC via SDIO interface, so make sure you have MMC support turned on. Also, make sure bluetooth support is turned on under Network support ---> Bluetooth subsystem support.

In the kernel configuration menu choose Networking support ---> Bluetooth subsystem support ---> Bluetooth device drivers submenu and enable:

  • HCI SDIO driver
  • HCI UART driver
  • Marvell Bluetooth driver support
  • Marvell BT-over-SDIO driver
  ┌───────────────────────────── Bluetooth device drivers ──────────────────────────────┐
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │  
  │ │     <M> HCI USB driver                                                          │ │  
  │ │     [*]   Broadcom protocol support                                             │ │  
  │ │     [*]   Realtek protocol support                                              │ │  
  │ │     <M> HCI SDIO driver                                                         │ │  
  │ │     <M> HCI UART driver                                                         │ │  
  │ │     [*]   UART (H4) protocol support                                            │ │  
  │ │     [*]   BCSP protocol support                                                 │ │  
  │ │     [ ]   Atheros AR300x serial support                                         │ │  
  │ │     [*]   HCILL protocol support                                                │ │  
  │ │     [ ]   Three-wire UART (H5) protocol support                                 │ │  
  │ │     [ ]   Intel protocol support                                                │ │  
  │ │     [ ]   Broadcom protocol support                                             │ │  
  │ │     <M> HCI BCM203x USB driver                                                  │ │  
  │ │     <M> HCI BPA10x USB driver                                                   │ │  
  │ │     < > HCI BlueFRITZ! USB driver                                               │ │  
  │ │     < > HCI VHCI (Virtual HCI device) driver                                    │ │  
  │ │     <M> Marvell Bluetooth driver support                                        │ │  
  │ │     <M>   Marvell BT-over-SDIO driver                                           │ │  
  │ │     <M> Atheros firmware download driver                                        │ │  
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────────────────┤  
  │              <Select>    < Exit >    < Help >    < Save >    < Load >               │  
  └─────────────────────────────────────────────────────────────────────────────────────┘

Audio support

In the kernel configuration menu choose Device Drivers ---> Sound card support ---> Advanced Linux Sound Architecture ---> ALSA for SoC audio support submenu and enable:

  • SoC Audio for Texas Instruments chips using eDMA
  • Multichannel Audio Serial Port (McASP) support
  • SoC Audio for the Texas Instruments OMAP chips
  • ASoC Simple sound card support
  ┌──────────────────────────── ALSA for SoC audio support ─────────────────────────────┐
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │  
  │ │     --- ALSA for SoC audio support                                              │ │  
  │ │     < >   SoC Audio for the Atmel System-on-Chip                                │ │  
  │ │     <M>   SoC Audio for Texas Instruments chips using eDMA                      │ │  
  │ │     <M>   Multichannel Audio Serial Port (McASP) support                        │ │  
  │ │     < >   SoC Audio for the AM33XX chip based boards                            │ │  
  │ │     < >   Synopsys I2S Device Driver                                            │ │  
  │ │           SoC Audio for Freescale CPUs  --->                                    │ │  
  │ │     <M>   SoC Audio for the Texas Instruments OMAP chips                        │ │  
  │ │     < >   HDMI audio support for OMAP4+ based SoCs                              │ │  
  │ │     < >   SoC Audio support for Nokia N900 (RX-51)                              │ │  
  │ │     <M>   SoC Audio support for TI SoC based boards with twl4030 codec          │ │  
  │ │     < >   ASoC support for QCOM platforms                                       │ │  
  │ │     < >   XTFPGA I2S master                                                     │ │  
  │ │           CODEC drivers  --->                                                   │ │  
  │ │     <M>   ASoC Simple sound card support                                        │ │  
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────────────────┤  
  │              <Select>    < Exit >    < Help >    < Save >    < Load >               │  
  └─────────────────────────────────────────────────────────────────────────────────────┘

Under the CODEC drivers submenu of the same section enable:

  • Wolfson Microelectronics WM8731 CODEC
  ┌─────────────────────────────────── CODEC drivers ───────────────────────────────────┐
  │ ┌─────^(-)────────────────────────────────────────────────────────────────────────┐ │  
  │ │     < > Wolfson Microelectronics WM8523 CODEC                                   │ │  
  │ │     < > Wolfson Microelectronics WM8711 CODEC                                   │ │  
  │ │     < > Wolfson Microelectronics WM8728 DAC                                     │ │  
  │ │     <M> Wolfson Microelectronics WM8731 CODEC                                   │ │  
  │ │     < > Wolfson Microelectronics WM8737 ADC                                     │ │  
  │ │     < > Wolfson Microelectronics WM8737 DAC                                     │ │  
  │ │     < > Wolfson Microelectronics WM8750 CODEC                                   │ │  
  │ │     < > Wolfson Microelectronics WM8753 CODEC                                   │ │  
  │ │     < > Wolfson Microelectronics WM8770 CODEC                                   │ │  
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────────────────┤  
  │              <Select>    < Exit >    < Help >    < Save >    < Load >               │  
  └─────────────────────────────────────────────────────────────────────────────────────┘  

CAN bus support

Make sure to enable generic CAN bus support under Networking support ---> CAN bus subsystem support.

In the kernel configuration menu choose Networking support ---> CAN bus subsystem support ---> CAN Device Drivers submenu and enable:

  • Platform CAN drivers with Netlink support
  • Bosch C_CAN/D_CAN devices
    • Generic Platform Bus based C_CAN/D_CAN driver
  ┌──────────────────────────────── CAN Device Drivers ─────────────────────────────────┐
  │ ┌─────────────────────────────────────────────────────────────────────────────────┐ │  
  │ │     < > Virtual Local CAN Interface (vcan)                                      │ │  
  │ │     < > Serial / USB serial CAN Adaptors (slcan)                                │ │  
  │ │     <M> Platform CAN drivers with Netlink support                               │ │  
  │ │     [*]   CAN bit-timing calculation                                            │ │  
  │ │     [ ]   Enable LED triggers for Netlink based drivers                         │ │  
  │ │     < >   TI High End CAN Controller                                            │ │  
  │ │     < >   Support for Freescale FLEXCAN based chips                             │ │  
  │ │     < >   Aeroflex Gaisler GRCAN and GRHCAN CAN devices                         │ │  
  │ │     < >   Renesas R-Car CAN controller                                          │ │  
  │ │     < >   Philips/NXP SJA1000 devices  ----                                     │ │  
  │ │     <M>   Bosch C_CAN/D_CAN devices  --->                                       │ │  
  │ │     < >   Bosch M_CAN devices                                                   │ │  
  │ │     < >   Bosch CC770 and Intel AN82527 devices  ----                           │ │  
  │ │           CAN SPI interfaces  --->                                              │ │  
  │ │           CAN USB interfaces  --->                                              │ │  
  │ │     < >   Softing Gmbh CAN generic support                                      │ │  
  │ │     [ ] CAN devices debugging messages                                          │ │  
  │ └─────────────────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────────────────┤  
  │              <Select>    < Exit >    < Help >    < Save >    < Load >               │  
  └─────────────────────────────────────────────────────────────────────────────────────┘  

See also