xref: /openbmc/u-boot/drivers/pci/pci_internal.h (revision 4897d950)
1 /*
2  * Internal PCI functions, not exported outside drivers/pci
3  *
4  * Copyright (c) 2015 Google, Inc
5  * Written by Simon Glass <sjg@chromium.org>
6  *
7  * SPDX-License-Identifier:	GPL-2.0+
8  */
9 
10 #ifndef __pci_internal_h
11 #define __pci_internal_h
12 
13 /**
14  * dm_pciauto_prescan_setup_bridge() - Set up a bridge for scanning
15  *
16  * This gets a bridge ready so that its downstream devices can be scanned.
17  * It sets up the bus number and memory range registers. Once the scan is
18  * completed, dm_pciauto_postscan_setup_bridge() should be called.
19  *
20  * @dev:	Bridge device to be scanned
21  * @sub_bus:	Bus number of the 'other side' of the bridge
22  */
23 void dm_pciauto_prescan_setup_bridge(struct udevice *dev, int sub_bus);
24 
25 /**
26  * dm_pciauto_postscan_setup_bridge() - Finish set up of a bridge after scanning
27  *
28  * This should be called after a bus scan is complete. It adjusts the memory
29  * ranges to fit with the devices actually found on the other side (downstream)
30  * of the bridge.
31  *
32  * @dev:	Bridge device that was scanned
33  * @sub_bus:	Bus number of the 'other side' of the bridge
34  */
35 void dm_pciauto_postscan_setup_bridge(struct udevice *dev, int sub_bus);
36 
37 /**
38  * dm_pciauto_config_device() - Configure a PCI device ready for use
39  *
40  * If the device is a bridge, downstream devices will be probed.
41  *
42  * @dev:	Device to configure
43  * @return the maximum PCI bus number found by this device. If there are no
44  * bridges, this just returns the device's bus number. If the device is a
45  * bridge then it will return a larger number, depending on the devices on
46  * that bridge. On error, returns a -ve error number.
47  */
48 int dm_pciauto_config_device(struct udevice *dev);
49 
50 #endif
51