linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sebastien Bourdeauducq <sb@m-labs.hk>
To: Benjamin Tissoires <benjamin.tissoires@gmail.com>
Cc: linux-input <linux-input@vger.kernel.org>,
	Mika Westerberg <mika.westerberg@linux.intel.com>
Subject: Re: "i2c_hid: Could not register for interrupt, irq = -1" on Thinkpad Tablet 10
Date: Sun, 01 Feb 2015 11:27:09 +0800	[thread overview]
Message-ID: <54CD9D0D.20402@m-labs.hk> (raw)
In-Reply-To: <CAN+gG=Gzi-gm1Hxvb1dt8xjLe4d_tBXEruu9HAru0x73dMAMCw@mail.gmail.com>

Hi,

On Sunday, February 01, 2015 04:39 AM, Benjamin Tissoires wrote:
> Mika sent a patch recently which should solve your problem.
> Can you give a try to the following patch?
> https://patchwork.kernel.org/patch/5709961/

With this patch and IRQF_TRIGGER_LOW | IRQF_ONESHOT, I get an interrupt 
flood and the kernel disables the interrupt line. I have reverted it to 
IRQF_TRIGGER_FALLING | IRQF_ONESHOT, and the i2c_hid initialization 
completes successfully.

The next problem is that the tablet has product ID 0x0114 and this is 
not recognized by the wacom_wac driver. I have added those entries in it:

static const struct wacom_features wacom_features_0x114 =
	{ "Wacom ISDv4 114", 26202, 16325, 255, 0,
	  TABLETPCE, WACOM_INTUOS_RES, WACOM_INTUOS_RES };
...
#define ANY_DEVICE_WACOM(prod)						\
	HID_DEVICE(HID_BUS_ANY, HID_GROUP_WACOM, USB_VENDOR_ID_WACOM, prod),\
	.driver_data = (kernel_ulong_t)&wacom_features_##prod
...
{ ANY_DEVICE_WACOM(0x114) },

I am just guessing here and copied the existing entry for product ID 
0x116. I don't know if those numbers are correct - also, should I have 
used the existing USB_DEVICE_WACOM macro instead of defining 
ANY_DEVICE_WACOM?

After those changes, I'm able to move the mouse pointer only once (and 
to the correct position) using the stylus, after which the digitizer 
crashes and becomes inoperable until a reboot. Unloading and reloading 
i2c_hid results in a "failed to reset device" message.

I have copied my DSDT entry below.

Thanks,
Sebastien

Device (DIGI)
{
     Name (_ADR, Zero)  // _ADR: Address
     Name (_HID, "WCOM0008")  // _HID: Hardware ID
     Name (_CID, "PNP0C50")  // _CID: Compatible ID
     Name (_DDN, "Digitizer")  // _DDN: DOS Device Name
     Name (_UID, One)  // _UID: Unique ID
     Method (_CRS, 0, NotSerialized)  // _CRS: Current Resource Settings
     {
         Name (RBUF, ResourceTemplate ()
         {
             I2cSerialBus (0x0009, ControllerInitiated, 0x00061A80,
                 AddressingMode7Bit, "\\_SB.I2C3",
                 0x00, ResourceConsumer, ,
                 )
             GpioInt (Level, ActiveLow, Exclusive, PullUp, 0x0000,
                 "\\_SB.GPO0", 0x00, ResourceConsumer, ,
                 )
                 {   // Pin list
                     0x0038
                 }
         })
         Return (RBUF)
     }

     Method (_STA, 0, NotSerialized)  // _STA: Status
     {
         If (LEqual (And (COMP, 0x04), 0x04))
         {
             Return (0x0F)
         }
         Else
         {
             Return (Zero)
         }
     }

     Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
     {
         Store ("Method _DSM begin", Debug)
         While (One)
         {
             Name (_T_0, Buffer (One)  // _T_x: Emitted by ASL Compiler
             {
                  0x00
             })
             CopyObject (ToBuffer (Arg0), _T_0)
             If (LEqual (_T_0, Buffer (0x10)
                     {
                         /* 0000 */   0xF7, 0xF6, 0xDF, 0x3C, 0x67, 
0x42, 0x55, 0x45,
                         /* 0008 */   0xAD, 0x05, 0xB3, 0x0A, 0x3D, 
0x89, 0x38, 0xDE
                     }))
             {
                 While (One)
                 {
                     Name (_T_1, Zero)  // _T_x: Emitted by ASL Compiler
                     Store (ToInteger (Arg2), _T_1)
                     If (LEqual (_T_1, Zero))
                     {
                         While (One)
                         {
                             Name (_T_2, Zero)  // _T_x: Emitted by ASL 
Compiler
                             Store (ToInteger (Arg1), _T_2)
                             If (LEqual (_T_2, One))
                             {
                                 Store ("Method _DSM Function Query", Debug)
                                 Return (Buffer (One)
                                 {
                                      0x03
                                 })
                             }
                             Else
                             {
                                 Return (Buffer (One)
                                 {
                                      0x00
                                 })
                             }

                             Break
                         }
                     }
                     Else
                     {
                         If (LEqual (_T_1, One))
                         {
                             Store ("Method _DSM Function HID", Debug)
                             Return (One)
                         }
                         Else
                         {
                             Return (Zero)
                         }
                     }

                     Break
                 }
             }
             Else
             {
                 Return (Buffer (One)
                 {
                      0x00
                 })
             }

             Break
         }
     }
}

  reply	other threads:[~2015-02-01  3:27 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-31 15:01 "i2c_hid: Could not register for interrupt, irq = -1" on Thinkpad Tablet 10 Sebastien Bourdeauducq
2015-01-31 20:39 ` Benjamin Tissoires
2015-02-01  3:27   ` Sebastien Bourdeauducq [this message]
2015-02-02 10:00     ` Mika Westerberg
2015-02-02 13:19       ` Sebastien Bourdeauducq
2015-02-02 13:48         ` Mika Westerberg
2015-02-02 15:32           ` Sébastien Bourdeauducq
2015-02-02 15:42             ` Benjamin Tissoires
2015-02-02 15:55               ` Sébastien Bourdeauducq
2015-02-02 15:57             ` Mika Westerberg
2015-02-03  8:53               ` Sébastien Bourdeauducq
2015-02-03 11:25                 ` Mika Westerberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54CD9D0D.20402@m-labs.hk \
    --to=sb@m-labs.hk \
    --cc=benjamin.tissoires@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).