Hi,

currently I'm trying to understand the chain how an input event from
touchscreen hardware is handled in the kernel and then reaches the
android stack and the applications.

So far I know that the chain downwards is:

User space:

InputDeviceReader (KeyInputQueue.java)
<== android_server_KeyInputQueue_readEvent
(com_android_server_keyInputQueue.cpp)
<== EventHub::getEvent (EventHub.cpp)
<== /dev/input/eventX

Kernel space:

Input event device <== Touchscreen driver

And now the question: When I look at the board configuration file /
android/msm/arch/arm/mach-msm/board-sapphire.c (I think this is for
the HTC Dream phone) I can see there are two touchscreen drivers
active:

static struct i2c_board_info i2c_devices[] = {
        {
                I2C_BOARD_INFO(SYNAPTICS_I2C_RMI_NAME, 0x20),
                .platform_data = sapphire_ts_data,
                .irq = SAPPHIRE_GPIO_TO_INT(SAPPHIRE_GPIO_TP_ATT_N)
        },
        {
                I2C_BOARD_INFO(ELAN_8232_I2C_NAME, 0x10),
                .platform_data = &elan_i2c_data,
                .irq = SAPPHIRE_GPIO_TO_INT(SAPPHIRE_GPIO_TP_ATT_N),
        },
       ....
      .....
}

Why are there two active drivers? Does the HTC Dream have different
hardware versions and either the I2C access to address 0x20 or to 0x10
fails and the other one then is used?
Or are there really two controllers?

Can anybody help please?
Thank you!

Br,
Mibo



-- 
unsubscribe: android-kernel+unsubscr...@googlegroups.com
website: http://groups.google.com/group/android-kernel

Reply via email to