]> git.kernelconcepts.de Git - mv-sheeva.git/commitdiff
Merge git://git.infradead.org/battery-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 14 Jan 2011 17:25:59 +0000 (09:25 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 14 Jan 2011 17:25:59 +0000 (09:25 -0800)
* git://git.infradead.org/battery-2.6: (21 commits)
  power_supply: Add MAX17042 Fuel Gauge Driver
  olpc_battery: Fix up XO-1.5 properties list
  olpc_battery: Add support for CURRENT_NOW and VOLTAGE_NOW
  olpc_battery: Add support for CHARGE_NOW
  olpc_battery: Add support for CHARGE_FULL_DESIGN
  olpc_battery: Ambient temperature is not available on XO-1.5
  jz4740-battery: Should include linux/io.h
  s3c_adc_battery: Add gpio_inverted field to pdata
  power_supply: Don't use flush_scheduled_work()
  power_supply: Fix use after free and memory leak
  gpio-charger: Fix potential race between irq handler and probe/remove
  gpio-charger: Provide default name for the power_supply
  gpio-charger: Check result of kzalloc
  jz4740-battery: Check if platform_data is supplied
  isp1704_charger: Detect charger after probe
  isp1704_charger: Set isp->dev before anything needs it
  isp1704_charger: Detect HUB/Host chargers
  isp1704_charger: Correct length for storing model
  power_supply: Add gpio charger driver
  jz4740-battery: Protect against concurrent battery readings
  ...

1  2 
drivers/power/ds2760_battery.c
drivers/power/intel_mid_battery.c
drivers/power/s3c_adc_battery.c

index e7f89785beefa6114e8afc0136265bdbc69f8c7d,11e1ac508e57903f3fb7aefc6303b2dd5ea970f9..e534290f32561d6d8322375f6baccf086f0c6de1
@@@ -212,7 -212,7 +212,7 @@@ static int ds2760_battery_read_status(s
        if (di->rem_capacity > 100)
                di->rem_capacity = 100;
  
-       if (di->current_uA >= 100L)
+       if (di->current_uA < -100L)
                di->life_sec = -((di->accum_current_uAh - di->empty_uAh) * 36L)
                                        / (di->current_uA / 100L);
        else
@@@ -580,8 -580,10 +580,8 @@@ static int ds2760_battery_remove(struc
  {
        struct ds2760_device_info *di = platform_get_drvdata(pdev);
  
 -      cancel_rearming_delayed_workqueue(di->monitor_wqueue,
 -                                        &di->monitor_work);
 -      cancel_rearming_delayed_workqueue(di->monitor_wqueue,
 -                                        &di->set_charged_work);
 +      cancel_delayed_work_sync(&di->monitor_work);
 +      cancel_delayed_work_sync(&di->set_charged_work);
        destroy_workqueue(di->monitor_wqueue);
        power_supply_unregister(&di->bat);
        kfree(di);
index 36cf402c06772b6b34a7d5dd1c042c46cadd8ad2,236147c3a5c659c9e754429bf412243465994460..bce3a01da2f0f33137e5901c066cc0f3f2a0f48b
@@@ -730,7 -730,8 +730,7 @@@ static __devinit int probe(int irq, str
  power_reg_failed_1:
        power_supply_unregister(&pbi->batt);
  power_reg_failed:
 -      cancel_rearming_delayed_workqueue(pbi->monitor_wqueue,
 -                                              &pbi->monitor_battery);
 +      cancel_delayed_work_sync(&pbi->monitor_battery);
  requestirq_failed:
        destroy_workqueue(pbi->monitor_wqueue);
  wqueue_failed:
@@@ -759,13 -760,14 +759,13 @@@ static int __devexit platform_pmic_batt
        struct pmic_power_module_info *pbi = dev_get_drvdata(&pdev->dev);
  
        free_irq(pbi->irq, pbi);
 -      cancel_rearming_delayed_workqueue(pbi->monitor_wqueue,
 -                                      &pbi->monitor_battery);
 +      cancel_delayed_work_sync(&pbi->monitor_battery);
        destroy_workqueue(pbi->monitor_wqueue);
  
        power_supply_unregister(&pbi->usb);
        power_supply_unregister(&pbi->batt);
  
-       flush_scheduled_work();
+       cancel_work_sync(&pbi->handler);
        kfree(pbi);
        return 0;
  }
index 4a8ae3935b3bfe56fef914ccd3328eabd8425840,7bc5bfe55ce94a22b23771ad2c02d1bea9d666a2..4255f2358b138beb96305e832d778bef9ab15285
@@@ -1,5 -1,5 +1,5 @@@
  /*
 - *    iPAQ h1930/h1940/rx1950 battery controler driver
 + *    iPAQ h1930/h1940/rx1950 battery controller driver
   *    Copyright (c) Vasily Khoruzhick
   *    Based on h1940_battery.c by Arnaud Patard
   *
@@@ -112,6 -112,13 +112,13 @@@ static int calc_full_volt(int volt_val
        return volt_val + cur_val * impedance / 1000;
  }
  
+ static int charge_finished(struct s3c_adc_bat *bat)
+ {
+       return bat->pdata->gpio_inverted ?
+               !gpio_get_value(bat->pdata->gpio_charge_finished) :
+               gpio_get_value(bat->pdata->gpio_charge_finished);
+ }
  static int s3c_adc_bat_get_property(struct power_supply *psy,
                                    enum power_supply_property psp,
                                    union power_supply_propval *val)
  
        if (bat->cable_plugged &&
                ((bat->pdata->gpio_charge_finished < 0) ||
-               !gpio_get_value(bat->pdata->gpio_charge_finished))) {
+               !charge_finished(bat))) {
                lut = bat->pdata->lut_acin;
                lut_size = bat->pdata->lut_acin_cnt;
        }
@@@ -236,8 -243,7 +243,7 @@@ static void s3c_adc_bat_work(struct wor
                }
        } else {
                if ((bat->pdata->gpio_charge_finished >= 0) && is_plugged) {
-                       is_charged = gpio_get_value(
-                               main_bat.pdata->gpio_charge_finished);
+                       is_charged = charge_finished(&main_bat);
                        if (is_charged) {
                                if (bat->pdata->disable_charger)
                                        bat->pdata->disable_charger();
@@@ -427,5 -433,5 +433,5 @@@ static void __exit s3c_adc_bat_exit(voi
  module_exit(s3c_adc_bat_exit);
  
  MODULE_AUTHOR("Vasily Khoruzhick <anarsoul@gmail.com>");
 -MODULE_DESCRIPTION("iPAQ H1930/H1940/RX1950 battery controler driver");
 +MODULE_DESCRIPTION("iPAQ H1930/H1940/RX1950 battery controller driver");
  MODULE_LICENSE("GPL");