soc/intel/tigerlake: Add PCH-H chipset devicetree

Based on the base TGL devicetree, add one specific to TGL-H that adds
the additional supported devices.

Introduces a new Kconfig for selecting the PCH support.

Reference:
- Intel doc 615985

Change-Id: Icc130461edcecc4a3e1f6544ccb905608881d2f7
Signed-off-by: Jeremy Soller <jeremy@system76.com>
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/56945
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
diff --git a/src/soc/intel/tigerlake/Kconfig b/src/soc/intel/tigerlake/Kconfig
index e337e34..3defba4 100644
--- a/src/soc/intel/tigerlake/Kconfig
+++ b/src/soc/intel/tigerlake/Kconfig
@@ -3,6 +3,9 @@
 	help
 	  Intel Tigerlake support
 
+config SOC_INTEL_TIGERLAKE_PCH_H
+	bool
+
 if SOC_INTEL_TIGERLAKE
 
 config CPU_SPECIFIC_OPTIONS
@@ -112,6 +115,7 @@
 
 config CHIPSET_DEVICETREE
 	string
+	default "soc/intel/tigerlake/chipset_pch_h.cb" if SOC_INTEL_TIGERLAKE_PCH_H
 	default "soc/intel/tigerlake/chipset.cb"
 
 config EXT_BIOS_WIN_BASE
@@ -134,10 +138,12 @@
 
 config MAX_ROOT_PORTS
 	int
+	default 24 if SOC_INTEL_TIGERLAKE_PCH_H
 	default 12
 
 config MAX_PCIE_CLOCK_SRC
 	int
+	default 16 if SOC_INTEL_TIGERLAKE_PCH_H
 	default 7
 
 config SMM_TSEG_SIZE
diff --git a/src/soc/intel/tigerlake/chipset_pch_h.cb b/src/soc/intel/tigerlake/chipset_pch_h.cb
new file mode 100644
index 0000000..b0eabe9
--- /dev/null
+++ b/src/soc/intel/tigerlake/chipset_pch_h.cb
@@ -0,0 +1,190 @@
+chip soc/intel/tigerlake
+	device domain 0 on
+		device gpio 0 alias pch_gpio on end
+		device pci 00.0 alias system_agent on end
+		device pci 01.0 alias peg1 off end
+		device pci 01.1 alias peg2 off end
+		device pci 01.2 alias peg3 off end
+		device pci 02.0 alias igpu off end
+		device pci 04.0 alias dptf off end
+		device pci 05.0 alias ipu off end
+		device pci 06.0 alias peg0 off end
+		device pci 07.0 alias tbt_pcie_rp0 off
+			chip soc/intel/common/block/usb4
+				use tbt_dma0 as usb4_port
+				device generic 0 on end
+			end
+		end
+		device pci 07.1 alias tbt_pcie_rp1 off
+			chip soc/intel/common/block/usb4
+				use tbt_dma0 as usb4_port
+				device generic 1 on end
+			end
+		end
+		device pci 07.2 alias tbt_pcie_rp2 off
+			chip soc/intel/common/block/usb4
+				use tbt_dma1 as usb4_port
+				device generic 0 on end
+			end
+		end
+		device pci 07.3 alias tbt_pcie_rp3 off
+			chip soc/intel/common/block/usb4
+				use tbt_dma1 as usb4_port
+				device generic 1 on end
+			end
+		end
+		device pci 08.0 alias gna off end
+		device pci 09.0 alias npk off end
+		device pci 0a.0 alias crashlog off end
+		device pci 0d.0 alias north_xhci off
+			chip drivers/usb/acpi
+				register "type" = "UPC_TYPE_HUB"
+				device usb 0.0 alias tcss_root_hub off
+					chip drivers/usb/acpi
+						device usb 3.0 alias tcss_usb3_port1 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.1 alias tcss_usb3_port2 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.2 alias tcss_usb3_port3 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.3 alias tcss_usb3_port4 off end
+					end
+				end
+			end
+		end
+		device pci 0d.1 alias north_xdci off end
+		device pci 0d.2 alias tbt_dma0 off end
+		device pci 0d.3 alias tbt_dma1 off end
+		device pci 0e.0 alias vmd off end
+		device pci 10.6 alias thc0 off end
+		device pci 10.7 alias thc1 off end
+		device pci 11.0 alias uart3 off end
+		device pci 11.3 alias i2c6 off end
+		device pci 12.0 alias ish off end
+		device pci 12.6 alias gspi2 off end
+		device pci 13.0 alias gspi3 off end
+		device pci 14.0 alias south_xhci off
+			chip drivers/usb/acpi
+				register "type" = "UPC_TYPE_HUB"
+				device usb 0.0 alias xhci_root_hub off
+					chip drivers/usb/acpi
+						device usb 2.0 alias usb2_port1 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.1 alias usb2_port2 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.2 alias usb2_port3 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.3 alias usb2_port4 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.4 alias usb2_port5 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.5 alias usb2_port6 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.6 alias usb2_port7 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.7 alias usb2_port8 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.8 alias usb2_port9 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.9 alias usb2_port10 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.10 alias usb2_port11 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.11 alias usb2_port12 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.12 alias usb2_port13 off end
+					end
+					chip drivers/usb/acpi
+						device usb 2.13 alias usb2_port14 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.0 alias usb3_port1 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.1 alias usb3_port2 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.2 alias usb3_port3 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.3 alias usb3_port4 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.4 alias usb3_port5 off end
+					end
+					chip drivers/usb/acpi
+						device usb 3.5 alias usb3_port6 off end
+					end
+				end
+			end
+		end
+		device pci 14.1 alias south_xdci off end
+		device pci 14.2 alias shared_ram off end
+		device pci 14.3 alias cnvi_wifi off end
+		device pci 15.0 alias i2c0 off end
+		device pci 15.1 alias i2c1 off end
+		device pci 15.2 alias i2c2 off end
+		device pci 15.3 alias i2c3 off end
+		device pci 16.0 alias heci1 off end
+		device pci 16.1 alias heci2 off end
+		device pci 16.2 alias csme1 off end
+		device pci 16.3 alias csme2 off end
+		device pci 16.4 alias heci3 off end
+		device pci 16.5 alias heci4 off end
+		device pci 17.0 alias sata off end
+		device pci 19.0 alias i2c4 off end
+		device pci 19.1 alias i2c5 off end
+		device pci 19.2 alias uart2 off end
+		device pci 1b.0 alias pcie_rp17 off end
+		device pci 1b.1 alias pcie_rp18 off end
+		device pci 1b.2 alias pcie_rp19 off end
+		device pci 1b.3 alias pcie_rp20 off end
+		device pci 1b.4 alias pcie_rp21 off end
+		device pci 1b.5 alias pcie_rp22 off end
+		device pci 1b.6 alias pcie_rp23 off end
+		device pci 1b.7 alias pcie_rp24 off end
+		device pci 1c.0 alias pcie_rp1 off end
+		device pci 1c.1 alias pcie_rp2 off end
+		device pci 1c.2 alias pcie_rp3 off end
+		device pci 1c.3 alias pcie_rp4 off end
+		device pci 1c.4 alias pcie_rp5 off end
+		device pci 1c.5 alias pcie_rp6 off end
+		device pci 1c.6 alias pcie_rp7 off end
+		device pci 1c.7 alias pcie_rp8 off end
+		device pci 1d.0 alias pcie_rp9 off end
+		device pci 1d.1 alias pcie_rp10 off end
+		device pci 1d.2 alias pcie_rp11 off end
+		device pci 1d.3 alias pcie_rp12 off end
+		device pci 1d.4 alias pcie_rp13 off end
+		device pci 1d.5 alias pcie_rp14 off end
+		device pci 1d.6 alias pcie_rp15 off end
+		device pci 1d.7 alias pcie_rp16 off end
+		device pci 1e.0 alias uart0 off end
+		device pci 1e.1 alias uart1 off end
+		device pci 1e.2 alias gspi0 off end
+		device pci 1e.3 alias gspi1 off end
+		device pci 1f.0 alias pch_espi on end
+		device pci 1f.1 alias p2sb off end
+		device pci 1f.2 alias pmc hidden end
+		device pci 1f.3 alias hda off end
+		device pci 1f.4 alias smbus off end
+		device pci 1f.5 alias fast_spi on end
+		device pci 1f.6 alias gbe off end
+		device pci 1f.7 alias thermal off end
+	end
+end