summaryrefslogtreecommitdiff
path: root/src/soc
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc')
-rw-r--r--src/soc/amd/common/block/pci/pcie_gpp.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/soc/amd/common/block/pci/pcie_gpp.c b/src/soc/amd/common/block/pci/pcie_gpp.c
index 0ce3268501..0f983d04be 100644
--- a/src/soc/amd/common/block/pci/pcie_gpp.c
+++ b/src/soc/amd/common/block/pci/pcie_gpp.c
@@ -47,6 +47,20 @@ static void acpi_device_write_gpp_pci_dev(const struct device *dev)
acpigen_pop_len(); /* Scope */
}
+/* Latency tolerance reporting, max snoop/non-snoop latency value 1.049ms */
+#define PCIE_LTR_MAX_LATENCY_1049US 0x1001
+
+static void pcie_get_ltr_max_latencies(u16 *max_snoop, u16 *max_nosnoop)
+{
+ *max_snoop = PCIE_LTR_MAX_LATENCY_1049US;
+ *max_nosnoop = PCIE_LTR_MAX_LATENCY_1049US;
+}
+
+static struct pci_operations pcie_ops = {
+ .get_ltr_max_latencies = pcie_get_ltr_max_latencies,
+ .set_subsystem = pci_dev_set_subsystem,
+};
+
struct device_operations amd_internal_pcie_gpp_ops = {
.read_resources = pci_bus_read_resources,
.set_resources = pci_dev_set_resources,
@@ -65,4 +79,5 @@ struct device_operations amd_external_pcie_gpp_ops = {
.reset_bus = pci_bus_reset,
.acpi_name = pcie_gpp_acpi_name,
.acpi_fill_ssdt = acpi_device_write_gpp_pci_dev,
+ .ops_pci = &pcie_ops,
};