PCI subsystem: Drop parameter max from scan_bus
Change-Id: Ib33d3363c8d42fa54ac07c11a7ab2bc7ee4ae8bf Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/8539 Tested-by: build bot (Jenkins) Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
757c8b485b
commit
de271a8f0a
|
@ -488,11 +488,9 @@ end_of_chain:
|
||||||
* @param bus TODO
|
* @param bus TODO
|
||||||
* @param min_devfn TODO
|
* @param min_devfn TODO
|
||||||
* @param max_devfn TODO
|
* @param max_devfn TODO
|
||||||
* @param max The highest bus number assigned up to now.
|
|
||||||
* @return The maximum bus number found, after scanning all subordinate busses.
|
|
||||||
*/
|
*/
|
||||||
static unsigned int hypertransport_scan_chain_x(struct bus *bus,
|
static void hypertransport_scan_chain_x(struct bus *bus,
|
||||||
unsigned int min_devfn, unsigned int max_devfn, unsigned int max)
|
unsigned int min_devfn, unsigned int max_devfn)
|
||||||
{
|
{
|
||||||
unsigned int ht_unitid_base[4];
|
unsigned int ht_unitid_base[4];
|
||||||
unsigned int offset_unitid = 1;
|
unsigned int offset_unitid = 1;
|
||||||
|
@ -501,8 +499,7 @@ static unsigned int hypertransport_scan_chain_x(struct bus *bus,
|
||||||
ht_unitid_base, offset_unitid);
|
ht_unitid_base, offset_unitid);
|
||||||
|
|
||||||
/* Now that nothing is overlapping it is safe to scan the children. */
|
/* Now that nothing is overlapping it is safe to scan the children. */
|
||||||
bus->subordinate = pci_scan_bus(bus, 0x00, ((next_unitid - 1) << 3) | 7, bus->secondary);
|
pci_scan_bus(bus, 0x00, ((next_unitid - 1) << 3) | 7);
|
||||||
return bus->subordinate;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int ht_scan_bridge(struct device *dev, unsigned int max)
|
unsigned int ht_scan_bridge(struct device *dev, unsigned int max)
|
||||||
|
|
|
@ -1074,17 +1074,12 @@ unsigned int pci_match_simple_dev(device_t dev, pci_devfn_t sdev)
|
||||||
* Determine the existence of devices and bridges on a PCI bus. If there are
|
* Determine the existence of devices and bridges on a PCI bus. If there are
|
||||||
* bridges on the bus, recursively scan the buses behind the bridges.
|
* bridges on the bus, recursively scan the buses behind the bridges.
|
||||||
*
|
*
|
||||||
* This function is the default scan_bus() method for the root device
|
|
||||||
* 'dev_root'.
|
|
||||||
*
|
|
||||||
* @param bus Pointer to the bus structure.
|
* @param bus Pointer to the bus structure.
|
||||||
* @param min_devfn Minimum devfn to look at in the scan, usually 0x00.
|
* @param min_devfn Minimum devfn to look at in the scan, usually 0x00.
|
||||||
* @param max_devfn Maximum devfn to look at in the scan, usually 0xff.
|
* @param max_devfn Maximum devfn to look at in the scan, usually 0xff.
|
||||||
* @param max Current bus number.
|
|
||||||
* @return The maximum bus number found, after scanning all subordinate busses.
|
|
||||||
*/
|
*/
|
||||||
unsigned int pci_scan_bus(struct bus *bus, unsigned min_devfn,
|
void pci_scan_bus(struct bus *bus, unsigned min_devfn,
|
||||||
unsigned max_devfn, unsigned int max)
|
unsigned max_devfn)
|
||||||
{
|
{
|
||||||
unsigned int devfn;
|
unsigned int devfn;
|
||||||
struct device *old_devices;
|
struct device *old_devices;
|
||||||
|
@ -1149,17 +1144,19 @@ unsigned int pci_scan_bus(struct bus *bus, unsigned min_devfn,
|
||||||
* For all children that implement scan_bus() (i.e. bridges)
|
* For all children that implement scan_bus() (i.e. bridges)
|
||||||
* scan the bus behind that child.
|
* scan the bus behind that child.
|
||||||
*/
|
*/
|
||||||
|
unsigned int max = bus->secondary;
|
||||||
|
|
||||||
for (child = bus->children; child; child = child->sibling)
|
for (child = bus->children; child; child = child->sibling)
|
||||||
max = scan_bus(child, max);
|
max = scan_bus(child, max);
|
||||||
|
|
||||||
|
bus->subordinate = max;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We've scanned the bus and so we know all about what's on the other
|
* We've scanned the bus and so we know all about what's on the other
|
||||||
* side of any bridges that may be on this bus plus any devices.
|
* side of any bridges that may be on this bus plus any devices.
|
||||||
* Return how far we've got finding sub-buses.
|
* Return how far we've got finding sub-buses.
|
||||||
*/
|
*/
|
||||||
printk(BIOS_DEBUG, "PCI: pci_scan_bus returning with max=%03x\n", max);
|
|
||||||
post_code(0x55);
|
post_code(0x55);
|
||||||
return max;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -1228,10 +1225,9 @@ static void pci_bridge_route(struct bus *link, scan_state state)
|
||||||
* @return The maximum bus number found, after scanning all subordinate buses.
|
* @return The maximum bus number found, after scanning all subordinate buses.
|
||||||
*/
|
*/
|
||||||
unsigned int do_pci_scan_bridge(struct device *dev, unsigned int max,
|
unsigned int do_pci_scan_bridge(struct device *dev, unsigned int max,
|
||||||
unsigned int (*do_scan_bus) (struct bus * bus,
|
void (*do_scan_bus) (struct bus * bus,
|
||||||
unsigned min_devfn,
|
unsigned min_devfn,
|
||||||
unsigned max_devfn,
|
unsigned max_devfn))
|
||||||
unsigned int max))
|
|
||||||
{
|
{
|
||||||
struct bus *bus;
|
struct bus *bus;
|
||||||
|
|
||||||
|
@ -1251,7 +1247,7 @@ unsigned int do_pci_scan_bridge(struct device *dev, unsigned int max,
|
||||||
|
|
||||||
pci_bridge_route(bus, PCI_ROUTE_SCAN);
|
pci_bridge_route(bus, PCI_ROUTE_SCAN);
|
||||||
|
|
||||||
bus->subordinate = do_scan_bus(bus, 0x00, 0xff, bus->secondary);
|
do_scan_bus(bus, 0x00, 0xff);
|
||||||
|
|
||||||
pci_bridge_route(bus, PCI_ROUTE_FINAL);
|
pci_bridge_route(bus, PCI_ROUTE_FINAL);
|
||||||
|
|
||||||
|
@ -1287,7 +1283,7 @@ unsigned int pci_scan_bridge(struct device *dev, unsigned int max)
|
||||||
unsigned int pci_domain_scan_bus(device_t dev, unsigned int unused)
|
unsigned int pci_domain_scan_bus(device_t dev, unsigned int unused)
|
||||||
{
|
{
|
||||||
struct bus *link = dev->link_list;
|
struct bus *link = dev->link_list;
|
||||||
link->subordinate = pci_scan_bus(link, PCI_DEVFN(0, 0), 0xff, link->secondary);
|
pci_scan_bus(link, PCI_DEVFN(0, 0), 0xff);
|
||||||
return unused;
|
return unused;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -416,12 +416,12 @@ static void pciexp_tune_dev(device_t dev)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int pciexp_scan_bus(struct bus *bus, unsigned int min_devfn,
|
void pciexp_scan_bus(struct bus *bus, unsigned int min_devfn,
|
||||||
unsigned int max_devfn, unsigned int max)
|
unsigned int max_devfn)
|
||||||
{
|
{
|
||||||
device_t child;
|
device_t child;
|
||||||
|
|
||||||
max = pci_scan_bus(bus, min_devfn, max_devfn, max);
|
pci_scan_bus(bus, min_devfn, max_devfn);
|
||||||
|
|
||||||
for (child = bus->children; child; child = child->sibling) {
|
for (child = bus->children; child; child = child->sibling) {
|
||||||
if ((child->path.pci.devfn < min_devfn) ||
|
if ((child->path.pci.devfn < min_devfn) ||
|
||||||
|
@ -430,7 +430,6 @@ unsigned int pciexp_scan_bus(struct bus *bus, unsigned int min_devfn,
|
||||||
}
|
}
|
||||||
pciexp_tune_dev(child);
|
pciexp_tune_dev(child);
|
||||||
}
|
}
|
||||||
return max;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int pciexp_scan_bridge(device_t dev, unsigned int max)
|
unsigned int pciexp_scan_bridge(device_t dev, unsigned int max)
|
||||||
|
|
|
@ -70,11 +70,14 @@ void pci_dev_enable_resources(device_t dev);
|
||||||
void pci_bus_enable_resources(device_t dev);
|
void pci_bus_enable_resources(device_t dev);
|
||||||
void pci_bus_reset(struct bus *bus);
|
void pci_bus_reset(struct bus *bus);
|
||||||
device_t pci_probe_dev(device_t dev, struct bus *bus, unsigned devfn);
|
device_t pci_probe_dev(device_t dev, struct bus *bus, unsigned devfn);
|
||||||
|
|
||||||
unsigned int do_pci_scan_bridge(device_t bus, unsigned int max,
|
unsigned int do_pci_scan_bridge(device_t bus, unsigned int max,
|
||||||
unsigned int (*do_scan_bus)(struct bus *bus,
|
void (*do_scan_bus)(struct bus *bus,
|
||||||
unsigned min_devfn, unsigned max_devfn, unsigned int max));
|
unsigned min_devfn, unsigned max_devfn));
|
||||||
unsigned int pci_scan_bridge(device_t bus, unsigned int max);
|
unsigned int pci_scan_bridge(device_t bus, unsigned int max);
|
||||||
unsigned int pci_scan_bus(struct bus *bus, unsigned min_devfn, unsigned max_devfn, unsigned int max);
|
|
||||||
|
void pci_scan_bus(struct bus *bus, unsigned min_devfn, unsigned max_devfn);
|
||||||
|
|
||||||
uint8_t pci_moving_config8(struct device *dev, unsigned reg);
|
uint8_t pci_moving_config8(struct device *dev, unsigned reg);
|
||||||
uint16_t pci_moving_config16(struct device *dev, unsigned reg);
|
uint16_t pci_moving_config16(struct device *dev, unsigned reg);
|
||||||
uint32_t pci_moving_config32(struct device *dev, unsigned reg);
|
uint32_t pci_moving_config32(struct device *dev, unsigned reg);
|
||||||
|
|
|
@ -9,8 +9,9 @@ enum aspm_type {
|
||||||
PCIE_ASPM_BOTH = 3,
|
PCIE_ASPM_BOTH = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
unsigned int pciexp_scan_bus(struct bus *bus, unsigned int min_devfn,
|
void pciexp_scan_bus(struct bus *bus, unsigned int min_devfn,
|
||||||
unsigned int max_devfn, unsigned int max);
|
unsigned int max_devfn);
|
||||||
|
|
||||||
unsigned int pciexp_scan_bridge(device_t dev, unsigned int max);
|
unsigned int pciexp_scan_bridge(device_t dev, unsigned int max);
|
||||||
|
|
||||||
extern struct device_operations default_pciexp_ops_bus;
|
extern struct device_operations default_pciexp_ops_bus;
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
#define DEVICE_PCIX_H
|
#define DEVICE_PCIX_H
|
||||||
/* (c) 2005 Linux Networx GPL see COPYING for details */
|
/* (c) 2005 Linux Networx GPL see COPYING for details */
|
||||||
|
|
||||||
unsigned int pcix_scan_bus(struct bus *bus, unsigned int min_devfn,
|
|
||||||
unsigned int max_devfn, unsigned int max);
|
|
||||||
unsigned int pcix_scan_bridge(device_t dev, unsigned int max);
|
unsigned int pcix_scan_bridge(device_t dev, unsigned int max);
|
||||||
const char *pcix_speed(u16 sstatus);
|
const char *pcix_speed(u16 sstatus);
|
||||||
|
|
||||||
|
|
|
@ -565,6 +565,7 @@ static unsigned amdfam10_scan_chains(device_t dev, unsigned unused)
|
||||||
|
|
||||||
nodeid = amdfam10_nodeid(dev);
|
nodeid = amdfam10_nodeid(dev);
|
||||||
if (nodeid == 0) {
|
if (nodeid == 0) {
|
||||||
|
ASSERT(dev->bus->secondary == 0);
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
if (link->link_num == sblink) { /* devicetree put IO Hub on link_lsit[3] */
|
if (link->link_num == sblink) { /* devicetree put IO Hub on link_lsit[3] */
|
||||||
io_hub = link->children;
|
io_hub = link->children;
|
||||||
|
@ -572,9 +573,10 @@ static unsigned amdfam10_scan_chains(device_t dev, unsigned unused)
|
||||||
die("I can't find the IO Hub, or IO Hub not enabled, please check the device tree.\n");
|
die("I can't find the IO Hub, or IO Hub not enabled, please check the device tree.\n");
|
||||||
}
|
}
|
||||||
/* Now that nothing is overlapping it is safe to scan the children. */
|
/* Now that nothing is overlapping it is safe to scan the children. */
|
||||||
max = pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7, 0);
|
pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
max = dev->bus->subordinate;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->bus->subordinate = max;
|
dev->bus->subordinate = max;
|
||||||
|
@ -917,7 +919,7 @@ static u32 amdfam10_domain_scan_bus(device_t dev, u32 unused)
|
||||||
|
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
link->secondary = dev->bus->subordinate;
|
link->secondary = dev->bus->subordinate;
|
||||||
link->subordinate = pci_scan_bus(link, PCI_DEVFN(CONFIG_CDB, 0), 0xff, link->secondary);
|
pci_scan_bus(link, PCI_DEVFN(CONFIG_CDB, 0), 0xff);
|
||||||
dev->bus->subordinate = link->subordinate;
|
dev->bus->subordinate = link->subordinate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -469,6 +469,7 @@ static unsigned scan_chains(device_t dev, unsigned unused)
|
||||||
|
|
||||||
nodeid = amdfam15_nodeid(dev);
|
nodeid = amdfam15_nodeid(dev);
|
||||||
if (nodeid == 0) {
|
if (nodeid == 0) {
|
||||||
|
ASSERT(dev->bus->secondary == 0);
|
||||||
for (link = dev->link_list; link; link = link->next) {
|
for (link = dev->link_list; link; link = link->next) {
|
||||||
//if (link->link_num == sblink) { /* devicetree put IO Hub on link_lsit[sblink] */
|
//if (link->link_num == sblink) { /* devicetree put IO Hub on link_lsit[sblink] */
|
||||||
if (link->link_num == 0) { /* devicetree put IO Hub on link_lsit[0] */
|
if (link->link_num == 0) { /* devicetree put IO Hub on link_lsit[0] */
|
||||||
|
@ -477,9 +478,10 @@ static unsigned scan_chains(device_t dev, unsigned unused)
|
||||||
die("I can't find the IO Hub, or IO Hub not enabled, please check the device tree.\n");
|
die("I can't find the IO Hub, or IO Hub not enabled, please check the device tree.\n");
|
||||||
}
|
}
|
||||||
/* Now that nothing is overlapping it is safe to scan the children. */
|
/* Now that nothing is overlapping it is safe to scan the children. */
|
||||||
max = pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7, 0);
|
pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
max = dev->bus->subordinate;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->bus->subordinate = max;
|
dev->bus->subordinate = max;
|
||||||
|
@ -954,7 +956,7 @@ static void domain_set_resources(device_t dev)
|
||||||
static unsigned int f15_pci_domain_scan_bus(device_t dev, unsigned int unused)
|
static unsigned int f15_pci_domain_scan_bus(device_t dev, unsigned int unused)
|
||||||
{
|
{
|
||||||
struct bus *link = dev->link_list;
|
struct bus *link = dev->link_list;
|
||||||
link->subordinate = pci_scan_bus(link, PCI_DEVFN(0x18, 0), 0xff, link->secondary);
|
pci_scan_bus(link, PCI_DEVFN(0x18, 0), 0xff);
|
||||||
return unused;
|
return unused;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -263,7 +263,7 @@ static u32 amdfam10_scan_chain(device_t dev, u32 nodeid, struct bus *link, bool
|
||||||
next_unitid = hypertransport_scan_chain(link, 0, max_devfn, ht_unitid_base, offset_unit_id(is_sblink));
|
next_unitid = hypertransport_scan_chain(link, 0, max_devfn, ht_unitid_base, offset_unit_id(is_sblink));
|
||||||
|
|
||||||
/* Now that nothing is overlapping it is safe to scan the children. */
|
/* Now that nothing is overlapping it is safe to scan the children. */
|
||||||
link->subordinate = pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7, link->secondary);
|
pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7);
|
||||||
|
|
||||||
/* We know the number of busses behind this bridge. Set the
|
/* We know the number of busses behind this bridge. Set the
|
||||||
* subordinate bus number to it's real value
|
* subordinate bus number to it's real value
|
||||||
|
@ -924,7 +924,7 @@ static u32 amdfam10_domain_scan_bus(device_t dev, u32 unused)
|
||||||
|
|
||||||
for(link = dev->link_list; link; link = link->next) {
|
for(link = dev->link_list; link; link = link->next) {
|
||||||
link->secondary = dev->bus->subordinate;
|
link->secondary = dev->bus->subordinate;
|
||||||
link->subordinate = pci_scan_bus(link, PCI_DEVFN(CONFIG_CDB, 0), 0xff, link->secondary);
|
pci_scan_bus(link, PCI_DEVFN(CONFIG_CDB, 0), 0xff);
|
||||||
dev->bus->subordinate = link->subordinate;
|
dev->bus->subordinate = link->subordinate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -213,7 +213,7 @@ static u32 amdk8_scan_chain(device_t dev, u32 nodeid, struct bus *link, bool is_
|
||||||
next_unitid = hypertransport_scan_chain(link, 0, max_devfn, ht_unitid_base, offset_unit_id(is_sblink));
|
next_unitid = hypertransport_scan_chain(link, 0, max_devfn, ht_unitid_base, offset_unit_id(is_sblink));
|
||||||
|
|
||||||
/* Now that nothing is overlapping it is safe to scan the children. */
|
/* Now that nothing is overlapping it is safe to scan the children. */
|
||||||
link->subordinate = pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7, link->secondary);
|
pci_scan_bus(link, 0x00, ((next_unitid - 1) << 3) | 7);
|
||||||
|
|
||||||
/* We know the number of busses behind this bridge. Set the
|
/* We know the number of busses behind this bridge. Set the
|
||||||
* subordinate bus number to it's real value
|
* subordinate bus number to it's real value
|
||||||
|
@ -1107,7 +1107,7 @@ static u32 amdk8_domain_scan_bus(device_t dev, u32 unused)
|
||||||
}
|
}
|
||||||
|
|
||||||
link->secondary = dev->bus->subordinate;
|
link->secondary = dev->bus->subordinate;
|
||||||
link->subordinate = pci_scan_bus(link, PCI_DEVFN(0x18, 0), 0xff, link->secondary);
|
pci_scan_bus(link, PCI_DEVFN(0x18, 0), 0xff);
|
||||||
dev->bus->subordinate = link->subordinate;
|
dev->bus->subordinate = link->subordinate;
|
||||||
|
|
||||||
/* Tune the hypertransport transaction for best performance.
|
/* Tune the hypertransport transaction for best performance.
|
||||||
|
|
|
@ -192,16 +192,15 @@ static void amd8131_pcix_tune_dev(device_t dev, void *ptr)
|
||||||
pci_write_config16(dev, cap + PCI_X_CMD, cmd);
|
pci_write_config16(dev, cap + PCI_X_CMD, cmd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
static unsigned int amd8131_scan_bus(struct bus *bus,
|
static void amd8131_scan_bus(struct bus *bus,
|
||||||
unsigned min_devfn, unsigned max_devfn, unsigned int max)
|
unsigned min_devfn, unsigned max_devfn)
|
||||||
{
|
{
|
||||||
struct amd8131_bus_info info;
|
struct amd8131_bus_info info;
|
||||||
struct bus *pbus;
|
struct bus *pbus;
|
||||||
unsigned pos;
|
unsigned pos;
|
||||||
|
|
||||||
|
|
||||||
/* Find the children on the bus */
|
/* Find the children on the bus */
|
||||||
max = pci_scan_bus(bus, min_devfn, max_devfn, max);
|
pci_scan_bus(bus, min_devfn, max_devfn);
|
||||||
|
|
||||||
/* Find the revision of the 8131 */
|
/* Find the revision of the 8131 */
|
||||||
info.rev = pci_read_config8(bus->dev, PCI_CLASS_REVISION);
|
info.rev = pci_read_config8(bus->dev, PCI_CLASS_REVISION);
|
||||||
|
@ -243,13 +242,13 @@ static unsigned int amd8131_scan_bus(struct bus *bus,
|
||||||
pcix_misc &= ~(0x1f << 16);
|
pcix_misc &= ~(0x1f << 16);
|
||||||
pci_write_config32(bus->dev, 0x40, pcix_misc);
|
pci_write_config32(bus->dev, 0x40, pcix_misc);
|
||||||
|
|
||||||
return max;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we are in conventional PCI mode nothing more is necessary.
|
/* If we are in conventional PCI mode nothing more is necessary.
|
||||||
*/
|
*/
|
||||||
if (PCI_X_SSTATUS_MFREQ(info.sstatus) == PCI_X_SSTATUS_CONVENTIONAL_PCI) {
|
if (PCI_X_SSTATUS_MFREQ(info.sstatus) == PCI_X_SSTATUS_CONVENTIONAL_PCI) {
|
||||||
return max;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -264,7 +263,6 @@ static unsigned int amd8131_scan_bus(struct bus *bus,
|
||||||
bus_path(pbus));
|
bus_path(pbus));
|
||||||
pbus->disable_relaxed_ordering = 1;
|
pbus->disable_relaxed_ordering = 1;
|
||||||
}
|
}
|
||||||
return max;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int amd8131_scan_bridge(device_t dev, unsigned int max)
|
static unsigned int amd8131_scan_bridge(device_t dev, unsigned int max)
|
||||||
|
|
|
@ -138,15 +138,14 @@ static void amd8132_pcix_tune_dev(device_t dev, void *ptr)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
static unsigned int amd8132_scan_bus(struct bus *bus,
|
static void amd8132_scan_bus(struct bus *bus,
|
||||||
unsigned min_devfn, unsigned max_devfn, unsigned int max)
|
unsigned min_devfn, unsigned max_devfn)
|
||||||
{
|
{
|
||||||
struct amd8132_bus_info info;
|
struct amd8132_bus_info info;
|
||||||
unsigned pos;
|
unsigned pos;
|
||||||
|
|
||||||
|
|
||||||
/* Find the children on the bus */
|
/* Find the children on the bus */
|
||||||
max = pci_scan_bus(bus, min_devfn, max_devfn, max);
|
pci_scan_bus(bus, min_devfn, max_devfn);
|
||||||
|
|
||||||
/* Find the revision of the 8132 */
|
/* Find the revision of the 8132 */
|
||||||
info.rev = pci_read_config8(bus->dev, PCI_CLASS_REVISION);
|
info.rev = pci_read_config8(bus->dev, PCI_CLASS_REVISION);
|
||||||
|
@ -181,20 +180,18 @@ static unsigned int amd8132_scan_bus(struct bus *bus,
|
||||||
pcix_misc &= ~(0x1f << 16);
|
pcix_misc &= ~(0x1f << 16);
|
||||||
pci_write_config32(bus->dev, 0x40, pcix_misc);
|
pci_write_config32(bus->dev, 0x40, pcix_misc);
|
||||||
|
|
||||||
return max;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* If we are in conventional PCI mode nothing more is necessary.
|
/* If we are in conventional PCI mode nothing more is necessary.
|
||||||
*/
|
*/
|
||||||
if (PCI_X_SSTATUS_MFREQ(info.sstatus) == PCI_X_SSTATUS_CONVENTIONAL_PCI) {
|
if (PCI_X_SSTATUS_MFREQ(info.sstatus) == PCI_X_SSTATUS_CONVENTIONAL_PCI) {
|
||||||
return max;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tune the devices on the bus */
|
/* Tune the devices on the bus */
|
||||||
amd8132_walk_children(bus, amd8132_pcix_tune_dev, &info);
|
amd8132_walk_children(bus, amd8132_pcix_tune_dev, &info);
|
||||||
|
|
||||||
return max;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int amd8132_scan_bridge(device_t dev, unsigned int max)
|
static unsigned int amd8132_scan_bridge(device_t dev, unsigned int max)
|
||||||
|
|
Loading…
Reference in New Issue