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

From Compulab Mediawiki
Jump to: navigation, search
(Controller–area network (CAN) support)
(LCD, DVI, HDMI and LVDS support)
Line 58: Line 58:
 
<pre>
 
<pre>
 
cd /home/development/cm-fx6/kernel/linux-cm-fx6
 
cd /home/development/cm-fx6/kernel/linux-cm-fx6
patch -p1 < /path/to/cm-fx6-linux/kernel/linux-3.0.35-cm-fx6-6.2.patch
+
patch -p1 < /path/to/cm-fx6-linux/kernel/linux-3.0.35-cm-fx6-6.3.patch
 
</pre>
 
</pre>
  
Line 75: Line 75:
 
<pre>
 
<pre>
 
cd /home/development/cm-fx6/kernel/linux-cm-fx6
 
cd /home/development/cm-fx6/kernel/linux-cm-fx6
git apply /path/to/cm-fx6-linux/kernel/linux-3.0.35-cm-fx6-6.2.patch
+
git apply /path/to/cm-fx6-linux/kernel/linux-3.0.35-cm-fx6-6.3.patch
 
</pre>
 
</pre>
  
Line 96: Line 96:
 
This file includes default setup of multi-functional pins, registration of the devices integrated in the CM-FX6 module and definitions of platform-specific configuration for these devices.
 
This file includes default setup of multi-functional pins, registration of the devices integrated in the CM-FX6 module and definitions of platform-specific configuration for these devices.
  
=== LCD, DVI, HDMI and LVDS support ===
+
=== LCD, DSI, DVI, HDMI and LVDS support ===
  
CM-FX6 module can be used with four display interfaces: LCD or DVI, HDMI and LVDS.
+
CM-FX6 module can be used with five display interfaces: LCD, DSI, DVI, HDMI and LVDS.
CM-FX6 Evaluation Kit is equipped with the DataImage SCF0403 LCD touch panel and it is used as the default video output device.
+
CM-FX6 Evaluation Kit is equipped with the Startek KD050 / Hannstar HSD050 LCD touch panel and it is used as the default video output device.
Both LCD and DVI are sharing the same display interface (DI0) and therefore only one of them can be used at the same time.
+
LCD, DSI and DVI are sharing the same display interface (DI0) and therefore only one of them can be used at the same time.
HDMI and LVDS use other display interfaces and therefore can be used at the same time with each other and with either DVI or LCD interfaces.
+
HDMI and LVDS use other display interfaces and therefore can be used at the same time with each other and with either DVI, DSI or LCD interfaces.
  
 
==== Image Processing Unit (IPU) ====
 
==== Image Processing Unit (IPU) ====
Line 172: Line 172:
 
<pre>
 
<pre>
 
cm_fx6_lcd=dataimage
 
cm_fx6_lcd=dataimage
 +
</pre>
 +
 +
==== DSI ====
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Graphics support''' submenu and enable:
 +
* MXC Framebuffer support
 +
* MXC MIPI_DSI
 +
* TRULY WVGA Panel
 +
 +
┌─────────────────────────────── Graphics support ───────────────────────────────┐
 +
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │ 
 +
│ │    <*> MXC Framebuffer support                                            │ │ 
 +
│ │    <*>  MXC EDID support                                                  │ │ 
 +
│ │    <*>  Synchronous Panel Framebuffer                                    │ │ 
 +
│ │    < >    Epson VGA Panel                                                │ │ 
 +
│ │    <*>    MXC LDB                                                        │ │ 
 +
│ │    <*>    MXC MIPI_DSI                                                    │ │ 
 +
│ │    <*>      TRULY WVGA Panel                                              │ │ 
 +
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │ 
 +
├────────────────────────────────────────────────────────────────────────────────┤ 
 +
│                        <Select>    < Exit >    < Help >                        │ 
 +
└────────────────────────────────────────────────────────────────────────────────┘ 
 +
 +
In the kernel configuration menu choose '''Device Drivers ---> Graphics support ---> Backlight & LCD device support''' submenu and enable:
 +
* Lowlevel LCD controls
 +
 +
┌──────────────────────── Backlight & LCD device support ────────────────────────┐
 +
│ ┌────────────────────────────────────────────────────────────────────────────┐ │ 
 +
│ │    --- Backlight & LCD device support                                      │ │ 
 +
│ │    <*>  Lowlevel LCD controls                                            │ │ 
 +
│ │    < >    Epson L4F00242T03 LCD                                          │ │ 
 +
│ │    < >    Samsung LMS283GF05 LCD                                          │ │ 
 +
│ │    < >    Samsung LTV350QV LCD Panel                                      │ │ 
 +
│ │    < >    Toppoly TDO24M  and TDO35S LCD Panels support                  │ │ 
 +
│ │    <*>    DataImage SCF0403 LCD Panel support                            │ │ 
 +
│ │    < >    VGG2432A4 LCM device support                                    │ │ 
 +
│ │    < >    Platform LCD controls                                          │ │ 
 +
│ │    < >    S6E63M0 AMOLED LCD Driver                                      │ │ 
 +
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │ 
 +
├────────────────────────────────────────────────────────────────────────────────┤ 
 +
│                        <Select>    < Exit >    < Help >                        │ 
 +
└────────────────────────────────────────────────────────────────────────────────┘ 
 +
* Since TRULY MIPI WVGA Panel is not the default LCD, there is a special kernel command line argument required:
 +
<pre>
 +
cm_fx6_lcd=truly
 
</pre>
 
</pre>
  

Revision as of 08:51, 15 December 2014

Overview

The Linux kernel for the CompuLab CM-FX6 System-on-Module / Computer-on-Module provides support for on-board peripherals and abstracts the functionality provided by the hardware. Current support coverage is specified at O/S support coverage map page. 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-FX6 modules.

Kernel command line

The Linux kernel for CM-FX6 is shipped with built-in command line parameters:

console=ttymxc3,115200 root=/dev/mmcblk0p1 rootwait

The default kernel command line defines primary console and root device.

Setting U-Boot bootargs environment variable overrides default kernel command line and can be used to set desired kernel parameters.

Building kernel for CM-FX6

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 ("EABI")

  • Pre-built toolchain:
  • Tools for creating cross-compilers:
    • Crosstool-ng: Builds a cross-compiler from source. Non-distribution specific.
    • Crossdev: Gentoo's cross-compiler builder. Needs Gentoo.

U-Boot mkimage tool

U-Boot mkimage utility is required in order to create kernel images that can be loaded by the CM-FX6 bootloader. You can download prebuilt mkimage binary or build it yourself:

mkdir ~/tmp
cd tmp
wget ftp://ftp.denx.de/pub/u-boot/u-boot-latest.tar.bz2
tar -xjvf u-boot-latest.tar.bz2
cd u-boot-20xx.xx
touch include/config.{h,mk}
make tools
sudo install tools/mkimage /usr/local/bin

Getting kernel sources

There are two ways to get Linux kernel sources that can be used as a baseline for CM-FX6 kernel. You can create a copy of Linux git tree or download a snapshot and extract it. We assume that you have created /home/development/cm-fx6/kernel directory for CM-FX6 kernel development.

Snapshot download

  • Download v3.0.35 snapshot with your web browser.
  • Extract the downloaded archive linux-3.0.35.tar.bz2
cd /home/development/cm-fx6/kernel
tar xvf /path/to/downloaded/linux-3.0.35.tar.bz2
mv linux-3.0.35 linux-cm-fx6
This will create /home/development/cm-fx6/kernel/linux-cm-fx6 directory containing Linux kernel tree.
  • Apply the CM-FX6 patch
cd /home/development/cm-fx6/kernel/linux-cm-fx6
patch -p1 < /path/to/cm-fx6-linux/kernel/linux-3.0.35-cm-fx6-6.3.patch

Git clone

  • Install git version control system.
  • Create a clone of Linux kernel tree
cd /home/development/cm-fx6/kernel
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-cm-fx6
  • Create a branch for CM-FX6 development. The CM-FX6 patches are generated vs. v3.0.35 tag (839cf7a236278ae358ff12141a168c0982fa0cd9 commit) in the linux-stable tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
git checkout -b cm-fx6-dev v3.0.35
  • Apply the CM-FX6 patch
cd /home/development/cm-fx6/kernel/linux-cm-fx6
git apply /path/to/cm-fx6-linux/kernel/linux-3.0.35-cm-fx6-6.3.patch

Building the kernel

export ARCH=arm
export CROSS_COMPILE=arm-none-linux-eabi-
make cm_fx6_defconfig
make menuconfig
make && make uImage && \
     INSTALL_MOD_PATH=/home/development/cm-fx6/rootfs make modules_install

In the example above, the Linux kernel image (uImage) will be created in /home/development/cm-fx6/kernel/linux-cm-fx6/arch/arm/boot, and the loadable kernel modules will be installed into the /home/development/cm-fx6/rootfs/lib/modules directory.

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

Basic platform support

The CM-FX6 basic platform support is implemented in the arch/arm/mach-mx6/board-cm-fx6.c file of Linux kernel source tree. This file includes default setup of multi-functional pins, registration of the devices integrated in the CM-FX6 module and definitions of platform-specific configuration for these devices.

LCD, DSI, DVI, HDMI and LVDS support

CM-FX6 module can be used with five display interfaces: LCD, DSI, DVI, HDMI and LVDS. CM-FX6 Evaluation Kit is equipped with the Startek KD050 / Hannstar HSD050 LCD touch panel and it is used as the default video output device. LCD, DSI and DVI are sharing the same display interface (DI0) and therefore only one of them can be used at the same time. HDMI and LVDS use other display interfaces and therefore can be used at the same time with each other and with either DVI, DSI or LCD interfaces.

Image Processing Unit (IPU)

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

  • Image Processing Unit Driver
┌──────────────────────────────── Graphics support ──────────────────────────────┐
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │
│ │    [*] Image Processing Unit Driver                                        │ │
│ │        MXC SSI support  --->                                               │ │
│ │        MXC Digital Audio Multiplexer support  --->                         │ │
│ │        MXC PMIC support  --->                                              │ │
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘

Parallel LCD interface

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

  • MXC Framebuffer support
    • MXC EDID support
    • Synchronous Panel Framebuffer
┌──────────────────────────────── Graphics support ──────────────────────────────┐
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │
│ │    <*> Lowlevel video output switch controls                               │ │
│ │    <*> Support for frame buffer devices  --->                              │ │
│ │    [*] Backlight & LCD device support  --->                                │ │
│ │        Display device support  --->                                        │ │
│ │    <*> MXC Framebuffer support                                             │ │
│ │    <*>   MXC EDID support                                                  │ │
│ │    <*>   Synchronous Panel Framebuffer                                     │ │
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘
Startek KD050 / Hannstar HSD050 LCD output

Since the Startek KD050 / Hannstar HSD050 LCD is the default video output device, neither compile settings, nor special kernel command line arguments required.

DataImage SCF0403 LCD output

In the kernel configuration menu choose Device Drivers ---> Graphics support ---> Backlight & LCD device support submenu and enable:

  • DataImage SCF0403 LCD Panels support
┌──────────────────────── Backlight & LCD device support ────────────────────────┐
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │
│ │    < >     ILI Technology ILI9320 controller support                       │ │
│ │    < >     Toppoly TDO24M  and TDO35S LCD Panels support                   │ │
│ │    <*>     DataImage SCF0403 LCD Panels support                            │ │
│ │    < >     VGG2432A4 LCM device support                                    │ │
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘
  • Since DataImage is not the default LCD, there is a special kernel command line argument required:
cm_fx6_lcd=dataimage

DSI

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

  • MXC Framebuffer support
  • MXC MIPI_DSI
  • TRULY WVGA Panel
┌─────────────────────────────── Graphics support ───────────────────────────────┐
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │  
│ │    <*> MXC Framebuffer support                                             │ │  
│ │    <*>   MXC EDID support                                                  │ │  
│ │    <*>   Synchronous Panel Framebuffer                                     │ │  
│ │    < >     Epson VGA Panel                                                 │ │  
│ │    <*>     MXC LDB                                                         │ │  
│ │    <*>     MXC MIPI_DSI                                                    │ │  
│ │    <*>       TRULY WVGA Panel                                              │ │  
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │  
├────────────────────────────────────────────────────────────────────────────────┤  
│                        <Select>    < Exit >    < Help >                        │  
└────────────────────────────────────────────────────────────────────────────────┘  

In the kernel configuration menu choose Device Drivers ---> Graphics support ---> Backlight & LCD device support submenu and enable:

  • Lowlevel LCD controls
┌──────────────────────── Backlight & LCD device support ────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────────┐ │  
│ │    --- Backlight & LCD device support                                      │ │  
│ │    <*>   Lowlevel LCD controls                                             │ │  
│ │    < >     Epson L4F00242T03 LCD                                           │ │  
│ │    < >     Samsung LMS283GF05 LCD                                          │ │  
│ │    < >     Samsung LTV350QV LCD Panel                                      │ │  
│ │    < >     Toppoly TDO24M  and TDO35S LCD Panels support                   │ │  
│ │    <*>     DataImage SCF0403 LCD Panel support                             │ │  
│ │    < >     VGG2432A4 LCM device support                                    │ │  
│ │    < >     Platform LCD controls                                           │ │  
│ │    < >     S6E63M0 AMOLED LCD Driver                                       │ │  
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │  
├────────────────────────────────────────────────────────────────────────────────┤  
│                        <Select>    < Exit >    < Help >                        │  
└────────────────────────────────────────────────────────────────────────────────┘  
  • Since TRULY MIPI WVGA Panel is not the default LCD, there is a special kernel command line argument required:
cm_fx6_lcd=truly

DVI

For the DVI interface to function properly, either LCD or DVI should be attached at the same time.
The following kernel parameter must be appended to the kernel command line:

video=mxcfb0:dev=dvi,1280x800M-32@50,if=RGB32

HDMI

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

  • MXC HDMI driver support
┌──────────────────────────────── Graphics support ──────────────────────────────┐
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │
│ │    < >   E-Ink Panel Framebuffer                                           │ │
│ │    < >   SIPIX Panel Framebuffer                                           │ │
│ │    < > Support MXC ELCDIF framebuffer                                      │ │
│ │    <*> MXC HDMI driver support                                             │ │
│ │        Console display driver support  --->                                │ │
│ │    [*] Bootup logo  --->                                                   │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘

In the default configuration the second frame buffer is routed to the HDMI interface. Therefore to use the HDMI on the second frame buffer, no special kernel arguments are required. For routing the first frame buffer to the HDMI interface, the following kernel parameter must be appended to the kernel command line:

video=mxcfb0:dev=hdmi,1920x1080M-32@50,if=RGB32

LVDS

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

  • MXC LDB
┌──────────────────────────────── Graphics support ──────────────────────────────┐
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │
│ │............................................................................│ │
│ │    <*> MXC Framebuffer support                                             │ │
│ │     <*>   MXC EDID support                                                 │ │
│ │     <*>   Synchronous Panel Framebuffer                                    │ │
│ │     < >     Epson VGA Panel                                                │ │
│ │     <*>     MXC LDB                                                        │ │
│ │     < >     MXC MIPI_DSI                                                   │ │
│ │............................................................................│ │
│ │    [*] Bootup logo  --->                                                   │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘
LVDS0

In the default configuration the third frame buffer is routed to the LVDS0 interface. Therefore to use the LVDS0 on the third frame buffer, no special kernel arguments are required.
For routing the first frame buffer to the LVDS0 interface, the following kernel parameter must be appended to the kernel command line:

video=mxcfb0:dev=ldb,1366x768M-18@60,if=RGB666
LVDS1

In the default configuration the fifth frame buffer is routed to the LVDS1 interface. Therefore to use the LVDS1 on the fifth frame buffer, no special kernel arguments are required.

Admolition note.png The LVDS1 port can't be routed to the first frame buffer using the kernel video parameter.

Touchscreen controllers support

CM-FX6 Evaluation Kit has two separate touch screen controllers: Himax (HX8520-C/HX8526-A) (assembled on the DataImage LCD) and TI TSC2046 (on-board of the CM-FX6 module). The Himax is a multi touch capacitive touchscreen connected to the I2C1 bus of the CM-FX6 module. The TI TSC2046 is a resistive touchscreen controller conneted to the SPI1 bus of the CM-FX6 module. To use the TI TSC2046 controller, the resistive touchscreen must be connected to one of the interfaces on the SB-FX6 base board.

Himax touchscreen controller

In the kernel configuration menu choose Device Drivers ---> Input device support ---> Touchscreens submenu and enable:

  • Himax touchscreen support
┌───────────────────────────────── Touchscreens ─────────────────────────────────┐
│ ┌────^(-)────────────────────────────────────────────────────────────────────┐ │
│ │    < >   TSC2007 based touchscreens                                        │ │
│ │    < >   W90P910 touchscreen driver                                        │ │
│ │    <M>   Himax touchscreen support                                         │ │
│ │    < >   Sitronix ST1232 touchscreen controllers                           │ │
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                        <Select>    < Exit >    < Help >                        │
└────────────────────────────────────────────────────────────────────────────────┘

TI TSC2046 touchscreen controller

In the kernel configuration menu choose Device Drivers ---> Input device support ---> Touchscreens submenu and enable:

  • ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens
┌───────────────────────────────── Touchscreens ─────────────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────────┐ │  
│ │    --- Touchscreens                                                        │ │  
│ │    <M>   ADS7846/TSC2046/AD7873 and AD(S)7843 based touchscreens           │ │  
│ │    < >   AD7877 based touchscreens                                         │ │  
│ │    < >   Analog Devices AD7879-1/AD7889-1 touchscreen interface            │ │  
│ └────v(+)────────────────────────────────────────────────────────────────────┘ │  
├────────────────────────────────────────────────────────────────────────────────┤  
│                        <Select>    < Exit >    < Help >                        │  
└────────────────────────────────────────────────────────────────────────────────┘  

Controller–area network (CAN) support

The Flexible Controller Area Network (FLEXCAN) module is a communication controller implementing the CAN protocol according to the CAN 2.0B protocol specification [Ref. 1]. The CAN protocol was primarily designed to be used as a vehicle serial data bus meeting the specific requirements of this field: real-time processing, reliable operation in the EMI environment of a vehicle, cost-effectiveness and required bandwidth. The FLEXCAN module is a full implementation of the CAN protocol specification, which supports both standard and extended message frames. 64 Message Buffers is supported.

To enable CAN functionality of CM-FX6, the following dependencies must be met:

  • CAN bus subsystem support enabled
  • Raw CAN Protocol support enabled
  • Broadcast Manager CAN Protocol support enabled
  • Platform CAN drivers with Netlink support
  • CAN bit-timing calculation enabled
  • Support for Freescale FLEXCAN based chips enabled

CAN bus subsystem support

In the kernel configuration menu choose Networking Support submenu and enable CAN bus subsystem support. You can choose to either build it into the kernel or to compile it as a module. In the last case the module name will be can.

 ┌────────────────────────────── Networking support ──────────────────────────────┐
 │ ┌────────────────────────────────────────────────────────────────────────────┐ │  
 │ │    --- Networking support                                                  │ │  
 │ │          Networking options  --->                                          │ │  
 │ │    [ ]   Amateur Radio support  --->                                       │ │  
 │ │    <*>   CAN bus subsystem support  --->                                   │ │  
 │ │    < >   IrDA (infrared) subsystem support  --->                           │ │  
 │ │    <*>   Bluetooth subsystem support  --->                                 │ │  
 │ │    < >   RxRPC session sockets                                             │ │  
 │ │    -*-   Wireless  --->                                                    │ │  
 │ │    < >   WiMAX Wireless Broadband support  --->                            │ │  
 │ │    <*>   RF switch subsystem support  --->                                 │ │  
 │ │    < >   Plan 9 Resource Sharing Support (9P2000)  --->                    │ │  
 │ │    < >   CAIF support  --->                                                │ │  
 │ │    < >   Ceph core library (EXPERIMENTAL)                                  │ │  
 │ │                                                                            │ │  
 │ └────────────────────────────────────────────────────────────────────────────┘ │  
 ├────────────────────────────────────────────────────────────────────────────────┤  
 │                        <Select>    < Exit >    < Help >                        │  
 └────────────────────────────────────────────────────────────────────────────────┘

CAN Protocols

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

  • Raw CAN Protocol
  • Broadcast Manager CAN Protocol
 ┌────────────────────────── CAN bus subsystem support ───────────────────────────┐
 │ ┌────────────────────────────────────────────────────────────────────────────┐ │  
 │ │    --- CAN bus subsystem support                                           │ │  
 │ │    <*>   Raw CAN Protocol (raw access with CAN-ID filtering)               │ │  
 │ │    <*>   Broadcast Manager CAN Protocol (with content filtering)           │ │  
 │ │          CAN Device Drivers  --->                                          │ │  
 │ │                                                                            │ │  
 │ └────────────────────────────────────────────────────────────────────────────┘ │  
 ├────────────────────────────────────────────────────────────────────────────────┤  
 │                        <Select>    < Exit >    < Help >                        │  
 └────────────────────────────────────────────────────────────────────────────────┘

Platform CAN driver

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

  • Platform CAN drivers with Netlink support
  • CAN bit-timing calculation
  • Support for Freescale FLEXCAN based chips
 ┌────────────────────────────── CAN Device Drivers ──────────────────────────────┐
 │ ┌────────────────────────────────────────────────────────────────────────────┐ │  
 │ │    <*> Virtual Local CAN Interface (vcan)                                  │ │  
 │ │    < > Serial / USB serial CAN Adaptors (slcan)                            │ │  
 │ │    <*> Platform CAN drivers with Netlink support                           │ │  
 │ │    [*]   CAN bit-timing calculation                                        │ │  
 │ │    < >   Microchip MCP251x SPI CAN controllers                             │ │  
 │ │    <*> Support for Freescale FLEXCAN based chips                           │ │  
 │ │    < > PCH CAN                                                             │ │  
 │ │    < > Philips/NXP SJA1000 devices  --->                                   │ │  
 │ │    < > Bosch C_CAN devices  --->                                           │ │  
 │ │        CAN USB interfaces  --->                                            │ │  
 │ │    < > Softing Gmbh CAN generic support                                    │ │  
 │ │    [ ] CAN devices debugging messages                                      │ │  
 │ │                                                                            │ │  
 │ └────────────────────────────────────────────────────────────────────────────┘ │  
 ├────────────────────────────────────────────────────────────────────────────────┤  
 │                        <Select>    < Exit >    < Help >                        │  
 └────────────────────────────────────────────────────────────────────────────────┘

Analog Audio Support

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

  • SoC Audio support for CM-FX6 boards
┌────────────────── SoC Audio for Freescale i.MX CPUs ───────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────────┐ │
│ │   --- SoC Audio for Freescale i.MX CPUs                                    │ │
│ │   < >   SoC Audio support for IMX boards with WM8958                       │ │
│ │   < >   SoC Audio support for IMX boards with WM8962                       │ │
│ │   <*>   SoC Audio support for CM-FX6 boards                                │ │
│ │   < >   SoC Audio support for IMX SI4763                                   │ │
│ │   <*>   SoC Audio support for IMX - S/PDIF                                 │ │
│ │   <*>   SoC Audio support for IMX - HDMI                                   │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘

WiFi and Bluetooth

CM-FX6 has WiFi and Bluetooth support based on Marvell 88W8787.

WiFi

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

  • Marvell WiFi-Ex Driver
  • Marvell WiFi-Ex Driver for SD8787
┌──────────────────────────────── Wireless LAN ──────────────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────────┐ │
│ │   < >   ZyDAS ZD1211/ZD1211B USB-wireless support                          │ │
│ │   <M>   Marvell WiFi-Ex Driver                                             │ │
│ │   <M>     Marvell WiFi-Ex Driver for SD8787                                │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘

Bluetooth

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

  • Marvell Bluetooth driver support
  • Marvell BT-over-SDIO driver
┌─────────────────────── Bluetooth device drivers ───────────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────────┐ │
│ │   < >   HCI VHCI (Virtual HCI device) driver                               │ │
│ │   <M>   Marvell Bluetooth driver support                                   │ │
│ │   <M>     Marvell BT-over-SDIO driver                                      │ │
│ │   < >   Atheros firmware download driver                                   │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘

USB On-The-Go (OTG)

In the kernel configuration menu choose System Type ---> Freescale MXC Implementations submenu and enable:

  • FSL USB OTG support
┌────────────────────────────────────────────────────────────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────────┐ │
│ │   [*] Support CompuLab CM-FX6 module                                       │ │
│ │              *** MX6 Options: ***                                          │ │
│ │   [*] PCI Express support                                                  │ │
│ │   <*>   USB Host 1 support                                                 │ │
│ │   <*>   FSL USB OTG support                                                │ │
│ │   [ ] Internal LDO in MX6Q/DL bypass                                       │ │
│ │   [ ] MX6 clk setting for smooth UI transtion from bootloader to kernel    │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘

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

  • Support for Host-side USB
  • EHCI HCD (USB 2.0) support
    • Support for Freescale controller
  • USB OTG pin detect support
┌───────────────────────────── USB support ──────────────────────────────────────┐
│ ┌────────────────────────────────────────────────────────────────────────────┐ │
│ │   --- USB support                                                          │ │  
│ │   <*>   Support for Host-side USB                                          │ │  
│ │   [ ]     USB verbose debug messages                                       │ │  
│ │   [ ]     USB announce new devices                                         │ │  
│ │           *** Miscellaneous USB options ***                                │ │  
│ │   [ ]     USB device filesystem (DEPRECATED)                               │ │  
│ │   [ ]     USB device class-devices (DEPRECATED)                            │ │  
│ │   [ ]     Dynamic USB minor allocation                                     │ │  
│ │   [*]     USB runtime power management (autosuspend) and wakeup            │ │  
│ │   -*-       OTG support                                                    │ │  
│ │   .......................................................................  │ │
│ │   <*>   EHCI HCD (USB 2.0) support                                         │ │  
│ │   [*]     Support for Freescale controller                                 │ │  
│ │   .......................................................................  │ │
│ │   <*>     USB Gadget Support  --->                                         │ │
│ │        *** OTG and related infrastructure ***                              │ │
│ │   .......................................................................  │ │
│ │   <*>   USB OTG pin detect support                                         │ │
│ └────────────────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────────────┤
│                         <Select>    < Exit >    < Help >                       │
└────────────────────────────────────────────────────────────────────────────────┘

Multi Media Support

Image Processing Unit Driver

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

  • Image Processing Unit Driver
  ┌────────────────────────── MXC support drivers ──────────────────────────┐
  │ ┌─────────────────────────────────────────────────────────────────────┐ │  
  │ │    [*] Image Processing Unit Driver                                 │ │  
  │ │        MXC SSI support  --->                                        │ │  
  │ │        MXC Digital Audio Multiplexer support  --->                  │ │  
  │ │        MXC PMIC support  --->                                       │ │  
  │ └────v(+)─────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────┤  
  │                    <Select>    < Exit >    < Help >                     │  
  └─────────────────────────────────────────────────────────────────────────┘

Video For Linux and Capture support

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

  • Video For Linux
  • Video capture adapters
  ┌────────────────────────── Multimedia support ───────────────────────────┐
  │ ┌─────────────────────────────────────────────────────────────────────┐ │  
  │ │    --- Multimedia support                                           │ │  
  │ │          *** Multimedia core support ***                            │ │  
  │ │    [ ]   Media Controller API (EXPERIMENTAL)                        │ │  
  │ │    <*>   Video For Linux                                            │ │  
  │ │    < >   DVB for Linux                                              │ │  
  │ │          *** Multimedia drivers ***                                 │ │  
  │ │    [*]   Video capture adapters  --->                               │ │  
  │ └─────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────┤  
  │                    <Select>    < Exit >    < Help >                     │  
  └─────────────────────────────────────────────────────────────────────────┘  

MXC Video For Linux Camera

In the kernel configuration menu choose Device Drivers ---> Multimedia support ---> Video capture adapters submenu and enable:

  • MXC Video For Linux Camera
  • MXC Video For Linux Video Output
  • IPU v4l2 support
  ┌──────────────────────── Video capture adapters ─────────────────────────┐
  │ ┌────^(-)─────────────────────────────────────────────────────────────┐ │  
  │ │    [ ]   Enable advanced debug functionality                        │ │  
  │ │    [ ]   Enable old-style fixed minor ranges for video devices      │ │  
  │ │    [ ]   Autoselect pertinent encoders/decoders and other helper chi│ │  
  │ │    <*>   MXC Video For Linux Camera                                 │ │  
  │ │            MXC Camera/V4L2 PRP Features support  --->               │ │  
  │ │    <*>   MXC Video For Linux Video Output                           │ │  
  │ │    [*]     IPU v4l2 support                                         │ │  
  │ │    [ ]     IPUv1 WVGA v4l2 display support                          │ │  
  │ │    < >   CPiA2 Video For Linux                                      │ │  
  │ └────v(+)─────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────┤  
  │                    <Select>    < Exit >    < Help >                     │  
  └─────────────────────────────────────────────────────────────────────────┘  

IPU CSI Config Options

In the kernel configuration menu choose Device Drivers ---> Multimedia support ---> Video capture adapters ---> MXC Video For Linux Camera ---> MXC Camera/V4L2 PRP Features support submenu and enable:

  • CSI camera support
  • Select Overlay Rounting
  • Pre-processor Encoder library
    • Preprocessing image from smart sensor for encoder. CSI -> IC (PRP ENC) -> MEM
  • IPU CSI Encoder library
    • Get raw image with CSI from smart sensor for encoder. CSI --> MEM
  ┌───────────────── MXC Camera/V4L2 PRP Features support ──────────────────┐
  │ ┌─────────────────────────────────────────────────────────────────────┐ │  
  │ │    <*> CSI camera support                                           │ │  
  │ │    <*> Select Overlay Rounting (Queue ipu device for overlay library│ │  
  │ │    <*> Pre-processor Encoder library                                │ │  
  │ │    <*> IPU CSI Encoder library                                      │ │  
  │ └─────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────┤  
  │                    <Select>    < Exit >    < Help >                     │  
  └─────────────────────────────────────────────────────────────────────────┘


TVP5150 video decoder

In the kernel configuration menu choose Device Drivers ---> Multimedia support ---> Video capture adapters ---> Encoders, decoders, sensors and other helper chips submenu and enable:

  • Texas Instruments TVP5150 video decoder
  ┌────────── Encoders, decoders, sensors and other helper chips ───────────┐
  │ ┌─────────────────────────────────────────────────────────────────────┐ │  
  │ │        *** Video decoders ***                                       │ │  
  │ │    < > Texas Instruments TVP514x video decoder                      │ │  
  │ │    <M> Texas Instruments TVP5150 video decoder                      │ │  
  │ │    < > Texas Instruments TVP7002 video decoder                      │ │  
  │ │    < > vpx3220a, vpx3216b & vpx3214c video decoders                 │ │  
  │ │        *** Video and audio decoders ***                             │ │  
  │ │    < > Philips SAA7171/3/4 audio/video decoders                     │ │  
  │ │    < > Conexant CX2584x audio/video decoders                        │ │  
  │ │        *** MPEG video encoders ***                                  │ │  
  │ │    < > Conexant CX2341x MPEG encoders                               │ │  
  │ │        *** Video encoders ***                                       │ │  
  │ │    < > Philips SAA7127/9 digital video encoders                     │ │  
  │ └─────────────────────────────────────────────────────────────────────┘ │  
  ├─────────────────────────────────────────────────────────────────────────┤  
  │                    <Select>    < Exit >    < Help >                     │  
  └─────────────────────────────────────────────────────────────────────────┘  

See also