1 | /* SPDX-License-Identifier: GPL-2.0 */ |
---|---|
2 | /* |
3 | * Copyright IBM Corp. 2020 |
4 | * |
5 | * Author(s): |
6 | * Pierre Morel <pmorel@linux.ibm.com> |
7 | * |
8 | */ |
9 | |
10 | int zpci_bus_device_register(struct zpci_dev *zdev, struct pci_ops *ops); |
11 | void zpci_bus_device_unregister(struct zpci_dev *zdev); |
12 | |
13 | int zpci_bus_scan_bus(struct zpci_bus *zbus); |
14 | void zpci_bus_scan_busses(void); |
15 | |
16 | int zpci_bus_scan_device(struct zpci_dev *zdev); |
17 | void zpci_bus_remove_device(struct zpci_dev *zdev, bool set_error); |
18 | |
19 | void zpci_release_device(struct kref *kref); |
20 | static inline void zpci_zdev_put(struct zpci_dev *zdev) |
21 | { |
22 | if (zdev) |
23 | kref_put(kref: &zdev->kref, release: zpci_release_device); |
24 | } |
25 | |
26 | static inline void zpci_zdev_get(struct zpci_dev *zdev) |
27 | { |
28 | kref_get(kref: &zdev->kref); |
29 | } |
30 | |
31 | int zpci_alloc_domain(int domain); |
32 | void zpci_free_domain(int domain); |
33 | int zpci_setup_bus_resources(struct zpci_dev *zdev); |
34 | |
35 | static inline struct zpci_dev *zdev_from_bus(struct pci_bus *bus, |
36 | unsigned int devfn) |
37 | { |
38 | struct zpci_bus *zbus = bus->sysdata; |
39 | |
40 | return (devfn >= ZPCI_FUNCTIONS_PER_BUS) ? NULL : zbus->function[devfn]; |
41 | } |
42 | |
43 |