Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux...
[pandora-kernel.git] / arch / sparc / kernel / ioport.c
index 1c9c80a..d0479e2 100644 (file)
@@ -65,9 +65,6 @@ static inline void dma_make_coherent(unsigned long pa, unsigned long len)
 }
 #endif
 
-static struct resource *_sparc_find_resource(struct resource *r,
-                                            unsigned long);
-
 static void __iomem *_sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz);
 static void __iomem *_sparc_alloc_io(unsigned int busno, unsigned long phys,
     unsigned long size, char *name);
@@ -143,7 +140,11 @@ void iounmap(volatile void __iomem *virtual)
        unsigned long vaddr = (unsigned long) virtual & PAGE_MASK;
        struct resource *res;
 
-       if ((res = _sparc_find_resource(&sparc_iomap, vaddr)) == NULL) {
+       /*
+        * XXX Too slow. Can have 8192 DVMA pages on sun4m in the worst case.
+        * This probably warrants some sort of hashing.
+       */
+       if ((res = lookup_resource(&sparc_iomap, vaddr)) == NULL) {
                printk("free_io/iounmap: cannot free %lx\n", vaddr);
                return;
        }
@@ -228,7 +229,7 @@ _sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz)
        }
 
        pa &= PAGE_MASK;
-       sparc_mapiorange(bus, pa, res->start, res->end - res->start + 1);
+       sparc_mapiorange(bus, pa, res->start, resource_size(res));
 
        return (void __iomem *)(unsigned long)(res->start + offset);
 }
@@ -240,7 +241,7 @@ static void _sparc_free_io(struct resource *res)
 {
        unsigned long plen;
 
-       plen = res->end - res->start + 1;
+       plen = resource_size(res);
        BUG_ON((plen & (PAGE_SIZE-1)) != 0);
        sparc_unmapiorange(res->start, plen);
        release_resource(res);
@@ -319,7 +320,7 @@ static void sbus_free_coherent(struct device *dev, size_t n, void *p,
        struct resource *res;
        struct page *pgv;
 
-       if ((res = _sparc_find_resource(&_sparc_dvma,
+       if ((res = lookup_resource(&_sparc_dvma,
            (unsigned long)p)) == NULL) {
                printk("sbus_free_consistent: cannot free %p\n", p);
                return;
@@ -331,9 +332,9 @@ static void sbus_free_coherent(struct device *dev, size_t n, void *p,
        }
 
        n = PAGE_ALIGN(n);
-       if ((res->end-res->start)+1 != n) {
+       if (resource_size(res) != n) {
                printk("sbus_free_consistent: region 0x%lx asked 0x%zx\n",
-                   (long)((res->end-res->start)+1), n);
+                   (long)resource_size(res), n);
                return;
        }
 
@@ -492,7 +493,7 @@ static void pci32_free_coherent(struct device *dev, size_t n, void *p,
 {
        struct resource *res;
 
-       if ((res = _sparc_find_resource(&_sparc_dvma,
+       if ((res = lookup_resource(&_sparc_dvma,
            (unsigned long)p)) == NULL) {
                printk("pci_free_consistent: cannot free %p\n", p);
                return;
@@ -504,9 +505,9 @@ static void pci32_free_coherent(struct device *dev, size_t n, void *p,
        }
 
        n = PAGE_ALIGN(n);
-       if ((res->end-res->start)+1 != n) {
+       if (resource_size(res) != n) {
                printk("pci_free_consistent: region 0x%lx asked 0x%lx\n",
-                   (long)((res->end-res->start)+1), (long)n);
+                   (long)resource_size(res), (long)n);
                return;
        }
 
@@ -715,25 +716,6 @@ static const struct file_operations sparc_io_proc_fops = {
 };
 #endif /* CONFIG_PROC_FS */
 
-/*
- * This is a version of find_resource and it belongs to kernel/resource.c.
- * Until we have agreement with Linus and Martin, it lingers here.
- *
- * XXX Too slow. Can have 8192 DVMA pages on sun4m in the worst case.
- * This probably warrants some sort of hashing.
- */
-static struct resource *_sparc_find_resource(struct resource *root,
-                                            unsigned long hit)
-{
-       struct resource *tmp;
-
-       for (tmp = root->child; tmp != 0; tmp = tmp->sibling) {
-               if (tmp->start <= hit && tmp->end >= hit)
-                       return tmp;
-       }
-       return NULL;
-}
-
 static void register_proc_sparc_ioport(void)
 {
 #ifdef CONFIG_PROC_FS