PNP: increase I/O port & memory option address sizes
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Fri, 27 Jun 2008 22:57:06 +0000 (16:57 -0600)
committerAndi Kleen <andi@basil.nowhere.org>
Wed, 16 Jul 2008 21:27:06 +0000 (23:27 +0200)
ACPI Address Space Descriptors can be up to 64 bits wide.
We should keep track of the whole thing when parsing resource
options, so this patch changes PNP port and mem option
fields from "unsigned short" and "unsigned int" to
"resource_size_t".

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Rene Herman <rene.herman@gmail.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/pnp/base.h
drivers/pnp/interface.c
drivers/pnp/resource.c

index a9ee0a9fec77de42b47a4800db406b740e93da94..afbeee5b8af6e3a8034c0780694a3093a4e820be 100644 (file)
@@ -20,10 +20,10 @@ int pnp_add_card_device(struct pnp_card *card, struct pnp_dev *dev);
 void pnp_remove_card_device(struct pnp_dev *dev);
 
 struct pnp_port {
-       unsigned short min;     /* min base number */
-       unsigned short max;     /* max base number */
-       unsigned char align;    /* align boundary */
-       unsigned char size;     /* size of range */
+       resource_size_t min;    /* min base number */
+       resource_size_t max;    /* max base number */
+       resource_size_t align;  /* align boundary */
+       resource_size_t size;   /* size of range */
        unsigned char flags;    /* port flags */
        unsigned char pad;      /* pad */
        struct pnp_port *next;  /* next port */
@@ -46,10 +46,10 @@ struct pnp_dma {
 };
 
 struct pnp_mem {
-       unsigned int min;       /* min base number */
-       unsigned int max;       /* max base number */
-       unsigned int align;     /* align boundary */
-       unsigned int size;      /* size of range */
+       resource_size_t min;    /* min base number */
+       resource_size_t max;    /* max base number */
+       resource_size_t align;  /* align boundary */
+       resource_size_t size;   /* size of range */
        unsigned char flags;    /* memory flags */
        unsigned char pad;      /* pad */
        struct pnp_mem *next;   /* next memory resource */
index 249b4078d1ecb61e3d15bc7bc11935211e8f33ad..b09f67de13d091701b7c188cbff090dedb9c6630 100644 (file)
@@ -53,10 +53,12 @@ static int pnp_printf(pnp_info_buffer_t * buffer, char *fmt, ...)
 static void pnp_print_port(pnp_info_buffer_t * buffer, char *space,
                           struct pnp_port *port)
 {
-       pnp_printf(buffer,
-                  "%sport 0x%x-0x%x, align 0x%x, size 0x%x, %i-bit address decoding\n",
-                  space, port->min, port->max,
-                  port->align ? (port->align - 1) : 0, port->size,
+       pnp_printf(buffer, "%sport %#llx-%#llx, align %#llx, size %#llx, "
+                  "%i-bit address decoding\n", space,
+                  (unsigned long long) port->min,
+                  (unsigned long long) port->max,
+                  port->align ? ((unsigned long long) port->align - 1) : 0,
+                  (unsigned long long) port->size,
                   port->flags & IORESOURCE_IO_16BIT_ADDR ? 16 : 10);
 }
 
@@ -148,8 +150,11 @@ static void pnp_print_mem(pnp_info_buffer_t * buffer, char *space,
 {
        char *s;
 
-       pnp_printf(buffer, "%sMemory 0x%x-0x%x, align 0x%x, size 0x%x",
-                  space, mem->min, mem->max, mem->align, mem->size);
+       pnp_printf(buffer, "%sMemory %#llx-%#llx, align %#llx, size %#llx",
+                  space, (unsigned long long) mem->min,
+                  (unsigned long long) mem->max,
+                  (unsigned long long) mem->align,
+                  (unsigned long long) mem->size);
        if (mem->flags & IORESOURCE_MEM_WRITEABLE)
                pnp_printf(buffer, ", writeable");
        if (mem->flags & IORESOURCE_MEM_CACHEABLE)
index 55a57cded24a6565e30031930c537ebd65f218c4..391828c7f2079a6a0a3727ae5a1f7fdfdbbc4f2a 100644 (file)
@@ -143,8 +143,11 @@ int pnp_register_port_resource(struct pnp_dev *dev, struct pnp_option *option,
                option->port = data;
 
        dev_dbg(&dev->dev, "  io  "
-               "min %#x max %#x align %d size %d flags %#x\n",
-               data->min, data->max, data->align, data->size, data->flags);
+               "min %#llx max %#llx align %lld size %lld flags %#x\n",
+               (unsigned long long) data->min,
+               (unsigned long long) data->max,
+               (unsigned long long) data->align,
+               (unsigned long long) data->size, data->flags);
        return 0;
 }
 
@@ -162,8 +165,11 @@ int pnp_register_mem_resource(struct pnp_dev *dev, struct pnp_option *option,
                option->mem = data;
 
        dev_dbg(&dev->dev, "  mem "
-               "min %#x max %#x align %d size %d flags %#x\n",
-               data->min, data->max, data->align, data->size, data->flags);
+               "min %#llx max %#llx align %lld size %lld flags %#x\n",
+               (unsigned long long) data->min,
+               (unsigned long long) data->max,
+               (unsigned long long) data->align,
+               (unsigned long long) data->size, data->flags);
        return 0;
 }