On Tue, Nov 4, 2014 at 10:06 AM, Dmitry Torokhov
<dmitry.torok...@gmail.com> wrote:
> On Tue, Nov 04, 2014 at 09:38:38AM -0800, Ping Cheng wrote:
>> Hi Dmitry,
>>
>> On Tue, Nov 4, 2014 at 12:08 AM, Dmitry Torokhov
>> <dmitry.torok...@gmail.com> wrote:
>> > On Sat, Nov 01, 2014 at 08:40:19AM +0100, Hans Petter Selasky wrote:
>> >> On 11/01/14 00:27, Ping Cheng wrote:
>> >> >If touch_input is NULL on FreeBSD, you need to figure out the root
>> >> >cause. Checking on touch_input itself would not fix the root cause...
>> >>
>> >> Right.
>> >>
>> >> The root cause is that FreeBSD launches two instances of the driver,
>> >> running in two different userland processes, for the two different
>> >> Wacom interfaces on a common USB device. In Linux the wacom
>> >> interface drivers are running from the same kernel, and can share
>> >> the data in question, but in FreeBSD's webcamd emulation, this
>> >> doesn't work. Then the first wacom probe call would have to grab the
>> >> second interface.
>> >>
>> >> Technically speaking this is a FreeBSD only problem and I plan to
>> >> deliver a patch with the webcamd software to fix this, like already
>> >> suggested to you guys. This situation can also happen on Linux in
>> >> case of a "BadUSB" device. That's why I think that the NULL check
>> >> should be upstreamed.
>> >
>> > Hmm, looking at this again it seems that we just cross our fingers and
>> > hope that both interfaces are enumerated by the time we get event data
>> > from the device. I do not think this is quite safe. We probably should
>> > be checking the overall state of probing (i.e. whether we are done
>> > probing both interfaces) before processing data for the device.
>>
>> Are you going to make a patch to address the issue?
>
> Not in the nearest future, sorry.

No problem. I just want to make sure we don't duplicate the work...

>> > Or maybe we should just forcibly try claiming secondary interface
>> > while probing primary instead of messing with shared data item.

I looked into the code. It is not a simple task to claim secondary
interface while probing the primary one. For some devices, there is no
easy way to tell if they have multi-interfaces or not before accessing
the data,

>> If we incorporate the above idea into a patch, we need to keep in mind
>> that not all tablets support touch data. So, not all tablets have two
>> interfaces.
>
> Right, but we do know the models that use multiple interfaces, right?

Some models may have same product ID but can have pen or pen and touch
interfaces. We'll have to request the device to be sure...

Since touch_input is the only shared data/pointer that should not be
called before all interlaces are probed, checking on touch_input when
it is called, as suggested by Hans, is a feasible solution. As a
by-product, it also fixes the FreeBSD issue.

I'll post my patch here soon.

Ping
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to