blob: 616b9c174ced3729144eba159f275bb3b70c377e [file] [log] [blame]
Simon Glass5e23b8b2015-11-29 13:17:49 -07001/*
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 */
23void 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 */
35void 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 */
48int dm_pciauto_config_device(struct udevice *dev);
49
Simon Glassa6eb93b2016-01-18 20:19:14 -070050/**
51 * pci_get_bus() - Get a pointer to a bus, given its number
52 *
53 * This looks up a PCI bus based on its bus number. The bus is probed if
54 * necessary.
55 *
56 * @busnum: PCI bus number to look up
57 * @busp: Returns PCI bus on success
58 * @return 0 on success, or -ve error
59 */
60int pci_get_bus(int busnum, struct udevice **busp);
61
Simon Glass5e23b8b2015-11-29 13:17:49 -070062#endif