Author: fabient
Date: Wed Jun 20 09:01:44 2012
New Revision: 237295
URL: http://svn.freebsd.org/changeset/base/237295

Log:
  Fix viawd(4) that was only working as a module.
  
  Obtained from:        jhb
  MFC after: 3 days

Modified:
  head/sys/dev/viawd/viawd.c

Modified: head/sys/dev/viawd/viawd.c
==============================================================================
--- head/sys/dev/viawd/viawd.c  Wed Jun 20 08:29:24 2012        (r237294)
+++ head/sys/dev/viawd/viawd.c  Wed Jun 20 09:01:44 2012        (r237295)
@@ -168,14 +168,18 @@ viawd_attach(device_t dev)
        }
 
        /* Allocate I/O register space. */
-       sc->wd_rid = 0;
-       sc->wd_res = bus_alloc_resource(dev, SYS_RES_MEMORY, &sc->wd_rid,
-           pmbase, pmbase + VIAWD_MEM_LEN - 1, VIAWD_MEM_LEN,
+       sc->wd_rid = VIAWD_CONFIG_BASE;
+       sc->wd_res = bus_alloc_resource_any(sb_dev, SYS_RES_MEMORY, &sc->wd_rid,
            RF_ACTIVE | RF_SHAREABLE);
        if (sc->wd_res == NULL) {
                device_printf(dev, "Unable to map watchdog memory\n");
                goto fail;
        }
+       if (rman_get_size(sc->wd_res) < VIAWD_MEM_LEN) {
+               device_printf(dev, "Bad size for watchdog memory: %#x\n",
+                   (unsigned)rman_get_size(sc->wd_res));
+               goto fail;
+       }
 
        /* Check if watchdog fired last boot. */
        reg = viawd_read_4(sc, VIAWD_MEM_CTRL);
@@ -192,7 +196,7 @@ viawd_attach(device_t dev)
        return (0);
 fail:
        if (sc->wd_res != NULL)
-               bus_release_resource(dev, SYS_RES_MEMORY,
+               bus_release_resource(sb_dev, SYS_RES_MEMORY,
                    sc->wd_rid, sc->wd_res);
        return (ENXIO);
 }
@@ -224,7 +228,7 @@ viawd_detach(device_t dev)
        }
 
        if (sc->wd_res != NULL)
-               bus_release_resource(sc->dev, SYS_RES_MEMORY,
+               bus_release_resource(sc->sb_dev, SYS_RES_MEMORY,
                    sc->wd_rid, sc->wd_res);
 
        return (0);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to