Merge branches 'pm-cpuidle', 'pm-sleep' and 'pm-powercap'
[linux-block.git] / drivers / phy / ti / phy-tusb1210.c
index 13cd614e12a1d3c8ad98de07a40f63091409d228..751fecd466e3e3b5d8bd1faf3071812dd3df3cf2 100644 (file)
@@ -69,7 +69,6 @@ struct tusb1210 {
        struct delayed_work chg_det_work;
        struct notifier_block psy_nb;
        struct power_supply *psy;
-       struct power_supply *charger;
 #endif
 };
 
@@ -236,19 +235,24 @@ static const char * const tusb1210_chargers[] = {
 
 static bool tusb1210_get_online(struct tusb1210 *tusb)
 {
+       struct power_supply *charger = NULL;
        union power_supply_propval val;
-       int i;
+       bool online = false;
+       int i, ret;
 
-       for (i = 0; i < ARRAY_SIZE(tusb1210_chargers) && !tusb->charger; i++)
-               tusb->charger = power_supply_get_by_name(tusb1210_chargers[i]);
+       for (i = 0; i < ARRAY_SIZE(tusb1210_chargers) && !charger; i++)
+               charger = power_supply_get_by_name(tusb1210_chargers[i]);
 
-       if (!tusb->charger)
+       if (!charger)
                return false;
 
-       if (power_supply_get_property(tusb->charger, POWER_SUPPLY_PROP_ONLINE, &val))
-               return false;
+       ret = power_supply_get_property(charger, POWER_SUPPLY_PROP_ONLINE, &val);
+       if (ret == 0)
+               online = val.intval;
+
+       power_supply_put(charger);
 
-       return val.intval;
+       return online;
 }
 
 static void tusb1210_chg_det_work(struct work_struct *work)
@@ -473,9 +477,6 @@ static void tusb1210_remove_charger_detect(struct tusb1210 *tusb)
                cancel_delayed_work_sync(&tusb->chg_det_work);
                power_supply_unregister(tusb->psy);
        }
-
-       if (tusb->charger)
-               power_supply_put(tusb->charger);
 }
 #else
 static void tusb1210_probe_charger_detect(struct tusb1210 *tusb) { }