Lines Matching +full:num +full:- +full:ss +full:- +full:bits

1 // SPDX-License-Identifier: GPL-2.0+
3 * Copyright (C) 2022-2023, Advanced Micro Devices, Inc.
10 #include <linux/bits.h>
57 prop[0] = FIELD_PREP(OF_PCI_ADDR_FIELD_BUS, pdev->bus->number) | in of_pci_set_address()
58 FIELD_PREP(OF_PCI_ADDR_FIELD_DEV, PCI_SLOT(pdev->devfn)) | in of_pci_set_address()
59 FIELD_PREP(OF_PCI_ADDR_FIELD_FUNC, PCI_FUNC(pdev->devfn)); in of_pci_set_address()
70 u32 ss; in of_pci_get_addr_flags() local
72 if (res->flags & IORESOURCE_IO) in of_pci_get_addr_flags()
73 ss = OF_PCI_ADDR_SPACE_IO; in of_pci_get_addr_flags()
74 else if (res->flags & IORESOURCE_MEM_64) in of_pci_get_addr_flags()
75 ss = OF_PCI_ADDR_SPACE_MEM64; in of_pci_get_addr_flags()
76 else if (res->flags & IORESOURCE_MEM) in of_pci_get_addr_flags()
77 ss = OF_PCI_ADDR_SPACE_MEM32; in of_pci_get_addr_flags()
79 return -EINVAL; in of_pci_get_addr_flags()
82 if (res->flags & IORESOURCE_PREFETCH) in of_pci_get_addr_flags()
85 *flags |= FIELD_PREP(OF_PCI_ADDR_FIELD_SS, ss); in of_pci_get_addr_flags()
94 u32 bus_range[] = { pdev->subordinate->busn_res.start, in of_pci_prop_bus_range()
95 pdev->subordinate->busn_res.end }; in of_pci_prop_bus_range()
97 return of_changeset_add_prop_u32_array(ocs, np, "bus-range", bus_range, in of_pci_prop_bus_range()
107 u32 flags, num; in of_pci_prop_ranges() local
111 num = PCI_BRIDGE_RESOURCE_NUM; in of_pci_prop_ranges()
112 res = &pdev->resource[PCI_BRIDGE_RESOURCES]; in of_pci_prop_ranges()
114 num = PCI_STD_NUM_BARS; in of_pci_prop_ranges()
115 res = &pdev->resource[PCI_STD_RESOURCES]; in of_pci_prop_ranges()
118 rp = kcalloc(num, sizeof(*rp), GFP_KERNEL); in of_pci_prop_ranges()
120 return -ENOMEM; in of_pci_prop_ranges()
122 for (i = 0, j = 0; j < num; j++) { in of_pci_prop_ranges()
129 val64 = pci_bus_address(pdev, &res[j] - pdev->resource); in of_pci_prop_ranges()
137 * For endpoint device, the lower 64-bits of child in of_pci_prop_ranges()
199 pnode = pci_device_to_OF_node(pdev->bus->self); in of_pci_prop_intr_map()
201 pnode = pci_bus_to_OF_node(pdev->bus); in of_pci_prop_intr_map()
205 return -EINVAL; in of_pci_prop_intr_map()
208 laddr[0] = cpu_to_be32((pdev->bus->number << 16) | (pdev->devfn << 8)); in of_pci_prop_intr_map()
210 i = pin - 1; in of_pci_prop_intr_map()
220 of_property_read_u32(out_irq[i].np, "#address-cells", in of_pci_prop_intr_map()
224 list_for_each_entry(child, &pdev->subordinate->devices, bus_list) { in of_pci_prop_intr_map()
226 i = pci_swizzle_interrupt_pin(child, pin) - 1; in of_pci_prop_intr_map()
235 * need to generate interrupt-map property. in of_pci_prop_intr_map()
242 return -ENOMEM; in of_pci_prop_intr_map()
245 list_for_each_entry(child, &pdev->subordinate->devices, bus_list) { in of_pci_prop_intr_map()
247 i = pci_swizzle_interrupt_pin(child, pin) - 1; in of_pci_prop_intr_map()
251 *mapp = (child->bus->number << 16) | in of_pci_prop_intr_map()
252 (child->devfn << 8); in of_pci_prop_intr_map()
256 *mapp = out_irq[i].np->phandle; in of_pci_prop_intr_map()
272 ret = of_changeset_add_prop_u32_array(ocs, np, "interrupt-map", int_map, in of_pci_prop_intr_map()
277 ret = of_changeset_add_prop_u32(ocs, np, "#interrupt-cells", 1); in of_pci_prop_intr_map()
281 ret = of_changeset_add_prop_u32_array(ocs, np, "interrupt-map-mask", in of_pci_prop_intr_map()
303 kasprintf(GFP_KERNEL, "pci%x,%x", pdev->vendor, pdev->device); in of_pci_prop_compatible()
305 kasprintf(GFP_KERNEL, "pciclass,%06x", pdev->class); in of_pci_prop_compatible()
307 kasprintf(GFP_KERNEL, "pciclass,%04x", pdev->class >> 8); in of_pci_prop_compatible()
345 ret = of_changeset_add_prop_u32(ocs, np, "#address-cells", in of_pci_add_properties()
350 ret = of_changeset_add_prop_u32(ocs, np, "#size-cells", in of_pci_add_properties()