From e519cacd26de2b2cc60fa5528efc8e2c1636c00d Mon Sep 17 00:00:00 2001 From: Matt DeVillier Date: Sun, 25 Jan 2026 19:11:20 -0600 Subject: [PATCH] soc/intel: Use chipset.cb for GSPI device ops linking Move GSPI/SPI device operations linking from PCI Device ID matching to chipset.cb files for all Intel SoCs that have them, matching the approach used by Skylake. Remove corresponding DIDs from spi.c for these SoCs; keep DID matching only for SoCs without chipset.cb files. This standardizes the approach across Intel SoCs and makes the GSPI/SPI controller configuration explicit in devicetree, and prevents the endless proliferation of DIDs in the common driver code. Change-Id: Ia379cff36a5b277d89cad757edc094a5d786a51b Signed-off-by: Matt DeVillier Reviewed-on: https://review.coreboot.org/c/coreboot/+/90917 Reviewed-by: Jakub "Kuba" Czapiga Tested-by: build bot (Jenkins) --- src/soc/intel/alderlake/chipset.cb | 8 +-- src/soc/intel/alderlake/chipset_pch_s.cb | 8 +-- src/soc/intel/apollolake/chipset_apl.cb | 6 +- src/soc/intel/apollolake/chipset_glk.cb | 6 +- src/soc/intel/cannonlake/chipset.cb | 6 +- src/soc/intel/cannonlake/chipset_pch_h.cb | 6 +- src/soc/intel/common/block/spi/spi.c | 76 ----------------------- src/soc/intel/jasperlake/chipset.cb | 6 +- src/soc/intel/meteorlake/chipset.cb | 6 +- src/soc/intel/pantherlake/chipset_ptl.cb | 6 +- src/soc/intel/pantherlake/chipset_wcl.cb | 6 +- src/soc/intel/tigerlake/chipset.cb | 8 +-- src/soc/intel/tigerlake/chipset_pch_h.cb | 8 +-- 13 files changed, 40 insertions(+), 116 deletions(-) diff --git a/src/soc/intel/alderlake/chipset.cb b/src/soc/intel/alderlake/chipset.cb index 4c925b4677..36685783a2 100644 --- a/src/soc/intel/alderlake/chipset.cb +++ b/src/soc/intel/alderlake/chipset.cb @@ -177,9 +177,9 @@ chip soc/intel/alderlake device pci 10.6 alias thc0 off end device pci 10.7 alias thc1 off end device pci 12.0 alias ish off end - device pci 12.6 alias gspi2 off end + device pci 12.6 alias gspi2 off ops spi_dev_ops end device pci 12.7 alias ufs off end - device pci 13.0 alias gspi3 off end + device pci 13.0 alias gspi3 off ops spi_dev_ops end device pci 14.0 alias xhci off chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" @@ -262,8 +262,8 @@ chip soc/intel/alderlake device pci 1d.3 alias pcie_rp12 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops end device pci 1f.0 alias pch_espi on end device pci 1f.1 alias p2sb hidden end device pci 1f.2 alias pmc hidden end diff --git a/src/soc/intel/alderlake/chipset_pch_s.cb b/src/soc/intel/alderlake/chipset_pch_s.cb index 90395a9cf6..a7f2b64399 100644 --- a/src/soc/intel/alderlake/chipset_pch_s.cb +++ b/src/soc/intel/alderlake/chipset_pch_s.cb @@ -279,8 +279,8 @@ chip soc/intel/alderlake device pci 0e.0 alias vmd off end device pci 11.0 alias uart3 off ops uart_ops 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 12.6 alias gspi2 off ops spi_dev_ops end + device pci 13.0 alias gspi3 off ops spi_dev_ops end device pci 14.0 alias xhci off chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" @@ -407,8 +407,8 @@ chip soc/intel/alderlake device pci 1d.7 alias pcie_rp16 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops end device pci 1f.0 alias pch_espi on end device pci 1f.1 alias p2sb hidden end device pci 1f.2 alias pmc hidden end diff --git a/src/soc/intel/apollolake/chipset_apl.cb b/src/soc/intel/apollolake/chipset_apl.cb index f0ffffc269..2766ef8d16 100644 --- a/src/soc/intel/apollolake/chipset_apl.cb +++ b/src/soc/intel/apollolake/chipset_apl.cb @@ -36,9 +36,9 @@ chip soc/intel/apollolake device pci 18.1 alias uart1 off ops uart_ops end # UART1 device pci 18.2 alias uart2 off ops uart_ops end # UART2 device pci 18.3 alias uart3 off ops uart_ops end # UART3 - device pci 19.0 alias spi0 off end # SPI0 - device pci 19.1 alias spi1 off end # SPI1 - device pci 19.2 alias spi2 off end # SPI3 + device pci 19.0 alias spi0 off ops spi_dev_ops end # SPI0 + device pci 19.1 alias spi1 off ops spi_dev_ops end # SPI1 + device pci 19.2 alias spi2 off ops spi_dev_ops end # SPI3 device pci 1a.0 alias pwm off end # PWM device pci 1b.0 alias sdcard off end # SD Card device pci 1c.0 alias emmc off end # eMMC diff --git a/src/soc/intel/apollolake/chipset_glk.cb b/src/soc/intel/apollolake/chipset_glk.cb index 8e534e4e2f..3255407abb 100644 --- a/src/soc/intel/apollolake/chipset_glk.cb +++ b/src/soc/intel/apollolake/chipset_glk.cb @@ -37,9 +37,9 @@ chip soc/intel/apollolake device pci 18.1 alias uart1 off ops uart_ops end # UART1 device pci 18.2 alias uart2 off ops uart_ops end # UART2 device pci 18.3 alias uart3 off ops uart_ops end # UART3 - device pci 19.0 alias spi0 off end # SPI0 - device pci 19.1 alias spi1 off end # SPI1 - device pci 19.2 alias spi2 off end # SPI3 + device pci 19.0 alias spi0 off ops spi_dev_ops end # SPI0 + device pci 19.1 alias spi1 off ops spi_dev_ops end # SPI1 + device pci 19.2 alias spi2 off ops spi_dev_ops end # SPI3 device pci 1a.0 alias pwm off end # PWM device pci 1c.0 alias emmc off end # eMMC device pci 1d.0 alias ufs off end # UFS diff --git a/src/soc/intel/cannonlake/chipset.cb b/src/soc/intel/cannonlake/chipset.cb index 20a7250794..2fd801051a 100644 --- a/src/soc/intel/cannonlake/chipset.cb +++ b/src/soc/intel/cannonlake/chipset.cb @@ -15,7 +15,7 @@ chip soc/intel/cannonlake device pci 08.0 alias gna off end # Gaussian mixture model, Neural network accelerator device pci 12.0 alias thermal off end # Thermal Subsystem device pci 12.5 alias ufs off end # UFS SCS - device pci 12.6 alias gspi2 off end # GSPI #2 + device pci 12.6 alias gspi2 off ops spi_dev_ops end # GSPI #2 device pci 13.0 alias ish off end # ISH device pci 14.0 alias xhci off # USB xHCI chip drivers/usb/acpi @@ -115,8 +115,8 @@ chip soc/intel/cannonlake device pci 1d.7 alias pcie_rp16 off ops pcie_rp_ops end # PCI Express Port 16 device pci 1e.0 alias uart0 off ops uart_ops end # UART #0 device pci 1e.1 alias uart1 off ops uart_ops end # UART #1 - device pci 1e.2 alias gspi0 off end # GSPI #0 - device pci 1e.3 alias gspi1 off end # GSPI #1 + device pci 1e.2 alias gspi0 off ops spi_dev_ops end # GSPI #0 + device pci 1e.3 alias gspi1 off ops spi_dev_ops end # GSPI #1 device pci 1f.0 alias lpc_espi on end # LPC Interface device pci 1f.1 alias p2sb hidden end # P2SB device pci 1f.2 alias pmc hidden end # Power Management Controller diff --git a/src/soc/intel/cannonlake/chipset_pch_h.cb b/src/soc/intel/cannonlake/chipset_pch_h.cb index 76648c0ca0..b00e556a2e 100644 --- a/src/soc/intel/cannonlake/chipset_pch_h.cb +++ b/src/soc/intel/cannonlake/chipset_pch_h.cb @@ -15,7 +15,7 @@ chip soc/intel/cannonlake device pci 08.0 alias gna off end # Gaussian mixture model, Neural network accelerator device pci 12.0 alias thermal off end # Thermal Subsystem device pci 12.5 alias ufs off end # UFS SCS - device pci 12.6 alias gspi2 off end # GSPI #2 + device pci 12.6 alias gspi2 off ops spi_dev_ops end # GSPI #2 device pci 13.0 alias ish off end # ISH device pci 14.0 alias xhci off # USB xHCI chip drivers/usb/acpi @@ -149,8 +149,8 @@ chip soc/intel/cannonlake device pci 1d.7 alias pcie_rp16 off ops pcie_rp_ops end # PCI Express Port 16 device pci 1e.0 alias uart0 off ops uart_ops end # UART #0 device pci 1e.1 alias uart1 off ops uart_ops end # UART #1 - device pci 1e.2 alias gspi0 off end # GSPI #0 - device pci 1e.3 alias gspi1 off end # GSPI #1 + device pci 1e.2 alias gspi0 off ops spi_dev_ops end # GSPI #0 + device pci 1e.3 alias gspi1 off ops spi_dev_ops end # GSPI #1 device pci 1f.0 alias lpc_espi on end # LPC Interface device pci 1f.1 alias p2sb hidden end # P2SB device pci 1f.2 alias pmc hidden end # Power Management Controller diff --git a/src/soc/intel/common/block/spi/spi.c b/src/soc/intel/common/block/spi/spi.c index 9ac9719c7a..5c75a2240b 100644 --- a/src/soc/intel/common/block/spi/spi.c +++ b/src/soc/intel/common/block/spi/spi.c @@ -127,88 +127,12 @@ static const unsigned short pci_device_ids[] = { PCI_DID_INTEL_NVL_SPI0, PCI_DID_INTEL_NVL_SPI1, PCI_DID_INTEL_NVL_SPI2, - PCI_DID_INTEL_WCL_HWSEQ_SPI, - PCI_DID_INTEL_WCL_SPI0, - PCI_DID_INTEL_WCL_SPI1, - PCI_DID_INTEL_WCL_SPI2, - PCI_DID_INTEL_PTL_H_HWSEQ_SPI, - PCI_DID_INTEL_PTL_H_SPI0, - PCI_DID_INTEL_PTL_H_SPI1, - PCI_DID_INTEL_PTL_H_SPI2, - PCI_DID_INTEL_PTL_U_H_HWSEQ_SPI, - PCI_DID_INTEL_PTL_U_H_SPI0, - PCI_DID_INTEL_PTL_U_H_SPI1, - PCI_DID_INTEL_PTL_U_H_SPI2, PCI_DID_INTEL_LNL_GSPI0, PCI_DID_INTEL_LNL_GSPI1, PCI_DID_INTEL_LNL_GSPI2, - PCI_DID_INTEL_MTL_GSPI0, - PCI_DID_INTEL_MTL_GSPI1, - PCI_DID_INTEL_MTL_GSPI2, - PCI_DID_INTEL_ARL_GSPI0, - PCI_DID_INTEL_ARL_GSPI1, - PCI_DID_INTEL_ARL_GSPI2, - PCI_DID_INTEL_ARP_S_GSPI0, - PCI_DID_INTEL_ARP_S_GSPI1, - PCI_DID_INTEL_ARP_S_GSPI2, - PCI_DID_INTEL_ARP_S_GSPI3, - PCI_DID_INTEL_APL_SPI0, - PCI_DID_INTEL_APL_SPI1, - PCI_DID_INTEL_APL_SPI2, - PCI_DID_INTEL_GLK_SPI0, - PCI_DID_INTEL_GLK_SPI1, - PCI_DID_INTEL_GLK_SPI2, - PCI_DID_INTEL_CNL_SPI0, - PCI_DID_INTEL_CNL_SPI1, - PCI_DID_INTEL_CNL_SPI2, - PCI_DID_INTEL_CNP_H_SPI0, - PCI_DID_INTEL_CNP_H_SPI1, - PCI_DID_INTEL_CNP_H_SPI2, - PCI_DID_INTEL_CMP_SPI0, - PCI_DID_INTEL_CMP_SPI1, - PCI_DID_INTEL_CMP_SPI2, - PCI_DID_INTEL_CMP_H_SPI0, - PCI_DID_INTEL_CMP_H_SPI1, - PCI_DID_INTEL_CMP_H_SPI2, - PCI_DID_INTEL_TGP_GSPI0, - PCI_DID_INTEL_TGP_GSPI1, - PCI_DID_INTEL_TGP_GSPI2, - PCI_DID_INTEL_TGP_GSPI3, - PCI_DID_INTEL_TGP_GSPI4, - PCI_DID_INTEL_TGP_GSPI5, - PCI_DID_INTEL_TGP_GSPI6, - PCI_DID_INTEL_TGP_H_SPI0, - PCI_DID_INTEL_TGP_H_GSPI0, - PCI_DID_INTEL_TGP_H_GSPI1, - PCI_DID_INTEL_TGP_H_GSPI2, - PCI_DID_INTEL_TGP_H_GSPI3, PCI_DID_INTEL_MCC_GSPI0, PCI_DID_INTEL_MCC_GSPI1, PCI_DID_INTEL_MCC_GSPI2, - PCI_DID_INTEL_JSP_SPI0, - PCI_DID_INTEL_JSP_SPI1, - PCI_DID_INTEL_JSP_SPI2, - PCI_DID_INTEL_ADP_P_SPI0, - PCI_DID_INTEL_ADP_P_SPI1, - PCI_DID_INTEL_ADP_P_SPI2, - PCI_DID_INTEL_ADP_P_SPI3, - PCI_DID_INTEL_ADP_P_SPI4, - PCI_DID_INTEL_ADP_P_SPI5, - PCI_DID_INTEL_ADP_P_SPI6, - PCI_DID_INTEL_ADP_S_SPI0, - PCI_DID_INTEL_ADP_S_SPI1, - PCI_DID_INTEL_ADP_S_SPI2, - PCI_DID_INTEL_ADP_S_SPI3, - PCI_DID_INTEL_ADP_S_SPI4, - PCI_DID_INTEL_ADP_S_SPI5, - PCI_DID_INTEL_ADP_S_SPI6, - PCI_DID_INTEL_ADP_M_N_SPI0, - PCI_DID_INTEL_ADP_M_N_SPI1, - PCI_DID_INTEL_ADP_M_SPI2, - PCI_DID_INTEL_RPP_S_SPI0, - PCI_DID_INTEL_RPP_S_SPI1, - PCI_DID_INTEL_RPP_S_SPI2, - PCI_DID_INTEL_RPP_S_SPI3, PCI_DID_INTEL_DNV_SPI, 0 }; diff --git a/src/soc/intel/jasperlake/chipset.cb b/src/soc/intel/jasperlake/chipset.cb index 49cb3d2e98..6d50296019 100644 --- a/src/soc/intel/jasperlake/chipset.cb +++ b/src/soc/intel/jasperlake/chipset.cb @@ -11,7 +11,7 @@ chip soc/intel/jasperlake device pci 09.0 alias north_tracehub off end device pci 12.0 alias ish off end device pci 12.5 alias ufs_scs off end - device pci 12.6 alias gspi2 off end + device pci 12.6 alias gspi2 off ops spi_dev_ops end device pci 14.0 alias south_xhci off chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" @@ -87,8 +87,8 @@ chip soc/intel/jasperlake device pci 1c.7 alias pcie_rp8 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops end device pci 1f.0 alias pch_espi on end device pci 1f.1 alias p2sb hidden end device pci 1f.2 alias pmc hidden end diff --git a/src/soc/intel/meteorlake/chipset.cb b/src/soc/intel/meteorlake/chipset.cb index 8abfa1261d..1efa776ec0 100644 --- a/src/soc/intel/meteorlake/chipset.cb +++ b/src/soc/intel/meteorlake/chipset.cb @@ -94,7 +94,7 @@ chip soc/intel/meteorlake device pci 10.0 alias thc0 off end device pci 10.1 alias thc1 off end device pci 12.0 alias ish off end - device pci 12.6 alias gspi2 off end + device pci 12.6 alias gspi2 off ops spi_dev_ops end device pci 12.7 alias ufs off end device pci 13.0 alias ioe_p2sb hidden end device pci 13.1 alias ieh2 off end @@ -179,8 +179,8 @@ chip soc/intel/meteorlake device pci 1c.7 alias pcie_rp8 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops end device pci 1e.4 alias tsn_gbe1 off end device pci 1e.5 alias tsn_gbe2 off end device pci 1f.0 alias soc_espi on end diff --git a/src/soc/intel/pantherlake/chipset_ptl.cb b/src/soc/intel/pantherlake/chipset_ptl.cb index 4540ce7a08..99962c56b0 100644 --- a/src/soc/intel/pantherlake/chipset_ptl.cb +++ b/src/soc/intel/pantherlake/chipset_ptl.cb @@ -170,7 +170,7 @@ chip soc/intel/pantherlake device pci 10.1 alias thc1 off end device pci 12.0 alias ish off end device pci 12.1 alias p2sb2 hidden end - device pci 12.6 alias gspi0a off end + device pci 12.6 alias gspi0a off ops spi_dev_ops end device pci 13.0 alias heci_1 off end device pci 13.1 alias heci_2 off end device pci 13.2 alias heci_3 off end @@ -239,8 +239,8 @@ chip soc/intel/pantherlake device pci 1c.7 alias pcie_rp8 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops end device pci 1f.0 alias soc_espi on end device pci 1f.1 alias p2sb hidden end device pci 1f.2 alias pmc hidden end diff --git a/src/soc/intel/pantherlake/chipset_wcl.cb b/src/soc/intel/pantherlake/chipset_wcl.cb index b2ec967c75..cdd57f5a88 100644 --- a/src/soc/intel/pantherlake/chipset_wcl.cb +++ b/src/soc/intel/pantherlake/chipset_wcl.cb @@ -56,7 +56,7 @@ chip soc/intel/pantherlake device pci 10.1 alias thc1 off end device pci 12.0 alias ish off end device pci 12.1 alias p2sb2 hidden end - device pci 12.6 alias gspi0a off end + device pci 12.6 alias gspi0a off ops spi_dev_ops end device pci 13.0 alias heci_1 off end device pci 13.1 alias heci_2 off end device pci 13.2 alias heci_3 off end @@ -122,8 +122,8 @@ chip soc/intel/pantherlake device pci 1c.3 alias pcie_rp4 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops end device pci 1f.0 alias soc_espi on end device pci 1f.1 alias p2sb hidden end device pci 1f.2 alias pmc hidden end diff --git a/src/soc/intel/tigerlake/chipset.cb b/src/soc/intel/tigerlake/chipset.cb index 4258988603..abecd82f61 100644 --- a/src/soc/intel/tigerlake/chipset.cb +++ b/src/soc/intel/tigerlake/chipset.cb @@ -61,8 +61,8 @@ chip soc/intel/tigerlake device pci 10.6 alias thc0 off end device pci 10.7 alias thc1 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 12.6 alias gspi2 off ops spi_dev_ops end + device pci 13.0 alias gspi3 off ops spi_dev_ops end device pci 14.0 alias south_xhci off chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" @@ -143,8 +143,8 @@ chip soc/intel/tigerlake device pci 1d.3 alias pcie_rp12 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops 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 diff --git a/src/soc/intel/tigerlake/chipset_pch_h.cb b/src/soc/intel/tigerlake/chipset_pch_h.cb index c980f62f1c..d0a3df588e 100644 --- a/src/soc/intel/tigerlake/chipset_pch_h.cb +++ b/src/soc/intel/tigerlake/chipset_pch_h.cb @@ -65,8 +65,8 @@ chip soc/intel/tigerlake device pci 11.0 alias uart3 off ops uart_ops end device pci 11.3 alias i2c6 off ops i2c_dev_ops 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 12.6 alias gspi2 off ops spi_dev_ops end + device pci 13.0 alias gspi3 off ops spi_dev_ops end device pci 14.0 alias south_xhci off chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" @@ -177,8 +177,8 @@ chip soc/intel/tigerlake device pci 1d.7 alias pcie_rp16 off ops pcie_rp_ops end device pci 1e.0 alias uart0 off ops uart_ops end device pci 1e.1 alias uart1 off ops uart_ops end - device pci 1e.2 alias gspi0 off end - device pci 1e.3 alias gspi1 off end + device pci 1e.2 alias gspi0 off ops spi_dev_ops end + device pci 1e.3 alias gspi1 off ops spi_dev_ops 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