Difference between revisions of "TSC2102 Linux driver"

From ArmadeusWiki
Jump to: navigation, search
m (Usage)
m (Usage)
 
(28 intermediate revisions by 4 users not shown)
Line 1: Line 1:
This page details the installation and the usage of the Linux drivers for the [[TSC2102|TSC2102 touchscreen & sound chip]]. Sound (ALSA) specific part [[ALSA|can be found here.]]
+
This page details the installation and the usage of the Linux drivers for the [[TSC2102|TSC210x chips]] (touch & temp/voltage control). Sound (ALSA) specific part [[ALSA|can be found here.]]
  
 
==Driver Installation==
 
==Driver Installation==
$ make linux-menuconfig
+
These drivers are now installed by default in standard Armadeus rootfs. [[Talk:TSC2102_Linux_driver|Here]] you will find instructions to know how we configured Linux to activate these drivers (may be useful if you want to deactivate them).
 
+
in '''Device Drivers  ---> Input device support  --->''' select '''<*>  Event interface'''  as builtin
+
in '''Device Drivers  ---> Input device support  ---> [*]   Touchscreens  --->''' select '''<M>  TSC 2102 based touchscreens''' as module
+
+
in '''Device Drivers  ---> SPI support  ---> ''' select '''<M> Freescale iMX SPI controller''' as module
+
in '''Device Drivers  ---> SPI support  ---> --- TSC2102 codec support''' should be selected
+
+
in '''Device Drivers  --->''' select '''<M> Hardware Monitoring support  --->''' as module
+
 
+
$ make linux
+
 
+
Then reflash your Linux kernel and your Rootfs...
+
  
 
==Architecture==
 
==Architecture==
  
{| border="1" cellpadding="5" cellspacing="0" summary="Driver Architecture"
+
[[Image:TSC_arch.png]]
|- style="background:#efefef;"
+
! '''Touchscreen (tsc2102_ts.ko)''' || '''HWmon''' || '''ALSA'''
+
|----------------
+
| colspan="3" align="center" | TSC2102 Main driver (tsc2102.ko)
+
|----------------
+
| colspan="3" align="center" | Linux API
+
|-
+
|}
+
  
 
==Usage==
 
==Usage==
* load all the needed drivers:
+
* Load all the needed drivers:
 
+
<pre class="apf">
# modprobe spi_imx
+
 
  # modprobe tsc2102_ts
 
  # modprobe tsc2102_ts
TI TSC2102 driver initializing
+
TI TSC210x driver initializing
input: TSC2102 Touchscreen as /class/input/input0
+
TSC2101 detected
TSC2102 touchscreen driver initialized
+
input: TSC210x Touchscreen as /devices/platform/mxc_spi.1/spi1.0/tsc210x-ts/input/input0
 +
TSC210x Touchscreen driver initialized
 +
</pre>
  
* To check:
+
===Touchscreen===
  # lsmod
+
Before use, the touchscreen has to be (at least one time) calibrated:
Module                  Size  Used by    Not tainted
+
<pre class="apf">
tsc2102_ts              1188  0
+
  # ts_calibrate
tsc2102                10192  3 tsc2102_ts
+
</pre>
hwmon                    916  1 tsc2102
+
[[Image:Tslib_calibrate.png]]
spi_imx                7136  0
+
  
Then:
+
Then it can be tested with:
* get temperature and voltage with [http://lxr.linux.no/source/Documentation/hwmon/sysfs-interface?v=2.6.18 hwmon] (Hardware Monitoring) interface
+
<pre class="apf">
  # cat /sys/class/hwmon/hwmon0/device/temp1_input    -- result in m°C
+
  # ts_test
* play sounds through [[ALSA| ALSA interface]]
+
</pre>
 +
[[Image:Tslib_test.png]]
  
==TSLib API Installation==
+
If it does not work you can quickly check driver functionality; touch the screen and check that tsc2102 interrupts count is increasing:
[[tslib | Install the Tslib touchscreen API]]
+
<pre class="apf">
 
+
===Envt variables===
+
* You should define some ENVT variables to use the touchscreen API (tslib):
+
export TSLIB_TSDEVICE=/dev/input/event0
+
export TSLIB_TSEVENTTYPE=INPUT
+
export TSLIB_CONFFILE=/etc/ts.conf
+
export TSLIB_CALIBFILE=/etc/pointercal
+
* you can add them to your ''/etc/profile'':
+
# vi /etc/profile
+
 
+
===Device file creation if not exist===
+
* ''/dev/input/event0'' is created from the infos got from:
+
# cat /sys/class/input/event0/dev
+
13:64
+
# mkdir /dev/input
+
# cd /dev/input/
+
# mknod event0 c 13 64
+
# ls -al
+
drwxr-xr-x    2 root    root            0 Jan  1 00:39 .
+
drwxr-xr-x    5 root    root            0 Jan  1 00:39 ..
+
crw-r--r--    1 root    root      13,  64 Jan  1 00:39 event0
+
#
+
 
+
==Quick test==
+
To quickly check driver fonctionnality, touch the screen and check that tsc2102 interrupts count is increasing:
+
 
  # cat /proc/interrupts
 
  # cat /proc/interrupts
 
           CPU0
 
           CPU0
Line 90: Line 46:
 
  61:          0        MPU  DMA
 
  61:          0        MPU  DMA
 
  110:        0        GPIO  eth0
 
  110:        0        GPIO  eth0
  '''168:        0        GPIO  tsc2102'''
+
  168:        0        GPIO  tsc2102   <<<<--------
 
  Err:        0
 
  Err:        0
 
  #
 
  #
 +
</pre>
 +
 +
More informations concerning the Tslib can be found [[tslib | here]].
 +
 +
===Audio===
 +
 +
You can play sounds through [[ALSA| ALSA interface]].
  
or start the touchscreen calibration tool:
+
===Miscellaneous===
  /usr/bin/ts_calibrate
+
* get temperature and voltage with [http://lxr.linux.no/source/Documentation/hwmon/sysfs-interface?v=2.6.18 hwmon] (Hardware Monitoring) interface. For example, get board temperature from TSC210x:
 +
<pre class="apf">
 +
  # modprobe hwmon
 +
# cat /sys/class/hwmon/hwmon0/device/temp1_input        -- result in m°C
 +
</pre>
  
 
==Links==
 
==Links==
* http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=log;t=7 (search for TSC2102)
+
* [http://source.mvista.com/git/gitweb.cgi?p=linux-omap-2.6.git;a=log;t=7 Driver for OMAP] (search for TSC2102)
 +
* [http://www.avr32linux.org/archives/kernel/2007-August/000209.html Driver for AVR32]
 
* http://osdir.com/ml/linux.ports.arm.omap/2006-08/msg00183.html
 
* http://osdir.com/ml/linux.ports.arm.omap/2006-08/msg00183.html
 
* [http://docs.blackfin.uclinux.org/doku.php?id=touchscreen Touchscreen usage on Blackfin]
 
* [http://docs.blackfin.uclinux.org/doku.php?id=touchscreen Touchscreen usage on Blackfin]
Line 106: Line 74:
  
 
[[Category:Linux drivers]]
 
[[Category:Linux drivers]]
 +
[[Category:Touchscreen]]

Latest revision as of 02:45, 10 August 2011

This page details the installation and the usage of the Linux drivers for the TSC210x chips (touch & temp/voltage control). Sound (ALSA) specific part can be found here.

Driver Installation

These drivers are now installed by default in standard Armadeus rootfs. Here you will find instructions to know how we configured Linux to activate these drivers (may be useful if you want to deactivate them).

Architecture

TSC arch.png

Usage

  • Load all the needed drivers:
 # modprobe tsc2102_ts
TI TSC210x driver initializing
TSC2101 detected
input: TSC210x Touchscreen as /devices/platform/mxc_spi.1/spi1.0/tsc210x-ts/input/input0
TSC210x Touchscreen driver initialized

Touchscreen

Before use, the touchscreen has to be (at least one time) calibrated:

 # ts_calibrate

Tslib calibrate.png

Then it can be tested with:

 # ts_test

Tslib test.png

If it does not work you can quickly check driver functionality; touch the screen and check that tsc2102 interrupts count is increasing:

 # cat /proc/interrupts
           CPU0
 26:          0         MPU  IMX-uart
 29:         17         MPU  IMX-uart
 30:         22         MPU  IMX-uart
 35:         12         MPU  imx-mmc
 39:         14         MPU  I2C_IMX
 40:         16         MPU  imx-spi.2
 41:          0         MPU  imx-spi.1
 59:       3682         MPU  i.MX Timer Tick
 60:          0         MPU  DMA
 61:          0         MPU  DMA
 110:         0        GPIO  eth0
 168:         0        GPIO  tsc2102   <<<<--------
 Err:         0
 #

More informations concerning the Tslib can be found here.

Audio

You can play sounds through ALSA interface.

Miscellaneous

  • get temperature and voltage with hwmon (Hardware Monitoring) interface. For example, get board temperature from TSC210x:
 # modprobe hwmon
 # cat /sys/class/hwmon/hwmon0/device/temp1_input         -- result in m°C

Links