acpi_cmbat: sync with FreeBSD 7.2
authorAlexander Polakov <polachok@gmail.com>
Tue, 3 Nov 2009 14:00:44 +0000 (17:00 +0300)
committerAlexander Polakov <polachok@gmail.com>
Sun, 8 Nov 2009 18:00:31 +0000 (21:00 +0300)
sys/dev/acpica5/acpi_cmbat.c

index cf2ffce..a69b4bc 100644 (file)
  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
- *
- * $FreeBSD: src/sys/dev/acpica/acpi_cmbat.c,v 1.46 2007/03/22 18:16:40 jkim Exp $
- * $DragonFly: src/sys/dev/acpica5/acpi_cmbat.c,v 1.12 2008/09/29 06:59:45 hasso Exp $
+ * __FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cmbat.c,v 1.46.8.1 2009/04/15 03:14:26 kensmith Exp $");
  */
 
+#include <sys/cdefs.h>
+
 #include "opt_acpi.h"
 #include <sys/param.h>
 #include <sys/kernel.h>
 #include <sys/module.h>
 #include <sys/bus.h>
+#include <sys/ioccom.h>
+
 #include <sys/rman.h>
 #include <sys/malloc.h>
-#include <sys/thread2.h>
 
 #include "acpi.h"
 #include <dev/acpica5/acpivar.h>
@@ -67,6 +68,8 @@ struct acpi_cmbat_softc {
     struct timespec bst_lastupdated;
 };
 
+ACPI_SERIAL_DECL(cmbat, "ACPI cmbat");
+
 static int             acpi_cmbat_probe(device_t dev);
 static int             acpi_cmbat_attach(device_t dev);
 static int             acpi_cmbat_detach(device_t dev);
@@ -205,6 +208,8 @@ acpi_cmbat_info_expired(struct timespec *lastupdated)
 {
     struct timespec    curtime;
 
+    ACPI_SERIAL_ASSERT(cmbat);
+
     if (lastupdated == NULL)
        return (TRUE);
     if (!timespecisset(lastupdated))
@@ -219,6 +224,9 @@ acpi_cmbat_info_expired(struct timespec *lastupdated)
 static void
 acpi_cmbat_info_updated(struct timespec *lastupdated)
 {
+
+    ACPI_SERIAL_ASSERT(cmbat);
+
     if (lastupdated != NULL)
        getnanotime(lastupdated);
 }
@@ -233,6 +241,8 @@ acpi_cmbat_get_bst(void *arg)
     ACPI_BUFFER        bst_buffer;
     device_t dev;
 
+    ACPI_SERIAL_ASSERT(cmbat);
+
     dev = arg;
     sc = device_get_softc(dev);
     h = acpi_get_handle(dev);
@@ -285,9 +295,10 @@ end:
 static void
 acpi_cmbat_get_bif_task(void *arg)
 {
-    crit_enter();
+
+    ACPI_SERIAL_BEGIN(cmbat);
     acpi_cmbat_get_bif(arg);
-    crit_exit();
+    ACPI_SERIAL_END(cmbat);
 }
 
 static void
@@ -300,6 +311,8 @@ acpi_cmbat_get_bif(void *arg)
     ACPI_BUFFER        bif_buffer;
     device_t dev;
 
+    ACPI_SERIAL_ASSERT(cmbat);
+
     dev = arg;
     sc = device_get_softc(dev);
     h = acpi_get_handle(dev);
@@ -366,7 +379,7 @@ acpi_cmbat_bif(device_t dev, struct acpi_bif *bifp)
      * the info has changed.  Many systems apparently take a long time to
      * process a _BIF call so we avoid it if possible.
      */
-    crit_enter();
+    ACPI_SERIAL_BEGIN(cmbat);
     bifp->units = sc->bif.units;
     bifp->dcap = sc->bif.dcap;
     bifp->lfcap = sc->bif.lfcap;
@@ -380,7 +393,7 @@ acpi_cmbat_bif(device_t dev, struct acpi_bif *bifp)
     strncpy(bifp->serial, sc->bif.serial, sizeof(sc->bif.serial));
     strncpy(bifp->type, sc->bif.type, sizeof(sc->bif.type));
     strncpy(bifp->oeminfo, sc->bif.oeminfo, sizeof(sc->bif.oeminfo));
-    crit_exit();
+    ACPI_SERIAL_END(cmbat);
 
     return (0);
 }
@@ -392,7 +405,7 @@ acpi_cmbat_bst(device_t dev, struct acpi_bst *bstp)
 
     sc = device_get_softc(dev);
 
-    crit_enter();
+    ACPI_SERIAL_BEGIN(cmbat);
     if (acpi_BatteryIsPresent(dev)) {
        acpi_cmbat_get_bst(dev);
        bstp->state = sc->bst.state;
@@ -401,7 +414,7 @@ acpi_cmbat_bst(device_t dev, struct acpi_bst *bstp)
        bstp->volt = sc->bst.volt;
     } else
        bstp->state = ACPI_BATT_STAT_NOT_PRESENT;
-    crit_exit();
+    ACPI_SERIAL_END(cmbat);
 
     return (0);
 }
@@ -423,7 +436,7 @@ acpi_cmbat_init_battery(void *arg)
      * embedded controller isn't always ready just after boot, we may have
      * to wait a while.
      */
-    for (retry = 0; retry < ACPI_CMBAT_RETRY_MAX; retry++, AcpiOsSleep(10)) {
+    for (retry = 0; retry < ACPI_CMBAT_RETRY_MAX; retry++, AcpiOsSleep(10000)) {
        /* batteries on DOCK can be ejected w/ DOCK during retrying */
        if (!device_is_attached(dev))
            return;
@@ -435,7 +448,7 @@ acpi_cmbat_init_battery(void *arg)
         * Only query the battery if this is the first try or the specific
         * type of info is still invalid.
         */
-       crit_enter();
+       ACPI_SERIAL_BEGIN(cmbat);
        if (retry == 0 || !acpi_battery_bst_valid(&sc->bst)) {
            timespecclear(&sc->bst_lastupdated);
            acpi_cmbat_get_bst(dev);
@@ -445,7 +458,7 @@ acpi_cmbat_init_battery(void *arg)
 
        valid = acpi_battery_bst_valid(&sc->bst) &&
            acpi_battery_bif_valid(&sc->bif);
-       crit_exit();
+       ACPI_SERIAL_END(cmbat);
 
        if (valid)
            break;