backlight: adp5520: rename common defines and typos
[linux-block.git] / drivers / pci / probe.c
CommitLineData
1da177e4
LT
1/*
2 * probe.c - PCI detection and setup code
3 */
4
5#include <linux/kernel.h>
6#include <linux/delay.h>
7#include <linux/init.h>
8#include <linux/pci.h>
9#include <linux/slab.h>
10#include <linux/module.h>
11#include <linux/cpumask.h>
7d715a6c 12#include <linux/pci-aspm.h>
05843961 13#include <acpi/acpi_hest.h>
bc56b9e0 14#include "pci.h"
1da177e4
LT
15
16#define CARDBUS_LATENCY_TIMER 176 /* secondary latency timer */
17#define CARDBUS_RESERVE_BUSNR 3
1da177e4
LT
18
19/* Ugh. Need to stop exporting this to modules. */
20LIST_HEAD(pci_root_buses);
21EXPORT_SYMBOL(pci_root_buses);
22
70308923
GKH
23
24static int find_anything(struct device *dev, void *data)
25{
26 return 1;
27}
1da177e4 28
ed4aaadb
ZY
29/*
30 * Some device drivers need know if pci is initiated.
31 * Basically, we think pci is not initiated when there
70308923 32 * is no device to be found on the pci_bus_type.
ed4aaadb
ZY
33 */
34int no_pci_devices(void)
35{
70308923
GKH
36 struct device *dev;
37 int no_devices;
ed4aaadb 38
70308923
GKH
39 dev = bus_find_device(&pci_bus_type, NULL, NULL, find_anything);
40 no_devices = (dev == NULL);
41 put_device(dev);
42 return no_devices;
43}
ed4aaadb
ZY
44EXPORT_SYMBOL(no_pci_devices);
45
1da177e4
LT
46/*
47 * PCI Bus Class Devices
48 */
fd7d1ced 49static ssize_t pci_bus_show_cpuaffinity(struct device *dev,
39106dcf 50 int type,
fd7d1ced 51 struct device_attribute *attr,
4327edf6 52 char *buf)
1da177e4 53{
1da177e4 54 int ret;
588235bb 55 const struct cpumask *cpumask;
1da177e4 56
588235bb 57 cpumask = cpumask_of_pcibus(to_pci_bus(dev));
39106dcf 58 ret = type?
588235bb
MT
59 cpulist_scnprintf(buf, PAGE_SIZE-2, cpumask) :
60 cpumask_scnprintf(buf, PAGE_SIZE-2, cpumask);
39106dcf
MT
61 buf[ret++] = '\n';
62 buf[ret] = '\0';
1da177e4
LT
63 return ret;
64}
39106dcf
MT
65
66static ssize_t inline pci_bus_show_cpumaskaffinity(struct device *dev,
67 struct device_attribute *attr,
68 char *buf)
69{
70 return pci_bus_show_cpuaffinity(dev, 0, attr, buf);
71}
72
73static ssize_t inline pci_bus_show_cpulistaffinity(struct device *dev,
74 struct device_attribute *attr,
75 char *buf)
76{
77 return pci_bus_show_cpuaffinity(dev, 1, attr, buf);
78}
79
80DEVICE_ATTR(cpuaffinity, S_IRUGO, pci_bus_show_cpumaskaffinity, NULL);
81DEVICE_ATTR(cpulistaffinity, S_IRUGO, pci_bus_show_cpulistaffinity, NULL);
1da177e4
LT
82
83/*
84 * PCI Bus Class
85 */
fd7d1ced 86static void release_pcibus_dev(struct device *dev)
1da177e4 87{
fd7d1ced 88 struct pci_bus *pci_bus = to_pci_bus(dev);
1da177e4
LT
89
90 if (pci_bus->bridge)
91 put_device(pci_bus->bridge);
92 kfree(pci_bus);
93}
94
95static struct class pcibus_class = {
96 .name = "pci_bus",
fd7d1ced 97 .dev_release = &release_pcibus_dev,
1da177e4
LT
98};
99
100static int __init pcibus_class_init(void)
101{
102 return class_register(&pcibus_class);
103}
104postcore_initcall(pcibus_class_init);
105
106/*
107 * Translate the low bits of the PCI base
108 * to the resource type
109 */
110static inline unsigned int pci_calc_resource_flags(unsigned int flags)
111{
112 if (flags & PCI_BASE_ADDRESS_SPACE_IO)
113 return IORESOURCE_IO;
114
115 if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH)
116 return IORESOURCE_MEM | IORESOURCE_PREFETCH;
117
118 return IORESOURCE_MEM;
119}
120
6ac665c6 121static u64 pci_size(u64 base, u64 maxbase, u64 mask)
1da177e4 122{
6ac665c6 123 u64 size = mask & maxbase; /* Find the significant bits */
1da177e4
LT
124 if (!size)
125 return 0;
126
127 /* Get the lowest of them to find the decode size, and
128 from that the extent. */
129 size = (size & ~(size-1)) - 1;
130
131 /* base == maxbase can be valid only if the BAR has
132 already been programmed with all 1s. */
133 if (base == maxbase && ((base | size) & mask) != mask)
134 return 0;
135
136 return size;
137}
138
6ac665c6
MW
139static inline enum pci_bar_type decode_bar(struct resource *res, u32 bar)
140{
141 if ((bar & PCI_BASE_ADDRESS_SPACE) == PCI_BASE_ADDRESS_SPACE_IO) {
142 res->flags = bar & ~PCI_BASE_ADDRESS_IO_MASK;
143 return pci_bar_io;
144 }
07eddf3d 145
6ac665c6 146 res->flags = bar & ~PCI_BASE_ADDRESS_MEM_MASK;
07eddf3d 147
e354597c 148 if (res->flags & PCI_BASE_ADDRESS_MEM_TYPE_64)
6ac665c6
MW
149 return pci_bar_mem64;
150 return pci_bar_mem32;
07eddf3d
YL
151}
152
0b400c7e
YZ
153/**
154 * pci_read_base - read a PCI BAR
155 * @dev: the PCI device
156 * @type: type of the BAR
157 * @res: resource buffer to be filled in
158 * @pos: BAR position in the config space
159 *
160 * Returns 1 if the BAR is 64-bit, or 0 if 32-bit.
6ac665c6 161 */
0b400c7e 162int __pci_read_base(struct pci_dev *dev, enum pci_bar_type type,
6ac665c6 163 struct resource *res, unsigned int pos)
07eddf3d 164{
6ac665c6
MW
165 u32 l, sz, mask;
166
1ed67439 167 mask = type ? PCI_ROM_ADDRESS_MASK : ~0;
6ac665c6
MW
168
169 res->name = pci_name(dev);
170
171 pci_read_config_dword(dev, pos, &l);
1ed67439 172 pci_write_config_dword(dev, pos, l | mask);
6ac665c6
MW
173 pci_read_config_dword(dev, pos, &sz);
174 pci_write_config_dword(dev, pos, l);
175
176 /*
177 * All bits set in sz means the device isn't working properly.
178 * If the BAR isn't implemented, all bits must be 0. If it's a
179 * memory BAR or a ROM, bit 0 must be clear; if it's an io BAR, bit
180 * 1 must be clear.
181 */
182 if (!sz || sz == 0xffffffff)
183 goto fail;
184
185 /*
186 * I don't know how l can have all bits set. Copied from old code.
187 * Maybe it fixes a bug on some ancient platform.
188 */
189 if (l == 0xffffffff)
190 l = 0;
191
192 if (type == pci_bar_unknown) {
193 type = decode_bar(res, l);
194 res->flags |= pci_calc_resource_flags(l) | IORESOURCE_SIZEALIGN;
195 if (type == pci_bar_io) {
196 l &= PCI_BASE_ADDRESS_IO_MASK;
1f82de10 197 mask = PCI_BASE_ADDRESS_IO_MASK & IO_SPACE_LIMIT;
6ac665c6
MW
198 } else {
199 l &= PCI_BASE_ADDRESS_MEM_MASK;
200 mask = (u32)PCI_BASE_ADDRESS_MEM_MASK;
201 }
202 } else {
203 res->flags |= (l & IORESOURCE_ROM_ENABLE);
204 l &= PCI_ROM_ADDRESS_MASK;
205 mask = (u32)PCI_ROM_ADDRESS_MASK;
206 }
207
208 if (type == pci_bar_mem64) {
209 u64 l64 = l;
210 u64 sz64 = sz;
211 u64 mask64 = mask | (u64)~0 << 32;
212
213 pci_read_config_dword(dev, pos + 4, &l);
214 pci_write_config_dword(dev, pos + 4, ~0);
215 pci_read_config_dword(dev, pos + 4, &sz);
216 pci_write_config_dword(dev, pos + 4, l);
217
218 l64 |= ((u64)l << 32);
219 sz64 |= ((u64)sz << 32);
220
221 sz64 = pci_size(l64, sz64, mask64);
222
223 if (!sz64)
224 goto fail;
225
cc5499c3 226 if ((sizeof(resource_size_t) < 8) && (sz64 > 0x100000000ULL)) {
865df576
BH
227 dev_err(&dev->dev, "reg %x: can't handle 64-bit BAR\n",
228 pos);
6ac665c6 229 goto fail;
c7dabef8
BH
230 }
231
232 res->flags |= IORESOURCE_MEM_64;
233 if ((sizeof(resource_size_t) < 8) && l) {
6ac665c6
MW
234 /* Address above 32-bit boundary; disable the BAR */
235 pci_write_config_dword(dev, pos, 0);
236 pci_write_config_dword(dev, pos + 4, 0);
237 res->start = 0;
238 res->end = sz64;
239 } else {
240 res->start = l64;
241 res->end = l64 + sz64;
c7dabef8 242 dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n",
a369c791 243 pos, res);
6ac665c6
MW
244 }
245 } else {
246 sz = pci_size(l, sz, mask);
247
248 if (!sz)
249 goto fail;
250
251 res->start = l;
252 res->end = l + sz;
f393d9b1 253
c7dabef8 254 dev_printk(KERN_DEBUG, &dev->dev, "reg %x: %pR\n", pos, res);
6ac665c6
MW
255 }
256
257 out:
258 return (type == pci_bar_mem64) ? 1 : 0;
259 fail:
260 res->flags = 0;
261 goto out;
07eddf3d
YL
262}
263
1da177e4
LT
264static void pci_read_bases(struct pci_dev *dev, unsigned int howmany, int rom)
265{
6ac665c6 266 unsigned int pos, reg;
07eddf3d 267
6ac665c6
MW
268 for (pos = 0; pos < howmany; pos++) {
269 struct resource *res = &dev->resource[pos];
1da177e4 270 reg = PCI_BASE_ADDRESS_0 + (pos << 2);
6ac665c6 271 pos += __pci_read_base(dev, pci_bar_unknown, res, reg);
1da177e4 272 }
6ac665c6 273
1da177e4 274 if (rom) {
6ac665c6 275 struct resource *res = &dev->resource[PCI_ROM_RESOURCE];
1da177e4 276 dev->rom_base_reg = rom;
6ac665c6
MW
277 res->flags = IORESOURCE_MEM | IORESOURCE_PREFETCH |
278 IORESOURCE_READONLY | IORESOURCE_CACHEABLE |
279 IORESOURCE_SIZEALIGN;
280 __pci_read_base(dev, pci_bar_mem32, res, rom);
1da177e4
LT
281 }
282}
283
0ab2b57f 284void __devinit pci_read_bridge_bases(struct pci_bus *child)
1da177e4
LT
285{
286 struct pci_dev *dev = child->self;
287 u8 io_base_lo, io_limit_lo;
288 u16 mem_base_lo, mem_limit_lo;
289 unsigned long base, limit;
290 struct resource *res;
291 int i;
292
9fc39256 293 if (pci_is_root_bus(child)) /* It's a host bus, nothing to read */
1da177e4
LT
294 return;
295
865df576
BH
296 dev_info(&dev->dev, "PCI bridge to [bus %02x-%02x]%s\n",
297 child->secondary, child->subordinate,
298 dev->transparent ? " (subtractive decode)": "");
299
1da177e4 300 if (dev->transparent) {
90b54929
IK
301 for(i = 3; i < PCI_BUS_NUM_RESOURCES; i++)
302 child->resource[i] = child->parent->resource[i - 3];
1da177e4
LT
303 }
304
1da177e4
LT
305 res = child->resource[0];
306 pci_read_config_byte(dev, PCI_IO_BASE, &io_base_lo);
307 pci_read_config_byte(dev, PCI_IO_LIMIT, &io_limit_lo);
308 base = (io_base_lo & PCI_IO_RANGE_MASK) << 8;
309 limit = (io_limit_lo & PCI_IO_RANGE_MASK) << 8;
310
311 if ((io_base_lo & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
312 u16 io_base_hi, io_limit_hi;
313 pci_read_config_word(dev, PCI_IO_BASE_UPPER16, &io_base_hi);
314 pci_read_config_word(dev, PCI_IO_LIMIT_UPPER16, &io_limit_hi);
315 base |= (io_base_hi << 16);
316 limit |= (io_limit_hi << 16);
317 }
318
319 if (base <= limit) {
320 res->flags = (io_base_lo & PCI_IO_RANGE_TYPE_MASK) | IORESOURCE_IO;
9d265124
DY
321 if (!res->start)
322 res->start = base;
323 if (!res->end)
324 res->end = limit + 0xfff;
c7dabef8 325 dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
1da177e4
LT
326 }
327
328 res = child->resource[1];
329 pci_read_config_word(dev, PCI_MEMORY_BASE, &mem_base_lo);
330 pci_read_config_word(dev, PCI_MEMORY_LIMIT, &mem_limit_lo);
331 base = (mem_base_lo & PCI_MEMORY_RANGE_MASK) << 16;
332 limit = (mem_limit_lo & PCI_MEMORY_RANGE_MASK) << 16;
333 if (base <= limit) {
334 res->flags = (mem_base_lo & PCI_MEMORY_RANGE_TYPE_MASK) | IORESOURCE_MEM;
335 res->start = base;
336 res->end = limit + 0xfffff;
c7dabef8 337 dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
1da177e4
LT
338 }
339
340 res = child->resource[2];
341 pci_read_config_word(dev, PCI_PREF_MEMORY_BASE, &mem_base_lo);
342 pci_read_config_word(dev, PCI_PREF_MEMORY_LIMIT, &mem_limit_lo);
343 base = (mem_base_lo & PCI_PREF_RANGE_MASK) << 16;
344 limit = (mem_limit_lo & PCI_PREF_RANGE_MASK) << 16;
345
346 if ((mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
347 u32 mem_base_hi, mem_limit_hi;
348 pci_read_config_dword(dev, PCI_PREF_BASE_UPPER32, &mem_base_hi);
349 pci_read_config_dword(dev, PCI_PREF_LIMIT_UPPER32, &mem_limit_hi);
350
351 /*
352 * Some bridges set the base > limit by default, and some
353 * (broken) BIOSes do not initialize them. If we find
354 * this, just assume they are not being used.
355 */
356 if (mem_base_hi <= mem_limit_hi) {
357#if BITS_PER_LONG == 64
358 base |= ((long) mem_base_hi) << 32;
359 limit |= ((long) mem_limit_hi) << 32;
360#else
361 if (mem_base_hi || mem_limit_hi) {
80ccba11
BH
362 dev_err(&dev->dev, "can't handle 64-bit "
363 "address space for bridge\n");
1da177e4
LT
364 return;
365 }
366#endif
367 }
368 }
369 if (base <= limit) {
1f82de10
YL
370 res->flags = (mem_base_lo & PCI_PREF_RANGE_TYPE_MASK) |
371 IORESOURCE_MEM | IORESOURCE_PREFETCH;
372 if (res->flags & PCI_PREF_RANGE_TYPE_64)
373 res->flags |= IORESOURCE_MEM_64;
1da177e4
LT
374 res->start = base;
375 res->end = limit + 0xfffff;
c7dabef8 376 dev_printk(KERN_DEBUG, &dev->dev, " bridge window %pR\n", res);
1da177e4
LT
377 }
378}
379
96bde06a 380static struct pci_bus * pci_alloc_bus(void)
1da177e4
LT
381{
382 struct pci_bus *b;
383
f5afe806 384 b = kzalloc(sizeof(*b), GFP_KERNEL);
1da177e4 385 if (b) {
1da177e4
LT
386 INIT_LIST_HEAD(&b->node);
387 INIT_LIST_HEAD(&b->children);
388 INIT_LIST_HEAD(&b->devices);
f46753c5 389 INIT_LIST_HEAD(&b->slots);
1da177e4
LT
390 }
391 return b;
392}
393
cbd4e055
AB
394static struct pci_bus *pci_alloc_child_bus(struct pci_bus *parent,
395 struct pci_dev *bridge, int busnr)
1da177e4
LT
396{
397 struct pci_bus *child;
398 int i;
399
400 /*
401 * Allocate a new bus, and inherit stuff from the parent..
402 */
403 child = pci_alloc_bus();
404 if (!child)
405 return NULL;
406
1da177e4
LT
407 child->parent = parent;
408 child->ops = parent->ops;
409 child->sysdata = parent->sysdata;
6e325a62 410 child->bus_flags = parent->bus_flags;
1da177e4 411
fd7d1ced
GKH
412 /* initialize some portions of the bus device, but don't register it
413 * now as the parent is not properly set up yet. This device will get
414 * registered later in pci_bus_add_devices()
415 */
416 child->dev.class = &pcibus_class;
1a927133 417 dev_set_name(&child->dev, "%04x:%02x", pci_domain_nr(child), busnr);
1da177e4
LT
418
419 /*
420 * Set up the primary, secondary and subordinate
421 * bus numbers.
422 */
423 child->number = child->secondary = busnr;
424 child->primary = parent->secondary;
425 child->subordinate = 0xff;
426
3789fa8a
YZ
427 if (!bridge)
428 return child;
429
430 child->self = bridge;
431 child->bridge = get_device(&bridge->dev);
432
1da177e4 433 /* Set up default resource pointers and names.. */
fde09c6d 434 for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) {
1da177e4
LT
435 child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i];
436 child->resource[i]->name = child->name;
437 }
438 bridge->subordinate = child;
439
440 return child;
441}
442
451124a7 443struct pci_bus *__ref pci_add_new_bus(struct pci_bus *parent, struct pci_dev *dev, int busnr)
1da177e4
LT
444{
445 struct pci_bus *child;
446
447 child = pci_alloc_child_bus(parent, dev, busnr);
e4ea9bb7 448 if (child) {
d71374da 449 down_write(&pci_bus_sem);
1da177e4 450 list_add_tail(&child->node, &parent->children);
d71374da 451 up_write(&pci_bus_sem);
e4ea9bb7 452 }
1da177e4
LT
453 return child;
454}
455
96bde06a 456static void pci_fixup_parent_subordinate_busnr(struct pci_bus *child, int max)
26f674ae
GKH
457{
458 struct pci_bus *parent = child->parent;
12f44f46
IK
459
460 /* Attempts to fix that up are really dangerous unless
461 we're going to re-assign all bus numbers. */
462 if (!pcibios_assign_all_busses())
463 return;
464
26f674ae
GKH
465 while (parent->parent && parent->subordinate < max) {
466 parent->subordinate = max;
467 pci_write_config_byte(parent->self, PCI_SUBORDINATE_BUS, max);
468 parent = parent->parent;
469 }
470}
471
1da177e4
LT
472/*
473 * If it's a bridge, configure it and scan the bus behind it.
474 * For CardBus bridges, we don't scan behind as the devices will
475 * be handled by the bridge driver itself.
476 *
477 * We need to process bridges in two passes -- first we scan those
478 * already configured by the BIOS and after we are done with all of
479 * them, we proceed to assigning numbers to the remaining buses in
480 * order to avoid overlaps between old and new bus numbers.
481 */
0ab2b57f 482int __devinit pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, int pass)
1da177e4
LT
483{
484 struct pci_bus *child;
485 int is_cardbus = (dev->hdr_type == PCI_HEADER_TYPE_CARDBUS);
49887941 486 u32 buses, i, j = 0;
1da177e4 487 u16 bctl;
a1c19894 488 int broken = 0;
1da177e4
LT
489
490 pci_read_config_dword(dev, PCI_PRIMARY_BUS, &buses);
491
80ccba11
BH
492 dev_dbg(&dev->dev, "scanning behind bridge, config %06x, pass %d\n",
493 buses & 0xffffff, pass);
1da177e4 494
a1c19894
BH
495 /* Check if setup is sensible at all */
496 if (!pass &&
497 ((buses & 0xff) != bus->number || ((buses >> 8) & 0xff) <= bus->number)) {
498 dev_dbg(&dev->dev, "bus configuration invalid, reconfiguring\n");
499 broken = 1;
500 }
501
1da177e4
LT
502 /* Disable MasterAbortMode during probing to avoid reporting
503 of bus errors (in some architectures) */
504 pci_read_config_word(dev, PCI_BRIDGE_CONTROL, &bctl);
505 pci_write_config_word(dev, PCI_BRIDGE_CONTROL,
506 bctl & ~PCI_BRIDGE_CTL_MASTER_ABORT);
507
a1c19894 508 if ((buses & 0xffff00) && !pcibios_assign_all_busses() && !is_cardbus && !broken) {
1da177e4
LT
509 unsigned int cmax, busnr;
510 /*
511 * Bus already configured by firmware, process it in the first
512 * pass and just note the configuration.
513 */
514 if (pass)
bbe8f9a3 515 goto out;
1da177e4
LT
516 busnr = (buses >> 8) & 0xFF;
517
518 /*
519 * If we already got to this bus through a different bridge,
74710ded
AC
520 * don't re-add it. This can happen with the i450NX chipset.
521 *
522 * However, we continue to descend down the hierarchy and
523 * scan remaining child buses.
1da177e4 524 */
74710ded
AC
525 child = pci_find_bus(pci_domain_nr(bus), busnr);
526 if (!child) {
527 child = pci_add_new_bus(bus, dev, busnr);
528 if (!child)
529 goto out;
530 child->primary = buses & 0xFF;
531 child->subordinate = (buses >> 16) & 0xFF;
532 child->bridge_ctl = bctl;
1da177e4
LT
533 }
534
1da177e4
LT
535 cmax = pci_scan_child_bus(child);
536 if (cmax > max)
537 max = cmax;
538 if (child->subordinate > max)
539 max = child->subordinate;
540 } else {
541 /*
542 * We need to assign a number to this bus which we always
543 * do in the second pass.
544 */
12f44f46 545 if (!pass) {
a1c19894 546 if (pcibios_assign_all_busses() || broken)
12f44f46
IK
547 /* Temporarily disable forwarding of the
548 configuration cycles on all bridges in
549 this bus segment to avoid possible
550 conflicts in the second pass between two
551 bridges programmed with overlapping
552 bus ranges. */
553 pci_write_config_dword(dev, PCI_PRIMARY_BUS,
554 buses & ~0xffffff);
bbe8f9a3 555 goto out;
12f44f46 556 }
1da177e4
LT
557
558 /* Clear errors */
559 pci_write_config_word(dev, PCI_STATUS, 0xffff);
560
cc57450f
RS
561 /* Prevent assigning a bus number that already exists.
562 * This can happen when a bridge is hot-plugged */
563 if (pci_find_bus(pci_domain_nr(bus), max+1))
bbe8f9a3 564 goto out;
6ef6f0e3 565 child = pci_add_new_bus(bus, dev, ++max);
1da177e4
LT
566 buses = (buses & 0xff000000)
567 | ((unsigned int)(child->primary) << 0)
568 | ((unsigned int)(child->secondary) << 8)
569 | ((unsigned int)(child->subordinate) << 16);
570
571 /*
572 * yenta.c forces a secondary latency timer of 176.
573 * Copy that behaviour here.
574 */
575 if (is_cardbus) {
576 buses &= ~0xff000000;
577 buses |= CARDBUS_LATENCY_TIMER << 24;
578 }
579
580 /*
581 * We need to blast all three values with a single write.
582 */
583 pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);
584
585 if (!is_cardbus) {
11949255 586 child->bridge_ctl = bctl;
26f674ae
GKH
587 /*
588 * Adjust subordinate busnr in parent buses.
589 * We do this before scanning for children because
590 * some devices may not be detected if the bios
591 * was lazy.
592 */
593 pci_fixup_parent_subordinate_busnr(child, max);
1da177e4
LT
594 /* Now we can scan all subordinate buses... */
595 max = pci_scan_child_bus(child);
e3ac86d8
KA
596 /*
597 * now fix it up again since we have found
598 * the real value of max.
599 */
600 pci_fixup_parent_subordinate_busnr(child, max);
1da177e4
LT
601 } else {
602 /*
603 * For CardBus bridges, we leave 4 bus numbers
604 * as cards with a PCI-to-PCI bridge can be
605 * inserted later.
606 */
49887941
DB
607 for (i=0; i<CARDBUS_RESERVE_BUSNR; i++) {
608 struct pci_bus *parent = bus;
cc57450f
RS
609 if (pci_find_bus(pci_domain_nr(bus),
610 max+i+1))
611 break;
49887941
DB
612 while (parent->parent) {
613 if ((!pcibios_assign_all_busses()) &&
614 (parent->subordinate > max) &&
615 (parent->subordinate <= max+i)) {
616 j = 1;
617 }
618 parent = parent->parent;
619 }
620 if (j) {
621 /*
622 * Often, there are two cardbus bridges
623 * -- try to leave one valid bus number
624 * for each one.
625 */
626 i /= 2;
627 break;
628 }
629 }
cc57450f 630 max += i;
26f674ae 631 pci_fixup_parent_subordinate_busnr(child, max);
1da177e4
LT
632 }
633 /*
634 * Set the subordinate bus number to its real value.
635 */
636 child->subordinate = max;
637 pci_write_config_byte(dev, PCI_SUBORDINATE_BUS, max);
638 }
639
cb3576fa
GH
640 sprintf(child->name,
641 (is_cardbus ? "PCI CardBus %04x:%02x" : "PCI Bus %04x:%02x"),
642 pci_domain_nr(bus), child->number);
1da177e4 643
d55bef51 644 /* Has only triggered on CardBus, fixup is in yenta_socket */
49887941
DB
645 while (bus->parent) {
646 if ((child->subordinate > bus->subordinate) ||
647 (child->number > bus->subordinate) ||
648 (child->number < bus->number) ||
649 (child->subordinate < bus->number)) {
865df576
BH
650 dev_info(&child->dev, "[bus %02x-%02x] %s "
651 "hidden behind%s bridge %s [bus %02x-%02x]\n",
d55bef51
BK
652 child->number, child->subordinate,
653 (bus->number > child->subordinate &&
654 bus->subordinate < child->number) ?
a6f29a98
JP
655 "wholly" : "partially",
656 bus->self->transparent ? " transparent" : "",
865df576 657 dev_name(&bus->dev),
d55bef51 658 bus->number, bus->subordinate);
49887941
DB
659 }
660 bus = bus->parent;
661 }
662
bbe8f9a3
RB
663out:
664 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bctl);
665
1da177e4
LT
666 return max;
667}
668
669/*
670 * Read interrupt line and base address registers.
671 * The architecture-dependent code can tweak these, of course.
672 */
673static void pci_read_irq(struct pci_dev *dev)
674{
675 unsigned char irq;
676
677 pci_read_config_byte(dev, PCI_INTERRUPT_PIN, &irq);
ffeff788 678 dev->pin = irq;
1da177e4
LT
679 if (irq)
680 pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &irq);
681 dev->irq = irq;
682}
683
480b93b7
YZ
684static void set_pcie_port_type(struct pci_dev *pdev)
685{
686 int pos;
687 u16 reg16;
688
689 pos = pci_find_capability(pdev, PCI_CAP_ID_EXP);
690 if (!pos)
691 return;
692 pdev->is_pcie = 1;
0efea000 693 pdev->pcie_cap = pos;
480b93b7
YZ
694 pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
695 pdev->pcie_type = (reg16 & PCI_EXP_FLAGS_TYPE) >> 4;
696}
697
28760489
EB
698static void set_pcie_hotplug_bridge(struct pci_dev *pdev)
699{
700 int pos;
701 u16 reg16;
702 u32 reg32;
703
06a1cbaf 704 pos = pci_pcie_cap(pdev);
28760489
EB
705 if (!pos)
706 return;
707 pci_read_config_word(pdev, pos + PCI_EXP_FLAGS, &reg16);
708 if (!(reg16 & PCI_EXP_FLAGS_SLOT))
709 return;
710 pci_read_config_dword(pdev, pos + PCI_EXP_SLTCAP, &reg32);
711 if (reg32 & PCI_EXP_SLTCAP_HPC)
712 pdev->is_hotplug_bridge = 1;
713}
714
05843961
MD
715static void set_pci_aer_firmware_first(struct pci_dev *pdev)
716{
717 if (acpi_hest_firmware_first_pci(pdev))
718 pdev->aer_firmware_first = 1;
719}
720
01abc2aa 721#define LEGACY_IO_RESOURCE (IORESOURCE_IO | IORESOURCE_PCI_FIXED)
76e6a1d6 722
1da177e4
LT
723/**
724 * pci_setup_device - fill in class and map information of a device
725 * @dev: the device structure to fill
726 *
727 * Initialize the device structure with information about the device's
728 * vendor,class,memory and IO-space addresses,IRQ lines etc.
729 * Called at initialisation of the PCI subsystem and by CardBus services.
480b93b7
YZ
730 * Returns 0 on success and negative if unknown type of device (not normal,
731 * bridge or CardBus).
1da177e4 732 */
480b93b7 733int pci_setup_device(struct pci_dev *dev)
1da177e4
LT
734{
735 u32 class;
480b93b7
YZ
736 u8 hdr_type;
737 struct pci_slot *slot;
bc577d2b 738 int pos = 0;
480b93b7
YZ
739
740 if (pci_read_config_byte(dev, PCI_HEADER_TYPE, &hdr_type))
741 return -EIO;
742
743 dev->sysdata = dev->bus->sysdata;
744 dev->dev.parent = dev->bus->bridge;
745 dev->dev.bus = &pci_bus_type;
746 dev->hdr_type = hdr_type & 0x7f;
747 dev->multifunction = !!(hdr_type & 0x80);
480b93b7
YZ
748 dev->error_state = pci_channel_io_normal;
749 set_pcie_port_type(dev);
05843961 750 set_pci_aer_firmware_first(dev);
480b93b7
YZ
751
752 list_for_each_entry(slot, &dev->bus->slots, list)
753 if (PCI_SLOT(dev->devfn) == slot->number)
754 dev->slot = slot;
755
756 /* Assume 32-bit PCI; let 64-bit PCI cards (which are far rarer)
757 set this higher, assuming the system even supports it. */
758 dev->dma_mask = 0xffffffff;
1da177e4 759
eebfcfb5
GKH
760 dev_set_name(&dev->dev, "%04x:%02x:%02x.%d", pci_domain_nr(dev->bus),
761 dev->bus->number, PCI_SLOT(dev->devfn),
762 PCI_FUNC(dev->devfn));
1da177e4
LT
763
764 pci_read_config_dword(dev, PCI_CLASS_REVISION, &class);
b8a3a521 765 dev->revision = class & 0xff;
1da177e4
LT
766 class >>= 8; /* upper 3 bytes */
767 dev->class = class;
768 class >>= 8;
769
34a2e15e 770 dev_dbg(&dev->dev, "found [%04x:%04x] class %06x header type %02x\n",
1da177e4
LT
771 dev->vendor, dev->device, class, dev->hdr_type);
772
853346e4
YZ
773 /* need to have dev->class ready */
774 dev->cfg_size = pci_cfg_space_size(dev);
775
1da177e4 776 /* "Unknown power state" */
3fe9d19f 777 dev->current_state = PCI_UNKNOWN;
1da177e4
LT
778
779 /* Early fixups, before probing the BARs */
780 pci_fixup_device(pci_fixup_early, dev);
f79b1b14
YZ
781 /* device class may be changed after fixup */
782 class = dev->class >> 8;
1da177e4
LT
783
784 switch (dev->hdr_type) { /* header type */
785 case PCI_HEADER_TYPE_NORMAL: /* standard header */
786 if (class == PCI_CLASS_BRIDGE_PCI)
787 goto bad;
788 pci_read_irq(dev);
789 pci_read_bases(dev, 6, PCI_ROM_ADDRESS);
790 pci_read_config_word(dev, PCI_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
791 pci_read_config_word(dev, PCI_SUBSYSTEM_ID, &dev->subsystem_device);
368c73d4
AC
792
793 /*
794 * Do the ugly legacy mode stuff here rather than broken chip
795 * quirk code. Legacy mode ATA controllers have fixed
796 * addresses. These are not always echoed in BAR0-3, and
797 * BAR0-3 in a few cases contain junk!
798 */
799 if (class == PCI_CLASS_STORAGE_IDE) {
800 u8 progif;
801 pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
802 if ((progif & 1) == 0) {
af1bff4f
LT
803 dev->resource[0].start = 0x1F0;
804 dev->resource[0].end = 0x1F7;
805 dev->resource[0].flags = LEGACY_IO_RESOURCE;
806 dev->resource[1].start = 0x3F6;
807 dev->resource[1].end = 0x3F6;
808 dev->resource[1].flags = LEGACY_IO_RESOURCE;
368c73d4
AC
809 }
810 if ((progif & 4) == 0) {
af1bff4f
LT
811 dev->resource[2].start = 0x170;
812 dev->resource[2].end = 0x177;
813 dev->resource[2].flags = LEGACY_IO_RESOURCE;
814 dev->resource[3].start = 0x376;
815 dev->resource[3].end = 0x376;
816 dev->resource[3].flags = LEGACY_IO_RESOURCE;
368c73d4
AC
817 }
818 }
1da177e4
LT
819 break;
820
821 case PCI_HEADER_TYPE_BRIDGE: /* bridge header */
822 if (class != PCI_CLASS_BRIDGE_PCI)
823 goto bad;
824 /* The PCI-to-PCI bridge spec requires that subtractive
825 decoding (i.e. transparent) bridge must have programming
826 interface code of 0x01. */
3efd273b 827 pci_read_irq(dev);
1da177e4
LT
828 dev->transparent = ((dev->class & 0xff) == 1);
829 pci_read_bases(dev, 2, PCI_ROM_ADDRESS1);
28760489 830 set_pcie_hotplug_bridge(dev);
bc577d2b
GB
831 pos = pci_find_capability(dev, PCI_CAP_ID_SSVID);
832 if (pos) {
833 pci_read_config_word(dev, pos + PCI_SSVID_VENDOR_ID, &dev->subsystem_vendor);
834 pci_read_config_word(dev, pos + PCI_SSVID_DEVICE_ID, &dev->subsystem_device);
835 }
1da177e4
LT
836 break;
837
838 case PCI_HEADER_TYPE_CARDBUS: /* CardBus bridge header */
839 if (class != PCI_CLASS_BRIDGE_CARDBUS)
840 goto bad;
841 pci_read_irq(dev);
842 pci_read_bases(dev, 1, 0);
843 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_VENDOR_ID, &dev->subsystem_vendor);
844 pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
845 break;
846
847 default: /* unknown header */
80ccba11
BH
848 dev_err(&dev->dev, "unknown header type %02x, "
849 "ignoring device\n", dev->hdr_type);
480b93b7 850 return -EIO;
1da177e4
LT
851
852 bad:
80ccba11
BH
853 dev_err(&dev->dev, "ignoring class %02x (doesn't match header "
854 "type %02x)\n", class, dev->hdr_type);
1da177e4
LT
855 dev->class = PCI_CLASS_NOT_DEFINED;
856 }
857
858 /* We found a fine healthy device, go go go... */
859 return 0;
860}
861
201de56e
ZY
862static void pci_release_capabilities(struct pci_dev *dev)
863{
864 pci_vpd_release(dev);
d1b054da 865 pci_iov_release(dev);
201de56e
ZY
866}
867
1da177e4
LT
868/**
869 * pci_release_dev - free a pci device structure when all users of it are finished.
870 * @dev: device that's been disconnected
871 *
872 * Will be called only by the device core when all users of this pci device are
873 * done.
874 */
875static void pci_release_dev(struct device *dev)
876{
877 struct pci_dev *pci_dev;
878
879 pci_dev = to_pci_dev(dev);
201de56e 880 pci_release_capabilities(pci_dev);
1da177e4
LT
881 kfree(pci_dev);
882}
883
884/**
885 * pci_cfg_space_size - get the configuration space size of the PCI device.
8f7020d3 886 * @dev: PCI device
1da177e4
LT
887 *
888 * Regular PCI devices have 256 bytes, but PCI-X 2 and PCI Express devices
889 * have 4096 bytes. Even if the device is capable, that doesn't mean we can
890 * access it. Maybe we don't have a way to generate extended config space
891 * accesses, or the device is behind a reverse Express bridge. So we try
892 * reading the dword at 0x100 which must either be 0 or a valid extended
893 * capability header.
894 */
70b9f7dc 895int pci_cfg_space_size_ext(struct pci_dev *dev)
1da177e4 896{
1da177e4 897 u32 status;
557848c3 898 int pos = PCI_CFG_SPACE_SIZE;
1da177e4 899
557848c3 900 if (pci_read_config_dword(dev, pos, &status) != PCIBIOS_SUCCESSFUL)
70b9f7dc
YL
901 goto fail;
902 if (status == 0xffffffff)
903 goto fail;
904
905 return PCI_CFG_SPACE_EXP_SIZE;
906
907 fail:
908 return PCI_CFG_SPACE_SIZE;
909}
910
911int pci_cfg_space_size(struct pci_dev *dev)
912{
913 int pos;
914 u32 status;
dfadd9ed
YL
915 u16 class;
916
917 class = dev->class >> 8;
918 if (class == PCI_CLASS_BRIDGE_HOST)
919 return pci_cfg_space_size_ext(dev);
57741a77 920
06a1cbaf 921 pos = pci_pcie_cap(dev);
1da177e4
LT
922 if (!pos) {
923 pos = pci_find_capability(dev, PCI_CAP_ID_PCIX);
924 if (!pos)
925 goto fail;
926
927 pci_read_config_dword(dev, pos + PCI_X_STATUS, &status);
928 if (!(status & (PCI_X_STATUS_266MHZ | PCI_X_STATUS_533MHZ)))
929 goto fail;
930 }
931
70b9f7dc 932 return pci_cfg_space_size_ext(dev);
1da177e4
LT
933
934 fail:
935 return PCI_CFG_SPACE_SIZE;
936}
937
938static void pci_release_bus_bridge_dev(struct device *dev)
939{
940 kfree(dev);
941}
942
65891215
ME
943struct pci_dev *alloc_pci_dev(void)
944{
945 struct pci_dev *dev;
946
947 dev = kzalloc(sizeof(struct pci_dev), GFP_KERNEL);
948 if (!dev)
949 return NULL;
950
65891215
ME
951 INIT_LIST_HEAD(&dev->bus_list);
952
953 return dev;
954}
955EXPORT_SYMBOL(alloc_pci_dev);
956
1da177e4
LT
957/*
958 * Read the config data for a PCI device, sanity-check it
959 * and fill in the dev structure...
960 */
7f7b5de2 961static struct pci_dev *pci_scan_device(struct pci_bus *bus, int devfn)
1da177e4
LT
962{
963 struct pci_dev *dev;
964 u32 l;
1da177e4
LT
965 int delay = 1;
966
967 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
968 return NULL;
969
970 /* some broken boards return 0 or ~0 if a slot is empty: */
971 if (l == 0xffffffff || l == 0x00000000 ||
972 l == 0x0000ffff || l == 0xffff0000)
973 return NULL;
974
975 /* Configuration request Retry Status */
976 while (l == 0xffff0001) {
977 msleep(delay);
978 delay *= 2;
979 if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &l))
980 return NULL;
981 /* Card hasn't responded in 60 seconds? Must be stuck. */
982 if (delay > 60 * 1000) {
80ccba11 983 printk(KERN_WARNING "pci %04x:%02x:%02x.%d: not "
1da177e4
LT
984 "responding\n", pci_domain_nr(bus),
985 bus->number, PCI_SLOT(devfn),
986 PCI_FUNC(devfn));
987 return NULL;
988 }
989 }
990
bab41e9b 991 dev = alloc_pci_dev();
1da177e4
LT
992 if (!dev)
993 return NULL;
994
1da177e4 995 dev->bus = bus;
1da177e4 996 dev->devfn = devfn;
1da177e4
LT
997 dev->vendor = l & 0xffff;
998 dev->device = (l >> 16) & 0xffff;
cef354db 999
480b93b7 1000 if (pci_setup_device(dev)) {
1da177e4
LT
1001 kfree(dev);
1002 return NULL;
1003 }
1da177e4
LT
1004
1005 return dev;
1006}
1007
201de56e
ZY
1008static void pci_init_capabilities(struct pci_dev *dev)
1009{
1010 /* MSI/MSI-X list */
1011 pci_msi_init_pci_dev(dev);
1012
63f4898a
RW
1013 /* Buffers for saving PCIe and PCI-X capabilities */
1014 pci_allocate_cap_save_buffers(dev);
1015
201de56e
ZY
1016 /* Power Management */
1017 pci_pm_init(dev);
eb9c39d0 1018 platform_pci_wakeup_init(dev);
201de56e
ZY
1019
1020 /* Vital Product Data */
1021 pci_vpd_pci22_init(dev);
58c3a727
YZ
1022
1023 /* Alternative Routing-ID Forwarding */
1024 pci_enable_ari(dev);
d1b054da
YZ
1025
1026 /* Single Root I/O Virtualization */
1027 pci_iov_init(dev);
ae21ee65
AK
1028
1029 /* Enable ACS P2P upstream forwarding */
5d990b62 1030 pci_enable_acs(dev);
201de56e
ZY
1031}
1032
96bde06a 1033void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
1da177e4 1034{
cdb9b9f7
PM
1035 device_initialize(&dev->dev);
1036 dev->dev.release = pci_release_dev;
1037 pci_dev_get(dev);
1da177e4 1038
cdb9b9f7 1039 dev->dev.dma_mask = &dev->dma_mask;
4d57cdfa 1040 dev->dev.dma_parms = &dev->dma_parms;
cdb9b9f7 1041 dev->dev.coherent_dma_mask = 0xffffffffull;
1da177e4 1042
4d57cdfa 1043 pci_set_dma_max_seg_size(dev, 65536);
59fc67de 1044 pci_set_dma_seg_boundary(dev, 0xffffffff);
4d57cdfa 1045
1da177e4
LT
1046 /* Fix up broken headers */
1047 pci_fixup_device(pci_fixup_header, dev);
1048
4b77b0a2
RW
1049 /* Clear the state_saved flag. */
1050 dev->state_saved = false;
1051
201de56e
ZY
1052 /* Initialize various capabilities */
1053 pci_init_capabilities(dev);
eb9d0fe4 1054
1da177e4
LT
1055 /*
1056 * Add the device to our list of discovered devices
1057 * and the bus list for fixup functions, etc.
1058 */
d71374da 1059 down_write(&pci_bus_sem);
1da177e4 1060 list_add_tail(&dev->bus_list, &bus->devices);
d71374da 1061 up_write(&pci_bus_sem);
cdb9b9f7
PM
1062}
1063
451124a7 1064struct pci_dev *__ref pci_scan_single_device(struct pci_bus *bus, int devfn)
cdb9b9f7
PM
1065{
1066 struct pci_dev *dev;
1067
90bdb311
TP
1068 dev = pci_get_slot(bus, devfn);
1069 if (dev) {
1070 pci_dev_put(dev);
1071 return dev;
1072 }
1073
cdb9b9f7
PM
1074 dev = pci_scan_device(bus, devfn);
1075 if (!dev)
1076 return NULL;
1077
1078 pci_device_add(dev, bus);
1da177e4
LT
1079
1080 return dev;
1081}
b73e9687 1082EXPORT_SYMBOL(pci_scan_single_device);
1da177e4
LT
1083
1084/**
1085 * pci_scan_slot - scan a PCI slot on a bus for devices.
1086 * @bus: PCI bus to scan
1087 * @devfn: slot number to scan (must have zero function.)
1088 *
1089 * Scan a PCI slot on the specified PCI bus for devices, adding
1090 * discovered devices to the @bus->devices list. New devices
8a1bc901 1091 * will not have is_added set.
1b69dfc6
TP
1092 *
1093 * Returns the number of new devices found.
1da177e4 1094 */
96bde06a 1095int pci_scan_slot(struct pci_bus *bus, int devfn)
1da177e4 1096{
1b69dfc6
TP
1097 int fn, nr = 0;
1098 struct pci_dev *dev;
1da177e4 1099
1b69dfc6
TP
1100 dev = pci_scan_single_device(bus, devfn);
1101 if (dev && !dev->is_added) /* new device? */
1102 nr++;
1103
a7db5040 1104 if (dev && dev->multifunction) {
1b69dfc6
TP
1105 for (fn = 1; fn < 8; fn++) {
1106 dev = pci_scan_single_device(bus, devfn + fn);
1107 if (dev) {
1108 if (!dev->is_added)
1109 nr++;
1110 dev->multifunction = 1;
1da177e4 1111 }
1da177e4
LT
1112 }
1113 }
7d715a6c 1114
149e1637
SL
1115 /* only one slot has pcie device */
1116 if (bus->self && nr)
7d715a6c
SL
1117 pcie_aspm_init_link_state(bus->self);
1118
1da177e4
LT
1119 return nr;
1120}
1121
0ab2b57f 1122unsigned int __devinit pci_scan_child_bus(struct pci_bus *bus)
1da177e4
LT
1123{
1124 unsigned int devfn, pass, max = bus->secondary;
1125 struct pci_dev *dev;
1126
0207c356 1127 dev_dbg(&bus->dev, "scanning bus\n");
1da177e4
LT
1128
1129 /* Go find them, Rover! */
1130 for (devfn = 0; devfn < 0x100; devfn += 8)
1131 pci_scan_slot(bus, devfn);
1132
a28724b0
YZ
1133 /* Reserve buses for SR-IOV capability. */
1134 max += pci_iov_bus_range(bus);
1135
1da177e4
LT
1136 /*
1137 * After performing arch-dependent fixup of the bus, look behind
1138 * all PCI-to-PCI bridges on this bus.
1139 */
74710ded 1140 if (!bus->is_added) {
0207c356 1141 dev_dbg(&bus->dev, "fixups for bus\n");
74710ded
AC
1142 pcibios_fixup_bus(bus);
1143 if (pci_is_root_bus(bus))
1144 bus->is_added = 1;
1145 }
1146
1da177e4
LT
1147 for (pass=0; pass < 2; pass++)
1148 list_for_each_entry(dev, &bus->devices, bus_list) {
1149 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1150 dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1151 max = pci_scan_bridge(bus, dev, max, pass);
1152 }
1153
1154 /*
1155 * We've scanned the bus and so we know all about what's on
1156 * the other side of any bridges that may be on this bus plus
1157 * any devices.
1158 *
1159 * Return how far we've got finding sub-buses.
1160 */
0207c356 1161 dev_dbg(&bus->dev, "bus scan returning with max=%02x\n", max);
1da177e4
LT
1162 return max;
1163}
1164
96bde06a 1165struct pci_bus * pci_create_bus(struct device *parent,
cdb9b9f7 1166 int bus, struct pci_ops *ops, void *sysdata)
1da177e4
LT
1167{
1168 int error;
0207c356 1169 struct pci_bus *b, *b2;
1da177e4
LT
1170 struct device *dev;
1171
1172 b = pci_alloc_bus();
1173 if (!b)
1174 return NULL;
1175
6a3b3e26 1176 dev = kzalloc(sizeof(*dev), GFP_KERNEL);
1da177e4
LT
1177 if (!dev){
1178 kfree(b);
1179 return NULL;
1180 }
1181
1182 b->sysdata = sysdata;
1183 b->ops = ops;
1184
0207c356
BH
1185 b2 = pci_find_bus(pci_domain_nr(b), bus);
1186 if (b2) {
1da177e4 1187 /* If we already got to this bus through a different bridge, ignore it */
0207c356 1188 dev_dbg(&b2->dev, "bus already known\n");
1da177e4
LT
1189 goto err_out;
1190 }
d71374da
ZY
1191
1192 down_write(&pci_bus_sem);
1da177e4 1193 list_add_tail(&b->node, &pci_root_buses);
d71374da 1194 up_write(&pci_bus_sem);
1da177e4 1195
1da177e4
LT
1196 dev->parent = parent;
1197 dev->release = pci_release_bus_bridge_dev;
1a927133 1198 dev_set_name(dev, "pci%04x:%02x", pci_domain_nr(b), bus);
1da177e4
LT
1199 error = device_register(dev);
1200 if (error)
1201 goto dev_reg_err;
1202 b->bridge = get_device(dev);
1203
0d358f22
YL
1204 if (!parent)
1205 set_dev_node(b->bridge, pcibus_to_node(b));
1206
fd7d1ced
GKH
1207 b->dev.class = &pcibus_class;
1208 b->dev.parent = b->bridge;
1a927133 1209 dev_set_name(&b->dev, "%04x:%02x", pci_domain_nr(b), bus);
fd7d1ced 1210 error = device_register(&b->dev);
1da177e4
LT
1211 if (error)
1212 goto class_dev_reg_err;
fd7d1ced 1213 error = device_create_file(&b->dev, &dev_attr_cpuaffinity);
1da177e4 1214 if (error)
fd7d1ced 1215 goto dev_create_file_err;
1da177e4
LT
1216
1217 /* Create legacy_io and legacy_mem files for this bus */
1218 pci_create_legacy_files(b);
1219
1da177e4
LT
1220 b->number = b->secondary = bus;
1221 b->resource[0] = &ioport_resource;
1222 b->resource[1] = &iomem_resource;
1223
1da177e4
LT
1224 return b;
1225
fd7d1ced
GKH
1226dev_create_file_err:
1227 device_unregister(&b->dev);
1da177e4
LT
1228class_dev_reg_err:
1229 device_unregister(dev);
1230dev_reg_err:
d71374da 1231 down_write(&pci_bus_sem);
1da177e4 1232 list_del(&b->node);
d71374da 1233 up_write(&pci_bus_sem);
1da177e4
LT
1234err_out:
1235 kfree(dev);
1236 kfree(b);
1237 return NULL;
1238}
cdb9b9f7 1239
0ab2b57f 1240struct pci_bus * __devinit pci_scan_bus_parented(struct device *parent,
cdb9b9f7
PM
1241 int bus, struct pci_ops *ops, void *sysdata)
1242{
1243 struct pci_bus *b;
1244
1245 b = pci_create_bus(parent, bus, ops, sysdata);
1246 if (b)
1247 b->subordinate = pci_scan_child_bus(b);
1248 return b;
1249}
1da177e4
LT
1250EXPORT_SYMBOL(pci_scan_bus_parented);
1251
1252#ifdef CONFIG_HOTPLUG
3ed4fd96
AC
1253/**
1254 * pci_rescan_bus - scan a PCI bus for devices.
1255 * @bus: PCI bus to scan
1256 *
1257 * Scan a PCI bus and child buses for new devices, adds them,
1258 * and enables them.
1259 *
1260 * Returns the max number of subordinate bus discovered.
1261 */
5446a6bd 1262unsigned int __ref pci_rescan_bus(struct pci_bus *bus)
3ed4fd96
AC
1263{
1264 unsigned int max;
1265 struct pci_dev *dev;
1266
1267 max = pci_scan_child_bus(bus);
1268
705b1aaa 1269 down_read(&pci_bus_sem);
3ed4fd96
AC
1270 list_for_each_entry(dev, &bus->devices, bus_list)
1271 if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
1272 dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
1273 if (dev->subordinate)
1274 pci_bus_size_bridges(dev->subordinate);
705b1aaa 1275 up_read(&pci_bus_sem);
3ed4fd96
AC
1276
1277 pci_bus_assign_resources(bus);
1278 pci_enable_bridges(bus);
1279 pci_bus_add_devices(bus);
1280
1281 return max;
1282}
1283EXPORT_SYMBOL_GPL(pci_rescan_bus);
1284
1da177e4 1285EXPORT_SYMBOL(pci_add_new_bus);
1da177e4
LT
1286EXPORT_SYMBOL(pci_scan_slot);
1287EXPORT_SYMBOL(pci_scan_bridge);
1da177e4
LT
1288EXPORT_SYMBOL_GPL(pci_scan_child_bus);
1289#endif
6b4b78fe 1290
99178b03 1291static int __init pci_sort_bf_cmp(const struct device *d_a, const struct device *d_b)
6b4b78fe 1292{
99178b03
GKH
1293 const struct pci_dev *a = to_pci_dev(d_a);
1294 const struct pci_dev *b = to_pci_dev(d_b);
1295
6b4b78fe
MD
1296 if (pci_domain_nr(a->bus) < pci_domain_nr(b->bus)) return -1;
1297 else if (pci_domain_nr(a->bus) > pci_domain_nr(b->bus)) return 1;
1298
1299 if (a->bus->number < b->bus->number) return -1;
1300 else if (a->bus->number > b->bus->number) return 1;
1301
1302 if (a->devfn < b->devfn) return -1;
1303 else if (a->devfn > b->devfn) return 1;
1304
1305 return 0;
1306}
1307
5ff580c1 1308void __init pci_sort_breadthfirst(void)
6b4b78fe 1309{
99178b03 1310 bus_sort_breadthfirst(&pci_bus_type, &pci_sort_bf_cmp);
6b4b78fe 1311}