[PATCH] ARM: pxa/raumfeld: check charge state after resume

Eric Miao eric.y.miao at gmail.com
Mon May 31 11:02:41 EDT 2010


On Mon, May 31, 2010 at 10:02 PM, Daniel Mack <daniel at caiaq.de> wrote:
> Use the resume callback of the pda_power supply framework to check for a
> 'charge finished' event that might have occured during the sleep phase.
>
> Signed-off-by: Daniel Mack <daniel at caiaq.de>
> Cc: Eric Miao <eric.y.miao at gmail.com>

Applied.

> ---
>  arch/arm/mach-pxa/raumfeld.c |   29 +++++++++++++++++++++--------
>  1 files changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c
> index 1c8cd39..7582a12 100644
> --- a/arch/arm/mach-pxa/raumfeld.c
> +++ b/arch/arm/mach-pxa/raumfeld.c
> @@ -750,13 +750,32 @@ static int raumfeld_is_usb_online(void)
>
>  static char *raumfeld_power_supplicants[] = { "ds2760-battery.0" };
>
> +static void raumfeld_power_signal_charged(void)
> +{
> +       struct power_supply *psy =
> +               power_supply_get_by_name(raumfeld_power_supplicants[0]);
> +
> +       if (psy)
> +               power_supply_set_battery_charged(psy);
> +}
> +
> +static int raumfeld_power_resume(void)
> +{
> +       /* check if GPIO_CHARGE_DONE went low while we were sleeping */
> +       if (!gpio_get_value(GPIO_CHARGE_DONE))
> +               raumfeld_power_signal_charged();
> +
> +       return 0;
> +}
> +
>  static struct pda_power_pdata power_supply_info = {
>        .init                   = power_supply_init,
>        .is_ac_online           = raumfeld_is_ac_online,
>        .is_usb_online          = raumfeld_is_usb_online,
>        .exit                   = power_supply_exit,
>        .supplied_to            = raumfeld_power_supplicants,
> -       .num_supplicants        = ARRAY_SIZE(raumfeld_power_supplicants)
> +       .num_supplicants        = ARRAY_SIZE(raumfeld_power_supplicants),
> +       .resume                 = raumfeld_power_resume,
>  };
>
>  static struct resource power_supply_resources[] = {
> @@ -771,13 +790,7 @@ static struct resource power_supply_resources[] = {
>
>  static irqreturn_t charge_done_irq(int irq, void *dev_id)
>  {
> -       struct power_supply *psy;
> -
> -       psy = power_supply_get_by_name("ds2760-battery.0");
> -
> -       if (psy)
> -               power_supply_set_battery_charged(psy);
> -
> +       raumfeld_power_signal_charged();
>        return IRQ_HANDLED;
>  }
>
> --
> 1.7.1
>
>



More information about the linux-arm-kernel mailing list