Re: [PATCH] usb: typec: ucsi: Add UCSI_USB4_IMPLIES_USB quirk for X1E80100

From: Heikki Krogerus

Date: Fri Mar 13 2026 - 07:42:08 EST


Fri, Mar 13, 2026 at 02:44:40PM +0530, Krishna Kurapati PSSNV wrote:
> On Fri, Mar 13, 2026 at 2:24 PM Heikki Krogerus
> <heikki.krogerus@xxxxxxxxxxxxxxx> wrote:
> >
> > Thu, Mar 12, 2026 at 03:44:31PM +0530, Krishna Kurapati kirjoitti:
> > > On X1E80100, when we connect a USB4 capable dock, the PARTNER_FLAGS
> > > indicate USB4_GEN3 being set whilst keeping the PARTNER_FLAGS_USB
> > > cleared. Due to this, during ucsi_partner_change call, the usb role
> > > is marked as ROLE_NONE and passed to DWC3 controller the same way.
> > >
> > > Fix this by adding UCSI_USB4_IMPLIES_USB quirk and check for it to
> > > decide and pass on proper ROLE information to DWC3 layer.
> >
> > Do we need a quirk for this - can't we just always check the
> > USB4_GET<X>? With USB4, don't we always support USB2?
> >
>
> Thanks for the review Heikki.
>
> So you mean check for all the 3 bits (Bit 21/23 and 24) and if none of
> them is set, then pass ROLE_NONE ?
> I wasn't sure if all PPMs would work that way or not and hence made
> this quirk. Let me know if something like the following is fine:

Well, maybe it's better to play it safe. Let's go with this. We can
always drop the quirk later.

thanks,

> !((UCSI_CONSTAT(con, PARTNER_FLAG_USB)) ||
> (UCSI_CONSTAT(con, PARTNER_FLAG_USB4_GEN3)) ||
> (UCSI_CONSTAT(con, PARTNER_FLAG_USB4_GEN4)))
>
> The if check would see if all the 3 bits are "0" and then pass NONE to
> usb controller.
>
> Regards,
> Krishna,

--
heikki