Felix Held has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/75713?usp=email )
Change subject: soc/amd: add ops xhci_pci_ops to XHCI controllers in devicetree ......................................................................
soc/amd: add ops xhci_pci_ops to XHCI controllers in devicetree
Instead of adding the new PCI IDs of the XHCI controllers in every new chip generation to the pci_xhci driver, bind the driver to the internal PCI devices of the XHCI controllers via the device ops statement in the chipset devicetree. The PCI device function of the XHCI2 controller in Mendocino can be either a dummy device or the XHCI controller, so the device ops are attached to that device in the mainboard devicetree instead. The Glinda code is right now just a copy of the Mendocino code, so it'll change in the future, but for consistency the equivalent changes to those in Mendocino are applied there too.
Since the device ops are now attached to the devices via the static devicetree entry, also remove both the xhci_pci_driver struct and the amd_pci_device_ids array from drivers/usb/pci_xhci/pci_xhci.c.
Signed-off-by: Felix Held felix-coreboot@felixheld.de Change-Id: I9c455002c6d2aac576fe24eee0c31744b4507bb0 --- M src/drivers/usb/pci_xhci/pci_xhci.c M src/mainboard/amd/birman/devicetree_glinda.cb M src/mainboard/amd/chausie/devicetree.cb M src/mainboard/google/skyrim/variants/baseboard/devicetree.cb M src/soc/amd/cezanne/chipset.cb M src/soc/amd/glinda/chipset.cb M src/soc/amd/mendocino/chipset_mendocino.cb M src/soc/amd/mendocino/chipset_rembrandt.cb M src/soc/amd/picasso/chipset.cb 9 files changed, 20 insertions(+), 19 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/13/75713/1
diff --git a/src/drivers/usb/pci_xhci/pci_xhci.c b/src/drivers/usb/pci_xhci/pci_xhci.c index ca51278..6d022d1 100644 --- a/src/drivers/usb/pci_xhci/pci_xhci.c +++ b/src/drivers/usb/pci_xhci/pci_xhci.c @@ -251,20 +251,3 @@ .acpi_fill_ssdt = xhci_fill_ssdt, .acpi_name = xhci_acpi_name, }; - -static const unsigned short amd_pci_device_ids[] = { - PCI_DID_AMD_FAM17H_MODEL18H_XHCI0, - PCI_DID_AMD_FAM17H_MODEL18H_XHCI1, - PCI_DID_AMD_FAM17H_MODEL20H_XHCI0, - PCI_DID_AMD_FAM17H_MODEL60H_XHCI, - PCI_DID_AMD_FAM17H_MODELA0H_XHCI0, - PCI_DID_AMD_FAM17H_MODELA0H_XHCI1, - PCI_DID_AMD_FAM17H_MODELA0H_XHCI2, - 0 -}; - -static const struct pci_driver xhci_pci_driver __pci_driver = { - .ops = &xhci_pci_ops, - .vendor = PCI_VID_AMD, - .devices = amd_pci_device_ids, -}; diff --git a/src/mainboard/amd/birman/devicetree_glinda.cb b/src/mainboard/amd/birman/devicetree_glinda.cb index d6ecae6..dfcd176 100644 --- a/src/mainboard/amd/birman/devicetree_glinda.cb +++ b/src/mainboard/amd/birman/devicetree_glinda.cb @@ -205,6 +205,7 @@ end device ref gpp_bridge_c on # Internal GPP Bridge 2 to Bus C device ref xhci_2 on + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_2_root_hub on diff --git a/src/mainboard/amd/chausie/devicetree.cb b/src/mainboard/amd/chausie/devicetree.cb index 2e6511e..a186b2d 100644 --- a/src/mainboard/amd/chausie/devicetree.cb +++ b/src/mainboard/amd/chausie/devicetree.cb @@ -204,6 +204,7 @@ end device ref gpp_bridge_c on # Internal GPP Bridge 2 to Bus C device ref xhci_2 on + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_2_root_hub on diff --git a/src/mainboard/google/skyrim/variants/baseboard/devicetree.cb b/src/mainboard/google/skyrim/variants/baseboard/devicetree.cb index 835277a..b605e1c 100644 --- a/src/mainboard/google/skyrim/variants/baseboard/devicetree.cb +++ b/src/mainboard/google/skyrim/variants/baseboard/devicetree.cb @@ -175,6 +175,7 @@ end device ref gpp_bridge_c on # Internal GPP Bridge 2 to Bus C device ref xhci_2 on # USB 2.0 (USB2) + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_2_root_hub on diff --git a/src/soc/amd/cezanne/chipset.cb b/src/soc/amd/cezanne/chipset.cb index c779390..0762ea1 100644 --- a/src/soc/amd/cezanne/chipset.cb +++ b/src/soc/amd/cezanne/chipset.cb @@ -28,6 +28,7 @@ device pci 0.1 alias gfx_hda off end # Display HD Audio Controller (GFXAZ) device pci 0.2 alias crypto off end # Crypto Coprocessor device pci 0.3 alias xhci_0 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_0_root_hub off @@ -53,6 +54,7 @@ end end device pci 0.4 alias xhci_1 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_1_root_hub off diff --git a/src/soc/amd/glinda/chipset.cb b/src/soc/amd/glinda/chipset.cb index ad477c7..bf7d67d 100644 --- a/src/soc/amd/glinda/chipset.cb +++ b/src/soc/amd/glinda/chipset.cb @@ -26,6 +26,7 @@ device pci 0.1 alias gfx_hda off end # Display HD Audio Controller (GFXAZ) device pci 0.2 alias crypto off end # Crypto Coprocessor device pci 0.3 alias xhci_0 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_0_root_hub off @@ -42,6 +43,7 @@ end end device pci 0.4 alias xhci_1 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_1_root_hub off @@ -71,6 +73,7 @@ device pci 08.3 alias gpp_bridge_c off # Internal GPP Bridge 2 to Bus C ops amd_internal_pcie_gpp_ops device pci 0.0 alias xhci_2 off end # Might also be a dummy device with different PCI DID + # When using this as XHCI2, the mainboard devicetree needs to add ops xhci_pci_ops end
device pci 14.0 alias smbus on ops amd_smbus_ops end # primary FCH function diff --git a/src/soc/amd/mendocino/chipset_mendocino.cb b/src/soc/amd/mendocino/chipset_mendocino.cb index 691cca0..e40124f 100644 --- a/src/soc/amd/mendocino/chipset_mendocino.cb +++ b/src/soc/amd/mendocino/chipset_mendocino.cb @@ -22,6 +22,7 @@ device pci 0.1 alias gfx_hda off end # Display HD Audio Controller (GFXAZ) device pci 0.2 alias crypto off end # Crypto Coprocessor device pci 0.3 alias xhci_0 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_0_root_hub off @@ -38,6 +39,7 @@ end end device pci 0.4 alias xhci_1 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_1_root_hub off @@ -66,6 +68,7 @@ device pci 08.3 alias gpp_bridge_c off # Internal GPP Bridge 2 to Bus C ops amd_internal_pcie_gpp_ops device pci 0.0 alias xhci_2 off end # Might also be a dummy device with different PCI DID + # When using this as XHCI2, the mainboard devicetree needs to add ops xhci_pci_ops end
device pci 14.0 alias smbus on ops amd_smbus_ops end # primary FCH function diff --git a/src/soc/amd/mendocino/chipset_rembrandt.cb b/src/soc/amd/mendocino/chipset_rembrandt.cb index fd31efe..394f057 100644 --- a/src/soc/amd/mendocino/chipset_rembrandt.cb +++ b/src/soc/amd/mendocino/chipset_rembrandt.cb @@ -24,6 +24,7 @@ device pci 0.1 alias gfx_hda off end # Display HD Audio Controller (GFXAZ) device pci 0.2 alias crypto off end # Crypto Coprocessor device pci 0.3 alias xhci_0 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_0_root_hub off @@ -40,6 +41,7 @@ end end device pci 0.4 alias xhci_1 off + ops xhci_pci_ops chip drivers/usb/acpi register "type" = "UPC_TYPE_HUB" device usb 0.0 alias xhci_1_root_hub off @@ -69,6 +71,7 @@ device pci 08.3 alias gpp_bridge_c off # Internal GPP Bridge 2 to Bus C ops amd_internal_pcie_gpp_ops device pci 0.0 alias xhci_2 off end # Might also be a dummy device with different PCI DID + # When using this as XHCI2, the mainboard devicetree needs to add ops xhci_pci_ops end
device pci 14.0 alias smbus on ops amd_smbus_ops end # primary FCH function diff --git a/src/soc/amd/picasso/chipset.cb b/src/soc/amd/picasso/chipset.cb index 6d6177f..bf2c879 100644 --- a/src/soc/amd/picasso/chipset.cb +++ b/src/soc/amd/picasso/chipset.cb @@ -22,8 +22,12 @@ device pci 0.0 alias gfx off ops amd_graphics_ops end # internal GPU device pci 0.1 alias gfx_hda off end # display HD Audio controller device pci 0.2 alias crypto off end # cryptography coprocessor - device pci 0.3 alias xhci_0 off end - device pci 0.4 alias xhci_1 off end + device pci 0.3 alias xhci_0 off + ops xhci_pci_ops + end + device pci 0.4 alias xhci_1 off + ops xhci_pci_ops + end device pci 0.5 alias acp off ops amd_acp_ops end # audio co-processor device pci 0.6 alias hda off end # main HD Audio Controller device pci 0.7 alias mp2 off end # sensor fusion hub (MP2)