Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/cardbus Back out my rbus change since it seems to br...



details:   https://anonhg.NetBSD.org/src/rev/e9279899edf0
branches:  trunk
changeset: 485912:e9279899edf0
user:      augustss <augustss%NetBSD.org@localhost>
date:      Mon May 08 19:25:46 2000 +0000

description:
Back out my rbus change since it seems to break things.

diffstat:

 sys/dev/cardbus/rbus.c |  408 +++++++++++++++++++++++++-----------------------
 1 files changed, 211 insertions(+), 197 deletions(-)

diffs (truncated from 510 to 300 lines):

diff -r 57f59f93087a -r e9279899edf0 sys/dev/cardbus/rbus.c
--- a/sys/dev/cardbus/rbus.c    Mon May 08 19:25:10 2000 +0000
+++ b/sys/dev/cardbus/rbus.c    Mon May 08 19:25:46 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: rbus.c,v 1.4 2000/05/08 14:00:05 augustss Exp $        */
+/*     $NetBSD: rbus.c,v 1.5 2000/05/08 19:25:46 augustss Exp $        */
 /*
  * Copyright (c) 1999
  *     HAYAKAWA Koichi.  All rights reserved.
@@ -42,7 +42,7 @@
 
 #include <dev/cardbus/rbus.h>
 
-/*#define RBUS_DEBUG*/
+/* #define RBUS_DEBUG */
 
 #if defined RBUS_DEBUG
 #define STATIC
@@ -63,16 +63,16 @@
 
 int
 rbus_space_alloc(rbt, addr, size, mask, align, flags, addrp, bshp)
-       rbus_tag_t rbt;
-       bus_addr_t addr;
-       bus_size_t size;
-       bus_addr_t mask, align;
-       int flags;
-       bus_addr_t *addrp;
-       bus_space_handle_t *bshp;
+     rbus_tag_t rbt;
+     bus_addr_t addr;
+     bus_size_t size;
+     bus_addr_t mask, align;
+     int flags;
+     bus_addr_t *addrp;
+     bus_space_handle_t *bshp;
 {
-       return rbus_space_alloc_subregion(rbt, rbt->rb_start, rbt->rb_end,
-                  addr, size, mask, align, flags, addrp, bshp);
+  return rbus_space_alloc_subregion(rbt, rbt->rb_start, rbt->rb_end, addr,
+                                   size, mask, align, flags, addrp, bshp);
 }
 
 
@@ -80,118 +80,129 @@
 
 int
 rbus_space_alloc_subregion(rbt, substart, subend, addr, size, mask, align, flags, addrp, bshp)
-       rbus_tag_t rbt;
-       bus_addr_t addr;
-       bus_addr_t substart;
-       bus_addr_t subend;
-       bus_size_t size;
-       bus_addr_t mask, align;
-       int flags;
-       bus_addr_t *addrp;
-       bus_space_handle_t *bshp;
+     rbus_tag_t rbt;
+     bus_addr_t addr;
+     bus_addr_t substart;
+     bus_addr_t subend;
+     bus_size_t size;
+     bus_addr_t mask, align;
+     int flags;
+     bus_addr_t *addrp;
+     bus_space_handle_t *bshp;
 {
-       bus_addr_t decodesize = mask + 1;
-       bus_addr_t boundary, search_addr;
-       int val;
-       bus_addr_t result;
-       u_long ures;
-       int exflags = EX_FAST | EX_NOWAIT;
+  bus_addr_t decodesize = mask + 1;
+  bus_addr_t boundary, search_addr;
+  int val = 0;
+  bus_addr_t result;
+  int exflags = EX_FAST | EX_NOWAIT;
 
-       DPRINTF(("rbus_space_alloc: addr 0x%lx, size 0x%lx, mask 0x%lx, "
-                "align 0x%lx, substart 0x%lx, subend 0x%lx\n",
-                addr, size, mask, align, substart, subend));
+  DPRINTF(("rbus_space_alloc: addr %lx, size %lx, mask %lx, align %lx\n",
+          addr, size, mask, align));
 
-       addr += rbt->rb_offset;
+  addr += rbt->rb_offset;
 
-       if (mask == 0)
-               /* FULL Decode */
-               decodesize = 0;
-
-       if (rbt->rb_flags == RBUS_SPACE_ASK_PARENT)
-               return rbus_space_alloc(rbt->rb_parent, addr, size, mask,
-                          align, flags, addrp, bshp);
+  if (mask == 0) {
+    /* FULL Decode */
+    decodesize = 0;
+  }
 
-       if (rbt->rb_flags != RBUS_SPACE_SHARE &&
-           rbt->rb_flags != RBUS_SPACE_DEDICATE)
-               return 1;
+  if (rbt->rb_flags == RBUS_SPACE_ASK_PARENT) {
+    return rbus_space_alloc(rbt->rb_parent, addr, size, mask, align, flags,
+                           addrp, bshp);
+  } else if (rbt->rb_flags == RBUS_SPACE_SHARE ||
+            rbt->rb_flags == RBUS_SPACE_DEDICATE) {
+    /* rbt has its own sh_extent */
 
-       /* rbt has its own sh_extent */
-
-       /* sanity check: the subregion [substart, subend] should be
-          smaller than the region included in sh_extent */
-       if (substart < rbt->rb_ext->ex_start || subend > rbt->rb_ext->ex_end)
-               return 1;
+    /* sanity check: the subregion [substart, subend] should be
+       smaller than the region included in sh_extent */
+    if (substart < rbt->rb_ext->ex_start || subend > rbt->rb_ext->ex_end) {
+      return 1;
+    }
 
-       if (decodesize == align) {
-               if (extent_alloc_subregion(rbt->rb_ext, substart, subend,
-                       size, align, 0, exflags, &ures)) {
-                       return 1;
-               }
-       } else if (decodesize == 0 || addr != 0) {
-               /* maybe, the register is overflowed. */
-               if (extent_alloc_subregion(rbt->rb_ext, addr, addr + size,
-                       size, 1, 0, exflags, &ures)) {
-                       return 1;
-               }
-       } else {
-               boundary = decodesize > align ? decodesize : align;
-               search_addr = (substart & ~(boundary - 1)) + addr;
+    if (decodesize == align) {
+      if(extent_alloc_subregion(rbt->rb_ext, substart, subend, size, align, 0,
+                               exflags, (u_long *)&result)) {
+       return 1;
+      }
+    } else if (decodesize == 0) {
+      /* maybe, the resister is overflowed. */
+      
+      if (extent_alloc_subregion(rbt->rb_ext, addr, addr + size, size,
+                                0, 0, exflags, (u_long *)&result)) {
+       return 1;
+      }
+    } else {
 
-               if (search_addr < substart)
-                       search_addr += boundary;
+      boundary = decodesize > align ? decodesize : align;
+
+      search_addr = (substart & ~(boundary - 1)) + addr;
+
+      if (search_addr < substart) {
+       search_addr += boundary;
+      }
 
-               val = 1; 
-               for (; search_addr + size <= subend; search_addr += boundary) {
-                       val = extent_alloc_subregion(rbt->rb_ext, search_addr,
-                                 search_addr + size, size, align, 0, exflags,
-                                 &ures);
-                       if (val == 0)
-                               break;
-               }
-               if (val)
-                       return 1;
+      for (; search_addr + size <= subend; search_addr += boundary) {
+       val = extent_alloc_subregion(rbt->rb_ext,search_addr, search_addr+size,
+                               size, align, 0, exflags, (u_long *)&result);
+       if (val == 0) {
+         break;
        }
-       result = (bus_addr_t)ures;
+      }
+      if (val) {
+       return 1;
+      }
+    }
+
+    if(md_space_map(rbt->rb_bt, result, size, flags, bshp)) {
+      /* map failed */
+      extent_free(rbt->rb_ext, result, size, exflags);
+      return 1;
+    }
 
-       if (md_space_map(rbt->rb_bt, result, size, flags, bshp)) {
-               /* map failed */
-               extent_free(rbt->rb_ext, result, size, exflags);
-               return 1;
-       }
+    if (addrp != NULL) {
+      *addrp = result + rbt->rb_offset;
+    }
+    return 0;
 
-       if (addrp != NULL)
-               *addrp = result + rbt->rb_offset;
-       return 0;
+  } else {
+    /* error!! */
+    return 1;
+  }
+  return 1;
 }
 
 
+
+
+
 int
 rbus_space_free(rbt, bsh, size, addrp)
-       rbus_tag_t rbt;
-       bus_space_handle_t bsh;
-       bus_size_t size;
-       bus_addr_t *addrp;
+     rbus_tag_t rbt;
+     bus_space_handle_t bsh;
+     bus_size_t size;
+     bus_addr_t *addrp;
 {
-       int exflags = EX_FAST | EX_NOWAIT;
-       bus_addr_t addr;
-       int status = 1;
+  int exflags = EX_FAST | EX_NOWAIT;
+  bus_addr_t addr;
+  int status = 1;
 
-       if (rbt->rb_flags == RBUS_SPACE_ASK_PARENT) {
-               status = rbus_space_free(rbt->rb_parent, bsh, size, &addr);
-       } else if (rbt->rb_flags == RBUS_SPACE_SHARE ||
-                  rbt->rb_flags == RBUS_SPACE_DEDICATE) {
-               md_space_unmap(rbt->rb_bt, bsh, size, &addr);
+  if (rbt->rb_flags == RBUS_SPACE_ASK_PARENT) {
+    status = rbus_space_free(rbt->rb_parent, bsh, size, &addr);
+  } else if (rbt->rb_flags == RBUS_SPACE_SHARE ||
+            rbt->rb_flags == RBUS_SPACE_DEDICATE) {
+    md_space_unmap(rbt->rb_bt, bsh, size, &addr);
 
-               extent_free(rbt->rb_ext, addr, size, exflags);
+    extent_free(rbt->rb_ext, addr, size, exflags);
 
-               status = 0;
-       } else {
-               /* error. INVALID rbustag */
-               status = 1;
-       }
-       if (addrp != NULL)
-               *addrp = addr;
-       return status;
+    status = 0;
+  } else {
+    /* error. INVALID rbustag */
+    status = 1;
+  }
+  if (addrp != NULL) {
+    *addrp = addr;
+  }
+  return status;
 }
 
 
@@ -205,42 +216,43 @@
  */
 static rbus_tag_t
 rbus_new_body(bt, parent, ex, start, end, offset, flags)
-       bus_space_tag_t bt;
-       rbus_tag_t parent;
-       struct extent *ex;
-       bus_addr_t start, end, offset;
-       int flags;
+     bus_space_tag_t bt;
+     rbus_tag_t parent;
+     struct extent *ex;
+     bus_addr_t start, end, offset;
+     int flags;
 {
-       rbus_tag_t rb;
+  rbus_tag_t rb;
 
-       /* sanity check */
-       if (parent != NULL) {
-               if (start < parent->rb_start || end > parent->rb_end) {
-                       /* out of range: [start, size] should be containd in parent space */
-                       return 0;
-                       /* Should I invoke panic? */
-               }
-       }
+  /* sanity check */
+  if (parent != NULL) {
+    if (start < parent->rb_start || end > parent->rb_end) {
+      /* out of range: [start, size] should be containd in parent space */
+      return 0;
+      /* Should I invoke panic? */
+    }
+  }
 



Home | Main Index | Thread Index | Old Index