Lines Matching +full:resource +full:- +full:files
1 // SPDX-License-Identifier: GPL-2.0
3 * arch/alpha/kernel/pci-sysfs.c
7 * Alpha PCI resource files.
10 * drivers/pci/pci-sysfs.c
25 base = sparse ? hose->sparse_mem_base : hose->dense_mem_base; in hose_mmap_page_range()
27 base = sparse ? hose->sparse_io_base : hose->dense_io_base; in hose_mmap_page_range()
29 vma->vm_pgoff += base >> PAGE_SHIFT; in hose_mmap_page_range()
31 return io_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, in hose_mmap_page_range()
32 vma->vm_end - vma->vm_start, in hose_mmap_page_range()
33 vma->vm_page_prot); in hose_mmap_page_range()
43 start = vma->vm_pgoff; in __pci_mmap_fits()
44 size = ((pci_resource_len(pdev, num) - 1) >> (PAGE_SHIFT - shift)) + 1; in __pci_mmap_fits()
46 if (start < size && size - start >= nr) in __pci_mmap_fits()
48 WARN(1, "process \"%s\" tried to map%s 0x%08lx-0x%08lx on %s BAR %d " in __pci_mmap_fits()
50 current->comm, sparse ? " sparse" : "", start, start + nr, in __pci_mmap_fits()
56 * pci_mmap_resource - map a PCI resource into user memory space
62 * Use the bus mapping routines to map a PCI resource into userspace.
69 struct resource *res = attr->private; in pci_mmap_resource()
75 if (res == &pdev->resource[i]) in pci_mmap_resource()
78 return -ENODEV; in pci_mmap_resource()
80 if (res->flags & IORESOURCE_MEM && iomem_is_exclusive(res->start)) in pci_mmap_resource()
81 return -EINVAL; in pci_mmap_resource()
84 return -EINVAL; in pci_mmap_resource()
86 pcibios_resource_to_bus(pdev->bus, &bar, res); in pci_mmap_resource()
87 vma->vm_pgoff += bar.start >> (PAGE_SHIFT - (sparse ? 5 : 0)); in pci_mmap_resource()
88 mmap_type = res->flags & IORESOURCE_MEM ? pci_mmap_mem : pci_mmap_io; in pci_mmap_resource()
90 return hose_mmap_page_range(pdev->sysdata, vma, mmap_type, sparse); in pci_mmap_resource()
108 * pci_remove_resource_files - cleanup resource files
111 * If we created resource files for @dev, remove them from sysfs and
121 res_attr = pdev->res_attr[i]; in pci_remove_resource_files()
123 sysfs_remove_bin_file(&pdev->dev.kobj, res_attr); in pci_remove_resource_files()
127 res_attr = pdev->res_attr_wc[i]; in pci_remove_resource_files()
129 sysfs_remove_bin_file(&pdev->dev.kobj, res_attr); in pci_remove_resource_files()
138 struct pci_controller *hose = pdev->sysdata; in sparse_mem_mmap_fits()
142 pcibios_resource_to_bus(pdev->bus, &bar, &pdev->resource[num]); in sparse_mem_mmap_fits()
146 definitions in asm/core_xxx.h files). This corresponds in sparse_mem_mmap_fits()
148 dense_offset = (long)(hose->dense_mem_base - hose->sparse_mem_base); in sparse_mem_mmap_fits()
160 sprintf(name, "resource%d%s", num, suffix); in pci_create_one_attr()
161 res_attr->mmap = sparse ? pci_mmap_resource_sparse : in pci_create_one_attr()
163 res_attr->attr.name = name; in pci_create_one_attr()
164 res_attr->attr.mode = S_IRUSR | S_IWUSR; in pci_create_one_attr()
165 res_attr->size = sparse ? size << 5 : size; in pci_create_one_attr()
166 res_attr->private = &pdev->resource[num]; in pci_create_one_attr()
167 return sysfs_create_bin_file(&pdev->dev.kobj, res_attr); in pci_create_one_attr()
176 struct pci_controller *hose = pdev->sysdata; in pci_create_attr()
179 suffix = ""; /* Assume bwx machine, normal resourceN files. */ in pci_create_attr()
182 if (pdev->resource[num].flags & IORESOURCE_MEM) { in pci_create_attr()
183 sparse_base = hose->sparse_mem_base; in pci_create_attr()
184 dense_base = hose->dense_mem_base; in pci_create_attr()
191 sparse_base = hose->sparse_io_base; in pci_create_attr()
192 dense_base = hose->dense_io_base; in pci_create_attr()
206 return -ENOMEM; in pci_create_attr()
210 pdev->res_attr[num] = attr; in pci_create_attr()
219 pdev->res_attr_wc[num] = attr; in pci_create_attr()
224 * pci_create_resource_files - create resource files in sysfs for @dev
227 * Walk the resources in @dev creating files for each resource available.
234 /* Expose the PCI resources from this device as files */ in pci_create_resource_files()
259 start = vma->vm_pgoff; in __legacy_mmap_fits()
260 size = ((res_size - 1) >> PAGE_SHIFT) + 1; in __legacy_mmap_fits()
262 if (start < size && size - start >= nr) in __legacy_mmap_fits()
264 WARN(1, "process \"%s\" tried to map%s 0x%08lx-0x%08lx on hose %d " in __legacy_mmap_fits()
266 current->comm, sparse ? " sparse" : "", start, start + nr, in __legacy_mmap_fits()
267 hose->index, size); in __legacy_mmap_fits()
276 base = (mmap_type == pci_mmap_mem) ? hose->sparse_mem_base : in has_sparse()
277 hose->sparse_io_base; in has_sparse()
285 struct pci_controller *hose = bus->sysdata; in pci_mmap_legacy_page_range()
289 res_size = (mmap_type == pci_mmap_mem) ? bus->legacy_mem->size : in pci_mmap_legacy_page_range()
290 bus->legacy_io->size; in pci_mmap_legacy_page_range()
292 return -EINVAL; in pci_mmap_legacy_page_range()
298 * pci_adjust_legacy_attr - adjustment of legacy file attributes
299 * @b: bus to create files under
306 struct pci_controller *hose = bus->sysdata; in pci_adjust_legacy_attr()
312 bus->legacy_mem->attr.name = "legacy_mem_sparse"; in pci_adjust_legacy_attr()
313 bus->legacy_mem->size <<= 5; in pci_adjust_legacy_attr()
315 bus->legacy_io->attr.name = "legacy_io_sparse"; in pci_adjust_legacy_attr()
316 bus->legacy_io->size <<= 5; in pci_adjust_legacy_attr()
324 struct pci_controller *hose = bus->sysdata; in pci_legacy_read()
326 port += hose->io_space->start; in pci_legacy_read()
334 return -EINVAL; in pci_legacy_read()
339 return -EINVAL; in pci_legacy_read()
343 return -EINVAL; in pci_legacy_read()
348 struct pci_controller *hose = bus->sysdata; in pci_legacy_write()
350 port += hose->io_space->start; in pci_legacy_write()
358 return -EINVAL; in pci_legacy_write()
363 return -EINVAL; in pci_legacy_write()
367 return -EINVAL; in pci_legacy_write()