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