]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/pnp/pnpbios/rsparser.c
PNP: replace pnp_resource_table with dynamically allocated resources
[linux-2.6-omap-h63xx.git] / drivers / pnp / pnpbios / rsparser.c
index 5ff9a4c0447ec8052e0de9a433255051826e1298..01f0c3dd1b08ef259bc554c7ff2acb661e1b7e47 100644 (file)
@@ -526,8 +526,16 @@ len_err:
 static void pnpbios_encode_mem(struct pnp_dev *dev, unsigned char *p,
                               struct resource *res)
 {
-       unsigned long base = res->start;
-       unsigned long len = res->end - res->start + 1;
+       unsigned long base;
+       unsigned long len;
+
+       if (pnp_resource_enabled(res)) {
+               base = res->start;
+               len = res->end - res->start + 1;
+       } else {
+               base = 0;
+               len = 0;
+       }
 
        p[4] = (base >> 8) & 0xff;
        p[5] = ((base >> 8) >> 8) & 0xff;
@@ -536,15 +544,22 @@ static void pnpbios_encode_mem(struct pnp_dev *dev, unsigned char *p,
        p[10] = (len >> 8) & 0xff;
        p[11] = ((len >> 8) >> 8) & 0xff;
 
-       dev_dbg(&dev->dev, "  encode mem %#llx-%#llx\n",
-               (unsigned long long) res->start, (unsigned long long) res->end);
+       dev_dbg(&dev->dev, "  encode mem %#lx-%#lx\n", base, base + len - 1);
 }
 
 static void pnpbios_encode_mem32(struct pnp_dev *dev, unsigned char *p,
                                 struct resource *res)
 {
-       unsigned long base = res->start;
-       unsigned long len = res->end - res->start + 1;
+       unsigned long base;
+       unsigned long len;
+
+       if (pnp_resource_enabled(res)) {
+               base = res->start;
+               len = res->end - res->start + 1;
+       } else {
+               base = 0;
+               len = 0;
+       }
 
        p[4] = base & 0xff;
        p[5] = (base >> 8) & 0xff;
@@ -559,15 +574,22 @@ static void pnpbios_encode_mem32(struct pnp_dev *dev, unsigned char *p,
        p[18] = (len >> 16) & 0xff;
        p[19] = (len >> 24) & 0xff;
 
-       dev_dbg(&dev->dev, "  encode mem32 %#llx-%#llx\n",
-               (unsigned long long) res->start, (unsigned long long) res->end);
+       dev_dbg(&dev->dev, "  encode mem32 %#lx-%#lx\n", base, base + len - 1);
 }
 
 static void pnpbios_encode_fixed_mem32(struct pnp_dev *dev, unsigned char *p,
                                       struct resource *res)
 {
-       unsigned long base = res->start;
-       unsigned long len = res->end - res->start + 1;
+       unsigned long base;
+       unsigned long len;
+
+       if (pnp_resource_enabled(res)) {
+               base = res->start;
+               len = res->end - res->start + 1;
+       } else {
+               base = 0;
+               len = 0;
+       }
 
        p[4] = base & 0xff;
        p[5] = (base >> 8) & 0xff;
@@ -578,40 +600,54 @@ static void pnpbios_encode_fixed_mem32(struct pnp_dev *dev, unsigned char *p,
        p[10] = (len >> 16) & 0xff;
        p[11] = (len >> 24) & 0xff;
 
-       dev_dbg(&dev->dev, "  encode fixed_mem32 %#llx-%#llx\n",
-               (unsigned long long) res->start, (unsigned long long) res->end);
+       dev_dbg(&dev->dev, "  encode fixed_mem32 %#lx-%#lx\n", base,
+               base + len - 1);
 }
 
 static void pnpbios_encode_irq(struct pnp_dev *dev, unsigned char *p,
                               struct resource *res)
 {
-       unsigned long map = 0;
+       unsigned long map;
+
+       if (pnp_resource_enabled(res))
+               map = 1 << res->start;
+       else
+               map = 0;
 
-       map = 1 << res->start;
        p[1] = map & 0xff;
        p[2] = (map >> 8) & 0xff;
 
-       dev_dbg(&dev->dev, "  encode irq %llu\n",
-               (unsigned long long)res->start);
+       dev_dbg(&dev->dev, "  encode irq mask %#lx\n", map);
 }
 
 static void pnpbios_encode_dma(struct pnp_dev *dev, unsigned char *p,
                               struct resource *res)
 {
-       unsigned long map = 0;
+       unsigned long map;
+
+       if (pnp_resource_enabled(res))
+               map = 1 << res->start;
+       else
+               map = 0;
 
-       map = 1 << res->start;
        p[1] = map & 0xff;
 
-       dev_dbg(&dev->dev, "  encode dma %llu\n",
-               (unsigned long long)res->start);
+       dev_dbg(&dev->dev, "  encode dma mask %#lx\n", map);
 }
 
 static void pnpbios_encode_port(struct pnp_dev *dev, unsigned char *p,
                                struct resource *res)
 {
-       unsigned long base = res->start;
-       unsigned long len = res->end - res->start + 1;
+       unsigned long base;
+       unsigned long len;
+
+       if (pnp_resource_enabled(res)) {
+               base = res->start;
+               len = res->end - res->start + 1;
+       } else {
+               base = 0;
+               len = 0;
+       }
 
        p[2] = base & 0xff;
        p[3] = (base >> 8) & 0xff;
@@ -619,8 +655,7 @@ static void pnpbios_encode_port(struct pnp_dev *dev, unsigned char *p,
        p[5] = (base >> 8) & 0xff;
        p[7] = len & 0xff;
 
-       dev_dbg(&dev->dev, "  encode io %#llx-%#llx\n",
-               (unsigned long long) res->start, (unsigned long long) res->end);
+       dev_dbg(&dev->dev, "  encode io %#lx-%#lx\n", base, base + len - 1);
 }
 
 static void pnpbios_encode_fixed_port(struct pnp_dev *dev, unsigned char *p,
@@ -629,12 +664,20 @@ static void pnpbios_encode_fixed_port(struct pnp_dev *dev, unsigned char *p,
        unsigned long base = res->start;
        unsigned long len = res->end - res->start + 1;
 
+       if (pnp_resource_enabled(res)) {
+               base = res->start;
+               len = res->end - res->start + 1;
+       } else {
+               base = 0;
+               len = 0;
+       }
+
        p[1] = base & 0xff;
        p[2] = (base >> 8) & 0xff;
        p[3] = len & 0xff;
 
-       dev_dbg(&dev->dev, "  encode fixed_io %#llx-%#llx\n",
-               (unsigned long long) res->start, (unsigned long long) res->end);
+       dev_dbg(&dev->dev, "  encode fixed_io %#lx-%#lx\n", base,
+               base + len - 1);
 }
 
 static unsigned char *pnpbios_encode_allocated_resource_data(struct pnp_dev