From: David Heidelberg <david@ixit.cz>
To: Martin Blumenstingl <martin.blumenstingl@googlemail.com>,
Corentin Labbe <clabbe@baylibre.com>
Cc: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org,
linux-usb@vger.kernel.org, Johan Hovold <johan@kernel.org>
Subject: Re: [PATCH v8 1/2] usb: serial: add support for CH348
Date: Wed, 22 Apr 2026 14:55:36 +0200 [thread overview]
Message-ID: <f7aedad7-cece-463b-a6f4-9303a552f5f0@ixit.cz> (raw)
In-Reply-To: <aWZlYuFXYd5eAZTT@hovoldconsulting.com>
kind ping, I'm still hoping one day we get the driver without need of manual
building aside.
Thank you for your the efforts you put all into it
David
01/2026 16:31, Johan Hovold wrote:
> On Mon, Dec 15, 2025 at 03:10:29AM +0100, Martin Blumenstingl wrote:
>> On Mon, Dec 1, 2025 at 3:10 PM Johan Hovold <johan@kernel.org> wrote:
>
>>>> Unfortunately I don't know how to read the HW flow control state from
>>>> the hardware.
>>>> Do you have any suggestions, how I can test HW flow control (after
>>>> manually enabling it for a port)?
>>>
>>> You can try disabling reading from the device (e.g. never submit the
>>> read urbs) and see if the RTS is deasserted when the buffer fills up.
>
>> Doing so results in:
>> - lots of UART_LSR_OE
>> - RTS stays LOW (pulled to GND)
>>
>> UART_LSR_OE increasing seems correct as far as I understand this.
>> RTS being LOW is wrong and I cannot manage to get ch348 to pull it to HIGH.
>>
>> I did some more research and found that ch348 implements UART_IIR_MSI
>> and provides a fully standard compatible UART_MSR.
>> This is either triggered by a status change on the pins (UART_MSR
>> delta bits and the actual status bits), or by requesting an update
>> using the VEN_R command (UART_MSR status bits only, no delta bits).
>>
>> In a very simple test-case I've used jumper cables on port #0 of ch348:
>> - RX and TX connected together
>> - CTS and RTS connected together
>>
>> If I remove the jumper between CTS and RTS I get:
>> ch348 ttyUSB0: got MSR = 0x01 // jumper removed
>> ch348 ttyUSB0: got MSR = 0x11 // jumper connected again
>> ch348 ttyUSB0: got MSR = 0x01 // jumper removed again
>>
>> So the hardware does register the change.
>>
>> Earlier I thought I found a fix: I had the values for
>> R_C4_HW_FLOW_CONTROL_OFF and R_C4_HW_FLOW_CONTROL_ON swapped.
>> That however didn't fix it.
>>
>> My current work can be found here: [0]
>> If you also don't have any further ideas then I'll drop the whole
>> RTS/CTS code for now so the ch348 driver can finally make it into
>> Linux 6.20
>
> Or you can include it and just document the known issue with RTS control
> for port 1. It seems you have everything else working, right?
>
>>> And in the other direction, verify that writes are buffered after you
>>> deassert RTS manually on the other end. That should be easier.
>
>> This seems to work: if I pull CTS up then ch348 stops sending data
>
> So that means hardware flow control (CRTSCTS) is enabled, which could
> prevent manual control of RTS. Which port did you test this on? Or is it
> the same behaviour on all ports (0-3)?
>
> Going back to archives, it seems like you can control RTS on ports 0, 2
> and 3. (And DTR/RTS is not available for ports 4-7).
>
> Hardware flow being enabled on just port 1 may explain the difference
> even if you would expect the device to also deassert RTS in the overflow
> test (unless there are separate bits for controlling auto-rts and
> auto-cts).
>
>>>> In case I can't easily figure it out: would you also accept a driver
>>>> that doesn't support RTS/CTS for its initial version?
>>>
>>> It's good to at least be able to control DTR/RST at open/close (i.e.
>>> implement dtr_rts()) so that you can communicate when the other end
>>> has hw flow enabled. Sound like you're really close to doing so.
>
>> In the meantime I found out why I had trouble with the DTR signal on port 1.
>> It was a user(space) error. I've been using [1] for some of my tests
>> and it has a bug where it would clear c_cflag HUPCL [2], which
>> prevents the kernel from turning DTR off on port close.
>
> Ah, good that you found that.
>
> Johan
--
David Heidelberg
next prev parent reply other threads:[~2026-04-22 12:55 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-04 13:58 [PATCH v8 0/2] usb: serial: add support for CH348 Corentin Labbe
2025-02-04 13:58 ` [PATCH v8 1/2] " Corentin Labbe
2025-03-20 12:56 ` David Heidelberg
2025-05-12 10:03 ` Johan Hovold
2025-07-15 21:20 ` Martin Blumenstingl
2025-07-16 7:44 ` Greg KH
2025-07-16 8:28 ` Martin Blumenstingl
2025-07-16 8:57 ` Greg KH
2025-07-16 9:31 ` Martin Blumenstingl
2025-07-16 10:00 ` Greg KH
2025-07-16 11:24 ` Martin Blumenstingl
2025-07-25 10:14 ` Johan Hovold
2025-07-25 10:07 ` Johan Hovold
2025-07-26 14:54 ` Martin Blumenstingl
2025-07-29 9:43 ` Johan Hovold
2025-07-29 20:45 ` Martin Blumenstingl
2025-08-04 12:32 ` Johan Hovold
2025-08-04 21:35 ` Martin Blumenstingl
2025-08-27 10:07 ` Johan Hovold
2025-11-29 15:59 ` Martin Blumenstingl
2025-12-01 14:10 ` Johan Hovold
2025-12-15 2:10 ` Martin Blumenstingl
2026-01-13 15:31 ` Johan Hovold
2026-04-22 12:55 ` David Heidelberg [this message]
2025-02-04 13:58 ` [PATCH v8 2/2] usb: serial: add Martin and myself as maintainers of CH348 Corentin Labbe
2025-03-30 1:24 ` [PATCH v8 1/2] usb: serial: add support for CH348 Nicolas Frattaroli
2025-03-30 22:11 ` David Heidelberg
[not found] ` <CA+j61XMwrtRJhGiJu_T5tt3g14fseOqvOJZLbb2bQGduSJsmxQ@mail.gmail.com>
2025-05-04 21:26 ` [PATCH v8 0/2] " Martin Blumenstingl
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=f7aedad7-cece-463b-a6f4-9303a552f5f0@ixit.cz \
--to=david@ixit.cz \
--cc=clabbe@baylibre.com \
--cc=gregkh@linuxfoundation.org \
--cc=johan@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=martin.blumenstingl@googlemail.com \
/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