Lines Matching full:bar

38 	/* A requested region spanning an entire BAR. */
42 * A requested region spanning an entire BAR, and a mapping for
43 * the entire BAR.
48 * A mapping within a BAR, either spanning the whole BAR or just a
64 int bar; member
70 res->bar = -1; in pcim_addr_devres_clear()
80 pci_release_region(pdev, res->bar); in pcim_addr_resource_release()
84 pci_release_region(pdev, res->bar); in pcim_addr_resource_release()
128 return a->bar == b->bar; in pcim_addr_resources_match()
294 static inline bool mask_contains_bar(int mask, int bar) in mask_contains_bar() argument
296 return mask & BIT(bar); in mask_contains_bar()
437 * void __iomem \*mappy = pcim_iomap(pdev, bar, length);
458 * still get a BAR's mapping address through pcim_iomap_table().
461 void __iomem *mapping, int bar) in pcim_add_mapping_to_legacy_table() argument
465 if (!pci_bar_index_is_valid(bar)) in pcim_add_mapping_to_legacy_table()
473 WARN_ON(legacy_iomap_table[bar]); in pcim_add_mapping_to_legacy_table()
475 legacy_iomap_table[bar] = mapping; in pcim_add_mapping_to_legacy_table()
481 * Remove a mapping. The table only contains whole-BAR mappings, so this will
487 int bar; in pcim_remove_mapping_from_legacy_table() local
494 for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) { in pcim_remove_mapping_from_legacy_table()
495 if (legacy_iomap_table[bar] == addr) { in pcim_remove_mapping_from_legacy_table()
496 legacy_iomap_table[bar] = NULL; in pcim_remove_mapping_from_legacy_table()
504 * mapping by its BAR index.
506 static void pcim_remove_bar_from_legacy_table(struct pci_dev *pdev, int bar) in pcim_remove_bar_from_legacy_table() argument
510 if (!pci_bar_index_is_valid(bar)) in pcim_remove_bar_from_legacy_table()
517 legacy_iomap_table[bar] = NULL; in pcim_remove_bar_from_legacy_table()
523 * @bar: BAR to iomap
531 * This SHOULD only be used once per BAR.
538 void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen) in pcim_iomap() argument
543 if (!pci_bar_index_is_valid(bar)) in pcim_iomap()
551 mapping = pci_iomap(pdev, bar, maxlen); in pcim_iomap()
556 if (pcim_add_mapping_to_legacy_table(pdev, mapping, bar) != 0) in pcim_iomap()
597 * pcim_iomap_region - Request and iomap a PCI BAR
599 * @bar: Index of a BAR to map
607 void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar, in pcim_iomap_region() argument
613 if (!pci_bar_index_is_valid(bar)) in pcim_iomap_region()
621 res->bar = bar; in pcim_iomap_region()
623 ret = pci_request_region(pdev, bar, name); in pcim_iomap_region()
627 res->baseaddr = pci_iomap(pdev, bar, 0); in pcim_iomap_region()
637 pci_release_region(pdev, bar); in pcim_iomap_region()
646 * pcim_iounmap_region - Unmap and release a PCI BAR
648 * @bar: Index of BAR to unmap and release
650 * Unmap a BAR and release its region manually. Only pass BARs that were
653 void pcim_iounmap_region(struct pci_dev *pdev, int bar) in pcim_iounmap_region() argument
659 res_searched.bar = bar; in pcim_iounmap_region()
682 int bar; in pcim_iomap_regions() local
685 for (bar = 0; bar < DEVICE_COUNT_RESOURCE; bar++) { in pcim_iomap_regions()
686 if (!mask_contains_bar(mask, bar)) in pcim_iomap_regions()
689 mapping = pcim_iomap_region(pdev, bar, name); in pcim_iomap_regions()
694 ret = pcim_add_mapping_to_legacy_table(pdev, mapping, bar); in pcim_iomap_regions()
702 while (--bar >= 0) { in pcim_iomap_regions()
703 pcim_iounmap_region(pdev, bar); in pcim_iomap_regions()
704 pcim_remove_bar_from_legacy_table(pdev, bar); in pcim_iomap_regions()
712 * pcim_request_region - Request a PCI BAR
714 * @bar: Index of BAR to request
719 * Request region specified by @bar.
724 int pcim_request_region(struct pci_dev *pdev, int bar, const char *name) in pcim_request_region() argument
729 if (!pci_bar_index_is_valid(bar)) in pcim_request_region()
736 res->bar = bar; in pcim_request_region()
738 ret = pci_request_region(pdev, bar, name); in pcim_request_region()
750 * pcim_release_region - Release a PCI BAR
752 * @bar: Index of BAR to release
757 static void pcim_release_region(struct pci_dev *pdev, int bar) in pcim_release_region() argument
763 res_searched.bar = bar; in pcim_release_region()
782 int bar; in pcim_release_all_regions() local
784 for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) in pcim_release_all_regions()
785 pcim_release_region(pdev, bar); in pcim_release_all_regions()
802 int bar; in pcim_request_all_regions() local
804 for (bar = 0; bar < PCI_STD_NUM_BARS; bar++) { in pcim_request_all_regions()
805 ret = pcim_request_region(pdev, bar, name); in pcim_request_all_regions()
820 * pcim_iomap_range - Create a ranged __iomap mapping within a PCI BAR
822 * @bar: Index of the BAR
823 * @offset: Offset from the begin of the BAR
828 * Creates a new IO-Mapping within the specified @bar, ranging from @offset to
834 void __iomem *pcim_iomap_range(struct pci_dev *pdev, int bar, in pcim_iomap_range() argument
840 if (!pci_bar_index_is_valid(bar)) in pcim_iomap_range()
847 mapping = pci_iomap_range(pdev, bar, offset, len); in pcim_iomap_range()