Re: [RFC/RFT PATCH 0/3] Prepwork for non-PCIe NHI/TBT hosts

From: Mika Westerberg

Date: Tue Mar 10 2026 - 01:40:36 EST


Hi,

On Mon, Mar 09, 2026 at 11:32:58AM +0100, Konrad Dybcio wrote:
> Currently, the NHI driver (and other parts of the TBT framework) make
> multiple assumptions about the host router being a PCIe device. This
> series tries to decouple them by moving the 'struct pci_device' out of
> the NHI code and introduce NHI-on-PCIe-specific abstractions where
> necessary (with no functional change).
>
> The intended usage of the new nhi_probe_common() is pretty similar to
> other bus frameworks (I2C, SPI, USB..), i.e.:
>
> static int foo_bar_probe() {
> // get SoC-specifc resources (clks, regulators..)
>
> // power things on
>
> // set some implementation-specific registers
>
> // register NHI and all the sub-devices
> ret = nhi_probe_common(&my_usb4->nhi)

nhi_probe() is the "common".

Then pci.c and platform.c call it once they have their resources sorted
out.

>
> // cleanup boilerplate
> }
>
> Instead of the previously-suggested aux/fauxbus, the NHI device remains
> the same 'struct dev' as the PCIe/platform/[...] device that provides
> it. This is in line with some other buses and it makes things easier
> from the PM perspective.
>
> Compile-tested only for the PCIe case. The Qualcomm USB4 driver that
> leverages this patchset is unfortunately still work in progress and
> will be shared at a later time. Nonetheless, we need to get this
> non-PCIe topic sorted.

Wanted to mention that please make sure you test the next version on PCIe
platform properly. I can test smaller changes but more intrusive changes
like this the I don't really have the bandwidth. If Qualcomm is sponsoring
this work I'm sure they can find you a Intel/AMD machine that you can use
(a regular IT laptop typically has USB4 ports).

> Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
> ---
> Konrad Dybcio (3):
> thunderbolt: Move pci_device out of tb_nhi
> thunderbolt: Separate out common NHI bits
> thunderbolt: Add some more descriptive probe error messages
>
> drivers/thunderbolt/Makefile | 2 +-
> drivers/thunderbolt/acpi.c | 14 +-
> drivers/thunderbolt/ctl.c | 14 +-
> drivers/thunderbolt/domain.c | 2 +-
> drivers/thunderbolt/eeprom.c | 2 +-
> drivers/thunderbolt/icm.c | 25 +-
> drivers/thunderbolt/nhi.c | 494 ++++++---------------------------------
> drivers/thunderbolt/nhi.h | 32 +++
> drivers/thunderbolt/nhi_ops.c | 31 ++-
> drivers/thunderbolt/nhi_pci.c | 496 ++++++++++++++++++++++++++++++++++++++++
> drivers/thunderbolt/nhi_pci.h | 22 ++
> drivers/thunderbolt/switch.c | 41 +---
> drivers/thunderbolt/tb.c | 76 +-----
> drivers/thunderbolt/tb.h | 10 +-
> drivers/thunderbolt/usb4_port.c | 2 +-
> include/linux/thunderbolt.h | 5 +-
> 16 files changed, 699 insertions(+), 569 deletions(-)
> ---
> base-commit: fc7b1a72c6cd5cbbd989c6c32a6486e3e4e3594d
> change-id: 20260309-topic-usb4_nonpcie_prepwork-86881f769b8f
>
> Best regards,
> --
> Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>