All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Woithe <jwoithe@just42.net>
To: linux-serial@vger.kernel.org
Subject: [Regression] CH341 USB-serial converter passes data in 32 byte chunks
Date: Tue, 12 Jul 2022 21:29:57 +0930	[thread overview]
Message-ID: <Ys1iPTfiZRWj2gXs@marvin.atrad.com.au> (raw)

Hi all

For many years I have been using a CH341 USB-serial converter (VID:PID
4348:5523) to drive a microcontroller programming dongle.  This was under
kernel 4.4.14.  When I recently upgraded the machine to a 5.15.27 kernel the
programmer stopped working, reporting timeouts.  Using a loopback cable and
minicom I discovered that under 5.15.27 data was only delivered back to
minicom in blocks of 32 characters.  This explains why the programming
software reported timeouts.  It seems that either outgoing data is blocked
until 32 bytes are ready for transmission, or receive data is only reported
in blocks of 32 bytes.

Under 4.4.14 (and all kernels prior to 4.10.0), individual characters are
echoed back by minicom as soon as they hare pressed on the keyboard.

As far as I can tell, the regression affects all kernels since 4.10.0.

I have done a git bisect which identified the following commit as the source
of the problem.

commit 55fa15b5987db22b4f35d3f0798928c126be5f1c
Author: Johan Hovold <johan@kernel.org>
Date:   Fri Jan 6 19:15:16 2017 +0100

    USB: serial: ch341: fix baud rate and line-control handling

    Revert to using direct register writes to set the divisor and
    line-control registers.

    A recent change switched to using the init vendor command to update
    these registers, something which also enabled support for CH341A
    devices. It turns out that simply setting bit 7 in the divisor register
    is sufficient to support CH341A and specifically prevent data from being
    buffered until a full endpoint-size packet (32 bytes) has been received.

    Using the init command also had the side-effect of temporarily
    deasserting the DTR/RTS signals on every termios change (including
    initialisation on open) something which for example could cause problems
    in setups where DTR is used to trigger a reset.

    Fixes: 4e46c410e050 ("USB: serial: ch341: reinitialize chip on
    reconfiguration")
    Signed-off-by: Johan Hovold <johan@kernel.org>


It would be great if this regression could be addressed.  At present I must
boot a pre-4.10 kernel whenever I need to use the programming dongle with
this converter.

Please let me know if there is anything I can do to help resolve the
problem.

Regards
  jonathan

             reply	other threads:[~2022-07-12 12:21 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-12 11:59 Jonathan Woithe [this message]
2022-07-12 12:43 ` [Regression] CH341 USB-serial converter passes data in 32 byte chunks Greg KH
2022-07-12 16:53   ` Johan Hovold
2022-07-13  0:22     ` Jonathan Woithe
2022-07-18  2:49       ` Jonathan Woithe
2022-07-18  8:53       ` Johan Hovold
2022-07-18 14:16         ` Johan Hovold
2022-07-19  3:59         ` Jonathan Woithe
2022-07-19  5:53           ` Johan Hovold
2022-07-19  6:34             ` Jonathan Woithe
2022-07-19  7:20               ` Johan Hovold
2022-07-19  8:05                 ` Jonathan Woithe
2022-07-19 12:18                   ` Jonathan Woithe
2022-07-23 10:57                     ` Johan Hovold
2022-07-25 23:45                       ` Jonathan Woithe
2022-07-29  9:10                         ` Johan Hovold

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ys1iPTfiZRWj2gXs@marvin.atrad.com.au \
    --to=jwoithe@just42.net \
    --cc=linux-serial@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.