From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
To: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
Cc: Andrei Kuchynski <akuchynski@chromium.org>,
Benson Leung <bleung@chromium.org>,
Jameson Thies <jthies@google.com>,
Tzung-Bi Shih <tzungbi@kernel.org>,
linux-usb@vger.kernel.org, chrome-platform@lists.linux.dev,
Guenter Roeck <groeck@chromium.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
"Christian A. Ehrhardt" <lk@c--e.de>,
Venkat Jayaraman <venkat.jayaraman@intel.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 04/10] usb: typec: Expose mode priorities via sysfs
Date: Tue, 12 Aug 2025 14:40:59 +0300 [thread overview]
Message-ID: <aJsoS3EXgoLP-f-E@kuha.fi.intel.com> (raw)
In-Reply-To: <CANFp7mVUFZyF8z0dN-Mo7ntPOXh06ZD0RH5GyvJJymOXrhSD1g@mail.gmail.com>
Hi Abhishek,
On Mon, Aug 11, 2025 at 11:22:38AM -0700, Abhishek Pandit-Subedi wrote:
> On Mon, Aug 11, 2025 at 7:25 AM Heikki Krogerus
> <heikki.krogerus@linux.intel.com> wrote:
> >
> > Hi Andrei,
> >
> > On Mon, Aug 04, 2025 at 09:03:33AM +0000, Andrei Kuchynski wrote:
> > > This patch introduces new sysfs attributes to allow users to configure
> > > and view Type-C mode priorities.
> > >
> > > `priority`, `usb4_priority` attributes allow users to assign a numeric
> > > priority to DisplayPort alt-mode, Thunderbolt alt-mode, and USB4 mode.
> > >
> > > `mode_priorities` - read-only attribute that displays an ordered list
> > > of all modes based on their configured priorities.
> > >
> > > Signed-off-by: Andrei Kuchynski <akuchynski@chromium.org>
> > > ---
> > > Documentation/ABI/testing/sysfs-class-typec | 33 +++++
> > > drivers/usb/typec/Makefile | 2 +-
> > > drivers/usb/typec/class.c | 103 +++++++++++++++-
> > > drivers/usb/typec/class.h | 1 +
> > > drivers/usb/typec/mode_selection.c | 130 ++++++++++++++++++++
> > > drivers/usb/typec/mode_selection.h | 23 ++++
> > > include/linux/usb/typec_altmode.h | 7 ++
> > > 7 files changed, 295 insertions(+), 4 deletions(-)
> > > create mode 100644 drivers/usb/typec/mode_selection.c
> > > create mode 100644 drivers/usb/typec/mode_selection.h
> > >
> > > diff --git a/Documentation/ABI/testing/sysfs-class-typec b/Documentation/ABI/testing/sysfs-class-typec
> > > index 38e101c17a00..575dd94f33ab 100644
> > > --- a/Documentation/ABI/testing/sysfs-class-typec
> > > +++ b/Documentation/ABI/testing/sysfs-class-typec
> > > @@ -162,6 +162,39 @@ Description: Lists the supported USB Modes. The default USB mode that is used
> > > - usb3 (USB 3.2)
> > > - usb4 (USB4)
> > >
> > > + What: /sys/class/typec/<port>/<alt-mode>/priority
> > > +Date: July 2025
> > > +Contact: Andrei Kuchynski <akuchynski@chromium.org>
> > > +Description:
> > > + Displays and allows setting the priority for a specific alt-mode.
> > > + When read, it shows the current integer priority value. Lower numerical
> > > + values indicate higher priority (0 is the highest priority).
> > > + If the new value is already in use by another mode, the priority of the
> > > + conflicting mode and any subsequent modes will be incremented until they
> > > + are all unique.
> > > + This attribute is visible only if the kernel supports mode selection.
> > > +
> > > + What: /sys/class/typec/<port>/usb4_priority
> > > +Date: July 2025
> > > +Contact: Andrei Kuchynski <akuchynski@chromium.org>
> > > +Description:
> > > + Displays and allows setting the priority for USB4 mode. Its behavior and
> > > + priority numbering scheme are identical to the general alt-mode
> > > + "priority" attributes.
> >
> > I'm not sure those above two file make any sense.
> >
> > > +What: /sys/class/typec/<port>/mode_priorities
> > > +Date: July 2025
> > > +Contact: Andrei Kuchynski <akuchynski@chromium.org>
> > > +Description: This read-only file lists the modes supported by the port,
> > > + ordered by their activation priority. It reflects the preferred sequence
> > > + the kernel will attempt to activate modes (DisplayPort alt-mode,
> > > + Thunderbolt alt-mode, USB4 mode).
> > > + This attribute is visible only if the kernel supports mode selection.
> > > +
> > > + Example values:
> > > + - "USB4 Thunderbolt3 DisplayPort"
> > > + - "DisplayPort": the port only supports Displayport alt-mode
> >
> > Why not just use this one instead so that you write the highest
> > priority mode to it?
>
> Feedback from Greg on
> https://lore.kernel.org/linux-usb/2025070159-judgingly-baggage-042a@gregkh/:
>
> "quote":
> Multiple value sysfs files are generally frowned apon. sysfs files that
> also have to be manually parsed in the kernel are also frowned apon.
> Are you _SURE_ there is no other way that you could possibly do this?
>
> The reason we originally suggested a single "mode priorities" was
> because we weren't sure what to do about USB4. Otherwise, it makes
> sense to push a priority field to each alt_mode sysfs group and keep
> it internally ordered. This is where I really wish we just treated
> USB4 as an alternate mode :)
I'm probable forgetting something, but I'm pretty sure I already told
you guys that I agree, it should be an alt mode. So why not just
register a special alt mode for it?
Sorry if I missed something.
> As such, our current API recommendation looks like the following:
>
> * On each port, we lay out priorities for all supported alternate modes + USB4.
This first part I understand.
> * We expose a file to trigger the mode selection task. Reading from it
> gives you the current status of mode selection (single value).
> * Detailed results from mode entry are pushed to the mode sysfs group
> (via entry_results). Converting these to UEVENT is fine but a more
> persistent value in debugfs would be useful for debugging.
This second part I would really like to handle separately, after we
have a solution for the first part.
thanks,
--
heikki
next prev parent reply other threads:[~2025-08-12 11:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-04 9:03 [PATCH v3 00/10] USB Type-C mode selection Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 01/10] usb: typec: Add alt_mode_override field to port property Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 02/10] platform/chrome: cros_ec_typec: Set alt_mode_override flag Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 03/10] usb: typec: ucsi: " Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 04/10] usb: typec: Expose mode priorities via sysfs Andrei Kuchynski
2025-08-11 14:25 ` Heikki Krogerus
2025-08-11 18:22 ` Abhishek Pandit-Subedi
2025-08-12 11:40 ` Heikki Krogerus [this message]
2025-08-12 20:33 ` Abhishek Pandit-Subedi
2025-08-14 8:22 ` Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 05/10] usb: typec: Implement automated mode selection Andrei Kuchynski
2025-08-04 13:00 ` kernel test robot
2025-08-11 15:31 ` Heikki Krogerus
2025-08-04 9:03 ` [PATCH v3 06/10] usb: typec: Report altmode entry status via callback Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 07/10] usb: typec: ucsi: displayport: Propagate DP altmode entry result Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 08/10] platform/chrome: cros_ec_typec: Propagate " Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 09/10] platform/chrome: cros_ec_typec: Report USB4 entry status via callback Andrei Kuchynski
2025-08-04 9:03 ` [PATCH v3 10/10] platform/chrome: cros_ec_typec: Add default_usb_mode_set support Andrei Kuchynski
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=aJsoS3EXgoLP-f-E@kuha.fi.intel.com \
--to=heikki.krogerus@linux.intel.com \
--cc=abhishekpandit@chromium.org \
--cc=akuchynski@chromium.org \
--cc=bleung@chromium.org \
--cc=chrome-platform@lists.linux.dev \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=gregkh@linuxfoundation.org \
--cc=groeck@chromium.org \
--cc=jthies@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lk@c--e.de \
--cc=tzungbi@kernel.org \
--cc=venkat.jayaraman@intel.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.