|
@@ -441,9 +441,13 @@ static int acpi_ac_get_present(struct acpi_sbs *sbs)
|
|
|
|
|
|
/*
|
|
|
* The spec requires that bit 4 always be 1. If it's not set, assume
|
|
|
- * that the implementation doesn't support an SBS charger
|
|
|
+ * that the implementation doesn't support an SBS charger.
|
|
|
+ *
|
|
|
+ * And on some MacBooks a status of 0xffff is always returned, no
|
|
|
+ * matter whether the charger is plugged in or not, which is also
|
|
|
+ * wrong, so ignore the SBS charger for those too.
|
|
|
*/
|
|
|
- if (!((status >> 4) & 0x1))
|
|
|
+ if (!((status >> 4) & 0x1) || status == 0xffff)
|
|
|
return -ENODEV;
|
|
|
|
|
|
sbs->charger_present = (status >> 15) & 0x1;
|