* Re: usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260
[not found] <PR3PR10MB3898251C0136EEFE9DEC84FAA5902@PR3PR10MB3898.EURPRD10.PROD.OUTLOOK.COM>
@ 2026-10-26 11:38 ` Heikki Krogerus
2026-10-26 12:21 ` Ville Kivelä
0 siblings, 1 reply; 2+ messages in thread
From: Heikki Krogerus @ 2026-10-26 11:38 UTC (permalink / raw)
To: Ville Kivelä
Cc: linux-usb@vger.kernel.org, gregkh@linuxfoundation.org,
acelan.kao@canonical.com
Hi Ville,
On Sun, Oct 11, 2026 at 07:34:59PM +0000, Ville Kivelä wrote:
> Hi,
>
> The duplicate partner altmode filter added in 67c92c6419ea ("usb: typec:
> ucsi: Detect and skip duplicate altmodes from buggy firmware") keeps the
> invalid copy of the DisplayPort partner altmode on this machine and drops
> the valid one. The DP altmode driver then cannot bind, and the monitor's
> USB hub never works.
This is why from now on all quirks for this driver are going to be
isolated with either DMI match or something similar.
> Hardware:
> Dell XPS 14 DA14260 (Intel Panther Lake), BIOS 1.8.2 (2026-05-22)
> UCSI over ACPI: \_SB_.UBTC (USBC000:00)
> Partner: Dell U2720Q monitor (DP alt mode + USB hub + PD source)
> Kernel: 7.2.5 (Arch-based distro kernel "7.2.5-3-omarchy")
>
> The firmware returns the partner's DP altmode (SVID 0xff01) twice on every
> attach:
>
> ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring but please contact the BIOS vendor to fix this issue.
> ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x00140045
>
> The entry at offset 0 is invalid (0xff01a043: SVID in the upper half,
> identical whatever the monitor is configured to). The entry at offset 1
> is the real DP capabilities VDO, and it changes with the monitor's
> "USB-C Prioritization" setting, as expected:
>
> High Resolution: 0x00140045 (UFP_D, receptacle, pin assignments C/E)
> High Data Speed: 0x001c0045 (UFP_D, receptacle, pin assignments C/D/E)
>
> The port exposes a single DP altmode (port2.1, svid ff01, vdo 0x001c1c46),
> so the per-SVID cap is 1. The filter keeps the first partner entry and
> registers port2-partner.0 with vdo 0xff01a043:
>
> $ cat /sys/class/typec/port2-partner/port2-partner.0/{svid,vdo,active}
> ff01
> 0xff01a043
> yes
>
> typec_displayport does not bind to it (no displayport/ directory under the
> partner altmode), so the OS cannot choose a pin assignment.
>
> Observed result:
> - High Resolution: video works, but the monitor's hub never enumerates,
> not even at USB 2.0.
> - High Data Speed: the hub (0451:8440) enumerates at SuperSpeed on the
> TCSS xHCI and disconnects within ~1 s, as DP mode is entered. USB 2.0
> enumeration starts and never completes. There is no video.
>
> usb 2-3: new SuperSpeed USB device number 2 using xhci_hcd
> usb 2-3: New USB device found, idVendor=0451, idProduct=8440, bcdDevice= 1.10
> hub 2-3:1.0: USB hub found
> hub 2-3:1.0: 4 ports detected
> usb 3-4: new high-speed USB device number 6 using xhci_hcd
> usb 2-3: USB disconnect, device number 2
> ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring ...
> ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x001c0045
>
> The same monitor and cable work fully (video and hub) on a MacBook.
> Reproduced on two different USB-C ports, after a full power drain, and
> with Dell's "Video/Power only on Type-C ports" BIOS option disabled.
>
> The root cause is the firmware, and it has been reported to Dell. However,
> when duplicates disagree, keeping the first entry is arbitrary. Would it
> make sense to prefer an entry that passes basic validation? For SVID 0xff01
> that could mean a non-zero pin assignment field, no reserved bits set, and
> the upper 16 bits not equal to the SVID. Alternatively, the driver could
> prefer the last entry. I'm happy to test patches.
I already send a patch where I disable support for the alternate mode
reporting for all Dell XPS systems, but it looks like Greg missed that
patch - I'll resend it:
https://lore.kernel.org/linux-usb/20260911132850.1580669-1-heikki.krogerus@linux.intel.com/
It does not make sense to attempt to add more and more quirks to this
driver that fix firmware problems on these systems. Dell really has to
fix the PPM.
> Also seen once at boot on the same machine (cleared by reloading ucsi_acpi):
>
> ucsi_acpi USBC000:00: con1: failed to register alt modes
> ucsi_acpi USBC000:00: error -ETIMEDOUT: PPM init failed
That should get fixed with the above patch as well.
Thanks,
--
heikki
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260
2026-10-26 11:38 ` usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260 Heikki Krogerus
@ 2026-10-26 12:21 ` Ville Kivelä
0 siblings, 0 replies; 2+ messages in thread
From: Ville Kivelä @ 2026-10-26 12:21 UTC (permalink / raw)
To: Heikki Krogerus
Cc: Ville Kivelä, linux-usb@vger.kernel.org,
gregkh@linuxfoundation.org, acelan.kao@canonical.com
Hi Heikki,
Thanks for the quick reply, and for resending the patch. Understood that
this needs to be fixed by Dell.
For the DMI match: this machine reports sys_vendor Dell Inc. and
product_name XPS 14 DA14260, so it is covered by the quirk.
Thanks,
Ville
On Mon, Oct 26, 2026 at 1:38 PM Heikki Krogerus
<heikki.krogerus@linux.intel.com> wrote:
>
> Hi Ville,
>
> On Sun, Oct 11, 2026 at 07:34:59PM +0000, Ville Kivelä wrote:
> > Hi,
> >
> > The duplicate partner altmode filter added in 67c92c6419ea ("usb: typec:
> > ucsi: Detect and skip duplicate altmodes from buggy firmware") keeps the
> > invalid copy of the DisplayPort partner altmode on this machine and drops
> > the valid one. The DP altmode driver then cannot bind, and the monitor's
> > USB hub never works.
>
> This is why from now on all quirks for this driver are going to be
> isolated with either DMI match or something similar.
>
> > Hardware:
> > Dell XPS 14 DA14260 (Intel Panther Lake), BIOS 1.8.2 (2026-05-22)
> > UCSI over ACPI: \_SB_.UBTC (USBC000:00)
> > Partner: Dell U2720Q monitor (DP alt mode + USB hub + PD source)
> > Kernel: 7.2.5 (Arch-based distro kernel "7.2.5-3-omarchy")
> >
> > The firmware returns the partner's DP altmode (SVID 0xff01) twice on every
> > attach:
> >
> > ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring but please contact the BIOS vendor to fix this issue.
> > ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x00140045
> >
> > The entry at offset 0 is invalid (0xff01a043: SVID in the upper half,
> > identical whatever the monitor is configured to). The entry at offset 1
> > is the real DP capabilities VDO, and it changes with the monitor's
> > "USB-C Prioritization" setting, as expected:
> >
> > High Resolution: 0x00140045 (UFP_D, receptacle, pin assignments C/E)
> > High Data Speed: 0x001c0045 (UFP_D, receptacle, pin assignments C/D/E)
> >
> > The port exposes a single DP altmode (port2.1, svid ff01, vdo 0x001c1c46),
> > so the per-SVID cap is 1. The filter keeps the first partner entry and
> > registers port2-partner.0 with vdo 0xff01a043:
> >
> > $ cat /sys/class/typec/port2-partner/port2-partner.0/{svid,vdo,active}
> > ff01
> > 0xff01a043
> > yes
> >
> > typec_displayport does not bind to it (no displayport/ directory under the
> > partner altmode), so the OS cannot choose a pin assignment.
> >
> > Observed result:
> > - High Resolution: video works, but the monitor's hub never enumerates,
> > not even at USB 2.0.
> > - High Data Speed: the hub (0451:8440) enumerates at SuperSpeed on the
> > TCSS xHCI and disconnects within ~1 s, as DP mode is entered. USB 2.0
> > enumeration starts and never completes. There is no video.
> >
> > usb 2-3: new SuperSpeed USB device number 2 using xhci_hcd
> > usb 2-3: New USB device found, idVendor=0451, idProduct=8440, bcdDevice= 1.10
> > hub 2-3:1.0: USB hub found
> > hub 2-3:1.0: 4 ports detected
> > usb 3-4: new high-speed USB device number 6 using xhci_hcd
> > usb 2-3: USB disconnect, device number 2
> > ucsi_acpi USBC000:00: con3: Firmware bug: duplicate partner altmode SVID 0xff01 at offset 1, ignoring ...
> > ucsi_acpi USBC000:00: con3: VDO mismatch: 0xff01a043 vs 0x001c0045
> >
> > The same monitor and cable work fully (video and hub) on a MacBook.
> > Reproduced on two different USB-C ports, after a full power drain, and
> > with Dell's "Video/Power only on Type-C ports" BIOS option disabled.
> >
> > The root cause is the firmware, and it has been reported to Dell. However,
> > when duplicates disagree, keeping the first entry is arbitrary. Would it
> > make sense to prefer an entry that passes basic validation? For SVID 0xff01
> > that could mean a non-zero pin assignment field, no reserved bits set, and
> > the upper 16 bits not equal to the SVID. Alternatively, the driver could
> > prefer the last entry. I'm happy to test patches.
>
> I already send a patch where I disable support for the alternate mode
> reporting for all Dell XPS systems, but it looks like Greg missed that
> patch - I'll resend it:
> https://lore.kernel.org/linux-usb/20260911132850.1580669-1-heikki.krogerus@linux.intel.com/
>
> It does not make sense to attempt to add more and more quirks to this
> driver that fix firmware problems on these systems. Dell really has to
> fix the PPM.
>
> > Also seen once at boot on the same machine (cleared by reloading ucsi_acpi):
> >
> > ucsi_acpi USBC000:00: con1: failed to register alt modes
> > ucsi_acpi USBC000:00: error -ETIMEDOUT: PPM init failed
>
> That should get fixed with the above patch as well.
>
> Thanks,
>
> --
> heikki
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-26 12:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <PR3PR10MB3898251C0136EEFE9DEC84FAA5902@PR3PR10MB3898.EURPRD10.PROD.OUTLOOK.COM>
2026-10-26 11:38 ` usb: typec: ucsi: duplicate-altmode filter keeps invalid DP partner VDO on Dell XPS 14 DA14260 Heikki Krogerus
2026-10-26 12:21 ` Ville Kivelä
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.