On 09.02.22 16:18, Johan Hovold wrote: > On Tue, Feb 08, 2022 at 03:34:19PM +0200, Dmytro Bagrii wrote: >> On 08.02.22 12:34, Greg KH wrote: >>> On Mon, Feb 07, 2022 at 02:08:23AM +0200, Dmytro Bagrii wrote: >>>> This reverts commit 46ee4abb10a07bd8f8ce910ee6b4ae6a947d7f63. > >>>> CH341A has three different modes of operation selectable either by >>>> hardware pin connections or by external EEPROM configuration. Each >>>> mode is represented by corresponding product ID: >>>> >>>> 0x5523: Asyncronous Serial Interface >>>> 0x5584: Parallel Printer Interface >>>> 0x5512: EPP/MEM Interface >>> >>> That does not corrispond with what Jan-Niklas said in the original >>> commit. >> >> The page mentioned in the original commit is unavailable for me for some >> reason. >> >> I refer to the chip manufacturer documentation from here: >> http://wch-ic.com/downloads/CH341DS1_PDF.html. >> >> I have this kind of CH341A programmer: >> http://www.chinalctech.com/cpzx/Programmer/Serial_Module/266.html >> >> When mode selection jumper is set to UART: >> >> [52206.834474] usb 1-4.1: new full-speed USB device number 10 using xhci_hcd >> [52206.925482] usb 1-4.1: New USB device found, idVendor=1a86, >> idProduct=5523, bcdDevice= 3.04 >> [52206.925494] usb 1-4.1: New USB device strings: Mfr=0, Product=0, >> SerialNumber=0 >> [52206.973701] usbcore: registered new interface driver ch341 >> [52206.973710] usbserial: USB Serial support registered for ch341-uart >> [52206.973720] ch341 1-4.1:1.0: ch341-uart converter detected >> [52206.974424] usb 1-4.1: ch341-uart converter now attached to ttyUSB0 >> >> ch341 creates /dev/ttyUSB0 and it works as a serial port, as expected. >> >> When mode selection jumper is set to I2C/SPI (it uses EPP/MEM Interface): >> >> [52413.942116] usb 1-4.1: new full-speed USB device number 11 using xhci_hcd >> [52414.033085] usb 1-4.1: New USB device found, idVendor=1a86, >> idProduct=5512, bcdDevice= 3.04 >> [52414.033097] usb 1-4.1: New USB device strings: Mfr=0, Product=0, >> SerialNumber=0 >> [52414.040928] ch341 1-4.1:1.0: ch341-uart converter detected >> [52414.041930] usb 1-4.1: ch341-uart converter now attached to ttyUSB0 >> >> ch341 creates /dev/ttyUSB0 but it doesn't work. >> >> To use CH341A programmer as I2C/SPI converter either external module is >> required or userspace tools must be used. But they don't work until >> ch341 handles 1a86:5512. >> >> If unbind device from ch341 module: >> >> # echo 1-4.1:1.0 > /sys/bus/usb/drivers/ch341/unbind >> >> I2C/SPI tools start to work correctly. >> >>>> (See "5.3.Function configuration" in datasheet at wch-ic.com/downloads/CH341DS1_PDF.html) >>>> >>>> When CH341A is configured as EPP/MEM Interface it appears as 1a86:5512 and being mistakenly >>>> handled by ch341 USB serial driver. >>>> >>>> It is possible to use CH341A in EPP/MEM mode only if ch341 module is blacklisted, but it must be >>>> unblacklisted every time to use CH341A as a serial converter. Also obviously it is impossible >>>> to use two CH341A boards in different modes simoultaneously. >>> >>> Please wrap your lines at 72 columns. >> >> Sure. Should i submit new patch verіon then? > > Please do so. But make sure you read this thread first if you haven't > already: > > https://lore.kernel.org/r/YJ0OCS/sh+1ifD/q@xxxxxxxxxxxxxxxxxxxx Thanks. After i saw this patch i figured it out to remove and blacklist ch341 module to get CH341A working as I2C/SPI converter with i2c-ch341 and spi-ch341-usb drivers. I can confirm, CH341A works as serial converter with ch341 driver when it is configured as UART and has PID 5523. It can't work as I2C/SPI converter when configured as I2C/SPI and has PID5512 unless ch341 module is removed and blacklisted. > I don't remember all the details, but judging from a quick look it seems > we're just waiting for someone to resend the revert with a proper > explanation. > > It would be good if Jan-Niklas could chime in too and confirm if he's > able to use the device in UART mode instead. I'd like to take a look at that keeyees device from original commit message to see if it has EEPROM chip. I can hypothesize that some manufacturer of a CH341-based programmer could use external configuration EEPROM and mixed-up PID value. I haven't experiment with configuring CH341A with EEPROM but suppose it's possible to burn any custom VID:PID there. I don't think ch341 driver has to handle any of such custom VID/PID, especially if it conflicts with an original VID/PID assigned by chip manufacturer. In case of some peculiar devices it's possible to bind custom VID:PID to the driver via sysfs. But it's just my hypothetical assumption how ch341-based device with PID 5512 could work as UART in that case. I just checked if CH341 that i have can work as UART when configured as I2C/SPI (PID 5512). I doesn't work: no output signal on TX pin, no loopback echo when RX connected to self TX. -- Best Regards, Dmytro Bagrii.