NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

TI81XX PSP TouchScreen Driver Guide

From Texas Instruments Wiki
Jump to: navigation, search
TIBanner.png
Linux PSP TouchScreen Driver Guide
Linux PSP
IMPORTANT

TI81XX refers to TI816X, TI814X and TI813X.


DM814X Touch Screen
[edit]

    Atmel mXT224 Touch Screen is used in the DM814X evm.

Overview of  mXT224
[edit]

      The mXT224 (AT42QT602240) uses a unique charge-transfer acquisition engine to implement the QMatrixTM capacitive sensing method patented by Atmel®. This allows the measurement of up to 224 mutual capacitance nodes in under 1 ms. Coupled with a state-of-the-art XMEGATM CPU, the entire touchscreen sensing solution can measure, classify and track a single finger touch every 4 ms if required.

Touch Screen Features
[edit]

  • 12-bit multi-touch with independent XY tracking for up to 10 concurrent touches in real time with touch size reporting
  • Up to 4.3 inch diagonal screen size supported with 10 mm “pinch” separation
  • Up to 224 channels (subject to other configuration limitations)
  • Maximum single touch >250Hz, subject to configuration
  • Initial latency <10 ms for first touch from idle, subject to configuration
  • I2C-compatible slave mode 400 kHz

INTERFACE DETAILS[edit]

LCD BackLight POWER

  •  LCD_PWR_DOWN

              LCD Backlight Power is controlled through IO Expander Module PORT0  (PCF8575) on the i2c0 bus.

I2C Interface

  • CENT_I2C0_SDA
  • CENT_I2C0_SCLK

              Transfers to/from the ATMEL controller  take place on the I2C0 Interface     

GPIO  Interrupt

  •   GPIO0_31 (GPIO module 0, 31th pin)

              Atmel Controller notifies the processor using the GPIO line.

Basic Operation:
[edit]

     Whenever there is a pen touch, the ATMEL controller would pull down the GPIO (GPIO0 31) line. The controller then has to acknowledge by reading the data(I2C) from the Controller. Once the data has been read, the GPIO would again go to high.

TouchScreen Device Information[edit]

  • LCD  Power Setup

        Add the IO Expander device in the I2C board info structure (arch/arm/mach-omap2/board-ti8148evm.c) .

static struct i2c_board_info __initdata ti814x_i2c_boardinfo[] = {
{
................
.............
I2C_BOARD_INFO("pcf8575", 0x21),
 .platform_data = &io_expander_data,
}
};

        Set the GPIO base for Expander module and provide a call back function to do platform specific IO Expander module Setup

static struct pcf857x_platform_data io_expander_data = {
 .gpio_base = 4 * 32,
 .setup = setup_gpio_ioexp,
};


        Enable the LCD power by making it low.

static int __init setup_gpio_ioexp(struct i2c_client *client, int gpio,
unsigned ngpio, void *context) {
int ret = 0;

ret = gpio_request(gpio, "lcd_power");
if (ret) {
printk(KERN_ERR "%s: failed to request GPIO for LCD Power"
": %d\n", __func__, ret);
return ret;
}

gpio_export(gpio, true);
gpio_direction_output(gpio, 0);

return 0;
}
  • Touch Screen GPIO  Setup

          Add the Touch Screen driver in the I2C board info structure

static struct i2c_board_info __initdata ti814x_i2c_boardinfo[] = {
...............

................

{
 I2C_BOARD_INFO("qt602240_ts", 0x4A),
 .platform_data = &ts_platform_data,
 },
};

        Configure the GPIO0 31 as an input

static void __init ti814x_evm_i2c_init(void)
{

......................

.......................

  ti814x_tsc_init();
}


static void __init ti814x_tsc_init(void)
{

int +error;
omap_mux_init_signal("mlb_clk.gpio0_31", TI814X_PULL_DIS | (1 << 18));
error = gpio_request(GPIO_TSC, "ts_irq");
if (error < 0) {

printk(KERN_ERR "%s: failed to request GPIO for TSC IRQ"
": %d\n", __func__, error);

return;
}
gpio_direction_input(GPIO_TSC);

ti814x_i2c_boardinfo[5].irq = gpio_to_irq(GPIO_TSC);
gpio_export(31, true);
}


E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article DM81xx AM38xx PSP TouchScreen Driver Guide here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article DM81xx AM38xx PSP TouchScreen Driver Guide here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article DM81xx AM38xx PSP TouchScreen Driver Guide here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article DM81xx AM38xx PSP TouchScreen Driver Guide here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article DM81xx AM38xx PSP TouchScreen Driver Guide here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article DM81xx AM38xx PSP TouchScreen Driver Guide here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article DM81xx AM38xx PSP TouchScreen Driver Guide here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article DM81xx AM38xx PSP TouchScreen Driver Guide here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article DM81xx AM38xx PSP TouchScreen Driver Guide here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity