resource: add bus number support
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Fri, 5 Mar 2010 17:47:42 +0000 (10:47 -0700)
committerLen Brown <len.brown@intel.com>
Mon, 15 Mar 2010 00:08:35 +0000 (20:08 -0400)
Add support for bus number resources.  This is for bridges with a range of
bus numbers behind them.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Len Brown <len.brown@intel.com>
include/linux/ioport.h
lib/vsprintf.c

index b126209..510e4ac 100644 (file)
@@ -39,6 +39,7 @@ struct resource_list {
 #define IORESOURCE_MEM         0x00000200
 #define IORESOURCE_IRQ         0x00000400
 #define IORESOURCE_DMA         0x00000800
 #define IORESOURCE_MEM         0x00000200
 #define IORESOURCE_IRQ         0x00000400
 #define IORESOURCE_DMA         0x00000800
+#define IORESOURCE_BUS         0x00001000
 
 #define IORESOURCE_PREFETCH    0x00002000      /* No side effects */
 #define IORESOURCE_READONLY    0x00004000
 
 #define IORESOURCE_PREFETCH    0x00002000      /* No side effects */
 #define IORESOURCE_READONLY    0x00004000
index 0d461c7..ebbecf9 100644 (file)
@@ -609,6 +609,12 @@ static char *resource_string(char *buf, char *end, struct resource *res,
                .precision = -1,
                .flags = SPECIAL | SMALL | ZEROPAD,
        };
                .precision = -1,
                .flags = SPECIAL | SMALL | ZEROPAD,
        };
+       static const struct printf_spec bus_spec = {
+               .base = 16,
+               .field_width = 2,
+               .precision = -1,
+               .flags = SMALL | ZEROPAD,
+       };
        static const struct printf_spec dec_spec = {
                .base = 10,
                .precision = -1,
        static const struct printf_spec dec_spec = {
                .base = 10,
                .precision = -1,
@@ -651,6 +657,9 @@ static char *resource_string(char *buf, char *end, struct resource *res,
        } else if (res->flags & IORESOURCE_DMA) {
                p = string(p, pend, "dma ", str_spec);
                specp = &dec_spec;
        } else if (res->flags & IORESOURCE_DMA) {
                p = string(p, pend, "dma ", str_spec);
                specp = &dec_spec;
+       } else if (res->flags & IORESOURCE_BUS) {
+               p = string(p, pend, "bus ", str_spec);
+               specp = &bus_spec;
        } else {
                p = string(p, pend, "??? ", str_spec);
                specp = &mem_spec;
        } else {
                p = string(p, pend, "??? ", str_spec);
                specp = &mem_spec;