Thread (5 messages) 5 messages, 2 authors, 2016-03-30

Re: How to setup Touchscreen IRQ mode?

From: Mika Westerberg <mika.westerberg@linux.intel.com>
Date: 2016-03-30 09:42:04

Possibly related (same subject, not in this thread)

On Wed, Mar 30, 2016 at 12:03:13AM +0000, sergk sergk2mail wrote:
Hi Mika,
 full acpidump of the machine is located here
https://gitlab.com/SergK/icn8528/blob/master/DSDT/dsdt.dsl
OK, so there is only one touchscreen device and it has _STA method
looking like this:

	Method (_STA, 0, NotSerialized)  // _STA: Status
	{
		If ((OSSL & 0x80))
		{
			Return (Zero)
		}	

My guess is that that OSSL variable tells if the machine is in Android
or Windows mode or something like that. In your case it returns zero
here.
quoted
From Android:
"What does 'ls -l /sys/bus/i2c/devices' show under android?"
1) sysi2cdev  /sys/bus/i2c/devices
https://gitlab.com/SergK/icn8528/blob/master/Androiddata/sysi2cdev
And this explains why Android works. It initializes the I2C devices
directly from a board file.

So what you are doing probably works but instead of hardcoding in the
driver you can fill i2c_board_info from "platform specific" files like
for example here:

	arch/x86/platform/intel-mid/device_libs/platform_mpu3050.c

Translating the _CRS from ACPI TCS5 device it might look like:

	static const struct i2c_hid_platform_data pdata = {
		.hid_descriptor_address = 3, // from _DSM
	};

	static const struct i2c_board_info my_board_info[] = {
		{
			I2C_BOARD_INFO("hid", 0x30"),
			.irq = 0x44,
			.platform_data = &pdata,
		},
	};

	static int __init my_init(void)
	{
		i2c_register_board_info(3, my_board_info, ARRAY_SIZE(my_board_info));
	} 
	arch_initcall(my_init);

This should create new i2c device for i2c-hid.c.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help