Re: How to use ACPI for touchscreen

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In addition this touch is used like so:

dmesg | grep chipone:
<6> : input: chipone-ts as /devices/virtual/input/input3
cat /devices/virtual/input/input3/modalias gives

input:b000v0000p0000e0000-e0,1,3,k8B,9E,D9,ra2F,30,32,35,36,39,m1sfw
- I guess the key is m1sfw which means loaded firmware.
Kind regards,
                      Serge Kolotylo.

On Tue, Mar 1, 2016 at 4:30 PM, sergk sergk2mail <sergk.admin@xxxxxxxxx> wrote:
> Hi Gregor,
>
> Thanks for joining!
> Unfortunately DSDT was taken from my Chuwi Vi10 tablet rev 11 with
> Chipone icn8528.h touch and information provided via ACPI looks like a
> total false.
> I have compared DSDTs on both Android and Linux 4.4.2  - they are lie
> both and are the same.
> Touch is located in Android on i2c-4, 0x48 (exactly as it is mentioned
> in the specs I have sent to you).
> In Android I am able to read via i2cget -f (force because is used by
> ts driver in Adroid) 4 0x48 main registers of icn85xx, for example:
> i2cget -f 4 0x048 0x000c FW version returns 0x38
> i2cget -f 4 0x048 0x000a IcVersion main - returns 0x85 = 85xx family
>
> The additional strange things are: in Android is loaded only
> atmel_mxt_ts which even could be rmmod and touch still working! no
> any other module relative to touch! Looks someone just modified
> atmel_mxt_ts and used it as a stub for initializing chip, loads
> firmware and switch to it = no need module.
>
> In Bios for touch there is option I2c Touch address field with
> Options: Auto/0x4a, 0x4b. By default is Auto.
>
> This makes me completely crazy hot this all works together while wrong
> DSDT ACPI, strange options in BIOS.
> Actually Chuwi Vi10 has 11 revisions, so thats why possibly there are
> rudiment settings not relative to actual HW that is used.
>
> So, the question still interesting - I exactly know which touch I have
> and on which i2c bus and address (based on Android and Windows working
> on it) and we have wrong? DSDT - how to obtain something to wakeup the
> chip!
> According spec: there are 2 methods: INT/WAKE pin or something weird
> for me - SCL SDA and delays between them as it is described in
> ICNT88xx_Application note spec.
> In userspace I have just done enumerating all via exporting and
> probing: 391-392-393 - is TS relative (blank on/off) and by analogy
> with Chuwi Vi8 my experience - 393 is the same gpio to wakeup TS on
> Chuwi vi8.
> Simpe set 0-1 of 393 pin doesnot make i2cdetect -r -y 4  permanently
> something on 0x48 - it sometimes detects sometimes not and I am unable
> to read via mentioned above i2cget -f 4 0x048 0x000a nothing.
> So looks like chip is not wake uped.
>
> Kind regards,
>                        Serge Kolotylo.
>
> On Tue, Mar 1, 2016 at 10:02 AM, Gregor Riepl <onitake@xxxxxxxxx> wrote:
>> Hi Serge,
>>
>>> Howto use ACPI for touchscreen:
>>>
>>>   1) is it possible to detect via ACPI GPIO pin to INT/WAKE Touch?
>>>    2) If yes how to find out equivalent of this gpio pin in
>>> /sys/class/gpio? (to have userspace interface to it via export
>>> gpioPINNUMBER> /sys/class/gpio/export
>>> 3) From the bellow DSDT table touch is dependant from I2C5  while
>>> i2c-dev creates devices i2c-0...i2c-4. Does this mean that in ACPI
>>> base is 1 and I2C5 is identical to i2c-4 dev ?
>>
>> In a kernel driver, you don't have to do all of this yourself, as the kernel
>> will take care of ACPI parsing and device configuration when you request it.
>>
>> If your driver lives in user space, you need to do this mapping yourself.
>>
>> This is all the relevant information:
>>
>>>                        I2cSerialBus (0x0030, ControllerInitiated, 0x00061A80,
>>>                             AddressingMode7Bit, "\\_SB.I2C4",
>>>                             0x00, ResourceConsumer, ,
>>>                             )
>>>                         Interrupt (ResourceConsumer, Level,
>>> ActiveHigh, Exclusive, ,, )
>>>                         {
>>>                             0x00000044,
>>>                         }
>>>                         GpioIo (Exclusive, PullDefault, 0x0000,
>>> 0x0000, IoRestrictionOutputOnly,
>>>                             "\\_SB.GPO1", 0x00, ResourceConsumer, ,
>>>                             )
>>>                             {   // Pin list
>>>                                 0x001A
>>>                             }
>>>
>>
>> Device on I2C address 0x30 (with 7-bit addressing), on I2C controller I2C4
>> (not I2C5, I believe this dependency is a bug in the DSDT entry of many
>> touchscreen devices), speed 400kHz.
>> One IRQ line (pin number 0x44), high level triggered. This maps directly to
>> the physical pin on Baytrail AFAIK. I'm not sure how to access it from user
>> space. Perhaps GPIO works, and perhaps it's not needed at all if you do polling.
>> One output GPIO pin, number 0x1a on GPO1 with default pullup settings. This is
>> most likely the "wakeup" pin on the controller.
>>
>> I don't quite remember how the GPIO pin mapping works on Baytrail. Usually,
>> each "chip" has a base pin number, and the pin number from the DSDT entry is
>> added to that. Maybe check all /sys/class/gpio/gpiochip*/label entries and see
>> if you can find GPO1? You can then map the logical pin number (base + 0x1a)
>> using /sys/class/gpio/export
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-input" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux