# HG changeset patch # User Yu Zhao # Date 1236910004 14400 # Node ID ee3f8ec76f20de0e818621c8f86122427532bc3d # Parent c0e566166776cb7e096ee182bde557554fa4167e Backport: PCI: define PCI resource names in an 'enum' commit fde09c6d8f92de0c9f75698a75f0989f2234c517 Author: Yu Zhao Date: Sat Nov 22 02:39:32 2008 +0800 PCI: define PCI resource names in an 'enum' This patch moves all definitions of the PCI resource names to an 'enum', and also replaces some hard-coded resource variables with symbol names. This change eases introduction of device specific resources. Reviewed-by: Bjorn Helgaas Signed-off-by: Yu Zhao Signed-off-by: Jesse Barnes Signed-off-by: Yu Zhao diff -r c0e566166776 -r ee3f8ec76f20 drivers/pci/pci-sysfs.c --- a/drivers/pci/pci-sysfs.c Thu Mar 12 22:03:07 2009 -0400 +++ b/drivers/pci/pci-sysfs.c Thu Mar 12 22:06:44 2009 -0400 @@ -85,11 +85,13 @@ struct pci_dev * pci_dev = to_pci_dev(dev); char * str = buf; int i; - int max = 7; + int max; resource_size_t start, end; if (pci_dev->subordinate) max = DEVICE_COUNT_RESOURCE; + else + max = PCI_BRIDGE_RESOURCES; for (i = 0; i < max; i++) { struct resource *res = &pci_dev->resource[i]; diff -r c0e566166776 -r ee3f8ec76f20 drivers/pci/probe.c --- a/drivers/pci/probe.c Thu Mar 12 22:03:07 2009 -0400 +++ b/drivers/pci/probe.c Thu Mar 12 22:06:44 2009 -0400 @@ -417,7 +417,7 @@ child->bridge = get_device(&bridge->dev); /* Set up default resource pointers and names.. */ - for (i = 0; i < 4; i++) { + for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; i++) { child->resource[i] = &bridge->resource[PCI_BRIDGE_RESOURCES+i]; child->resource[i]->name = child->name; } diff -r c0e566166776 -r ee3f8ec76f20 drivers/pci/proc.c --- a/drivers/pci/proc.c Thu Mar 12 22:03:07 2009 -0400 +++ b/drivers/pci/proc.c Thu Mar 12 22:06:44 2009 -0400 @@ -348,15 +348,16 @@ dev->vendor, dev->device, dev->irq); - /* Here should be 7 and not PCI_NUM_RESOURCES as we need to preserve compatibility */ - for (i=0; i<7; i++) { + + /* only print standard and ROM resources to preserve compatibility */ + for (i = 0; i <= PCI_ROM_RESOURCE; i++) { resource_size_t start, end; pci_resource_to_user(dev, i, &dev->resource[i], &start, &end); seq_printf(m, "\t%16llx", (unsigned long long)(start | (dev->resource[i].flags & PCI_REGION_FLAG_MASK))); } - for (i=0; i<7; i++) { + for (i = 0; i <= PCI_ROM_RESOURCE; i++) { resource_size_t start, end; pci_resource_to_user(dev, i, &dev->resource[i], &start, &end); seq_printf(m, "\t%16llx", diff -r c0e566166776 -r ee3f8ec76f20 include/linux/pci.h --- a/include/linux/pci.h Thu Mar 12 22:03:07 2009 -0400 +++ b/include/linux/pci.h Thu Mar 12 22:06:44 2009 -0400 @@ -65,8 +65,31 @@ #define PCI_DMA_NONE 3 #define DEVICE_COUNT_COMPATIBLE 4 -#define DEVICE_COUNT_RESOURCE 12 +/* + * For PCI devices, the region numbers are assigned this way: + */ +enum { + /* #0-5: standard PCI resources */ + PCI_STD_RESOURCES, + PCI_STD_RESOURCE_END = 5, + + /* #6: expansion ROM resource */ + PCI_ROM_RESOURCE, + + /* resources assigned to buses behind the bridge */ +#define PCI_BRIDGE_RESOURCE_NUM 4 + + PCI_BRIDGE_RESOURCES, + PCI_BRIDGE_RESOURCE_END = PCI_BRIDGE_RESOURCES + + PCI_BRIDGE_RESOURCE_NUM - 1, + + /* total resources associated with a PCI device */ + PCI_NUM_RESOURCES, + + /* preserve this for compatibility */ + DEVICE_COUNT_RESOURCE +}; typedef int __bitwise pci_power_t; #define PCI_D0 ((pci_power_t __force) 0) @@ -203,18 +226,6 @@ { hlist_del(&cap->next); } - -/* - * For PCI devices, the region numbers are assigned this way: - * - * 0-5 standard PCI regions - * 6 expansion ROM - * 7-10 bridges: address space assigned to buses behind the bridge - */ - -#define PCI_ROM_RESOURCE 6 -#define PCI_BRIDGE_RESOURCES 7 -#define PCI_NUM_RESOURCES 11 #ifndef PCI_BUS_NUM_RESOURCES #define PCI_BUS_NUM_RESOURCES 8