Lines Matching refs:pdev
111 static int __pcim_request_region_range(struct pci_dev *pdev, int bar, in __pcim_request_region_range() argument
116 resource_size_t start = pci_resource_start(pdev, bar); in __pcim_request_region_range()
117 resource_size_t len = pci_resource_len(pdev, bar); in __pcim_request_region_range()
118 unsigned long dev_flags = pci_resource_flags(pdev, bar); in __pcim_request_region_range()
145 static void __pcim_release_region_range(struct pci_dev *pdev, int bar, in __pcim_release_region_range() argument
149 resource_size_t start = pci_resource_start(pdev, bar); in __pcim_release_region_range()
150 resource_size_t len = pci_resource_len(pdev, bar); in __pcim_release_region_range()
151 unsigned long flags = pci_resource_flags(pdev, bar); in __pcim_release_region_range()
171 static int __pcim_request_region(struct pci_dev *pdev, int bar, in __pcim_request_region() argument
175 unsigned long len = pci_resource_len(pdev, bar); in __pcim_request_region()
177 return __pcim_request_region_range(pdev, bar, offset, len, name, flags); in __pcim_request_region()
180 static void __pcim_release_region(struct pci_dev *pdev, int bar) in __pcim_release_region() argument
183 unsigned long len = pci_resource_len(pdev, bar); in __pcim_release_region()
185 __pcim_release_region_range(pdev, bar, offset, len); in __pcim_release_region()
190 struct pci_dev *pdev = to_pci_dev(dev); in pcim_addr_resource_release() local
195 __pcim_release_region(pdev, res->bar); in pcim_addr_resource_release()
198 pci_iounmap(pdev, res->baseaddr); in pcim_addr_resource_release()
199 __pcim_release_region(pdev, res->bar); in pcim_addr_resource_release()
202 pci_iounmap(pdev, res->baseaddr); in pcim_addr_resource_release()
209 static struct pcim_addr_devres *pcim_addr_devres_alloc(struct pci_dev *pdev) in pcim_addr_devres_alloc() argument
214 GFP_KERNEL, dev_to_node(&pdev->dev)); in pcim_addr_devres_alloc()
380 struct pci_dev *pdev = pdev_raw; in __pcim_clear_mwi() local
382 pci_clear_mwi(pdev); in __pcim_clear_mwi()
393 int pcim_set_mwi(struct pci_dev *pdev) in pcim_set_mwi() argument
397 ret = devm_add_action(&pdev->dev, __pcim_clear_mwi, pdev); in pcim_set_mwi()
401 ret = pci_set_mwi(pdev); in pcim_set_mwi()
403 devm_remove_action(&pdev->dev, __pcim_clear_mwi, pdev); in pcim_set_mwi()
416 struct pci_dev *pdev = to_pci_dev(dev); in pcim_intx_restore() local
419 pci_intx(pdev, res->orig_intx); in pcim_intx_restore()
422 static void save_orig_intx(struct pci_dev *pdev, struct pcim_intx_devres *res) in save_orig_intx() argument
426 pci_read_config_word(pdev, PCI_COMMAND, &pci_command); in save_orig_intx()
440 int pcim_intx(struct pci_dev *pdev, int enable) in pcim_intx() argument
443 struct device *dev = &pdev->dev; in pcim_intx()
456 save_orig_intx(pdev, res); in pcim_intx()
460 pci_intx(pdev, enable); in pcim_intx()
468 struct pci_dev *pdev = pdev_raw; in pcim_disable_device() local
470 if (!pdev->pinned) in pcim_disable_device()
471 pci_disable_device(pdev); in pcim_disable_device()
473 pdev->is_managed = false; in pcim_disable_device()
485 int pcim_enable_device(struct pci_dev *pdev) in pcim_enable_device() argument
489 ret = devm_add_action(&pdev->dev, pcim_disable_device, pdev); in pcim_enable_device()
498 ret = pci_enable_device(pdev); in pcim_enable_device()
500 devm_remove_action(&pdev->dev, pcim_disable_device, pdev); in pcim_enable_device()
504 pdev->is_managed = true; in pcim_enable_device()
517 void pcim_pin_device(struct pci_dev *pdev) in pcim_pin_device() argument
519 pdev->pinned = true; in pcim_pin_device()
554 void __iomem * const *pcim_iomap_table(struct pci_dev *pdev) in pcim_iomap_table() argument
558 dr = devres_find(&pdev->dev, pcim_iomap_release, NULL, NULL); in pcim_iomap_table()
563 dev_to_node(&pdev->dev)); in pcim_iomap_table()
566 dr = devres_get(&pdev->dev, new_dr, NULL, NULL); in pcim_iomap_table()
575 static int pcim_add_mapping_to_legacy_table(struct pci_dev *pdev, in pcim_add_mapping_to_legacy_table() argument
583 legacy_iomap_table = (void __iomem **)pcim_iomap_table(pdev); in pcim_add_mapping_to_legacy_table()
599 static void pcim_remove_mapping_from_legacy_table(struct pci_dev *pdev, in pcim_remove_mapping_from_legacy_table() argument
605 legacy_iomap_table = (void __iomem **)pcim_iomap_table(pdev); in pcim_remove_mapping_from_legacy_table()
621 static void pcim_remove_bar_from_legacy_table(struct pci_dev *pdev, int bar) in pcim_remove_bar_from_legacy_table() argument
628 legacy_iomap_table = (void __iomem **)pcim_iomap_table(pdev); in pcim_remove_bar_from_legacy_table()
653 void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen) in pcim_iomap() argument
661 res = pcim_addr_devres_alloc(pdev); in pcim_iomap()
666 mapping = pci_iomap(pdev, bar, maxlen); in pcim_iomap()
671 if (pcim_add_mapping_to_legacy_table(pdev, mapping, bar) != 0) in pcim_iomap()
674 devres_add(&pdev->dev, res); in pcim_iomap()
678 pci_iounmap(pdev, mapping); in pcim_iomap()
693 void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr) in pcim_iounmap() argument
701 if (devres_release(&pdev->dev, pcim_addr_resource_release, in pcim_iounmap()
707 pcim_remove_mapping_from_legacy_table(pdev, addr); in pcim_iounmap()
722 void __iomem *pcim_iomap_region(struct pci_dev *pdev, int bar, in pcim_iomap_region() argument
731 res = pcim_addr_devres_alloc(pdev); in pcim_iomap_region()
738 ret = __pcim_request_region(pdev, bar, name, 0); in pcim_iomap_region()
742 res->baseaddr = pci_iomap(pdev, bar, 0); in pcim_iomap_region()
748 devres_add(&pdev->dev, res); in pcim_iomap_region()
752 __pcim_release_region(pdev, bar); in pcim_iomap_region()
768 static void pcim_iounmap_region(struct pci_dev *pdev, int bar) in pcim_iounmap_region() argument
776 devres_release(&pdev->dev, pcim_addr_resource_release, in pcim_iounmap_region()
793 int pcim_iomap_regions(struct pci_dev *pdev, int mask, const char *name) in pcim_iomap_regions() argument
803 mapping = pcim_iomap_region(pdev, bar, name); in pcim_iomap_regions()
808 ret = pcim_add_mapping_to_legacy_table(pdev, mapping, bar); in pcim_iomap_regions()
817 pcim_iounmap_region(pdev, bar); in pcim_iomap_regions()
818 pcim_remove_bar_from_legacy_table(pdev, bar); in pcim_iomap_regions()
825 static int _pcim_request_region(struct pci_dev *pdev, int bar, const char *name, in _pcim_request_region() argument
834 res = pcim_addr_devres_alloc(pdev); in _pcim_request_region()
840 ret = __pcim_request_region(pdev, bar, name, request_flags); in _pcim_request_region()
846 devres_add(&pdev->dev, res); in _pcim_request_region()
863 int pcim_request_region(struct pci_dev *pdev, int bar, const char *name) in pcim_request_region() argument
865 return _pcim_request_region(pdev, bar, name, 0); in pcim_request_region()
882 int pcim_request_region_exclusive(struct pci_dev *pdev, int bar, const char *name) in pcim_request_region_exclusive() argument
884 return _pcim_request_region(pdev, bar, name, IORESOURCE_EXCLUSIVE); in pcim_request_region_exclusive()
895 void pcim_release_region(struct pci_dev *pdev, int bar) in pcim_release_region() argument
903 devres_release(&pdev->dev, pcim_addr_resource_release, in pcim_release_region()
918 static void pcim_release_all_regions(struct pci_dev *pdev) in pcim_release_all_regions() argument
923 pcim_release_region(pdev, bar); in pcim_release_all_regions()
937 int pcim_request_all_regions(struct pci_dev *pdev, const char *name) in pcim_request_all_regions() argument
943 ret = pcim_request_region(pdev, bar, name); in pcim_request_all_regions()
951 pcim_release_all_regions(pdev); in pcim_request_all_regions()
975 int pcim_iomap_regions_request_all(struct pci_dev *pdev, int mask, in pcim_iomap_regions_request_all() argument
982 ret = pcim_request_all_regions(pdev, name); in pcim_iomap_regions_request_all()
989 if (!pcim_iomap(pdev, bar, 0)) in pcim_iomap_regions_request_all()
1002 legacy_iomap_table = (void __iomem **)pcim_iomap_table(pdev); in pcim_iomap_regions_request_all()
1005 pcim_iounmap(pdev, legacy_iomap_table[bar]); in pcim_iomap_regions_request_all()
1007 pcim_release_all_regions(pdev); in pcim_iomap_regions_request_all()
1020 void pcim_iounmap_regions(struct pci_dev *pdev, int mask) in pcim_iounmap_regions() argument
1028 pcim_iounmap_region(pdev, i); in pcim_iounmap_regions()
1029 pcim_remove_bar_from_legacy_table(pdev, i); in pcim_iounmap_regions()
1049 void __iomem *pcim_iomap_range(struct pci_dev *pdev, int bar, in pcim_iomap_range() argument
1058 res = pcim_addr_devres_alloc(pdev); in pcim_iomap_range()
1062 mapping = pci_iomap_range(pdev, bar, offset, len); in pcim_iomap_range()
1076 devres_add(&pdev->dev, res); in pcim_iomap_range()