aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/acpica/acpi_cmbat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/acpica/acpi_cmbat.c')
-rw-r--r--sys/dev/acpica/acpi_cmbat.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/sys/dev/acpica/acpi_cmbat.c b/sys/dev/acpica/acpi_cmbat.c
index 553cce3ab292..7b0d541d2441 100644
--- a/sys/dev/acpica/acpi_cmbat.c
+++ b/sys/dev/acpica/acpi_cmbat.c
@@ -399,8 +399,17 @@ acpi_cmbat_get_bix(void *arg)
sc->bix.rev != ACPI_BIX_REV_1)
ACPI_BIX_REV_MISMATCH_ERR(sc->bix.rev, ACPI_BIX_REV_1);
} else if (ACPI_PKG_VALID_EQ(res, 20)) {/* ACPI 4.0 _BIX */
- if (sc->bix.rev != ACPI_BIX_REV_0)
- ACPI_BIX_REV_MISMATCH_ERR(sc->bix.rev, ACPI_BIX_REV_0);
+ /*
+ * Some models claim to be rev.1, but have a _BIX with only 20
+ * members. Be lenient and treat this as a valid rev.0 _BIX.
+ */
+ if (sc->bix.rev != ACPI_BIX_REV_0) {
+ ACPI_VPRINT(dev, acpi_device_get_parent_softc(dev),
+ "_BIX containing too few objects for revision %u. "
+ "Treating as revision %u instead.\n",
+ sc->bix.rev, ACPI_BIX_REV_0);
+ sc->bix.rev = ACPI_BIX_REV_0;
+ }
} else if (ACPI_PKG_VALID(res, 22)) {
/* _BIX with 22 or more members. */
if (ACPI_BIX_REV_MIN_CHECK(sc->bix.rev, ACPI_BIX_REV_1 + 1)) {