Having multiple top-level headings breaks sphinx-doc's TOC generation, so adjust driver sub-pages to only have a single one. Adjust other headings as needed to preseve page layout. Change-Id: Ib8a334c73daefffafa779957cc8e47a9cad4a202 Signed-off-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/67764 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # USB4 Retimers
 | |
| 
 | |
| ## Introduction
 | |
| As USB speeds continue to increase (up to 5G, 10G, and even 20G or higher in
 | |
| newer revisions of the spec), it becomes more difficult to maintain signal
 | |
| integrity for longer traces. Devices such as retimers and redrivers can be used
 | |
| to help signals maintain their integrity over long distances.
 | |
| 
 | |
| A redriver is a device that boosts the high-frequency content of a signal in
 | |
| order to compensate for the attenuation typically caused by travelling through
 | |
| various circuit components (PCB, connectors, CPU, etc.). Redrivers are not
 | |
| protocol-aware, which makes them relatively simple. However, their effectiveness
 | |
| is limited, and may not work at all in some scenarios.
 | |
| 
 | |
| A retimer is a device that retransmits a fresh copy of the signal it receives,
 | |
| by doing CDR and retransmitting the data (i.e., it is protocol-aware). Since
 | |
| this is a digital component, it may have firmware.
 | |
| 
 | |
| 
 | |
| ## Driver Usage
 | |
| 
 | |
| Some operating systems may have the ability to update firmware on USB4 retimers,
 | |
| and ultimately will need some way to power the device on and off so that its new
 | |
| firmware can be loaded. This is achieved by providing a GPIO signal that can be
 | |
| used for this purpose; its active state must be the one in which power is
 | |
| applied to the retimer. This driver will generate the required ACPI AML code
 | |
| which will toggle the GPIO in response to the kernel's request (through the
 | |
| `_DSM` ACPI method). Simply put something like the following in your devicetree:
 | |
| 
 | |
| ```
 | |
| device pci 0.0 on
 | |
| 	chip drivers/intel/usb4/retimer
 | |
| 		register "power_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPP_A0)"
 | |
| 		device generic 0 on end
 | |
| 	end
 | |
| end
 | |
| ```
 | |
| 
 | |
| replacing the GPIO with the appropriate pin and polarity.
 | |
| 
 |