1 From 4ef7289137132959e3db5a1e77580ff9db185d90 Mon Sep 17 00:00:00 2001
2 From: Dmitry Baryshkov <dbaryshkov@gmail.com>
3 Date: Fri, 8 Feb 2008 01:13:54 +0300
4 Subject: [PATCH 63/64] patch tosa-bat-jacket-detect
7 drivers/power/tosa_battery.c | 21 +++++++++++++++------
8 1 files changed, 15 insertions(+), 6 deletions(-)
10 diff --git a/drivers/power/tosa_battery.c b/drivers/power/tosa_battery.c
11 index 2db9116..70beed2 100644
12 --- a/drivers/power/tosa_battery.c
13 +++ b/drivers/power/tosa_battery.c
14 @@ -137,8 +137,7 @@ static int tosa_bat_get_property(struct power_supply *psy,
17 static bool tosa_jacket_bat_is_present(struct tosa_bat *bat) {
20 + return gpio_get_value(TOSA_GPIO_JACKET_DETECT) == 0;
23 static void tosa_bat_external_power_changed(struct power_supply *psy)
24 @@ -146,9 +145,9 @@ static void tosa_bat_external_power_changed(struct power_supply *psy)
25 schedule_work(&bat_work);
28 -static irqreturn_t tosa_bat_full_isr(int irq, void *data)
29 +static irqreturn_t tosa_bat_gpio_isr(int irq, void *data)
31 - printk(KERN_ERR "bat_full irq: %d\n", gpio_get_value(irq_to_gpio(irq)));
32 + printk(KERN_ERR "bat_gpio irq: %d\n", gpio_get_value(irq_to_gpio(irq)));
33 schedule_work(&bat_work);
36 @@ -334,6 +333,7 @@ static struct {
37 { TOSA_GPIO_BAT1_CRG, "jacket battery full", 0, 0 },
38 { TOSA_GPIO_BAT0_LOW, "main battery low", 0, 0 },
39 { TOSA_GPIO_BAT1_LOW, "jacket battery low", 0, 0 },
40 + { TOSA_GPIO_JACKET_DETECT, "jacket detect", 0, 0 },
44 @@ -395,19 +395,27 @@ static int __devinit tosa_bat_probe(struct platform_device *dev)
47 ret = request_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG),
48 - tosa_bat_full_isr, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
49 + tosa_bat_gpio_isr, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
50 "main full", &tosa_bat_main);
54 ret = request_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG),
55 - tosa_bat_full_isr, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
56 + tosa_bat_gpio_isr, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
57 "jacket full", &tosa_bat_jacket);
59 + goto err_req_jacket;
61 + ret = request_irq(gpio_to_irq(TOSA_GPIO_JACKET_DETECT),
62 + tosa_bat_gpio_isr, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
63 + "jacket detect", &tosa_bat_jacket);
65 schedule_work(&bat_work);
69 + free_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG), &tosa_bat_jacket);
71 free_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG), &tosa_bat_main);
73 power_supply_unregister(&tosa_bat_bu.psy);
74 @@ -429,6 +437,7 @@ static int __devexit tosa_bat_remove(struct platform_device *dev)
78 + free_irq(gpio_to_irq(TOSA_GPIO_JACKET_DETECT), &tosa_bat_jacket);
79 free_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG), &tosa_bat_jacket);
80 free_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG), &tosa_bat_main);