Re: cp210x module broken in 5.12.5 and 5.12.6, works in 5.11.21 (with bisection)

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

 



El 5/6/21 a las 05:13, Johan Hovold escribió:
On Fri, Jun 04, 2021 at 04:16:26PM -0700, David Frey wrote:
I'm not sure if this matters, but I have been told that the failing
boards have CP2102N chips with"A01" firmware.  I tried to install
SIlicon Labs Simplicity Studio on Windows because I read that it would
be able to identify the firmware version of the device, but I couldn't
actually figure out how to find the information. If someone can tell
me a way to get the firmware version, I can check to see if it's
different between the device that does exhibit this failure and the
one that doesn't.
That is definitely worth pursuing. The A01 is apparently EOLed and
there's a later A02 and possibly even A03:

	https://www.silabs.com/community/interface/knowledge-base.entry.html/2020/03/31/how_to_determinecp2102nrevisiona01vsa02-DCJI

That page refers to that vendor tool "Simplicity Studio" as well as a
Windows library described by

	https://www.silabs.com/documents/public/application-notes/AN978-cp210x-usb-to-uart-api-specification.pdf

that can be used to read out the firmware version on CP2102N and CP2108
(three bytes). We just need to figure out which vendor request the
library (and tool) uses and we could key off of this in the driver if
this turns out to be related to the firmware revision.

I modified the patch that added cp210x_dump_props() function, to dump the raw buffer received using the print_hex_dump() kernel function. For my device, I get this output:

jun 07 10:00:51 karlalex-asus kernel: cp210x propdata: 00000000: 42 00 00 01 01 00 00 00 00 00 00 00 80 02 00 00  B............... jun 07 10:00:51 karlalex-asus kernel: cp210x propdata: 00000010: 80 02 00 00 c0 c6 2d 10 01 00 00 00 3f 01 00 00  ......-.....?... jun 07 10:00:51 karlalex-asus kernel: cp210x propdata: 00000020: 7f 00 00 00 ff ff 07 10 0f 00 07 1f 80 02 00 00  ................ jun 07 10:00:51 karlalex-asus kernel: cp210x propdata: 00000030: 80 02 00 00 00 00 00 00 00 00 00 00 33 00 2e 00  ............3... jun 07 10:00:51 karlalex-asus kernel: cp210x propdata: 00000040: 30 00                                            0.
jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: wLength = 66
jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: ulMaxTxQueue = 640
jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: ulMaxRxQueue = 640
jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: ulProvSubType = 1
jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: ulProvCapabilities = 0x13f jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: ulSettableParams = 0x7f jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: ulCurrentTx-Queue = 640 jun 07 10:00:51 karlalex-asus kernel: cp210x ttyUSB0: ulCurrentRx-Queue = 640

According to the datasheet at https://www.silabs.com/documents/public/application-notes/AN571.pdf , the data at offset 60 should be an Unicode string containing the device vendor, with the last 3 characters denoting the version. The datasheet gives an example of "SILABS USB Vx.y". However, my actual output decodes to just "3.0". Is this enough for a blacklisting decision?




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux