From: Sascha Hauer <s.hauer@pengutronix.de>
To: Ahmad Fatoum <a.fatoum@pengutronix.de>
Cc: BAREBOX <barebox@lists.infradead.org>,
"Claude Sonnet 4.6" <noreply@anthropic.com>
Subject: Re: [PATCH 2/4] usb: typec: wire USB role changes to OTG device
Date: Mon, 20 Apr 2026 14:02:09 +0200 [thread overview]
Message-ID: <aeYVwX9AMDdmRNKq@pengutronix.de> (raw)
In-Reply-To: <2fd9dab7-40ab-4e75-b6c8-821bded735a0@pengutronix.de>
On Mon, Apr 20, 2026 at 01:08:41PM +0200, Ahmad Fatoum wrote:
> > +static bool typec_apply_otg_role(struct typec_port *port)
> > +{
> > + struct device_node *connector = port->dev.of_node;
> > + struct device_node *ep, *remote;
> > + struct device *dev;
> > + enum usb_dr_mode dr_mode;
> > + bool applied = false;
> > +
> > + if (!IS_ENABLED(CONFIG_USB_OTGDEV) || !connector)
> > + return false;
> > +
> > + if (port->usb_role == USB_ROLE_HOST)
> > + dr_mode = USB_DR_MODE_HOST;
> > + else if (port->usb_role == USB_ROLE_DEVICE)
> > + dr_mode = USB_DR_MODE_PERIPHERAL;
> > + else
> > + return false;
> > +
> > + for_each_endpoint_of_node(connector, ep) {
> > + remote = of_graph_get_remote_port_parent(ep);
> > + if (!remote)
> > + continue;
> > +
> > + bus_for_each_device(&otg_bus_type, dev) {
> > + if (dev->parent && dev->parent->of_node == remote) {
>
> I believe board code could've set the mode before we come here.
>
> Also, I think there must be a way to opt out of this.
>
> Let's assume you load barebox via USB on a Type C port. You may not be
> able to yank the cable away fast enough before barebox does the one-way
> otg -> peripheral transition.
Should have sent this as RFC, because these are the questions I had as
well. Ideally the otg->host or otg->device transition shouldn't be
oneway, but that might open a can of worms.
> > +late_initcall(typec_apply_otg_roles);
>
> Does postenvironment not make more sense, so the environment can
> override this?
Sounds good, but then you don't have a chance anymore to do something
with the device from board code.
Ok, so we need something to opt in/out from that mechanism and also
something for board code to call the role transition earlier when
needed.
Sascha
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2026-04-20 12:02 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-20 9:02 [PATCH 0/4] usb: typec: STUSB160x support Sascha Hauer
2026-04-20 9:02 ` [PATCH 1/4] usb: otg: Add function to set dr_mode Sascha Hauer
2026-04-20 10:42 ` Ahmad Fatoum
2026-04-20 9:02 ` [PATCH 2/4] usb: typec: wire USB role changes to OTG device Sascha Hauer
2026-04-20 11:08 ` Ahmad Fatoum
2026-04-20 12:02 ` Sascha Hauer [this message]
2026-04-20 9:02 ` [PATCH 3/4] usb: typec: add typec_find_port_power_role() and typec_find_pwr_opmode() Sascha Hauer
2026-04-20 9:02 ` [PATCH 4/4] USB: typec: Add STUSB160x driver Sascha Hauer
2026-04-20 11:14 ` Ahmad Fatoum
2026-04-20 11:30 ` Sascha Hauer
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=aeYVwX9AMDdmRNKq@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=a.fatoum@pengutronix.de \
--cc=barebox@lists.infradead.org \
--cc=noreply@anthropic.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 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.