From: Greg KH <gregkh@linuxfoundation.org>
To: Jonathan Woithe <jwoithe@just42.net>, Johan Hovold <johan@kernel.org>
Cc: linux-serial@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: [Regression] CH341 USB-serial converter passes data in 32 byte chunks
Date: Tue, 12 Jul 2022 14:43:41 +0200 [thread overview]
Message-ID: <Ys1sfRyL6El7go94@kroah.com> (raw)
In-Reply-To: <Ys1iPTfiZRWj2gXs@marvin.atrad.com.au>
On Tue, Jul 12, 2022 at 09:29:57PM +0930, Jonathan Woithe wrote:
> 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
Please always cc: the developer who wrote a commit that you have
questions about, so that they are sure to see it, otherwise it's just
random luck :)
> 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 seems like this change does the opposite of what it says, we don't
want the device to wait for a full endpoint of packets to send stuff
out, right?
> 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.
If you revert this commit on top of the latest kernel release, does it
solve the problem for you?
thanks,
greg k-h
next prev parent reply other threads:[~2022-07-12 12:43 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-12 11:59 [Regression] CH341 USB-serial converter passes data in 32 byte chunks Jonathan Woithe
2022-07-12 12:43 ` Greg KH [this message]
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=Ys1sfRyL6El7go94@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=johan@kernel.org \
--cc=jwoithe@just42.net \
--cc=linux-serial@vger.kernel.org \
--cc=linux-usb@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox