Lines Matching +full:7 +full:- +full:segment

1 // SPDX-License-Identifier: GPL-2.0-only
13 #include <linux/pci-acpi.h>
14 #include <linux/pci-ecam.h>
20 u16 segment; member
30 u16 segment; member
37 ((end) - (start) + 1), \
42 /* { OEM_ID, OEM_TABLE_ID, REV, SEGMENT, BUS_RANGE, ops, cfgres }, */
56 AL_ECAM("GRAVITON", 0, 7, &al_pcie_ops),
68 QCOM_ECAM32(7),
93 { "CAVIUM", "THUNDERX", rev, 7 + (10 * (node)), MCFG_BUS_ANY, \
110 THUNDER_PEM_QUIRK(2, 0), /* off-chip devices */
111 THUNDER_PEM_QUIRK(2, 1), /* off-chip devices */
136 /* X-Gene SoC with v1 PCIe controller */
147 /* X-Gene SoC with v2.1 PCIe controller */
150 /* X-Gene SoC with v2.2 PCIe controller */
165 ALTRA_ECAM_QUIRK(1, 7),
194 LOONGSON_ECAM_MCFG("\0", 7),
195 LOONGSON_ECAM_MCFG("LOONGSON", 7),
203 static int pci_mcfg_quirk_matches(struct mcfg_fixup *f, u16 segment, in pci_mcfg_quirk_matches() argument
206 if (!memcmp(f->oem_id, mcfg_oem_id, ACPI_OEM_ID_SIZE) && in pci_mcfg_quirk_matches()
207 !memcmp(f->oem_table_id, mcfg_oem_table_id, in pci_mcfg_quirk_matches()
209 f->oem_revision == mcfg_oem_revision && in pci_mcfg_quirk_matches()
210 f->segment == segment && in pci_mcfg_quirk_matches()
211 resource_contains(&f->bus_range, bus_range)) in pci_mcfg_quirk_matches()
223 u16 segment = root->segment; in pci_mcfg_apply_quirks() local
224 struct resource *bus_range = &root->secondary; in pci_mcfg_apply_quirks()
229 if (pci_mcfg_quirk_matches(f, segment, bus_range)) { in pci_mcfg_apply_quirks()
230 if (f->cfgres.start) in pci_mcfg_apply_quirks()
231 *cfgres = f->cfgres; in pci_mcfg_apply_quirks()
232 if (f->ops) in pci_mcfg_apply_quirks()
233 *ecam_ops = f->ops; in pci_mcfg_apply_quirks()
234 dev_info(&root->device->dev, "MCFG quirk: ECAM at %pR for %pR with %ps\n", in pci_mcfg_apply_quirks()
249 struct resource *bus_res = &root->secondary; in pci_mcfg_lookup()
250 u16 seg = root->segment; in pci_mcfg_lookup()
255 if (root->mcfg_addr) in pci_mcfg_lookup()
262 if (e->segment == seg && e->bus_start <= bus_res->start && in pci_mcfg_lookup()
263 e->bus_end >= bus_res->end) { in pci_mcfg_lookup()
264 root->mcfg_addr = e->addr; in pci_mcfg_lookup()
271 if (root->mcfg_addr) { in pci_mcfg_lookup()
272 res.start = root->mcfg_addr + (bus_res->start << 20); in pci_mcfg_lookup()
273 res.end = res.start + (resource_size(bus_res) << 20) - 1; in pci_mcfg_lookup()
285 return -ENXIO; in pci_mcfg_lookup()
299 if (header->length < sizeof(struct acpi_table_mcfg)) in pci_mcfg_parse()
300 return -EINVAL; in pci_mcfg_parse()
302 n = (header->length - sizeof(struct acpi_table_mcfg)) / in pci_mcfg_parse()
309 return -ENOMEM; in pci_mcfg_parse()
312 e->segment = mptr->pci_segment; in pci_mcfg_parse()
313 e->addr = mptr->address; in pci_mcfg_parse()
314 e->bus_start = mptr->start_bus_number; in pci_mcfg_parse()
315 e->bus_end = mptr->end_bus_number; in pci_mcfg_parse()
316 list_add(&e->list, &pci_mcfg_list); in pci_mcfg_parse()
321 memcpy(mcfg_oem_id, header->oem_id, ACPI_OEM_ID_SIZE); in pci_mcfg_parse()
322 memcpy(mcfg_oem_table_id, header->oem_table_id, ACPI_OEM_TABLE_ID_SIZE); in pci_mcfg_parse()
323 mcfg_oem_revision = header->oem_revision; in pci_mcfg_parse()
330 /* Interface called by ACPI - parse and save MCFG table */