15e23b8b4SSimon Glass /* 25e23b8b4SSimon Glass * Internal PCI functions, not exported outside drivers/pci 35e23b8b4SSimon Glass * 45e23b8b4SSimon Glass * Copyright (c) 2015 Google, Inc 55e23b8b4SSimon Glass * Written by Simon Glass <sjg@chromium.org> 65e23b8b4SSimon Glass * 75e23b8b4SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 85e23b8b4SSimon Glass */ 95e23b8b4SSimon Glass 105e23b8b4SSimon Glass #ifndef __pci_internal_h 115e23b8b4SSimon Glass #define __pci_internal_h 125e23b8b4SSimon Glass 135e23b8b4SSimon Glass /** 145e23b8b4SSimon Glass * dm_pciauto_prescan_setup_bridge() - Set up a bridge for scanning 155e23b8b4SSimon Glass * 165e23b8b4SSimon Glass * This gets a bridge ready so that its downstream devices can be scanned. 175e23b8b4SSimon Glass * It sets up the bus number and memory range registers. Once the scan is 185e23b8b4SSimon Glass * completed, dm_pciauto_postscan_setup_bridge() should be called. 195e23b8b4SSimon Glass * 205e23b8b4SSimon Glass * @dev: Bridge device to be scanned 215e23b8b4SSimon Glass * @sub_bus: Bus number of the 'other side' of the bridge 225e23b8b4SSimon Glass */ 235e23b8b4SSimon Glass void dm_pciauto_prescan_setup_bridge(struct udevice *dev, int sub_bus); 245e23b8b4SSimon Glass 255e23b8b4SSimon Glass /** 265e23b8b4SSimon Glass * dm_pciauto_postscan_setup_bridge() - Finish set up of a bridge after scanning 275e23b8b4SSimon Glass * 285e23b8b4SSimon Glass * This should be called after a bus scan is complete. It adjusts the memory 295e23b8b4SSimon Glass * ranges to fit with the devices actually found on the other side (downstream) 305e23b8b4SSimon Glass * of the bridge. 315e23b8b4SSimon Glass * 325e23b8b4SSimon Glass * @dev: Bridge device that was scanned 335e23b8b4SSimon Glass * @sub_bus: Bus number of the 'other side' of the bridge 345e23b8b4SSimon Glass */ 355e23b8b4SSimon Glass void dm_pciauto_postscan_setup_bridge(struct udevice *dev, int sub_bus); 365e23b8b4SSimon Glass 375e23b8b4SSimon Glass /** 385e23b8b4SSimon Glass * dm_pciauto_config_device() - Configure a PCI device ready for use 395e23b8b4SSimon Glass * 405e23b8b4SSimon Glass * If the device is a bridge, downstream devices will be probed. 415e23b8b4SSimon Glass * 425e23b8b4SSimon Glass * @dev: Device to configure 435e23b8b4SSimon Glass * @return the maximum PCI bus number found by this device. If there are no 445e23b8b4SSimon Glass * bridges, this just returns the device's bus number. If the device is a 455e23b8b4SSimon Glass * bridge then it will return a larger number, depending on the devices on 465e23b8b4SSimon Glass * that bridge. On error, returns a -ve error number. 475e23b8b4SSimon Glass */ 485e23b8b4SSimon Glass int dm_pciauto_config_device(struct udevice *dev); 495e23b8b4SSimon Glass 50*a6eb93b3SSimon Glass /** 51*a6eb93b3SSimon Glass * pci_get_bus() - Get a pointer to a bus, given its number 52*a6eb93b3SSimon Glass * 53*a6eb93b3SSimon Glass * This looks up a PCI bus based on its bus number. The bus is probed if 54*a6eb93b3SSimon Glass * necessary. 55*a6eb93b3SSimon Glass * 56*a6eb93b3SSimon Glass * @busnum: PCI bus number to look up 57*a6eb93b3SSimon Glass * @busp: Returns PCI bus on success 58*a6eb93b3SSimon Glass * @return 0 on success, or -ve error 59*a6eb93b3SSimon Glass */ 60*a6eb93b3SSimon Glass int pci_get_bus(int busnum, struct udevice **busp); 61*a6eb93b3SSimon Glass 625e23b8b4SSimon Glass #endif 63