public inbox for linux-usb@vger.kernel.org
 help / color / mirror / Atom feed
From: Johan Hovold <johan@kernel.org>
To: Marco Felsch <m.felsch@pengutronix.de>
Cc: Rob Herring <robh@kernel.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Jiri Slaby <jirislaby@kernel.org>,
	linux-serial@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-usb@vger.kernel.org
Subject: Re: [PATCH 0/3] USB-Serial serdev support
Date: Thu, 23 Oct 2025 14:32:44 +0200	[thread overview]
Message-ID: <aPogbAozezmqSMuU@hovoldconsulting.com> (raw)
In-Reply-To: <20250313194044.t2t3c7j6ktvshjhs@pengutronix.de>

On Thu, Mar 13, 2025 at 08:40:44PM +0100, Marco Felsch wrote:
> On 25-03-11, Johan Hovold wrote:
> > On Tue, Sep 17, 2024 at 06:49:48AM +0200, Marco Felsch wrote:
> > > On 24-09-09, Johan Hovold wrote:
> > > > On Wed, Aug 07, 2024 at 04:08:47PM +0200, Marco Felsch wrote:
> > > > > this patchset is based on Johan's patches [1] but dropped the need of
> > > > > the special 'serial' of-node [2].
> > > > 
> > > > That's great that you found and referenced my proof-of-concept patches,
> > > > but it doesn't seem like you tried to understand why this hasn't been
> > > > merged yet.
> > 
> > > > First, as the commit message you refer to below explain, we need some
> > > > way to describe multiport controllers. Just dropping the 'serial' node
> > > > does not make that issue go away.
> > > 
> > > Sorry for asking but isn't the current OF abstraction [1] enough? As far
> > > as I understood we can describe the whole USB tree within OF. I used [1]
> > > and the this patchset to describe the following hierarchy:
> > > 
> > >  usb-root -> usb-hub port-1 -> usb-serial interface-0 -> serial
> > >                                                          bt-module
> > > 
> > > [1] Documentation/devicetree/bindings/usb/usb-device.yaml
> > 
> > Again, you still need to consider devices with multiple serial ports
> > (and they do not always map neatly to one port per interface either).
> 
> We use a dual-port FTDI and our USB tree looks as followed:

> interface-0 is used for the bt-module which is served by the serdev
> driver.
> 
> interface-1 is used by an userspace driver which makes use of the
> /dev/ttyUSB1 port.
>
> So we do have the multiple serial ports use-case already. Can you please
> explain what I miss?

There are other USB serial devices that support multiple ports over a
single USB interface. The DT bindings need to account for that case as
well, and that probably means we should not be describing the interfaces
at all but rather the physical ports.

> > > > Second, and more importantly, you do not address the main obstacle for
> > > > enabling serdev for USB serial which is that the serdev cannot handle
> > > > hotplugging.
> > > 
> > > Hotplugging is a good point but out-of-scope IMHO (at least for now)
> > > since the current serdev implementation rely on additional firmware
> > > information e.g OF node to be present. E.g. if the above mentioned setup
> > > would connect the "serial bt-module" directly to the UART port you still
> > > need an OF node to bind the serdev driver. If the node isn't present
> > > user-space would need to do the hci handling.
> > 
> > There's nothing preventing you from adding a devicetree node for a USB
> > device that can be unplugged.
> 
> I see and I have to admit that I didn't test this :/ But since you
> pointed it out I tested it now!
> 
> So as explained, our USB tree looks as above and our DTS looks like the
> one in the cover letter. Of course I run on an embedded system but the
> USB FTDI based module is powered by the VBUS of the hub. Therefore I
> ran the test by disabling the downstream port which in turn disabled the
> VBUS supply. This should come very close to a physical unplug event.

You will also see the following kind of warnings in the logs:

ttyUSB ttyUSB0: tty_hangup: tty->count(1) != (#fd's(0) + #kopen's(0))
ttyUSB ttyUSB0: tty_port_close_start: tty->count = 1 port count = 0

which are due to the fact that serdev does not support hangups which are
used during teardown of USB serial ports.

> > > So from my POV the serdev abstraction is for manufacturers which make
> > > use of "onboard" usb-devices which are always present at the same USB
> > > tree location. Serdev is not made for general purpose USB ports (yet)
> > > where a user can plug-in all types of USB devices.
> > 
> > Right, but someone need to make sure that serdev can handle devices
> > going away first as nothing is currently preventing that from happening.
> 
> Can you please check my above tests? Maybe I do miss something but for
> me it looks like it's working. Looking forwards for your input.

I skimmed the code to verify that the issue is still there, and even
forward ported my patches to confirm that that you would still see the
port count warnings that indicate that something is amiss.

Johan

  parent reply	other threads:[~2025-10-23 12:32 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-07 14:08 [PATCH 0/3] USB-Serial serdev support Marco Felsch
2024-08-07 14:08 ` [PATCH 1/3] serdev: ttyport: make use of tty_kopen_exclusive Marco Felsch
2024-08-08  7:51   ` Jiri Slaby
2024-08-19 10:19     ` Marco Felsch
2024-08-19 10:42       ` Jiri Slaby
2024-08-19 12:23         ` Marco Felsch
2024-08-21  7:25     ` Marco Felsch
2024-08-07 14:08 ` [PATCH 2/3] USB: serial: cosmetic cleanup <space><tab> mix Marco Felsch
2024-08-07 14:08 ` [PATCH 3/3] USB: serial: enable serdev support Marco Felsch
2024-09-09 12:03 ` [PATCH 0/3] USB-Serial " Johan Hovold
2024-09-17  4:49   ` Marco Felsch
2025-03-11  8:12     ` Johan Hovold
2025-03-13 19:40       ` Marco Felsch
2025-08-21 16:40         ` Marco Felsch
2025-10-23 12:32         ` Johan Hovold [this message]
2025-10-23 13:48           ` Marco Felsch
2025-10-24  8:21             ` Johan Hovold
2025-10-24  9:27               ` Marco Felsch
2025-10-24 10:32                 ` Johan Hovold
2025-10-24 12:40                   ` Marco Felsch
2025-10-24 13:26                     ` Johan Hovold
2025-10-24 16:22                       ` Marco Felsch
2024-10-01  7:24 ` Marco Felsch
2024-10-01  7:29   ` Greg Kroah-Hartman
2024-10-01  7:47     ` Marco Felsch
2024-10-28 22:57     ` Marco Felsch
2025-03-03 11:25       ` Marco Felsch
2025-03-11  8:20       ` 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=aPogbAozezmqSMuU@hovoldconsulting.com \
    --to=johan@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jirislaby@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=m.felsch@pengutronix.de \
    --cc=robh@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