Difference between revisions of "CM-T335: Linux: Kernel"
 (→Git clone)  | 
				 (→Bluetooth)  | 
				||
| Line 41: | Line 41: | ||
There are two ways to get Linux kernel sources that can be used as a baseline for CM-T335 kernel. You can create a copy of Linux Integration/Staging git tree for AM33x SoC maintained by [http://arago-project.org/wiki/index.php/Main_Page Arago Project] or download a snapshot and extract it. We assume that you have created {{filename|/home/development/cm-t335/kernel}} directory for CM-T335 kernel development.  | There are two ways to get Linux kernel sources that can be used as a baseline for CM-T335 kernel. You can create a copy of Linux Integration/Staging git tree for AM33x SoC maintained by [http://arago-project.org/wiki/index.php/Main_Page Arago Project] or download a snapshot and extract it. We assume that you have created {{filename|/home/development/cm-t335/kernel}} directory for CM-T335 kernel development.  | ||
==== Snapshot download ====  | ==== Snapshot download ====  | ||
| − | * Download [http://arago-project.org/git/projects/?p=linux-am33x.git;a=snapshot;h=  | + | * Download [http://arago-project.org/git/projects/?p=linux-am33x.git;a=snapshot;h=b81bf04091986fa3893f31955564594567be3b61;sf=tgz v3.2-staging] snapshot with your web browser.  | 
* Extract the downloaded archive {{filename|linux-am33x-refs_heads_v3.2-staging.tar.gz}}  | * Extract the downloaded archive {{filename|linux-am33x-refs_heads_v3.2-staging.tar.gz}}  | ||
<pre>  | <pre>  | ||
| Line 52: | Line 52: | ||
<pre>  | <pre>  | ||
cd /home/development/cm-t335/kernel/linux-cm-t335  | cd /home/development/cm-t335/kernel/linux-cm-t335  | ||
| − | patch -p1 < /path/to/cm-t335-linux/kernel/linux-3.2.0-cm-t335-  | + | patch -p1 < /path/to/cm-t335-linux/kernel/linux-3.2.0-cm-t335-3.patch  | 
</pre>  | </pre>  | ||
| Line 69: | Line 69: | ||
<pre>  | <pre>  | ||
cd /home/development/cm-t335/kernel/linux-cm-t335  | cd /home/development/cm-t335/kernel/linux-cm-t335  | ||
| − | git apply /path/to/cm-t335-linux/kernel/linux-3.2.0-cm-t335-  | + | git apply /path/to/cm-t335-linux/kernel/linux-3.2.0-cm-t335-3.patch  | 
</pre>  | </pre>  | ||
| Line 86: | Line 86: | ||
When the CM-T335 is booted with the kernel image created as described above and with networked root filesystem at {{filename|/home/development/cm-t335/rootfs/}}, the system will be able to load the kernel modules properly, thus avoiding module version problems.  | When the CM-T335 is booted with the kernel image created as described above and with networked root filesystem at {{filename|/home/development/cm-t335/rootfs/}}, the system will be able to load the kernel modules properly, thus avoiding module version problems.  | ||
| + | == Basic platform support ==  | ||
| + | |||
| + | === Analog 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 the AM33XX chip  | ||
| + | * SoC Audio support for Compulab CM-T335  | ||
| + | <pre>  | ||
| + |   ┌──────────────── ALSA for SoC audio support ─────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus    │  | ||
| + |   │  --->.  Highlighted letters are hotkeys.  Pressing <Y>      │  | ||
| + |   │  includes, <N> excludes, <M> modularizes features.  Press   │  | ||
| + |   │  <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: │  | ||
| + |   │ ┌─────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    --- ALSA for SoC audio support                       │ │  | ||
| + |   │ │    [ ]   Support LZO compression for register caches    │ │  | ||
| + |   │ │    <*>   SoC Audio for the AM33XX chip                  │ │  | ||
| + |   │ │    < >   SoC Audio support for AM335X EVM               │ │  | ||
| + |   │ │    <*>   SoC Audio support for Compulab CM-T335         │ │  | ||
| + |   │ │    < >   SoC Audio for the Texas Instruments OMAP chips │ │  | ||
| + |   │ │    < >   Build all ASoC CODEC drivers                   │ │  | ||
| + |   │ └─────────────────────────────────────────────────────────┘ │  | ||
| + |   ├─────────────────────────────────────────────────────────────┤  | ||
| + |   │              <Select>    < Exit >    < Help >               │  | ||
| + |   └─────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | |||
| + | === Controller–area network (CAN) support ===  | ||
| + | <dl>  | ||
| + | The CM-T335 features a TI DCAN Controller Area Network (DCAN), integrated into the Sitara AM335X SoC.   | ||
| + | The TI DCAN module supports bitrates up to 1 Mbit/s and is compliant to the CAN 2.0B protocol specification.  | ||
| + | </dl>  | ||
| + | In the kernel configuration menu choose '''Networking support''' submenu and enable:  | ||
| + | * CAN bus subsystem support  | ||
| + | <pre>  | ||
| + |   ┌───────────────────── CAN bus subsystem support ─────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.      │  | ||
| + |   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>       │  | ||
| + |   │  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> │  | ||
| + |   │  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded      │  | ||
| + |   │ ┌─────────────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    [ ]   Amateur Radio support  --->                            │ │    | ||
| + |   │ │    <*>   CAN bus subsystem support  --->                        │ │    | ||
| + |   │ │    < >   IrDA (infrared) subsystem support  --->                │ │    | ||
| + |   │ └─────────────────────────────────────────────────────────────────┘ │  | ||
| + |   ├─────────────────────────────────────────────────────────────────────┤  | ||
| + |   │                  <Select>    < Exit >    < Help >                   │  | ||
| + |   └─────────────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | In the kernel configuration menu choose '''Networking support ---> CAN bus subsystem support''' submenu and enable CAN protocol support:  | ||
| + | * Raw CAN Protocol  | ||
| + | * Broadcast Manager CAN Protocol  | ||
| + | You can choose to either build it into the kernel or to compile it as a module named ''can-raw'' and ''can-bcm'' respectively.  | ||
| + | <pre>  | ||
| + |   ┌───────────────────── CAN bus subsystem support ─────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.      │  | ||
| + |   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>       │  | ||
| + |   │  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> │  | ||
| + |   │  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded      │  | ||
| + |   │ ┌─────────────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    --- CAN bus subsystem support                                │ │  | ||
| + |   │ │    <*>   Raw CAN Protocol (raw access with CAN-ID filtering)    │ │  | ||
| + |   │ │    <*>   Broadcast Manager CAN Protocol (with content filtering)│ │  | ||
| + |   │ │    < >   CAN Gateway/Router (with netlink configuration)        │ │  | ||
| + |   │ │          CAN Device Drivers  --->                               │ │  | ||
| + |   │ └─────────────────────────────────────────────────────────────────┘ │  | ||
| + |   ├─────────────────────────────────────────────────────────────────────┤  | ||
| + |   │                  <Select>    < Exit >    < Help >                   │  | ||
| + |   └─────────────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | Next, in the kernel configuration menu choose '''Networking support ---> CAN bus subsystem support ---> CAN Device Drivers''' submenu and enable following options:  | ||
| + | * Platform CAN drivers with Netlink support (built into the kernel or as a module named ''can-dev'')  | ||
| + | * CAN bit-timing calculation  | ||
| + | * Bosch D_CAN devices (built into the kernel or as a module named ''d_can'')  | ||
| + | <pre>  | ||
| + |   ┌──────────────────────── CAN Device Drivers ─────────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.      │  | ||
| + |   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>       │  | ||
| + |   │  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> │  | ||
| + |   │  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded      │  | ||
| + |   │ ┌─────────────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    < > Virtual Local CAN Interface (vcan)                       │ │  | ||
| + |   │ │    < > Serial / USB serial CAN Adaptors (slcan)                 │ │  | ||
| + |   │ │    <*> Platform CAN drivers with Netlink support                │ │  | ||
| + |   │ │    [*]   CAN bit-timing calculation                             │ │  | ||
| + |   │ │    < >   TI High End CAN Controller                             │ │  | ||
| + |   │ │    < >   Microchip MCP251x SPI CAN controllers                  │ │  | ||
| + |   │ │    < > Philips/NXP SJA1000 devices  --->                        │ │  | ||
| + |   │ │    < > Bosch C_CAN devices  --->                                │ │  | ||
| + |   │ │    <*> Bosch D_CAN devices  --->                                │ │  | ||
| + |   │ │        CAN USB interfaces  --->                                 │ │  | ||
| + |   │ └────v(+)─────────────────────────────────────────────────────────┘ │  | ||
| + |   ├─────────────────────────────────────────────────────────────────────┤  | ||
| + |   │                  <Select>    < Exit >    < Help >                   │  | ||
| + |   └─────────────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | Finally, in the kernel configuration menu choose '''Networking support ---> CAN bus subsystem support ---> CAN Device Drivers ---> Bosch D_CAN devices''' submenu and enable:  | ||
| + | * Generic Platform Bus based D_CAN driver (built into the kernel or as a module named ''d_can_platform'').   | ||
| + | <pre>  | ||
| + |   ┌──────────────────────── Bosch D_CAN devices ────────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.      │  | ||
| + |   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>       │  | ||
| + |   │  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> │  | ||
| + |   │  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded      │  | ||
| + |   │ ┌─────────────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    --- Bosch D_CAN devices                                      │ │  | ||
| + |   │ │    <M>   Generic Platform Bus based D_CAN driver                │ │  | ||
| + |   │ └─────────────────────────────────────────────────────────────────┘ │  | ||
| + |   ├─────────────────────────────────────────────────────────────────────┤  | ||
| + |   │                  <Select>    < Exit >    < Help >                   │  | ||
| + |   └─────────────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | |||
| + | === Touchscreen Support ===  | ||
| + | In the kernel configuration menu choose '''Device Drivers ---> Input device support''' submenu and enable:  | ||
| + | * Touchscreens  | ||
| + | <pre>  | ||
| + |   ┌─────────────────────── Input device support ────────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.      │  | ||
| + |   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>       │  | ||
| + |   │  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> │  | ||
| + |   │  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded      │  | ||
| + |   │ ┌────^(-)─────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    [ ]   Joysticks/Gamepads  --->                               │ │  | ||
| + |   │ │    [ ]   Tablets  --->                                          │ │  | ||
| + |   │ │    [*]   Touchscreens  --->                                     │ │  | ||
| + |   │ │    [*]   Miscellaneous devices  --->                            │ │  | ||
| + |   │ │        Hardware I/O ports  --->                                 │ │  | ||
| + |   │ └─────────────────────────────────────────────────────────────────┘ │  | ||
| + |   ├─────────────────────────────────────────────────────────────────────┤  | ||
| + |   │                  <Select>    < Exit >    < Help >                   │  | ||
| + |   └─────────────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | Next, in the kernel configuration menu choose '''Device Drivers ---> Input device support ---> Touchscreens''' submenu and enable:  | ||
| + | * TI Touchscreen Interface  | ||
| + | <pre>  | ||
| + |   ┌───────────────────────────── Touchscreens ──────────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.      │    | ||
| + |   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>       │    | ||
| + |   │  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> │    | ||
| + |   │  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded      │    | ||
| + |   │ ┌────^(-)─────────────────────────────────────────────────────────┐ │    | ||
| + |   │ │    < >   Touchright serial touchscreen                          │ │    | ||
| + |   │ │    < >   Touchwin serial touchscreen                            │ │    | ||
| + |   │ │    <*>   TI Touchscreen Interface                               │ │    | ||
| + |   │ │    < >   USB Touchscreen Driver                                 │ │    | ||
| + |   │ │    < >   Sahara TouchIT-213 touchscreen                         │ │    | ||
| + |   │ └────v(+)─────────────────────────────────────────────────────────┘ │    | ||
| + |   ├─────────────────────────────────────────────────────────────────────┤    | ||
| + |   │                    <Select>    < Exit >    < Help >                 │    | ||
| + |   └─────────────────────────────────────────────────────────────────────┘    | ||
| + | </pre>  | ||
| + | Finally, in the kernel configuration menu choose '''Device Drivers ---> Multifunction device drivers''' submenu and enable  | ||
| + | * TI ADC / Touch Screen chip support  | ||
| + | <pre>  | ||
| + |   ┌─────────────────── Multifunction device drivers ────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus --->.      │  | ||
| + |   │  Highlighted letters are hotkeys.  Pressing <Y> includes, <N>       │  | ||
| + |   │  excludes, <M> modularizes features.  Press <Esc><Esc> to exit, <?> │  | ||
| + |   │  for Help, </> for Search.  Legend: [*] built-in  [ ] excluded      │  | ||
| + |   │ ┌─────────────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    < > TPS6507x Power Management / Touch Screen chips           │ │  | ||
| + |   │ │    <*> TI ADC / Touch Screen chip support                       │ │  | ||
| + |   │ │    < > TPS65217 Power Management / White LED chips              │ │  | ||
| + |   │ │    [ ] TPS6586x Power Management chips                          │ │  | ||
| + |   │ └────v(+)─────────────────────────────────────────────────────────┘ │  | ||
| + |   ├─────────────────────────────────────────────────────────────────────┤  | ||
| + |   │                  <Select>    < Exit >    < Help >                   │  | ||
| + |   └─────────────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | |||
| + | === WLAN and Bluetooth ===  | ||
| + | <dl>  | ||
| + | CM-T335 has WLAN and Bluetooth support based on TI WL1271.  | ||
| + | </dl>  | ||
| + | ==== WLAN ====  | ||
| + | In the kernel configuration menu choose '''Networking support ---> Wireless''' submenu and enable following options:  | ||
| + | * cfg80211  | ||
| + | * Common routines for IEEE802.11 drivers  | ||
| + | * mac80211  | ||
| + | <pre>  | ||
| + |   ┌────────────────────────── Wireless ───────────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus      │  | ||
| + |   │  --->.  Highlighted letters are hotkeys.  Pressing <Y>        │  | ||
| + |   │  includes, <N> excludes, <M> modularizes features.  Press     │  | ||
| + |   │  <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend:   │  | ||
| + |   │ ┌───────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    --- Wireless                                           │ │  | ||
| + |   │ │    <M>   cfg80211 - wireless configuration API            │ │  | ||
| + |   │ │    [ ]     nl80211 testmode command                       │ │  | ||
| + |   │ │    [ ]     enable developer warnings                      │ │  | ||
| + |   │ │    [ ]     cfg80211 regulatory debugging                  │ │  | ||
| + |   │ │    [*]     enable powersave by default                    │ │  | ||
| + |   │ │    [ ]     cfg80211 DebugFS entries                       │ │  | ||
| + |   │ │    [*]     cfg80211 wireless extensions compatibility     │ │  | ||
| + |   │ │    [*]   Wireless extensions sysfs files                  │ │  | ||
| + |   │ │    <M>   Common routines for IEEE802.11 drivers           │ │  | ||
| + |   │ │    [ ]   lib80211 debugging messages                      │ │  | ||
| + |   │ │    <M>   Generic IEEE 802.11 Networking Stack (mac80211)  │ │  | ||
| + |   │ │          Default rate control algorithm (Minstrel)  --->  │ │  | ||
| + |   │ └────v(+)───────────────────────────────────────────────────┘ │  | ||
| + |   ├───────────────────────────────────────────────────────────────┤  | ||
| + |   │               <Select>    < Exit >    < Help >                │  | ||
| + |   └───────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | Next, in the kernel configuration menu choose '''Device Drivers ---> Network device support ---> Wireless LAN''' submenu and enable:  | ||
| + | * TI wl12xx driver support  | ||
| + | <pre>  | ||
| + |   ┌──────────────────────── Wireless LAN ─────────────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus      │  | ||
| + |   │  --->.  Highlighted letters are hotkeys.  Pressing <Y>        │  | ||
| + |   │  includes, <N> excludes, <M> modularizes features.  Press     │  | ||
| + |   │  <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend:   │  | ||
| + |   │ ┌────^(-)───────────────────────────────────────────────────┐ │  | ||
| + |   │ │    < >   Realtek RTL8192CU/RTL8188CU USB Wireless Network │ │  | ||
| + |   │ │    < >   TI wl1251 driver support  --->                   │ │  | ||
| + |   │ │    <M>   TI wl12xx driver support  --->                   │ │  | ||
| + |   │ │    < >   ZyDAS ZD1211/ZD1211B USB-wireless support        │ │  | ||
| + |   │ └───────────────────────────────────────────────────────────┘ │  | ||
| + |   ├───────────────────────────────────────────────────────────────┤  | ||
| + |   │               <Select>    < Exit >    < Help >                │  | ||
| + |   └───────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | Finally, in the kernel configuration menu '''Device Drivers ---> Network device support ---> Wireless LAN ---> TI wl12xx driver support''' submenu enable:  | ||
| + | * TI wl12xx support  | ||
| + | * TI wl12xx SPI support  | ||
| + | <pre>  | ||
| + |   ┌────────────────── TI wl12xx driver support ───────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus      │  | ||
| + |   │  --->.  Highlighted letters are hotkeys.  Pressing <Y>        │  | ||
| + |   │  includes, <N> excludes, <M> modularizes features.  Press     │  | ||
| + |   │  <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend:   │  | ||
| + |   │ ┌───────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    --- TI wl12xx driver support                           │ │  | ||
| + |   │ │    <M>   TI wl12xx support                                │ │  | ||
| + |   │ │    <M>     TI wl12xx SPI support                          │ │  | ||
| + |   │ │    < >     TI wl12xx SDIO support                         │ │  | ||
| + |   │ └───────────────────────────────────────────────────────────┘ │  | ||
| + |   ├───────────────────────────────────────────────────────────────┤  | ||
| + |   │               <Select>    < Exit >    < Help >                │  | ||
| + |   └───────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | |||
| + | ==== Bluetooth ====  | ||
| + | In the kernel configuration menu choose '''Networking support ---> Bluetooth subsystem support''' submenu and enable following options:  | ||
| + | <pre>  | ||
| + |   ┌───────────────── Bluetooth subsystem support ─────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus      │  | ||
| + |   │  --->.  Highlighted letters are hotkeys.  Pressing <Y>        │  | ||
| + |   │  includes, <N> excludes, <M> modularizes features.  Press     │  | ||
| + |   │  <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend:   │  | ||
| + |   │ ┌───────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    --- Bluetooth subsystem support                        │ │  | ||
| + |   │ │    [*]   L2CAP protocol support                           │ │  | ||
| + |   │ │    [*]   SCO links support                                │ │  | ||
| + |   │ │    <M>   RFCOMM protocol support                          │ │  | ||
| + |   │ │    [*]     RFCOMM TTY support                             │ │  | ||
| + |   │ │    <M>   BNEP protocol support                            │ │  | ||
| + |   │ │    [*]     Multicast filter support                       │ │  | ||
| + |   │ │    [*]     Protocol filter support                        │ │  | ||
| + |   │ │    <M>   HIDP protocol support                            │ │  | ||
| + |   │ │          Bluetooth device drivers  --->                   │ │  | ||
| + |   │ └───────────────────────────────────────────────────────────┘ │  | ||
| + |   ├───────────────────────────────────────────────────────────────┤  | ||
| + |   │               <Select>    < Exit >    < Help >                │  | ||
| + |   └───────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
| + | Next, in the kernel configuration menu choose '''Networking support ---> Bluetooth subsystem support ---> Bluetooth device drivers''' submenu and enable following options:  | ||
| + | <pre>  | ||
| + |   ┌────────────────── Bluetooth device drivers ───────────────────┐  | ||
| + |   │  Arrow keys navigate the menu.  <Enter> selects submenus      │  | ||
| + |   │  --->.  Highlighted letters are hotkeys.  Pressing <Y>        │  | ||
| + |   │  includes, <N> excludes, <M> modularizes features.  Press     │  | ||
| + |   │  <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend:   │  | ||
| + |   │ ┌───────────────────────────────────────────────────────────┐ │  | ||
| + |   │ │    < > HCI USB driver                                     │ │  | ||
| + |   │ │    < > HCI SDIO driver                                    │ │  | ||
| + |   │ │    <M> HCI UART driver                                    │ │  | ||
| + |   │ │    [*]   UART (H4) protocol support                       │ │  | ||
| + |   │ │    [*]   BCSP protocol support                            │ │  | ||
| + |   │ │    [ ]   Atheros AR300x serial support                    │ │  | ||
| + |   │ │    [*]   HCILL protocol support                           │ │  | ||
| + |   │ │    < > HCI BCM203x USB driver                             │ │  | ||
| + |   │ │    < > HCI BPA10x USB driver                              │ │  | ||
| + |   │ │    < > HCI BlueFRITZ! USB driver                          │ │  | ||
| + |   │ └────v(+)───────────────────────────────────────────────────┘ │  | ||
| + |   ├───────────────────────────────────────────────────────────────┤  | ||
| + |   │               <Select>    < Exit >    < Help >                │  | ||
| + |   └───────────────────────────────────────────────────────────────┘  | ||
| + | </pre>  | ||
== See also ==  | == See also ==  | ||
Revision as of 11:35, 25 February 2014
Contents
Overview
Linux kernel for CM-T335 modules 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-T335 modules.
Kernel command line
The Linux kernel for CM-T335 is shipped with built-in command line parameters:
console=ttyO0,115200n8 root=ubi0:rootfs rw rootfstype=ubifs ubi.mtd=rootfs
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-T335
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 (recommended):
 - 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-T335 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-T335 kernel. You can create a copy of Linux Integration/Staging git tree for AM33x SoC maintained by Arago Project or download a snapshot and extract it. We assume that you have created /home/development/cm-t335/kernel directory for CM-T335 kernel development.
Snapshot download
- Download v3.2-staging snapshot with your web browser.
 - Extract the downloaded archive linux-am33x-refs_heads_v3.2-staging.tar.gz
 
cd /home/development/cm-t335/kernel tar xvf /path/to/downloaded/linux-am33x-refs_heads_v3.2-staging.tar.gz mv linux-am33x linux-cm-t335
- This will create /home/development/cm-t335/kernel/linux-cm-t335 directory containing linux kernel tree.
 
- Apply the CM-T335 patch
 
cd /home/development/cm-t335/kernel/linux-cm-t335 patch -p1 < /path/to/cm-t335-linux/kernel/linux-3.2.0-cm-t335-3.patch
Git clone
- Install git version control system.
 - Create a clone of linux kernel tree
 
cd /home/development/cm-t335/kernel git clone git://arago-project.org/git/projects/linux-am33x.git linux-cm-t335
- Create a branch for CM-T335 development. The CM-T335 patches are generated vs. b81bf04091986fa3893f31955564594567be3b61 commit in the Linux tree. It is recommended to use exactly the same baseline to avoid merge conflicts.
 
git checkout -b cm-t335-dev b81bf04091986fa3893f31955564594567be3b61
- Apply the CM-T335 patch
 
cd /home/development/cm-t335/kernel/linux-cm-t335 git apply /path/to/cm-t335-linux/kernel/linux-3.2.0-cm-t335-3.patch
Building the kernel
export ARCH=arm
export CROSS_COMPILE=arm-none-linux-eabi-
make cm_t335_defconfig
make menuconfig
make && make uImage && \
     INSTALL_MOD_PATH=/home/development/cm-t335/rootfs make modules_install
In the example above, the Linux kernel image (uImage) will be created in /home/development/cm-t335/kernel/linux-cm-t335/arch/arm/boot, and the loadable kernel modules will be installed into the /home/development/cm-t335/rootfs/lib/modules directory.
When the CM-T335 is booted with the kernel image created as described above and with networked root filesystem at /home/development/cm-t335/rootfs/, the system will be able to load the kernel modules properly, thus avoiding module version problems.
Basic platform support
Analog 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 the AM33XX chip
 - SoC Audio support for Compulab CM-T335
 
┌──────────────── ALSA for SoC audio support ─────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus │ │ --->. Highlighted letters are hotkeys. Pressing <Y> │ │ includes, <N> excludes, <M> modularizes features. Press │ │ <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ --- ALSA for SoC audio support │ │ │ │ [ ] Support LZO compression for register caches │ │ │ │ <*> SoC Audio for the AM33XX chip │ │ │ │ < > SoC Audio support for AM335X EVM │ │ │ │ <*> SoC Audio support for Compulab CM-T335 │ │ │ │ < > SoC Audio for the Texas Instruments OMAP chips │ │ │ │ < > Build all ASoC CODEC drivers │ │ │ └─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────┘
Controller–area network (CAN) support
- 
The CM-T335 features a TI DCAN Controller Area Network (DCAN), integrated into the Sitara AM335X SoC. 
The TI DCAN module supports bitrates up to 1 Mbit/s and is compliant to the CAN 2.0B protocol specification.
 
In the kernel configuration menu choose Networking support submenu and enable:
- CAN bus subsystem support
 
┌───────────────────── CAN bus subsystem support ─────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> │ │ excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> │ │ for Help, </> for Search. Legend: [*] built-in [ ] excluded │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ [ ] Amateur Radio support ---> │ │ │ │ <*> CAN bus subsystem support ---> │ │ │ │ < > IrDA (infrared) subsystem support ---> │ │ │ └─────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────┘
In the kernel configuration menu choose Networking support ---> CAN bus subsystem support submenu and enable CAN protocol support:
- Raw CAN Protocol
 - Broadcast Manager CAN Protocol
 
You can choose to either build it into the kernel or to compile it as a module named can-raw and can-bcm respectively.
┌───────────────────── CAN bus subsystem support ─────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> │ │ excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> │ │ for Help, </> for Search. Legend: [*] built-in [ ] excluded │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ --- CAN bus subsystem support │ │ │ │ <*> Raw CAN Protocol (raw access with CAN-ID filtering) │ │ │ │ <*> Broadcast Manager CAN Protocol (with content filtering)│ │ │ │ < > CAN Gateway/Router (with netlink configuration) │ │ │ │ CAN Device Drivers ---> │ │ │ └─────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────┘
Next, in the kernel configuration menu choose Networking support ---> CAN bus subsystem support ---> CAN Device Drivers submenu and enable following options:
- Platform CAN drivers with Netlink support (built into the kernel or as a module named can-dev)
 - CAN bit-timing calculation
 - Bosch D_CAN devices (built into the kernel or as a module named d_can)
 
┌──────────────────────── CAN Device Drivers ─────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> │ │ excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> │ │ for Help, </> for Search. Legend: [*] built-in [ ] excluded │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ < > Virtual Local CAN Interface (vcan) │ │ │ │ < > Serial / USB serial CAN Adaptors (slcan) │ │ │ │ <*> Platform CAN drivers with Netlink support │ │ │ │ [*] CAN bit-timing calculation │ │ │ │ < > TI High End CAN Controller │ │ │ │ < > Microchip MCP251x SPI CAN controllers │ │ │ │ < > Philips/NXP SJA1000 devices ---> │ │ │ │ < > Bosch C_CAN devices ---> │ │ │ │ <*> Bosch D_CAN devices ---> │ │ │ │ CAN USB interfaces ---> │ │ │ └────v(+)─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────┘
Finally, in the kernel configuration menu choose Networking support ---> CAN bus subsystem support ---> CAN Device Drivers ---> Bosch D_CAN devices submenu and enable:
- Generic Platform Bus based D_CAN driver (built into the kernel or as a module named d_can_platform).
 
┌──────────────────────── Bosch D_CAN devices ────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> │ │ excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> │ │ for Help, </> for Search. Legend: [*] built-in [ ] excluded │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ --- Bosch D_CAN devices │ │ │ │ <M> Generic Platform Bus based D_CAN driver │ │ │ └─────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────┘
Touchscreen Support
In the kernel configuration menu choose Device Drivers ---> Input device support submenu and enable:
- Touchscreens
 
┌─────────────────────── Input device support ────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> │ │ excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> │ │ for Help, </> for Search. Legend: [*] built-in [ ] excluded │ │ ┌────^(-)─────────────────────────────────────────────────────────┐ │ │ │ [ ] Joysticks/Gamepads ---> │ │ │ │ [ ] Tablets ---> │ │ │ │ [*] Touchscreens ---> │ │ │ │ [*] Miscellaneous devices ---> │ │ │ │ Hardware I/O ports ---> │ │ │ └─────────────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────┘
Next, in the kernel configuration menu choose Device Drivers ---> Input device support ---> Touchscreens submenu and enable:
- TI Touchscreen Interface
 
┌───────────────────────────── Touchscreens ──────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> │ │ excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> │ │ for Help, </> for Search. Legend: [*] built-in [ ] excluded │ │ ┌────^(-)─────────────────────────────────────────────────────────┐ │ │ │ < > Touchright serial touchscreen │ │ │ │ < > Touchwin serial touchscreen │ │ │ │ <*> TI Touchscreen Interface │ │ │ │ < > USB Touchscreen Driver │ │ │ │ < > Sahara TouchIT-213 touchscreen │ │ │ └────v(+)─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────┘
Finally, in the kernel configuration menu choose Device Drivers ---> Multifunction device drivers submenu and enable
- TI ADC / Touch Screen chip support
 
┌─────────────────── Multifunction device drivers ────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus --->. │ │ Highlighted letters are hotkeys. Pressing <Y> includes, <N> │ │ excludes, <M> modularizes features. Press <Esc><Esc> to exit, <?> │ │ for Help, </> for Search. Legend: [*] built-in [ ] excluded │ │ ┌─────────────────────────────────────────────────────────────────┐ │ │ │ < > TPS6507x Power Management / Touch Screen chips │ │ │ │ <*> TI ADC / Touch Screen chip support │ │ │ │ < > TPS65217 Power Management / White LED chips │ │ │ │ [ ] TPS6586x Power Management chips │ │ │ └────v(+)─────────────────────────────────────────────────────────┘ │ ├─────────────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └─────────────────────────────────────────────────────────────────────┘
WLAN and Bluetooth
- 
CM-T335 has WLAN and Bluetooth support based on TI WL1271.
 
WLAN
In the kernel configuration menu choose Networking support ---> Wireless submenu and enable following options:
- cfg80211
 - Common routines for IEEE802.11 drivers
 - mac80211
 
┌────────────────────────── Wireless ───────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus │ │ --->. Highlighted letters are hotkeys. Pressing <Y> │ │ includes, <N> excludes, <M> modularizes features. Press │ │ <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ --- Wireless │ │ │ │ <M> cfg80211 - wireless configuration API │ │ │ │ [ ] nl80211 testmode command │ │ │ │ [ ] enable developer warnings │ │ │ │ [ ] cfg80211 regulatory debugging │ │ │ │ [*] enable powersave by default │ │ │ │ [ ] cfg80211 DebugFS entries │ │ │ │ [*] cfg80211 wireless extensions compatibility │ │ │ │ [*] Wireless extensions sysfs files │ │ │ │ <M> Common routines for IEEE802.11 drivers │ │ │ │ [ ] lib80211 debugging messages │ │ │ │ <M> Generic IEEE 802.11 Networking Stack (mac80211) │ │ │ │ Default rate control algorithm (Minstrel) ---> │ │ │ └────v(+)───────────────────────────────────────────────────┘ │ ├───────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └───────────────────────────────────────────────────────────────┘
Next, in the kernel configuration menu choose Device Drivers ---> Network device support ---> Wireless LAN submenu and enable:
- TI wl12xx driver support
 
┌──────────────────────── Wireless LAN ─────────────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus │ │ --->. Highlighted letters are hotkeys. Pressing <Y> │ │ includes, <N> excludes, <M> modularizes features. Press │ │ <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: │ │ ┌────^(-)───────────────────────────────────────────────────┐ │ │ │ < > Realtek RTL8192CU/RTL8188CU USB Wireless Network │ │ │ │ < > TI wl1251 driver support ---> │ │ │ │ <M> TI wl12xx driver support ---> │ │ │ │ < > ZyDAS ZD1211/ZD1211B USB-wireless support │ │ │ └───────────────────────────────────────────────────────────┘ │ ├───────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └───────────────────────────────────────────────────────────────┘
Finally, in the kernel configuration menu Device Drivers ---> Network device support ---> Wireless LAN ---> TI wl12xx driver support submenu enable:
- TI wl12xx support
 - TI wl12xx SPI support
 
┌────────────────── TI wl12xx driver support ───────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus │ │ --->. Highlighted letters are hotkeys. Pressing <Y> │ │ includes, <N> excludes, <M> modularizes features. Press │ │ <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ --- TI wl12xx driver support │ │ │ │ <M> TI wl12xx support │ │ │ │ <M> TI wl12xx SPI support │ │ │ │ < > TI wl12xx SDIO support │ │ │ └───────────────────────────────────────────────────────────┘ │ ├───────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └───────────────────────────────────────────────────────────────┘
Bluetooth
In the kernel configuration menu choose Networking support ---> Bluetooth subsystem support submenu and enable following options:
┌───────────────── Bluetooth subsystem support ─────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus │ │ --->. Highlighted letters are hotkeys. Pressing <Y> │ │ includes, <N> excludes, <M> modularizes features. Press │ │ <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ --- Bluetooth subsystem support │ │ │ │ [*] L2CAP protocol support │ │ │ │ [*] SCO links support │ │ │ │ <M> RFCOMM protocol support │ │ │ │ [*] RFCOMM TTY support │ │ │ │ <M> BNEP protocol support │ │ │ │ [*] Multicast filter support │ │ │ │ [*] Protocol filter support │ │ │ │ <M> HIDP protocol support │ │ │ │ Bluetooth device drivers ---> │ │ │ └───────────────────────────────────────────────────────────┘ │ ├───────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └───────────────────────────────────────────────────────────────┘
Next, in the kernel configuration menu choose Networking support ---> Bluetooth subsystem support ---> Bluetooth device drivers submenu and enable following options:
┌────────────────── Bluetooth device drivers ───────────────────┐ │ Arrow keys navigate the menu. <Enter> selects submenus │ │ --->. Highlighted letters are hotkeys. Pressing <Y> │ │ includes, <N> excludes, <M> modularizes features. Press │ │ <Esc><Esc> to exit, <?> for Help, </> for Search. Legend: │ │ ┌───────────────────────────────────────────────────────────┐ │ │ │ < > HCI USB driver │ │ │ │ < > HCI SDIO driver │ │ │ │ <M> HCI UART driver │ │ │ │ [*] UART (H4) protocol support │ │ │ │ [*] BCSP protocol support │ │ │ │ [ ] Atheros AR300x serial support │ │ │ │ [*] HCILL protocol support │ │ │ │ < > HCI BCM203x USB driver │ │ │ │ < > HCI BPA10x USB driver │ │ │ │ < > HCI BlueFRITZ! USB driver │ │ │ └────v(+)───────────────────────────────────────────────────┘ │ ├───────────────────────────────────────────────────────────────┤ │ <Select> < Exit > < Help > │ └───────────────────────────────────────────────────────────────┘