From: Kristian Evensen <kristian.even...@gmail.com> Date: Sun, 7 Apr 2019 15:39:09 +0200
> Most, if not all, Quectel devices use dynamic interface numbers, and > users are able to change the USB configuration at will. Matching on for > example interface number is therefore not possible. > > Instead, the QMI device can be identified by looking at the interface > class, subclass and protocol (all 0xff), as well as the number of > endpoints. The reason we need to look at the number of endpoints, is > that the diagnostic port interface has the same class, subclass and > protocol as QMI. However, the diagnostic port only has two endpoints, > while QMI has three. > > Until now, we have identified the QMI device by combining a match on > class, subclass and protocol, with a call to the function > quectel_diag_detect(). In quectel_diag_detect(), we check if the number > of endpoints matches for known Quectel vendor/product ids. > > Adding new vendor/product ids to quectel_diag_detect() is not a good > long-term solution. This commit replaces the function with a quirk, and > applies the quirk to affected Quectel devices that I have been able to > test the change with (EP06, EM12 and EC25). If the quirk is set and the > number of endpoints equal two, we return from qmi_wwan_probe() with > -ENODEV. > > Signed-off-by: Kristian Evensen <kristian.even...@gmail.com> Applied.