{
        union power_supply_propval ret = {0,};
        struct power_supply *psy = dev_get_drvdata(dev);
+       unsigned int *count = data;
 
+       (*count)++;
        if (psy->type != POWER_SUPPLY_TYPE_BATTERY) {
                if (psy->get_property(psy, POWER_SUPPLY_PROP_ONLINE, &ret))
                        return 0;
 int power_supply_is_system_supplied(void)
 {
        int error;
+       unsigned int count = 0;
 
-       error = class_for_each_device(power_supply_class, NULL, NULL,
+       error = class_for_each_device(power_supply_class, NULL, &count,
                                      __power_supply_is_system_supplied);
 
+       /*
+        * If no power class device was found at all, most probably we are
+        * running on a desktop system, so assume we are on mains power.
+        */
+       if (count == 0)
+               return 1;
+
        return error;
 }
 EXPORT_SYMBOL_GPL(power_supply_is_system_supplied);