Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Apple’s adapter doesn’t support USB. It’s purely a Thunderbolt device. This dock is just USB. If someone needs to connect Thunderbolt disks they would need something like Caldigit’s element hub and the Apple adapter.
I understand this. Sorry if it wasn't clear, I was talking about an actual TB4 hub (really a switch). Not this USB-C hub.
 
In the case of Thunderbolt 4 and Thunderbolt 3 docks which support USB-C upstream (Titan Ridge based docks: e.g. HP Thunderbolt Dock G2 and Goshen Ridge based docks: e.g. CalDigit Element Hub), there is one USB port being used for all USB devices. 10 Gbps max.

In the case of old Thunderbolt 3 docks which don't support USB-C upsrteam, the dock may contain multiple controllers. The CalDigit TS3+ has one 1 Gbps Ethernet controller, two 4 Gbps USB controllers, one 8 Gbps USB controller, and one 10 Gbps USB controller for ≈22 Gbps max.

The CalDigit TS4 is Goshen Ridge but it includes a separate controller for 2.5 Gbps Ethernet so it's bandwidth can be up to 12.5 Gbps.

I've waited till this thread went dormant before asking this question; I didn't want to hijack the thread too soon. :) Your posts generally leave me wanting to ask more so that I can learn.

I've very interested in the TB3 versus the TB4 with regard to USB. I'm not absolutely sure what you mean by USB-C, since you don't mean the connector. I'm assuming you mean USB 3.2. That might be a standard interpretation in your more technical circles.

I read the quoted part to say that TS3+ doesn't support USB-C upstream, TB4 does. I'm get many USB 3.2 SSD disconnects when attached to be TB3+. I'm considering upgrading to TB4. Could you explain what supporting USB-C upstream means?
 
I've very interested in the TB3 versus the TB4 with regard to USB. I'm not absolutely sure what you mean by USB-C, since you don't mean the connector. I'm assuming you mean USB 3.2. That might be a standard interpretation in your more technical circles.
By "USB-C upstream" I mean USB instead of Thunderbolt. So USB 3.2 would be correct.

I read the quoted part to say that TS3+ doesn't support USB-C upstream, TB4 does. I'm get many USB 3.2 SSD disconnects when attached to be TB3+. I'm considering upgrading to TB4. Could you explain what supporting USB-C upstream means?
Upstream is the connection from the dock that leads upstream to the host computer. Downstream is the direction that leads away from the host computer.

A Thunderbolt 3 device that has an Alpine Ridge Thunderbolt controller only supports Thunderbolt connection to the computer. It might have a USB billboard device that can tell the OS that it does not support USB. Since it only supports Thunderbolt, all the devices that transmit data must be PCIe. A Thunderbolt 3 controller has 4 PCIe lanes which can be configured as x4, x2x2, x2x1x1, or x1x1x1x1. The TS3+ connects four PCIe controllers using x1x1x1x1 (1 PCIe lane for each controller). The Thunderbolt controller has a built-in 10 Gbps USB controller for supporting downstream USB devices connected to the downstream Thunderbolt ports.

A Thunderbolt 3 device that has a Titan Ridge Thunderbolt controller can connect as a Thunderbolt device or as a USB device. If it connects as a USB device, then only USB devices can work. To make all the devices useful for both types of connections, Titan Ridge based docks usually only contain USB devices connected using one or more USB hubs.

A Thunderbolt 4 device (usually has a Goshen Ridge Thunderbolt controller) can also connect as a Thunderbolt device or as a USB device. Unlike Titan Ridge and Alpine Ridge, it only has 1 PCIe lane for PCIe devices (I guess this is because it uses pins on the controller for extra Thunderbolt ports instead of making the controller bigger). The CalDigit TS4 is interesting because it uses the PCIe lane for the 2.5 GbE controller which cannot be used when the dock is connected using USB instead of Thunderbolt.

You can force a Thunderbolt device to connect as USB by using a USB Type A to USB Type C cable for the upstream connection.

You can use a USB-C (non-Thunderbolt) cable, but that will just make the device connect as Thunderbolt 20 Gbps instead of Thunderbolt 40 Gbps.
 
By "USB-C upstream" I mean USB instead of Thunderbolt. So USB 3.2 would be correct.


Upstream is the connection from the dock that leads upstream to the host computer. Downstream is the direction that leads away from the host computer.

A Thunderbolt 3 device that has an Alpine Ridge Thunderbolt controller only supports Thunderbolt connection to the computer. It might have a USB billboard device that can tell the OS that it does not support USB. Since it only supports Thunderbolt, all the devices that transmit data must be PCIe. A Thunderbolt 3 controller has 4 PCIe lanes which can be configured as x4, x2x2, x2x1x1, or x1x1x1x1. The TS3+ connects four PCIe controllers using x1x1x1x1 (1 PCIe lane for each controller). The Thunderbolt controller has a built-in 10 Gbps USB controller for supporting downstream USB devices connected to the downstream Thunderbolt ports.

A Thunderbolt 3 device that has a Titan Ridge Thunderbolt controller can connect as a Thunderbolt device or as a USB device. If it connects as a USB device, then only USB devices can work. To make all the devices useful for both types of connections, Titan Ridge based docks usually only contain USB devices connected using one or more USB hubs.

A Thunderbolt 4 device (usually has a Goshen Ridge Thunderbolt controller) can also connect as a Thunderbolt device or as a USB device. Unlike Titan Ridge and Alpine Ridge, it only has 1 PCIe lane for PCIe devices (I guess this is because it uses pins on the controller for extra Thunderbolt ports instead of making the controller bigger). The CalDigit TS4 is interesting because it uses the PCIe lane for the 2.5 GbE controller which cannot be used when the dock is connected using USB instead of Thunderbolt.

You can force a Thunderbolt device to connect as USB by using a USB Type A to USB Type C cable for the upstream connection.

You can use a USB-C (non-Thunderbolt) cable, but that will just make the device connect as Thunderbolt 20 Gbps instead of Thunderbolt 40 Gbps.

Thanks for that; I appreciate your time. Your post is kind of gateway drug for me. I've been using it as motivation to research things since yesterday when I read it.

I've read Intel's high-level brief on Thunderbolt 3, but haven't found one for Thunderbolt 4. Also, I've found high-level technical briefs 6000 (Alpine) and 7000 (Titan) series controllers. I can't find anything for the 8440 (Goshen Ridge). Unfortunately, that's the part of your explanation that left me the most confused and uncertain about purchasing the TS4.

To illustrate the extent of my confusion...

You seem to be saying that if I were to attach a Thunderbolt PCIe/NVMe SSD enclosure to a Thunderbolt 4 dock (I've considered buying one with the JHL7440), it would only have access to a single PCIe lane. And in the case of the TS4, I couldn't even connect such an enclosure since the single PCIe lane is already committed to the Ethernet controller.

I think I'm misunderstanding what you're saying, but I'll keep researching.

Thanks again. Your insights are very helpful; I just need to find a way to fit them into a broader understanding.
 
You seem to be saying that if I were to attach a Thunderbolt PCIe/NVMe SSD enclosure to a Thunderbolt 4 dock (I've considered buying one with the JHL7440), it would only have access to a single PCIe lane. And in the case of the TS4, I couldn't even connect such an enclosure since the single PCIe lane is already committed to the Ethernet controller.
See https://forums.macrumors.com/threads/testing-tb3-aic-with-mp-5-1.2143042/post-27612591 and look at the attachment.

The Thunderbolt controller is a chip containing multiple PCI devices. It appears as a PCIe upstream bridge device with multiple downstream bridges:
1) There's a downstream bridge for the NHI device which is the brains of the Thunderbolt controller. This is a USB4 controller in the Goshen Ridge case.
2) There's a downstream bridge for the USB 3.1 gen 2 controller.
3) There's a downstream bridge for each of the Thunderbolt ports. These will connect to the upstream bridge of downstream connected Thunderbolt devices.
4) There's 1 to 4 downstream bridges for the PCIe lanes of the Thunderbolt controller depending on how its configured. 1 bridge for x4. 2 for x2x2. 3 for x2x1x1. 4 for x1x1x1x1. Goshen Ridge only has 1 bridge for x1. These bridges will connect to PCI controllers in the Thunderbolt device. Of course, nothing is stopping the PCI controller from being another PCI bridge, such as used in the Sonnet Echo Express III-D or if you connect a PCIe card like the Highpoint SSD7505 into a single slot Thunderbolt PCIe Expansion chassis like the OWC Mercury Helios 3S.

The USB controller connects to USB devices connected to the Thunderbolt ports. Titan Ridge also has a separate USB port which can connect to USB hubs. In Goshen Ridge, a USB hub is built-in so that the USB controller can connect to the 3 Thunderbolt ports and a separate USB port. Simple Thunderbolt 4 hubs such as the OWC Thunderbolt Hub, expose that USB port as a type A port. The CalDigit Element Hub connects a USB hub internally to the separate USB port of the built-in hub to provide 4 type A ports. A Thunderbolt 4 dock and Titan Ridge based dock may add more USB hubs and USB devices. Alpine Ridge based docks don't usually add USB hubs since they can connect USB controllers that have two or four ports.

Host Thunderbolt controllers will usually have two DisplayPort inputs (but some only have one?). Thunderbolt 4 is guaranteed to always support at least 2. For Thunderbolt 4, Maple Ridge is the host controller. I don't think Goshen Ridge as a peripheral controller has DisplayPort inputs. The host Thunderbolt controller takes the DisplayPort inputs from the GPU to tunnel the DisplayPort signals to DisplayPort outputs of downstream Thunderbolt controllers.

A Thunderbolt controller can output DisplayPort to its Thunderbolt ports and/or a separate DisplayPort output such as seen on the OWC Mercury Helios 3S or the GC-ALPINE RIDGE or GC-TITAN RIDGE.

Peripheral Thunderbolt controllers may also have DisplayPort inputs but these are never used except in the case of a small set of eGPUs: the BlackMagic eGPU and the Sonnet eGPU Breakaway Puck RX 5550 XT/5700. You can actually connect 4 displays to Thunderbolt with one of those. Connect two before the eGPU - these will be controlled by the GPU connected to the Host Thunderbolt controller. Connect two after the eGPU - these will be controller by the GPU of the eGPU. I don't know if you can connect 4 displays to Thunderbolt after the eGPU. Anyway, why would you? You could just connect a normal eGPU containing something like the Radeon Pro W5700 and connect up to 6 normal displays.
 
See https://forums.macrumors.com/threads/testing-tb3-aic-with-mp-5-1.2143042/post-27612591 and look at the attachment.

The Thunderbolt controller is a chip containing multiple PCI devices. It appears as a PCIe upstream bridge device with multiple downstream bridges:
1) There's a downstream bridge for the NHI device which is the brains of the Thunderbolt controller. This is a USB4 controller in the Goshen Ridge case.
2) There's a downstream bridge for the USB 3.1 gen 2 controller.
3) There's a downstream bridge for each of the Thunderbolt ports. These will connect to the upstream bridge of downstream connected Thunderbolt devices.
4) There's 1 to 4 downstream bridges for the PCIe lanes of the Thunderbolt controller depending on how its configured. 1 bridge for x4. 2 for x2x2. 3 for x2x1x1. 4 for x1x1x1x1. Goshen Ridge only has 1 bridge for x1. These bridges will connect to PCI controllers in the Thunderbolt device. Of course, nothing is stopping the PCI controller from being another PCI bridge, such as used in the Sonnet Echo Express III-D or if you connect a PCIe card like the Highpoint SSD7505 into a single slot Thunderbolt PCIe Expansion chassis like the OWC Mercury Helios 3S.

The USB controller connects to USB devices connected to the Thunderbolt ports. Titan Ridge also has a separate USB port which can connect to USB hubs. In Goshen Ridge, a USB hub is built-in so that the USB controller can connect to the 3 Thunderbolt ports and a separate USB port. Simple Thunderbolt 4 hubs such as the OWC Thunderbolt Hub, expose that USB port as a type A port. The CalDigit Element Hub connects a USB hub internally to the separate USB port of the built-in hub to provide 4 type A ports. A Thunderbolt 4 dock and Titan Ridge based dock may add more USB hubs and USB devices. Alpine Ridge based docks don't usually add USB hubs since they can connect USB controllers that have two or four ports.

Host Thunderbolt controllers will usually have two DisplayPort inputs (but some only have one?). Thunderbolt 4 is guaranteed to always support at least 2. For Thunderbolt 4, Maple Ridge is the host controller. I don't think Goshen Ridge as a peripheral controller has DisplayPort inputs. The host Thunderbolt controller takes the DisplayPort inputs from the GPU to tunnel the DisplayPort signals to DisplayPort outputs of downstream Thunderbolt controllers.

A Thunderbolt controller can output DisplayPort to its Thunderbolt ports and/or a separate DisplayPort output such as seen on the OWC Mercury Helios 3S or the GC-ALPINE RIDGE or GC-TITAN RIDGE.

Peripheral Thunderbolt controllers may also have DisplayPort inputs but these are never used except in the case of a small set of eGPUs: the BlackMagic eGPU and the Sonnet eGPU Breakaway Puck RX 5550 XT/5700. You can actually connect 4 displays to Thunderbolt with one of those. Connect two before the eGPU - these will be controlled by the GPU connected to the Host Thunderbolt controller. Connect two after the eGPU - these will be controller by the GPU of the eGPU. I don't know if you can connect 4 displays to Thunderbolt after the eGPU. Anyway, why would you? You could just connect a normal eGPU containing something like the Radeon Pro W5700 and connect up to 6 normal displays.

Thanks again. There's a lot for me to study there. I started looking at it right after you posted, but work pulled me away. As I read, I'm starting to suspect I have some fundamental misunderstanding, but I haven't figured out what it is. I've found just one block diagram of the Goshen Ridge and it seems to be so oversimplified as to be useless. So I'm using your posts to form a mental picture.

Just one question so far - In the case of the TS4, is there just one Goshen Ridge controller in it, taking care of all the inputs and outputs?
 
Just one question so far - In the case of the TS4, is there just one Goshen Ridge controller in it, taking care of all the inputs and outputs?
Yes, the TS4
  • Has one Goshen Ridge
  • Exposes one upstream Thunderbolt port and two downstream Thunderbolt ports of the Goshen Ridge. The downstream Thunderbolt ports can be used for Thunderbolt or DisplayPort or USB or USB+DisplayPort.
  • The third downstream Thunderbolt port of the Goshen Ridge is not exposed. It is used only for the DisplayPort port.
  • Connects one 2.5 GbE controller via a PCie lane to the Goshen Ridge.
  • The Goshen Ridge has a built-in 4 port Intel USB hub to connect USB devices to the three downstream Thunderbolt ports (except one of the Thunderbolt ports is used for DisplayPort only). The fourth USB port of the built-in Intel USB hub is a USB port that can be used to connect a USB device to the Goshen Ridge. In the case of the TS4, the USB device is an additional second USB hub:
  • Has an additional second USB hub connected to the USB port of the built-in Intel USB hub to connect everything else.
  • Probably has additional third and fourth USB hubs connected to the additional second USB hub since 10 Gbps USB hubs usually only have 4 ports each. I forget if anyone posted the USB topology of the TS4 (preferably from ioreg or IORegistryExplorer.app since System Information.app does not list unused USB ports). USB ports that are closest to the Thunderbolt upstream will be slightly faster than those that are more downstream.
  • Everything else is a USB adapter (SD card reader, audio in/out/combo)
Remember that USB 2.0 and USB 3.x are completely separate, so there will appear to be separate hubs for each. For each USB port, you need to connect a USB 2.0 device and a USB 3.x device to see which USB 2.0 port corresponds to which USB 3.x port. USB 1.1 devices connect to USB 2.0.
 
Yes, the TS4
  • Has one Goshen Ridge
  • Exposes one upstream Thunderbolt port and two downstream Thunderbolt ports of the Goshen Ridge. The downstream Thunderbolt ports can be used for Thunderbolt or DisplayPort or USB or USB+DisplayPort.
  • The third downstream Thunderbolt port of the Goshen Ridge is not exposed. It is used only for the DisplayPort port.
  • Connects one 2.5 GbE controller via a PCie lane to the Goshen Ridge.
  • The Goshen Ridge has a built-in 4 port Intel USB hub to connect USB devices to the three downstream Thunderbolt ports (except one of the Thunderbolt ports is used for DisplayPort only). The fourth USB port of the built-in Intel USB hub is a USB port that can be used to connect a USB device to the Goshen Ridge. In the case of the TS4, the USB device is an additional second USB hub:
  • Has an additional second USB hub connected to the USB port of the built-in Intel USB hub to connect everything else.
  • Probably has additional third and fourth USB hubs connected to the additional second USB hub since 10 Gbps USB hubs usually only have 4 ports each. I forget if anyone posted the USB topology of the TS4 (preferably from ioreg or IORegistryExplorer.app since System Information.app does not list unused USB ports). USB ports that are closest to the Thunderbolt upstream will be slightly faster than those that are more downstream.
  • Everything else is a USB adapter (SD card reader, audio in/out/combo)
Remember that USB 2.0 and USB 3.x are completely separate, so there will appear to be separate hubs for each. For each USB port, you need to connect a USB 2.0 device and a USB 3.x device to see which USB 2.0 port corresponds to which USB 3.x port. USB 1.1 devices connect to USB 2.0.

Well, here I sit in a coffee shop, on Saturday morning, 3.5 hours into reading your posts and studying related documents. I suffer from a couple of intellectual curses: I understand nothing until I reach some critical threshold and I read every word literally since I struggle to infer intended meaning.

I appreciate all your valuable input. I will keep following your posts in other threads to try to fill in the pieces I'm missing to pull it all together. Thanks to you, I'm making a lot of progress.
 
See https://forums.macrumors.com/threads/testing-tb3-aic-with-mp-5-1.2143042/post-27612591 and look at the attachment.

The Thunderbolt controller is a chip containing multiple PCI devices. It appears as a PCIe upstream bridge device with multiple downstream bridges:
1) There's a downstream bridge for the NHI device which is the brains of the Thunderbolt controller. This is a USB4 controller in the Goshen Ridge case.
2) There's a downstream bridge for the USB 3.1 gen 2 controller.
3) There's a downstream bridge for each of the Thunderbolt ports. These will connect to the upstream bridge of downstream connected Thunderbolt devices.
4) There's 1 to 4 downstream bridges for the PCIe lanes of the Thunderbolt controller depending on how its configured. 1 bridge for x4. 2 for x2x2. 3 for x2x1x1. 4 for x1x1x1x1. Goshen Ridge only has 1 bridge for x1. These bridges will connect to PCI controllers in the Thunderbolt device. Of course, nothing is stopping the PCI controller from being another PCI bridge, such as used in the Sonnet Echo Express III-D or if you connect a PCIe card like the Highpoint SSD7505 into a single slot Thunderbolt PCIe Expansion chassis like the OWC Mercury Helios 3S.

The USB controller connects to USB devices connected to the Thunderbolt ports. Titan Ridge also has a separate USB port which can connect to USB hubs. In Goshen Ridge, a USB hub is built-in so that the USB controller can connect to the 3 Thunderbolt ports and a separate USB port. Simple Thunderbolt 4 hubs such as the OWC Thunderbolt Hub, expose that USB port as a type A port. The CalDigit Element Hub connects a USB hub internally to the separate USB port of the built-in hub to provide 4 type A ports. A Thunderbolt 4 dock and Titan Ridge based dock may add more USB hubs and USB devices. Alpine Ridge based docks don't usually add USB hubs since they can connect USB controllers that have two or four ports.

Host Thunderbolt controllers will usually have two DisplayPort inputs (but some only have one?). Thunderbolt 4 is guaranteed to always support at least 2. For Thunderbolt 4, Maple Ridge is the host controller. I don't think Goshen Ridge as a peripheral controller has DisplayPort inputs. The host Thunderbolt controller takes the DisplayPort inputs from the GPU to tunnel the DisplayPort signals to DisplayPort outputs of downstream Thunderbolt controllers.

A Thunderbolt controller can output DisplayPort to its Thunderbolt ports and/or a separate DisplayPort output such as seen on the OWC Mercury Helios 3S or the GC-ALPINE RIDGE or GC-TITAN RIDGE.

Peripheral Thunderbolt controllers may also have DisplayPort inputs but these are never used except in the case of a small set of eGPUs: the BlackMagic eGPU and the Sonnet eGPU Breakaway Puck RX 5550 XT/5700. You can actually connect 4 displays to Thunderbolt with one of those. Connect two before the eGPU - these will be controlled by the GPU connected to the Host Thunderbolt controller. Connect two after the eGPU - these will be controller by the GPU of the eGPU. I don't know if you can connect 4 displays to Thunderbolt after the eGPU. Anyway, why would you? You could just connect a normal eGPU containing something like the Radeon Pro W5700 and connect up to 6 normal displays.

I'm starting to arrive at some understanding. I just needed to realize that I didn't know anything about PCIe. So, I've been reading technical docs from some of the designers and developers. I'm starting to develop an intuition that might explain how the Goshen Ridge can only provide a single downstream PCIe lane, yet still support an attached peripheral (e.g. an NVMe SSD) that is receiving data on four lanes. Maybe most people know this, but it's all new to me. Also, it's really just guesswork so far. I'd say I'm at 50%. I'm definitely going to keep reading.

PCIe has three layers: transaction, data link, and physical. The transaction layer handles the transmission of data between the host computer and the SSD peripheral using virtual channels. That communication passes through a number of switches. Between each switch, the data link layer handles the the transmission and it (always?) uses the PCIe physical layer, with its lanes and wires, to do that.

PCIe lanes are only in the physical layer. This physical layer is not present on the Thunderbolt connection between the TS4 and the SSD endpoint. I guess that's clear since PCIe physical layer requires two differential pairs for each lane (a total of 8 pairs for 4 lanes), but a USB-C cable has only 4 differential pairs. And, those pairs are handling other traffic as well. So, the Thunderbolt controller on the SSD enclosure must unwrap the traffic and get that virtual channel onto the 4 lanes that are tied to the NVMe SSD. What I was missing is that the PCIe lanes on the TS4 are not the same lanes found on the SSD enclosure. Kind of silly.

I don't understand the data link layer protocol between the TS4 and the SSD. If the Thunderbolt bridges are the switches I've been reading about, then I wonder what's the role of the upstream PCIe bridge (in this case, on the SSD enclosure), given that the TS4 has no PCIe bridge on the downstream Thunderbolt port. I wonder if the PCIe data link layer is even implemented on the link. Maybe a single Thunderbolt data link layer handles all traffic: PCIe, DisplayPort, etc. Some day I'll get more clarity. I do remember seeing a diagram that had the words "Thunderbolt PCIe protocol conversion", but I can't find it again.

Boy did I hijack this thread.
 
I don't understand the data link layer protocol between the TS4 and the SSD. If the Thunderbolt bridges are the switches I've been reading about, then I wonder what's the role of the upstream PCIe bridge (in this case, on the SSD enclosure), given that the TS4 has no PCIe bridge on the downstream Thunderbolt port. I wonder if the PCIe data link layer is even implemented on the link. Maybe a single Thunderbolt data link layer handles all traffic: PCIe, DisplayPort, etc. Some day I'll get more clarity. I do remember seeing a diagram that had the words "Thunderbolt PCIe protocol conversion", but I can't find it again.
PCIe bridges (switches) always have an upstream bridge and one or more downstream bridges. The reason for having an upstream and a downstream bridge is because they can have different link (2.5, 5, 8, 16, 32 GT/s) rate and link width (x1,x2,x4,x8,x16,x32).

The TS4 does have a downstream bridge for each Thunderbolt port. Here's an example list of PCIe devices from my Mac mini (only included Thunderbolt connected stuff):
Code:
├┬00:01.1-[83-ff]       # g3x4          ├┬Mac Mini Coffee Lake Root Port 1                    [8086:1905] [060400] (rev 07) PCI bridge [Normal decode]           : Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8)
│└┬83:00.0-[84-ff]      # g3x4          │└┬Mac Mini Titan Ridge 1 upstream                    [8086:1578] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ ├┬84:00.0-[86]        # g1x4          │ ├┬Mac Mini Titan Ridge 1 downstream for NHI         [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─86:00.0            # g1x4          │ │└─Mac Mini Titan Ridge 1 NHI                       [8086:15eb] [088000] (rev 06) System peripheral                    : Intel Corporation JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]
│ ├┬84:01.0-[c1-c7]     # g1x4          │ ├┬Mac Mini Titan Ridge 1 downstream for TB port 1   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└┬c1:00.0-[c2-c7]    # g3x4 > g1x4   │ │└┬eGPU Titan Ridge upstream                        [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ │ ├┬c2:01.0-[c4-c6]   # g3x4          │ │ ├┬eGPU Titan Ridge downstream for PCIe x4         [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ │ │└┬c4:00.0-[c5-c6]  # g4x16 > g3x4  │ │ │└┬Readeon Pro W5700 upstream                     [1002:1478] [060400]          PCI bridge [Normal decode]           : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch
│ │ │ └┬c5:00.0-[c6]    # g4x16         │ │ │ └┬Readeon Pro W5700 downstream                  [1002:1479] [060400]          PCI bridge [Normal decode]           : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
│ │ │  ├─c6:00.0        # g4x16         │ │ │  ├─Readeon Pro W5700 GPU                        [1002:7312] [030000]          VGA compatible controller [VGA controller] : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 [Radeon Pro W5700]
│ │ │  ├─c6:00.1        # g4x16         │ │ │  ├─Readeon Pro W5700 Audio                      [1002:ab38] [040300]          Audio device                         : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 HDMI Audio
│ │ │  ├─c6:00.2        # g4x16         │ │ │  ├─Readeon Pro W5700 XHCI                       [1002:7316] [0c0330]          USB controller [XHCI]                : Advanced Micro Devices, Inc. [AMD/ATI] Device
│ │ │  └─c6:00.3        # g4x16         │ │ │  └─Readeon Pro W5700 Serial?                    [1002:7314] [0c8000]          Serial bus controller                : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 USB
│ │ ├┬c2:02.0-[c3]      # g1x4          │ │ ├┬eGPU Titan Ridge downstream for XHCI            [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ │ │└─c3:00.0          # g1x4          │ │ │└─eGPU Titan Ridge XHCI                          [8086:15f0] [0c0330] (rev 06) USB controller [XHCI]                : Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018]
│ │ └┬c2:04.0-[c7]      # g1x4          │ │ └┬eGPU Titan Ridge downstream for TB port         [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ ├┬84:02.0-[85]        # g1x4          │ ├┬Mac Mini Titan Ridge 1 downstream for XHCI        [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─85:00.0            # g1x4          │ │└─Mac Mini Titan Ridge XHCI                        [8086:15ec] [0c0330] (rev 06) USB controller [XHCI]                : Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]
│ └┬84:04.0-[87]        # g1x4          │ └┬Mac Mini Titan Ridge 1 downstream for TB port 2   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
├┬00:01.2-[05-82]       # g3x4          ├┬Mac Mini Coffee Lake Root Port 2                    [8086:1909] [060400] (rev 07) PCI bridge [Normal decode]           : Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4)
│└┬05:00.0-[06-82]      # g3x4          │└┬Mac Mini Titan Ridge 2 upstream                    [8086:1578] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ ├┬06:00.0-[08]        # g1x4          │ ├┬Mac Mini Titan Ridge 2 downstream for NHI         [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─08:00.0            # g1x4          │ │└─Mac Mini Titan Ridge 2 NHI                       [8086:15eb] [088000] (rev 06) System peripheral                    : Intel Corporation JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]
│ ├┬06:01.0-[43-4c]     # g1x4          │ ├┬Mac Mini Titan Ridge 2 downstream for TB port 1   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└┬43:00.0-[44-4c]    # g1x4          │ │└┬CalDigit Goshen Ridge upstream                   [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ ├┬44:00.0-[46]      # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for XHCI       [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ │└─46:00.0          # g1x4          │ │ │└─CalDigit Goshen Ridge XHCI                     [8086:0b27] [0c0330] (rev 02) USB controller [XHCI]                : Intel Corporation Thunderbolt 4 USB Controller [Goshen Ridge 2020]
│ │ ├┬44:01.0-[48]      # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for PCIe x1    [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ ├┬44:02.0-[49-4c]   # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for TB port 1  [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ │└┬49:00.0-[4a-4c]  # g1x4          │ │ │└┬OWC Alpine Ridge upstream                      [8086:1578] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ │ │ ├┬4a:01.0-[4b]    # g3x4          │ │ │ ├┬OWC Alpine Ridge downstream for PCIe x4       [8086:1578] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ │ │ │└─4b:00.0        # g3x4          │ │ │ │└─NVMe                                         [1cc1:8201] [010802] (rev 03) Non-Volatile memory controller [NVM Express] : ADATA Technology Co., Ltd. XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive
│ │ │ └┬4a:04.0-[4c]    # g1x4          │ │ │ └┬OWC Alpine Ridge downstream for XHCI          [8086:1578] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ │ │  └─4c:00.0        # g1x4          │ │ │  └─OWC Alpine Ridge XHCI                        [8086:15b6] [0c0330]          USB controller [XHCI]                : Intel Corporation DSL6540 USB 3.1 Controller [Alpine Ridge]
│ │ ├┬44:03.0-[47]      # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for TB port 2  [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ └┬44:04.0-[45]      # g3x1 > g1x4   │ │ └┬CalDigit Goshen Ridge downstream for TB port 3  [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ ├┬06:02.0-[07]        # g1x4          │ ├┬Mac Mini Titan Ridge 2 downstream XHCI            [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─07:00.0            # g1x4          │ │└─Mac Mini Titan Ridge 2 XHCI                      [8086:15ec] [0c0330] (rev 06) USB controller [XHCI]                : Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]
│ └┬06:04.0-[0b]        # g1x4          │ └┬Mac Mini Titan Ridge 2 downstream for TB port 2   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]

Correction to my previous post:
The NHI controller (for Thunderbolt 1,2,3) and USB4 controller (for USB4 and Thunderbolt 4) only exist in host controllers. The Goshen Ridge is never a host controller. Maple Ridge serves that purpose.

A Thunderbolt controller includes Adapters for doing the conversion of DisplayPort and PCIe (and USB in the case of TB4/USB4) to and from Thunderbolt. You can see these listed in ioreg on Macs. I have a script that can list them on Linux using sysfs for device info and debugfs to read the Thunderbolt registers. #30

Thunderbolt host controllers have up to two DisplayPort In Adapters. The BlackMagic eGPU and Sonnet eGPU Breakaway Puck RX 5500 XT/5700 eGPUs have Thunderbolt controllers with DisplayPort In Adapters to connect their GPUs to downstream Thunderbolt. Thunderbolt host controllers don't usually have a DisplayPort Out Adapter since displays connected to the host don't need DisplayPort to be tunnelled between the DisplayPort In Adapter and the USB-C DisplayPort Alt Mode of the Thunderbolt port.

Cactus Ridge Thunderbolt 1 host controller in my iMac14,2 has a DisplayPort Out Adapter which can be used to output DisplayPort sent from another Thunderbolt Mac to the iMac's display. Thunderbolt Target Display Mode software sets up the path between the DisplayPort In Adapter of the source Mac and the DisplayPort Out Adapter of the target iMac. The path is cross domain. The software on the target iMac switches the display's input from the GPU to the DisplayPort Out Adapter.

Thunderbolt peripheral controllers (even Goshen Ridge) have up to two DisplayPort Out Adapters.

Thunderbolt controllers have one PCI Down Adapter per downstream Thunderbolt port (1 for Thunderbolt 1,2,3 peripheral controllers, 2 for Thunderbolt 1,2,3,4 host controllers, 3 for Thunderbolt 4 peripheral controller). Thunderbolt peripheral controllers have one PCI Up Adapter. Thunderbolt host adapters do not have a PCI Up Adapter. The ioreg in macOS contains a "PCI Path" property for each PCI Adapter. The PCI Path is a path in ioreg to the PCI bridge (upstream or downstream) that the Adapter is connected to. The DROM of a Thunderbolt controller lists Adapters and contains some properties for each. For PCI Adapters, the properties include the PCI device/function number. I have a script that parse some DROM info from a dump of a Thunderbolt controller's firmware https://gist.github.com/joevt/4f6d4d97b560efab9603ac509bf00122

The USB4 spec describes Adapters and DROM and registers and everything.
 
PCIe bridges (switches) always have an upstream bridge and one or more downstream bridges. The reason for having an upstream and a downstream bridge is because they can have different link (2.5, 5, 8, 16, 32 GT/s) rate and link width (x1,x2,x4,x8,x16,x32).

The TS4 does have a downstream bridge for each Thunderbolt port. Here's an example list of PCIe devices from my Mac mini (only included Thunderbolt connected stuff):
Code:
├┬00:01.1-[83-ff]       # g3x4          ├┬Mac Mini Coffee Lake Root Port 1                    [8086:1905] [060400] (rev 07) PCI bridge [Normal decode]           : Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x8)
│└┬83:00.0-[84-ff]      # g3x4          │└┬Mac Mini Titan Ridge 1 upstream                    [8086:1578] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ ├┬84:00.0-[86]        # g1x4          │ ├┬Mac Mini Titan Ridge 1 downstream for NHI         [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─86:00.0            # g1x4          │ │└─Mac Mini Titan Ridge 1 NHI                       [8086:15eb] [088000] (rev 06) System peripheral                    : Intel Corporation JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]
│ ├┬84:01.0-[c1-c7]     # g1x4          │ ├┬Mac Mini Titan Ridge 1 downstream for TB port 1   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└┬c1:00.0-[c2-c7]    # g3x4 > g1x4   │ │└┬eGPU Titan Ridge upstream                        [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ │ ├┬c2:01.0-[c4-c6]   # g3x4          │ │ ├┬eGPU Titan Ridge downstream for PCIe x4         [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ │ │└┬c4:00.0-[c5-c6]  # g4x16 > g3x4  │ │ │└┬Readeon Pro W5700 upstream                     [1002:1478] [060400]          PCI bridge [Normal decode]           : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Upstream Port of PCI Express Switch
│ │ │ └┬c5:00.0-[c6]    # g4x16         │ │ │ └┬Readeon Pro W5700 downstream                  [1002:1479] [060400]          PCI bridge [Normal decode]           : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 XL Downstream Port of PCI Express Switch
│ │ │  ├─c6:00.0        # g4x16         │ │ │  ├─Readeon Pro W5700 GPU                        [1002:7312] [030000]          VGA compatible controller [VGA controller] : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 [Radeon Pro W5700]
│ │ │  ├─c6:00.1        # g4x16         │ │ │  ├─Readeon Pro W5700 Audio                      [1002:ab38] [040300]          Audio device                         : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 HDMI Audio
│ │ │  ├─c6:00.2        # g4x16         │ │ │  ├─Readeon Pro W5700 XHCI                       [1002:7316] [0c0330]          USB controller [XHCI]                : Advanced Micro Devices, Inc. [AMD/ATI] Device
│ │ │  └─c6:00.3        # g4x16         │ │ │  └─Readeon Pro W5700 Serial?                    [1002:7314] [0c8000]          Serial bus controller                : Advanced Micro Devices, Inc. [AMD/ATI] Navi 10 USB
│ │ ├┬c2:02.0-[c3]      # g1x4          │ │ ├┬eGPU Titan Ridge downstream for XHCI            [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ │ │└─c3:00.0          # g1x4          │ │ │└─eGPU Titan Ridge XHCI                          [8086:15f0] [0c0330] (rev 06) USB controller [XHCI]                : Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge DD 2018]
│ │ └┬c2:04.0-[c7]      # g1x4          │ │ └┬eGPU Titan Ridge downstream for TB port         [8086:15ef] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge DD 2018]
│ ├┬84:02.0-[85]        # g1x4          │ ├┬Mac Mini Titan Ridge 1 downstream for XHCI        [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─85:00.0            # g1x4          │ │└─Mac Mini Titan Ridge XHCI                        [8086:15ec] [0c0330] (rev 06) USB controller [XHCI]                : Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]
│ └┬84:04.0-[87]        # g1x4          │ └┬Mac Mini Titan Ridge 1 downstream for TB port 2   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
├┬00:01.2-[05-82]       # g3x4          ├┬Mac Mini Coffee Lake Root Port 2                    [8086:1909] [060400] (rev 07) PCI bridge [Normal decode]           : Intel Corporation Xeon E3-1200 v5/E3-1500 v5/6th Gen Core Processor PCIe Controller (x4)
│└┬05:00.0-[06-82]      # g3x4          │└┬Mac Mini Titan Ridge 2 upstream                    [8086:1578] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ ├┬06:00.0-[08]        # g1x4          │ ├┬Mac Mini Titan Ridge 2 downstream for NHI         [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─08:00.0            # g1x4          │ │└─Mac Mini Titan Ridge 2 NHI                       [8086:15eb] [088000] (rev 06) System peripheral                    : Intel Corporation JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]
│ ├┬06:01.0-[43-4c]     # g1x4          │ ├┬Mac Mini Titan Ridge 2 downstream for TB port 1   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└┬43:00.0-[44-4c]    # g1x4          │ │└┬CalDigit Goshen Ridge upstream                   [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ ├┬44:00.0-[46]      # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for XHCI       [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ │└─46:00.0          # g1x4          │ │ │└─CalDigit Goshen Ridge XHCI                     [8086:0b27] [0c0330] (rev 02) USB controller [XHCI]                : Intel Corporation Thunderbolt 4 USB Controller [Goshen Ridge 2020]
│ │ ├┬44:01.0-[48]      # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for PCIe x1    [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ ├┬44:02.0-[49-4c]   # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for TB port 1  [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ │└┬49:00.0-[4a-4c]  # g1x4          │ │ │└┬OWC Alpine Ridge upstream                      [8086:1578] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ │ │ ├┬4a:01.0-[4b]    # g3x4          │ │ │ ├┬OWC Alpine Ridge downstream for PCIe x4       [8086:1578] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ │ │ │└─4b:00.0        # g3x4          │ │ │ │└─NVMe                                         [1cc1:8201] [010802] (rev 03) Non-Volatile memory controller [NVM Express] : ADATA Technology Co., Ltd. XPG SX8200 Pro PCIe Gen3x4 M.2 2280 Solid State Drive
│ │ │ └┬4a:04.0-[4c]    # g1x4          │ │ │ └┬OWC Alpine Ridge downstream for XHCI          [8086:1578] [060400]          PCI bridge [Normal decode]           : Intel Corporation DSL6540 Thunderbolt 3 Bridge [Alpine Ridge 4C 2015]
│ │ │  └─4c:00.0        # g1x4          │ │ │  └─OWC Alpine Ridge XHCI                        [8086:15b6] [0c0330]          USB controller [XHCI]                : Intel Corporation DSL6540 USB 3.1 Controller [Alpine Ridge]
│ │ ├┬44:03.0-[47]      # g1x4          │ │ ├┬CalDigit Goshen Ridge downstream for TB port 2  [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ │ └┬44:04.0-[45]      # g3x1 > g1x4   │ │ └┬CalDigit Goshen Ridge downstream for TB port 3  [8086:0b26] [060400] (rev 02) PCI bridge [Normal decode]           : Intel Corporation Thunderbolt 4 Bridge [Goshen Ridge 2020]
│ ├┬06:02.0-[07]        # g1x4          │ ├┬Mac Mini Titan Ridge 2 downstream XHCI            [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]
│ │└─07:00.0            # g1x4          │ │└─Mac Mini Titan Ridge 2 XHCI                      [8086:15ec] [0c0330] (rev 06) USB controller [XHCI]                : Intel Corporation JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]
│ └┬06:04.0-[0b]        # g1x4          │ └┬Mac Mini Titan Ridge 2 downstream for TB port 2   [8086:15ea] [060400] (rev 06) PCI bridge [Normal decode]           : Intel Corporation JHL7540 Thunderbolt 3 Bridge [Titan Ridge 4C 2018]

Correction to my previous post:
The NHI controller (for Thunderbolt 1,2,3) and USB4 controller (for USB4 and Thunderbolt 4) only exist in host controllers. The Goshen Ridge is never a host controller. Maple Ridge serves that purpose.

A Thunderbolt controller includes Adapters for doing the conversion of DisplayPort and PCIe (and USB in the case of TB4/USB4) to and from Thunderbolt. You can see these listed in ioreg on Macs. I have a script that can list them on Linux using sysfs for device info and debugfs to read the Thunderbolt registers. #30

Thunderbolt host controllers have up to two DisplayPort In Adapters. The BlackMagic eGPU and Sonnet eGPU Breakaway Puck RX 5500 XT/5700 eGPUs have Thunderbolt controllers with DisplayPort In Adapters to connect their GPUs to downstream Thunderbolt. Thunderbolt host controllers don't usually have a DisplayPort Out Adapter since displays connected to the host don't need DisplayPort to be tunnelled between the DisplayPort In Adapter and the USB-C DisplayPort Alt Mode of the Thunderbolt port.

Cactus Ridge Thunderbolt 1 host controller in my iMac14,2 has a DisplayPort Out Adapter which can be used to output DisplayPort sent from another Thunderbolt Mac to the iMac's display. Thunderbolt Target Display Mode software sets up the path between the DisplayPort In Adapter of the source Mac and the DisplayPort Out Adapter of the target iMac. The path is cross domain. The software on the target iMac switches the display's input from the GPU to the DisplayPort Out Adapter.

Thunderbolt peripheral controllers (even Goshen Ridge) have up to two DisplayPort Out Adapters.

Thunderbolt controllers have one PCI Down Adapter per downstream Thunderbolt port (1 for Thunderbolt 1,2,3 peripheral controllers, 2 for Thunderbolt 1,2,3,4 host controllers, 3 for Thunderbolt 4 peripheral controller). Thunderbolt peripheral controllers have one PCI Up Adapter. Thunderbolt host adapters do not have a PCI Up Adapter. The ioreg in macOS contains a "PCI Path" property for each PCI Adapter. The PCI Path is a path in ioreg to the PCI bridge (upstream or downstream) that the Adapter is connected to. The DROM of a Thunderbolt controller lists Adapters and contains some properties for each. For PCI Adapters, the properties include the PCI device/function number. I have a script that parse some DROM info from a dump of a Thunderbolt controller's firmware https://gist.github.com/joevt/4f6d4d97b560efab9603ac509bf00122

The USB4 spec describes Adapters and DROM and registers and everything.

Very excited for the weekend to pick up with this. I'm struggling to put it aside and get back to work. The PCIe output gives me goosebumps. What did you use to produce that?

The entry that leads to the NVMe is very interesting.

│ │ ├┬44:02.0-[49-4c] # g1x4 │ │ ├┬CalDigit Goshen Ridge downstream for TB port 1 ...
│ │ │└┬49:00.0-[4a-4c] # g1x4 │ │ │└┬OWC Alpine Ridge upstream

The "x4" suggests that Thunderbolt is tunneling the PCIe physical layer, but I'm sure I have no idea what I'm talking about and probably reading way too much into that. Certainly there aren't 4 physical lanes on the USB-C cable (I've studied the pins). What does "g1" mean?

I'll be studying https://www.linkedin.com/pulse/pci-express-primer-1-overview-physical-layer-simon-southwell/ more carefully soon.
 
The PCIe output gives me goosebumps. What did you use to produce that?
My pcitree.sh script which uses pciutils. I added the description column which lists which bridges are upstream and downstream and what device they belong to (Mac mini, eGPU, OWC enclosure, etc.).

The entry that leads to the NVMe is very interesting.

The "x4" suggests that Thunderbolt is tunneling the PCIe physical layer, but I'm sure I have no idea what I'm talking about and probably reading way too much into that. Certainly there aren't 4 physical lanes on the USB-C cable. (I've studied the pins)
Yes, PCIe devices that are not built into the Thunderbolt controller are physically connected to the Thunderbolt controller using real PCIe lanes. Thunderbolt 1,2,3 controllers can provide 4 lanes of PCIe to a directly connected downstream PCIe device. Up to 4 devices can be connected if the lanes are configured as x1x1x1x1. Besides that and x4, there can be x2x2 and x2x1x1. Each set of lanes for a device is represented by a downstream PCI bridge of the Thunderbolt controller. In the case of the NVMe and the GPU, there is one link of 4 lanes assigned. In the case of the NVMe, the 4 lanes come from the Thunderbolt controller to a M.2 slot. In the case of the GPU, the 4 lanes come from the Thunderbolt controller to a PCIe slot. The lanes are on the PCB that includes the Thunderbolt controller and the M.2 slot or the PCIe slot.

PCIe data comes from the host CPU through PCIe bridges until it gets to the first Thunderbolt PCIe bridge which is the Thunderbolt host controller. The PCIe data is tunnelled from the host Thunderbolt controller to the destination Thunderbolt controller's PCIe bridge where the PCIe data is converted back to real PCIe at the downstream bridge for the real PCIe connected device. It may be that Thunderbolt controllers in the chain (up to 5 or 6 deep depending on Thunderbolt version) will each convert the tunnelled PCIe data from the PCI up adapter to PCIe for the PCI down adapter to convert back to tunnelled PCIe data again.

What does "g1" mean?
g1 is PCIe gen 1 which is 2.5 GT/s.
g2 is 5 GT/s.
g3 is 8 GT/s.
g4 is 16 GT/s.

Note that internal PCIe devices and downstream bridges of the Thunderbolt controller which lead to the Thunderbolt controller's NHI or XHCI or USB4 controller or to downstream Thunderbolt ports report as g1x4 (1000 MB/s) even though they transmit more than that (≈2800 MB/s). These are not real PCIe because they are internal to the Thunderbolt controller so they don't do regular PCIe negotiation for link rate and link width. The same is true for the upstream bridge of a peripheral Thunderbolt controller.

The upstream of a host Thunderbolt controller is real PCIe so that will report as g3x4 (though some PCs may have g3x2 and older PCs or older Thunderbolt controllers will have g2x4 for the upstream). However, the upstream of an integrated Thunderbolt controller may report as g1x4 (as in Ice Like or Tiger Lake or similar Intel CPUs with integrated Thunderbolt) because, again, it is not real PCIe. I believe integrated Thunderbolt of Apple Silicon does not have a PCIe upstream at all.
 
Also I see Belkin has all their influencers getting the product leaving 5 star reviews on Amazon 🤪 All reviews are 5 stars, all got the product for free lol: https://a.co/d/gYZIStJ
When they see one against them, they report it to Amazon as abuse and have your account deleted. This happened to me last year. I Sent a complaint to Amazon CS and they restored my account. That shows how bad This company is. This is why I will never support or buy etc...... from the company again. Bad products are bad products CS doesn't exist!
 
As an Amazon Associate, MacRumors earns a commission from qualifying purchases made through links in this post.
Sorry to dig up an old thread but I'm curious to know if anyone ACTUALLY bought this and tried it out? I apparently have been living under a rock for the past few months and didn't realize this actually existed until a few days ago. I have it saved on one of my Amazon lists but I thought i'd ask and see if anyone has any real-world use with it?

I'm looking to expand the number of type C ports available to me on my M2 Mac Mini and while my Satechi hub does a good job of brining one of the ports to the front of the computer, I'd like to have access to MORE type C ports for when I need them. I'm not doing anything crazy. I just need a simple type C hub and this fits the bill, at least until I hear pros/cons about it.
 
Sorry to dig up an old thread but I'm curious to know if anyone ACTUALLY bought this and tried it out? I apparently have been living under a rock for the past few months and didn't realize this actually existed until a few days ago. I have it saved on one of my Amazon lists but I thought i'd ask and see if anyone has any real-world use with it?

I'm looking to expand the number of type C ports available to me on my M2 Mac Mini and while my Satechi hub does a good job of brining one of the ports to the front of the computer, I'd like to have access to MORE type C ports for when I need them. I'm not doing anything crazy. I just need a simple type C hub and this fits the bill, at least until I hear pros/cons about it.
I didn’t purchase the Belkin one but, did get one very similar from Amazon.
The "uni 4 Ports USB C Splitter 10Gbps USB C to USB C Multiport Adapter"

It worked great for standard USB-C traffic (10Gb) (2) External SSDs and occasionally use it for my quest 3 direct download. I also tested it with a USB-C 2.5Gb NIC. All worked well. Just remember you’ll be limited to 15W (5W@3A) total for all 4 connected devices. Because its a non-powered hub you won't get USB-PD.

BTW there is essentially one company manufacturing and selling these USB-C hub chips. (Genesys Logic). I've seen about 4 versions of it.

Belkin Connect USB-C™ to 4-Port USB-C Hub​

uni 4 Ports USB C Splitter 10Gbps USB C to USB C Multiport Adapter​

WAVLINK USB 3.2 Hub with 4 USB C to USB C Ports​

UGREEN USB C Hub 10Gbps, 4 Ports USB 3.2 Adapter​

 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.