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