diff options
| -rw-r--r-- | Documentation/feature-removal-schedule.txt | 7 | ||||
| -rw-r--r-- | drivers/pci/Kconfig | 17 | ||||
| -rw-r--r-- | drivers/pci/proc.c | 126 |
3 files changed, 0 insertions, 150 deletions
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index afeaf6218ea2..c7a4d0faab22 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
| @@ -158,13 +158,6 @@ Who: Adrian Bunk <bunk@stusta.de> | |||
| 158 | 158 | ||
| 159 | --------------------------- | 159 | --------------------------- |
| 160 | 160 | ||
| 161 | What: Legacy /proc/pci interface (PCI_LEGACY_PROC) | ||
| 162 | When: March 2006 | ||
| 163 | Why: deprecated since 2.5.53 in favor of lspci(8) | ||
| 164 | Who: Adrian Bunk <bunk@stusta.de> | ||
| 165 | |||
| 166 | --------------------------- | ||
| 167 | |||
| 168 | What: pci_module_init(driver) | 161 | What: pci_module_init(driver) |
| 169 | When: January 2007 | 162 | When: January 2007 |
| 170 | Why: Is replaced by pci_register_driver(pci_driver). | 163 | Why: Is replaced by pci_register_driver(pci_driver). |
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig index f187fd8aeed6..d3dcce815d15 100644 --- a/drivers/pci/Kconfig +++ b/drivers/pci/Kconfig | |||
| @@ -13,23 +13,6 @@ config PCI_MSI | |||
| 13 | 13 | ||
| 14 | If you don't know what to do here, say N. | 14 | If you don't know what to do here, say N. |
| 15 | 15 | ||
| 16 | config PCI_LEGACY_PROC | ||
| 17 | bool "Legacy /proc/pci interface" | ||
| 18 | depends on PCI | ||
| 19 | ---help--- | ||
| 20 | This feature enables a procfs file -- /proc/pci -- that provides a | ||
| 21 | summary of PCI devices in the system. | ||
| 22 | |||
| 23 | This feature has been deprecated as of v2.5.53, in favor of using the | ||
| 24 | tool lspci(8). This feature may be removed at a future date. | ||
| 25 | |||
| 26 | lspci can provide the same data, as well as much more. lspci is a part of | ||
| 27 | the pci-utils package, which should be installed by your distribution. | ||
| 28 | See <file:Documentation/Changes> for information on where to get the latest | ||
| 29 | version. | ||
| 30 | |||
| 31 | When in doubt, say N. | ||
| 32 | |||
| 33 | config PCI_DEBUG | 16 | config PCI_DEBUG |
| 34 | bool "PCI Debugging" | 17 | bool "PCI Debugging" |
| 35 | depends on PCI && DEBUG_KERNEL | 18 | depends on PCI && DEBUG_KERNEL |
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c index 92a885760832..54b2ebc9c91a 100644 --- a/drivers/pci/proc.c +++ b/drivers/pci/proc.c | |||
| @@ -458,131 +458,6 @@ int pci_proc_detach_bus(struct pci_bus* bus) | |||
| 458 | return 0; | 458 | return 0; |
| 459 | } | 459 | } |
| 460 | 460 | ||
| 461 | #ifdef CONFIG_PCI_LEGACY_PROC | ||
| 462 | |||
| 463 | /* | ||
| 464 | * Backward compatible /proc/pci interface. | ||
| 465 | */ | ||
| 466 | |||
| 467 | /* | ||
| 468 | * Convert some of the configuration space registers of the device at | ||
| 469 | * address (bus,devfn) into a string (possibly several lines each). | ||
| 470 | * The configuration string is stored starting at buf[len]. If the | ||
| 471 | * string would exceed the size of the buffer (SIZE), 0 is returned. | ||
| 472 | */ | ||
| 473 | static int show_dev_config(struct seq_file *m, void *v) | ||
| 474 | { | ||
| 475 | struct pci_dev *dev = v; | ||
| 476 | struct pci_dev *first_dev; | ||
| 477 | struct pci_driver *drv; | ||
| 478 | u32 class_rev; | ||
| 479 | unsigned char latency, min_gnt, max_lat; | ||
| 480 | int reg; | ||
| 481 | |||
| 482 | first_dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, NULL); | ||
| 483 | if (dev == first_dev) | ||
| 484 | seq_puts(m, "PCI devices found:\n"); | ||
| 485 | pci_dev_put(first_dev); | ||
| 486 | |||
| 487 | drv = pci_dev_driver(dev); | ||
| 488 | |||
| 489 | pci_user_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev); | ||
| 490 | pci_user_read_config_byte (dev, PCI_LATENCY_TIMER, &latency); | ||
| 491 | pci_user_read_config_byte (dev, PCI_MIN_GNT, &min_gnt); | ||
| 492 | pci_user_read_config_byte (dev, PCI_MAX_LAT, &max_lat); | ||
| 493 | seq_printf(m, " Bus %2d, device %3d, function %2d:\n", | ||
| 494 | dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn)); | ||
| 495 | seq_printf(m, " Class %04x", class_rev >> 16); | ||
| 496 | seq_printf(m, ": PCI device %04x:%04x", dev->vendor, dev->device); | ||
| 497 | seq_printf(m, " (rev %d).\n", class_rev & 0xff); | ||
| 498 | |||
| 499 | if (dev->irq) | ||
| 500 | seq_printf(m, " IRQ %d.\n", dev->irq); | ||
| 501 | |||
| 502 | if (latency || min_gnt || max_lat) { | ||
| 503 | seq_printf(m, " Master Capable. "); | ||
| 504 | if (latency) | ||
| 505 | seq_printf(m, "Latency=%d. ", latency); | ||
| 506 | else | ||
| 507 | seq_puts(m, "No bursts. "); | ||
| 508 | if (min_gnt) | ||
| 509 | seq_printf(m, "Min Gnt=%d.", min_gnt); | ||
| 510 | if (max_lat) | ||
| 511 | seq_printf(m, "Max Lat=%d.", max_lat); | ||
| 512 | seq_putc(m, '\n'); | ||
| 513 | } | ||
| 514 | |||
| 515 | for (reg = 0; reg < 6; reg++) { | ||
| 516 | struct resource *res = dev->resource + reg; | ||
| 517 | unsigned long base, end, flags; | ||
| 518 | |||
| 519 | base = res->start; | ||
| 520 | end = res->end; | ||
| 521 | flags = res->flags; | ||
| 522 | if (!end) | ||
| 523 | continue; | ||
| 524 | |||
| 525 | if (flags & PCI_BASE_ADDRESS_SPACE_IO) { | ||
| 526 | seq_printf(m, " I/O at 0x%lx [0x%lx].\n", | ||
| 527 | base, end); | ||
| 528 | } else { | ||
| 529 | const char *pref, *type = "unknown"; | ||
| 530 | |||
| 531 | if (flags & PCI_BASE_ADDRESS_MEM_PREFETCH) | ||
| 532 | pref = "P"; | ||
| 533 | else | ||
| 534 | pref = "Non-p"; | ||
| 535 | switch (flags & PCI_BASE_ADDRESS_MEM_TYPE_MASK) { | ||
| 536 | case PCI_BASE_ADDRESS_MEM_TYPE_32: | ||
| 537 | type = "32 bit"; break; | ||
| 538 | case PCI_BASE_ADDRESS_MEM_TYPE_1M: | ||
| 539 | type = "20 bit"; break; | ||
| 540 | case PCI_BASE_ADDRESS_MEM_TYPE_64: | ||
| 541 | type = "64 bit"; break; | ||
| 542 | } | ||
| 543 | seq_printf(m, " %srefetchable %s memory at " | ||
| 544 | "0x%lx [0x%lx].\n", pref, type, | ||
| 545 | base, | ||
| 546 | end); | ||
| 547 | } | ||
| 548 | } | ||
| 549 | return 0; | ||
| 550 | } | ||
| 551 | |||
| 552 | static struct seq_operations proc_pci_op = { | ||
| 553 | .start = pci_seq_start, | ||
| 554 | .next = pci_seq_next, | ||
| 555 | .stop = pci_seq_stop, | ||
| 556 | .show = show_dev_config | ||
| 557 | }; | ||
| 558 | |||
| 559 | static int proc_pci_open(struct inode *inode, struct file *file) | ||
| 560 | { | ||
| 561 | return seq_open(file, &proc_pci_op); | ||
| 562 | } | ||
| 563 | static struct file_operations proc_pci_operations = { | ||
| 564 | .open = proc_pci_open, | ||
| 565 | .read = seq_read, | ||
| 566 | .llseek = seq_lseek, | ||
| 567 | .release = seq_release, | ||
| 568 | }; | ||
| 569 | |||
| 570 | static void legacy_proc_init(void) | ||
| 571 | { | ||
| 572 | struct proc_dir_entry * entry = create_proc_entry("pci", 0, NULL); | ||
| 573 | if (entry) | ||
| 574 | entry->proc_fops = &proc_pci_operations; | ||
| 575 | } | ||
| 576 | |||
| 577 | #else | ||
| 578 | |||
| 579 | static void legacy_proc_init(void) | ||
| 580 | { | ||
| 581 | |||
| 582 | } | ||
| 583 | |||
| 584 | #endif /* CONFIG_PCI_LEGACY_PROC */ | ||
| 585 | |||
| 586 | static int proc_bus_pci_dev_open(struct inode *inode, struct file *file) | 461 | static int proc_bus_pci_dev_open(struct inode *inode, struct file *file) |
| 587 | { | 462 | { |
| 588 | return seq_open(file, &proc_bus_pci_devices_op); | 463 | return seq_open(file, &proc_bus_pci_devices_op); |
| @@ -606,7 +481,6 @@ static int __init pci_proc_init(void) | |||
| 606 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { | 481 | while ((dev = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, dev)) != NULL) { |
| 607 | pci_proc_attach_device(dev); | 482 | pci_proc_attach_device(dev); |
| 608 | } | 483 | } |
| 609 | legacy_proc_init(); | ||
| 610 | return 0; | 484 | return 0; |
| 611 | } | 485 | } |
| 612 | 486 | ||
