Difference between revisions of "Linux Kernel for CM-X270"

From Compulab Mediawiki
Jump to: navigation, search
(Using Wireless LAN - udev installation on Debian image)
Line 1: Line 1:
 
== Overview ==
 
== Overview ==
  
Linux kernel for CM-X270 modules provides support for on-board peripherals. Current support coverage is specified at [http://www.compulab.co.il/x270cm/html/x270-os-support.htm O/S support coverage map] page.
+
Linux kernel for CM-X270 modules provides support for on-board peripherals. Current support coverage is specified at [http://www.compulab.co.il/x270cm/html/x270-os-support.htm 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-X270 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 on CM-X270 modules.
 
  
 
== Building Linux kernel for CM-X270 ==
 
== Building Linux kernel for CM-X270 ==
  
Instructions for building Linux kernel for CM-X270 can be found [[Linux_Development_for_XScale_modules#Building the Linux kernel for CM-X270 | here]].
+
Instructions for building Linux kernel for CM-X270 can be found [[Linux Development for XScale modules#Building the Linux kernel for CM-X270|here]].
 +
 
 +
== CM-X270 specific additions and changes to Linux kernel 2.6.24 ==
 +
 
 +
The CM-X270 platform support was merged into the mainline kernel starting from version 2.6.24. There are still some features that are not present in the mainline kernel:
 +
 
 +
* Fixes to suspend/resume functionality
 +
* Change in serial port mappings to ensure consistency between CM-X270L and CM-X270W
 +
* Support for UART device integrated into PCI bridge
 +
* Support for Wi2Wi W2SW0001 wireless LAN (based on Marvell 8686 chipset)
 +
 
 +
{{Note|
 +
The Linux kernel 2.6.24 for CM-X270 by default uses MTD drivers to access the on-board NAND flash. The CompuLab proprietary NAND flash driver is included in the [http://www.compulab.co.il/x270cm/download/x270-linux-drv.zip Linux kernel package for CM-X270] but is not compiled into the binary image. If you would like to use it you should disable the MTD driver and enable the CompuLab NAND flash driver in the kernel configuration.}}
  
 
== CM-X270 specific additions and changes to Linux kernel 2.6.16 ==
 
== CM-X270 specific additions and changes to Linux kernel 2.6.16 ==
 +
 +
* Basic platform support
 +
* PCI support with ITE8152 companion chip
 +
* Touchscreen support
 +
* NAND flash support
 +
 +
== Using mainline Linux kernel on CM-X270 ==
 +
 +
It is possible to use mainline Linux kernel starting from version 2.6.24 on CM-X270 "as is". Just keep in mind that features and fixes listed in [[#CM-X270_specific_additions_and_changes_to_Linux_kernel_2.6.24|CM-X270 specific additions and changes to Linux kernel 2.6.24]] section are '''not present''' in the mainline kernel and the serial ports are mapped to different {{parameter|ttys}} on L and W variants as summarized in the below table:
 +
 +
{| cellpadding="3" border="1" style="border: 1px solid rgb(85, 85, 85); border-collapse: collapse;"
 +
|+ Serial ports mapping on CM-X270'''L'''
 +
|-
 +
| UART
 +
| SB-X270 port name
 +
| Linux tty in CompuLab kernel release
 +
| Linux tty in mainline kernel
 +
|-
 +
| BTUART
 +
| COM-A
 +
| ttySA0
 +
| ttyS1
 +
|-
 +
| FFUART
 +
| COM-B
 +
| ttySA1
 +
| ttyS0
 +
|-
 +
| STUART
 +
| COM-D
 +
| ttySA2
 +
| ttyS2
 +
|-
 +
| ITE8152 UART
 +
| COM-B
 +
| ttyS0
 +
| not present
 +
|}
 +
 +
<br>
 +
 +
{| cellpadding="3" border="1" style="border: 1px solid rgb(85, 85, 85); border-collapse: collapse;"
 +
|+ Serial ports mapping on CM-X270'''W'''
 +
|-
 +
| UART
 +
| SB-X270 port name
 +
| Linux tty in CompuLab kernel release
 +
| Linux tty in mainline kernel
 +
|-
 +
| FFUART
 +
| COM-A
 +
| ttySA0
 +
| ttyS0
 +
|-
 +
| BTUART
 +
| COM-D
 +
| ttySA1
 +
| ttyS1
 +
|-
 +
| STUART
 +
| COM-C
 +
| ttySA2
 +
| ttyS2
 +
|-
 +
| ITE8152 UART
 +
| COM-B
 +
| ttyS0
 +
| not present
 +
|}
 +
 +
== Device support details ==
  
 
=== Basic Platform Support ===
 
=== Basic Platform Support ===
Line 16: Line 98:
 
=== PCI support ===
 
=== PCI support ===
  
The board support for CM-X270 introduces driver for ITE 8152 companion chip and platform specific drivers for proper initialization of ITE 8152 on the CM-X270. The bridge driver implementation resides in {{filename|linux/arch/arm/mach-pxa/it8152.[ch]}}, parts of the CM-X270 specific initialization code are in {{filename|linux/arch/arm/mach-pxa/cm-x270-pci.c}}. There are also changes in {{filename|linux/arch/arm/kernel/bios32.c}} that are needed to use the ITE 8152 PCI bridge.
+
The board support for CM-X270 introduces driver for ITE 8152 companion chip and platform specific drivers for proper initialization of ITE 8152 on the CM-X270. The bridge driver implementation resides in {{filename|linux/arch/arm/mach-pxa/it8152.[ch]}} in Linux kernel 2.6.16 and in {{filename|linux/arch/arm/common/it8152.[ch]}} in Linux kernel 2.6.24,<font color="#ff0000">;</font> parts of the CM-X270 specific initialization code are in {{filename|linux/arch/arm/mach-pxa/cm-x270-pci.c}}. There are also changes in {{filename|linux/arch/arm/kernel/bios32.c}} that are needed to use the ITE 8152 PCI bridge.
  
 
==== PCI Ethernet Cards ====
 
==== PCI Ethernet Cards ====
  
The CompuLab stock kernel does not include built-in support for PCI Ethernet cards. A driver for popular RealTek 8139 card is available as loadable kernel module in [http://www.compulab.co.il/x270cm/download/x270-linux-img.zip Debian Linux for CM-X270] package. The module is called {{parameter|8139too}} and can be enabled using
+
The CompuLab stock kernel does not include built-in support for PCI Ethernet cards. A driver for popular RealTek 8139 card is available as a loadable kernel module in [http://www.compulab.co.il/x270cm/download/x270-linux-img.zip Debian Linux for CM-X270] package. The module is called {{parameter|8139too}} and can be enabled using
  
 
<pre>
 
<pre>
 
modprobe 8139too
 
modprobe 8139too
</pre>
+
</pre>  
  
 
=== Sound and Touchsreen ===
 
=== Sound and Touchsreen ===
  
UCB1400 AC97 codec with inetgrated touchscreen has several registers, that are not present in AC97 standard. We added initialization of some of these registers and exposure of these registers to user space. This change can be found in {{filename|linux/sound/pci/ac97/ac97_patch.[ch]}}
+
CM-X270 uses UCB1400 AC97 codec with integrated touchscreen controller.
  
The touchscreen controller driver for UCB1400 is taken from patch [http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3075/2 3075/2] in the [http://www.arm.linux.org.uk/developer/patches/ ARM Linux patch system] and slightly modified to suit CM-X270 hardware configuration.
+
The touchscreen controller driver for UCB1400 for Linux 2.6.16 is taken from patch [http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=3075/2 3075/2] in the [http://www.arm.linux.org.uk/developer/patches/ ARM Linux patch system] and slightly modified to suit CM-X270 hardware configuration.
  
 
Both audio and touchscreen drivers are modularized if you use default CM-X270 configuration. The following commands enable audio support and touchscreen support respectively:
 
Both audio and touchscreen drivers are modularized if you use default CM-X270 configuration. The following commands enable audio support and touchscreen support respectively:
Line 37: Line 119:
 
modprobe snd-pxa2xx-ac97
 
modprobe snd-pxa2xx-ac97
 
modprobe ucb1x00-ts
 
modprobe ucb1x00-ts
</pre>
+
</pre>  
  
 
Note, that enabling touchscreen driver without AC97 controller driver is meaningless, since {{parameter|ucb1x00-ts}} driver uses AC97 bus to access the touchscreen device.
 
Note, that enabling touchscreen driver without AC97 controller driver is meaningless, since {{parameter|ucb1x00-ts}} driver uses AC97 bus to access the touchscreen device.
  
More information about Linux audio subsystem can be found at [http://www.alsa-project.org http://www.alsa-project.org]
+
More information about Linux audio subsystem can be found at [http://www.alsa-project.org]
  
 
==== AC'97 and PCI interaction ====
 
==== AC'97 and PCI interaction ====
Line 49: Line 131:
 
}}
 
}}
  
CM-X270 contains local bus arbitration logic needed to arbiter bus accesses between the CPU and PCI bridge. This arbitration logic and AC97 controller share the same input clock. Linux AC97 driver tests whether there's an audio codec attached to the AC97 bus. If the driver does not find a codec, it disables PXA270 AC97 controller, and its clock altogether. Disabling this clock, in turn, disables the local bus arbitration, and makes PCI bridge useless.
+
CM-X270 contains local bus arbitration logic needed to arbiter bus accesses between the CPU and PCI bridge. This arbitration logic and AC97 controller share the same input clock. Linux AC97 driver tests whether there's an audio codec attached to the AC97 bus. If the driver does not detect a codec, it disables PXA270 AC97 controller, and its clock altogether. Disabling this clock, in turn, disables the local bus arbitration, and makes PCI bridge useless.
  
 
To avoid such unpleasant situation we'd recommend not to enable sound drivers, unless you need them.
 
To avoid such unpleasant situation we'd recommend not to enable sound drivers, unless you need them.
  
=== NAND flash ===
+
=== I2C ===
  
CompuLab provides proprietary driver for on-board NAND flash. This driver emulates block device and provides wear-leveling for the flash. The driver uses the same NAND flash layout as the ARMMon bootloader.
+
Standard I2C and SPI drivers can be used to access these buses on CM-X270. The I2C drivers can be easily enabled using Linux kernel configuration. In the ''Device drivers'' menu enable the ''I2C support'' end enter the ''I2C support -&gt; I2C Hardware Bus support'' submenu. Then enable ''Intel PXA2XX I2C adapter'':
  
Starting at kernel release at October 12, 2006, we also included MTD driver for CM-X270. More information about using MTD on CM-X270 can be found at [[Linux MTD drivers on CM-X270]] page.
+
<pre>.config - Linux Kernel v2.6.24 Configuration
 +
──────────────────────────────────────────────────────────────────────────────
 +
┌─────────────────────── I2C Hardware Bus 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 <M> module < >            │
 +
│ ┌─────────────────────────────────────────────────────────────────────┐ │
 +
│ │ < > ALI 1535                                                        │ │
 +
│ │ < > ALI 1563                                                        │ │
 +
│ │ < > ALI 15x3                                                        │ │
 +
│ │ < > AMD 756/766/768/8111 and nVidia nForce                          │ │
 +
│ │ < > AMD 8111                                                        │ │
 +
│ │ < > GPIO-based bitbanging I2C                                      │ │
 +
│ │ < > Intel 82801 (ICH)                                              │ │
 +
│ │ < > Intel 810/815                                                  │ │
 +
│ │ <*> Intel PXA2XX I2C adapter (EXPERIMENTAL)                        │ │
 +
│ │ [ ] Intel PXA2XX I2C Slave comms support                            │ │
 +
│ └────v(+)─────────────────────────────────────────────────────────────┘ │
 +
├─────────────────────────────────────────────────────────────────────────┤
 +
│                    <Select> < Exit > < Help >                          │
 +
└─────────────────────────────────────────────────────────────────────────┘
 +
</pre>
  
Recently we discovered that certain NAND flash chips are not tolerant to '''any''' activity on local bus during flash accesses. To overcome this limitation we added an option to NAND flash drivers that allows to ensure there is no bus activity at the time NAND flash is active. This option can be switched on and of with {{parameter|block_irqs}} parameter of the NAND flash driver.
 
  
=== I2C and SPI ===
+
This will enable the I2C controller driver. To access a device attached to I2C bus you should have a driver for that device, or you can use "I2C device interface" driver for raw read and write access.
  
Standard I2C and SPI drivers can be used to access these buses on CM-X270. The I2C drivers are present in Linux kernel 2.6.16, and can be easily enabled using Linux kernel configuration.
+
=== SPI ===
  
As for the SPI drivers, they should be backported to Linux kernel 2.6.16 from 2.6.17 or more recent kernel version.
+
Please refer to [[SPI support for CM-X270]] article.
  
 
=== USB device ===
 
=== USB device ===
  
USB device controller drivers for PXA270 are not available in mainline kernels, and this is the main reason we do not support USB device functionality on CM-X270. Yet, there several patches available at [http://www.rpsys.net/openzaurus/patches/ http://www.rpsys.net/openzaurus/patches/], [http://handhelds.org/cgi-bin/cvsweb.cgi/linux/kernel26/drivers/usb/gadget/ Handhelds.org], [http://raph.people.8d.com/armcore_kernel.php Raphael Assenat site] dedicated to Linux on CompuLab boards, and probably others. We never tried these patches, and we don't know which of them will work on CM-X270.
+
USB device controller drivers for PXA270 are not available in mainline kernels, and this is the main reason we do not support USB device functionality on CM-X270. Yet, there are several patches available at [http://www.rpsys.net/openzaurus/patches/], [http://handhelds.org/cgi-bin/cvsweb.cgi/linux/kernel26/drivers/usb/gadget/ Handhelds.org], [http://raph.people.8d.com/armcore_kernel.php Raphael Assenat site] dedicated to Linux on CompuLab boards, and probably others. We never tried these patches, and we don't know which of them will work on CM-X270.
 
 
== Linux kernel 2.6.24 ==
 
 
 
The CM-X270 platform support was merged into mainline kernel starting from version 2.6.24. There are still some features that are not present in mainline kernel. Most of these features are available in preliminary release of [http://www.compulab.co.il/mediawiki/files/Linux/x270cm/linux-2.6.24-cm-x270.tar.gz Linux kernel 2.6.24 for CM-X270] (source code only).
 
 
 
=== Preliminary release of Linux kernel 2.6.24 for CM-X270 ===
 
* Fixes to suspend/resume functionality
 
* Change serial port mappings to ensure consistency between CM-X270L and CM-X270W
 
* Support for UART device integrated into PCI bridge
 
* Support for Marvell 8686 wireless LAN
 
 
 
==== Using Wireless LAN ====
 
The latest revisions of CM-X270 include wireless LAN module based on Marvell 8686 chipset.
 
The drivers for this chipset can be enabled in the kernel configuration '''"Device Drivers -> Network device support -> Wireless LAN"''' menu:
 
 
 
<pre>
 
.config - Linux Kernel v2.6.26-rc3 Configuration
 
──────────────────────────────────────────────────────────────────────────────
 
  ┌───────────────────────────── 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: [*] built-in  [ ] excluded  <M> module  < >      │
 
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
 
  │ │    [ ] Wireless LAN (pre-802.11)                                    │ │
 
  │ │    [*] Wireless LAN (IEEE 802.11)                                  │ │
 
  │ │    < >  Aviator/Raytheon 2.4MHz wireless support                  │ │
 
  │ │    < >  Intel PRO/Wireless 2100 Network Connection                │ │
 
  │ │    < >  Intel PRO/Wireless 2200BG and 2915ABG Network Connection  │ │
 
  │ │    <M>  Marvell 8xxx Libertas WLAN driver support                  │ │
 
  │ │    < >    Marvell Libertas 8388 USB 802.11b/g cards                │ │
 
  │ │    < >    Marvell Libertas 8385 CompactFlash 802.11b/g cards      │ │
 
  │ │    < >    Marvell Libertas 8385 and 8686 SDIO 802.11b/g cards      │ │
 
  │ │    <M>    Marvell Libertas 8686 G-SPI 802.11b/g cards              │ │
 
  │ │    [ ]    Enable full debugging output in the Libertas module.    │ │
 
  │ └────v(+)─────────────────────────────────────────────────────────────┘ │
 
  ├─────────────────────────────────────────────────────────────────────────┤
 
  │                    <Select>    < Exit >    < Help >                    │
 
  └─────────────────────────────────────────────────────────────────────────┘
 
</pre>
 
 
 
After the kernel modules are compiled and installed into appropriate place on the CM-X270 root filesystem, the wireless LAN driver can be enabled using {{cmd|1="modprobe libertas_spi"}} command.
 
 
 
The [http://www.compulab.co.il/mediawiki/files/Linux/x270cm/gspi_firmware.tar.gz gspi_firmware.tar.gz] archive contains firmware that is used by the wireless LAN driver. The contents of this archive should be extracted to {{filename|/lib/firmware}} directory in the CM-X270 root filesystem.
 
 
 
{{important|
 
You need to have [http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html udev] installed and running on the CM-X270 for the driver to work properly. If you are using default Debian filesystem image you can install udev using {{cmd|apt-get}} package manager:
 
 
 
<pre>
 
cm-debian:~# apt-get install udev
 
</pre>
 
}}
 
 
 
==== Known problems ====
 
* PCI bridge does not always properly resume
 
 
 
=== Using mainline Linux kernel 2.6.24 on CM-X270 ===
 
 
 
It is possible to use mainline Linux kernel 2.6.24 on CM-X270 "as is". Just keep in mind that the on-board NAND flash can be accessed  only using [[Linux MTD drivers on CM-X270|MTD drivers]] and the serial ports map to different {{parameter|ttys}} on L and W variants as summarized in the below table:
 
 
 
{|  style="border: 1px #555555 solid; border-collapse: collapse" border="1" cellpadding="3px"
 
|+ Serial ports mapping on CM-X270'''L'''
 
! UART        || SB-X270 port name || Linux tty in 2.6.16 || Linux tty in 2.6.24
 
|-
 
| BTUART      || COM-A            || ttySA0              || ttyS1
 
|-
 
| FFUART      || COM-B            || ttySA1              || ttyS0
 
|-
 
| STUART      || COM-D            || ttySA2              || ttyS2
 
|-
 
| ITE8152 UART || COM-B            || ttyS0              || not present
 
|}
 
 
 
 
 
{|  style="border: 1px #555555 solid; border-collapse: collapse" border="1" cellpadding="3px"
 
|+ Serial ports mapping on CM-X270'''W'''
 
! UART        || SB-X270 port name || Linux tty in 2.6.16 || Linux tty in 2.6.24
 
|-
 
| FFUART      || COM-A            || ttySA0              || ttyS0
 
|-
 
| BTUART      || COM-D            || ttySA1              || ttyS1
 
|-
 
| STUART      || COM-C            || ttySA2              || ttyS2
 
|-
 
| ITE8152 UART || COM-B            || ttyS0              || not present
 
|}
 
  
 
== See also ==
 
== See also ==

Revision as of 09:54, 26 June 2008

Overview

Linux kernel for CM-X270 modules provides support for on-board peripherals. 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-X270 modules.

Building Linux kernel for CM-X270

Instructions for building Linux kernel for CM-X270 can be found here.

CM-X270 specific additions and changes to Linux kernel 2.6.24

The CM-X270 platform support was merged into the mainline kernel starting from version 2.6.24. There are still some features that are not present in the mainline kernel:

  • Fixes to suspend/resume functionality
  • Change in serial port mappings to ensure consistency between CM-X270L and CM-X270W
  • Support for UART device integrated into PCI bridge
  • Support for Wi2Wi W2SW0001 wireless LAN (based on Marvell 8686 chipset)


Admolition note.png

The Linux kernel 2.6.24 for CM-X270 by default uses MTD drivers to access the on-board NAND flash. The CompuLab proprietary NAND flash driver is included in the Linux kernel package for CM-X270 but is not compiled into the binary image. If you would like to use it you should disable the MTD driver and enable the CompuLab NAND flash driver in the kernel configuration.

CM-X270 specific additions and changes to Linux kernel 2.6.16

  • Basic platform support
  • PCI support with ITE8152 companion chip
  • Touchscreen support
  • NAND flash support

Using mainline Linux kernel on CM-X270

It is possible to use mainline Linux kernel starting from version 2.6.24 on CM-X270 "as is". Just keep in mind that features and fixes listed in CM-X270 specific additions and changes to Linux kernel 2.6.24 section are not present in the mainline kernel and the serial ports are mapped to different ttys on L and W variants as summarized in the below table:

Serial ports mapping on CM-X270L
UART SB-X270 port name Linux tty in CompuLab kernel release Linux tty in mainline kernel
BTUART COM-A ttySA0 ttyS1
FFUART COM-B ttySA1 ttyS0
STUART COM-D ttySA2 ttyS2
ITE8152 UART COM-B ttyS0 not present


Serial ports mapping on CM-X270W
UART SB-X270 port name Linux tty in CompuLab kernel release Linux tty in mainline kernel
FFUART COM-A ttySA0 ttyS0
BTUART COM-D ttySA1 ttyS1
STUART COM-C ttySA2 ttyS2
ITE8152 UART COM-B ttyS0 not present

Device support details

Basic Platform Support

The CM-X270 platform basic support is implemented in the linux/arch/arm/mach-pxa/cm-x270.c. This file includes registration of the devices integrated in the PXA270 SoC, definitions of platform-specific configuration of these devices, platfrom-specific power management code and static mapping for memory mapped IO. This file also includes several routines needed for proper operation of the PCI bridge.

PCI support

The board support for CM-X270 introduces driver for ITE 8152 companion chip and platform specific drivers for proper initialization of ITE 8152 on the CM-X270. The bridge driver implementation resides in linux/arch/arm/mach-pxa/it8152.[ch] in Linux kernel 2.6.16 and in linux/arch/arm/common/it8152.[ch] in Linux kernel 2.6.24,; parts of the CM-X270 specific initialization code are in linux/arch/arm/mach-pxa/cm-x270-pci.c. There are also changes in linux/arch/arm/kernel/bios32.c that are needed to use the ITE 8152 PCI bridge.

PCI Ethernet Cards

The CompuLab stock kernel does not include built-in support for PCI Ethernet cards. A driver for popular RealTek 8139 card is available as a loadable kernel module in Debian Linux for CM-X270 package. The module is called 8139too and can be enabled using

modprobe 8139too

Sound and Touchsreen

CM-X270 uses UCB1400 AC97 codec with integrated touchscreen controller.

The touchscreen controller driver for UCB1400 for Linux 2.6.16 is taken from patch 3075/2 in the ARM Linux patch system and slightly modified to suit CM-X270 hardware configuration.

Both audio and touchscreen drivers are modularized if you use default CM-X270 configuration. The following commands enable audio support and touchscreen support respectively:

modprobe snd-pxa2xx-ac97
modprobe ucb1x00-ts

Note, that enabling touchscreen driver without AC97 controller driver is meaningless, since ucb1x00-ts driver uses AC97 bus to access the touchscreen device.

More information about Linux audio subsystem can be found at [1]

AC'97 and PCI interaction

Admolition note.png

The following note is relevant only for cards with 'B' option and without 'A' or 'AT' options.

CM-X270 contains local bus arbitration logic needed to arbiter bus accesses between the CPU and PCI bridge. This arbitration logic and AC97 controller share the same input clock. Linux AC97 driver tests whether there's an audio codec attached to the AC97 bus. If the driver does not detect a codec, it disables PXA270 AC97 controller, and its clock altogether. Disabling this clock, in turn, disables the local bus arbitration, and makes PCI bridge useless.

To avoid such unpleasant situation we'd recommend not to enable sound drivers, unless you need them.

I2C

Standard I2C and SPI drivers can be used to access these buses on CM-X270. The I2C drivers can be easily enabled using Linux kernel configuration. In the Device drivers menu enable the I2C support end enter the I2C support -> I2C Hardware Bus support submenu. Then enable Intel PXA2XX I2C adapter:

.config - Linux Kernel v2.6.24 Configuration
──────────────────────────────────────────────────────────────────────────────
 ┌─────────────────────── I2C Hardware Bus 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 <M> module < >            │
 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │ < > ALI 1535                                                        │ │
 │ │ < > ALI 1563                                                        │ │
 │ │ < > ALI 15x3                                                        │ │
 │ │ < > AMD 756/766/768/8111 and nVidia nForce                          │ │
 │ │ < > AMD 8111                                                        │ │
 │ │ < > GPIO-based bitbanging I2C                                       │ │
 │ │ < > Intel 82801 (ICH)                                               │ │
 │ │ < > Intel 810/815                                                   │ │
 │ │ <*> Intel PXA2XX I2C adapter (EXPERIMENTAL)                         │ │
 │ │ [ ] Intel PXA2XX I2C Slave comms support                            │ │
 │ └────v(+)─────────────────────────────────────────────────────────────┘ │
 ├─────────────────────────────────────────────────────────────────────────┤
 │                     <Select> < Exit > < Help >                          │
 └─────────────────────────────────────────────────────────────────────────┘


This will enable the I2C controller driver. To access a device attached to I2C bus you should have a driver for that device, or you can use "I2C device interface" driver for raw read and write access.

SPI

Please refer to SPI support for CM-X270 article.

USB device

USB device controller drivers for PXA270 are not available in mainline kernels, and this is the main reason we do not support USB device functionality on CM-X270. Yet, there are several patches available at [2], Handhelds.org, Raphael Assenat site dedicated to Linux on CompuLab boards, and probably others. We never tried these patches, and we don't know which of them will work on CM-X270.

See also