Querying USB device's bInterfaceNumber
peter.hutterer at who-t.net
Tue Nov 3 15:13:38 PST 2009
On Tue, Nov 03, 2009 at 02:42:03PM -0800, Greg KH wrote:
> On Tue, Nov 03, 2009 at 02:35:04PM -0800, Ping wrote:
> > On Tue, Nov 3, 2009 at 2:08 PM, Greg KH <greg at kroah.com> wrote:
> > > On Tue, Nov 03, 2009 at 12:19:54PM -0800, Ping wrote:
> > > > These questions make me feel the kernel driver may need some work.
> > > Anyway,
> > > > let me share what I have now before we can figure out a better solution:
> > > >
> > > > Wacom supports both penabled and touch digitizers. The older tablets
> > > > doesn't have touch. So, there is no problem there. The newer tablets
> > > have
> > > > both pen and touch through the same physical USB port. They are definded
> > > in
> > > > separate HID descriptors with the same vendor id and product id. So, for
> > > > kernel, I think, it is one physical device.
> > >
> > > Yes, but it should show up as 2 different hid devices, right?
> > >
> > Will that help? Wacom devices are not processed by HID. We told hid-core.c
> > to ignore all Wacom devices. That is why I said "I am in control" (I know I
> > am not in control. I am most likely in the middle of nowhere :).
> Heh, ah, that makes more sense now.
> So you need to intrepret the hid report yourself in your driver and
> export 2 devices to userspace which your xorg driver should then be able
> to determine which is which by some type of identifier in them (not the
> interface number, use the type of the device somehow.)
On that note - if you're exporting two devices to userspace for this feature
how much more work would it be to have it export the other tools as separate
devices as well. Getting rid of the "one device is really four devices"
seems to be a winner from the X perspective at least. It would slim down the
driver by a great deal.
It also means we don't need this massive table in the X driver that decides
which tools are available for a given device - stuff like that belongs in
the kernel driver.
More information about the xorg-devel