Commit 019370d3 authored by Axel Lin's avatar Axel Lin Committed by Anton Vorontsov

tosa_battery: Convert to gpio_request_array() / gpio_free_array()

This change simplifies the implementation.
Signed-off-by: default avatarAxel Lin <axel.lin@gmail.com>
Acked-by: default avatarDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Signed-off-by: default avatarAnton Vorontsov <cbouatmailru@gmail.com>
parent 389cd203
...@@ -307,25 +307,20 @@ static struct tosa_bat tosa_bat_bu = { ...@@ -307,25 +307,20 @@ static struct tosa_bat tosa_bat_bu = {
.adc_temp_divider = -1, .adc_temp_divider = -1,
}; };
static struct { static struct gpio tosa_bat_gpios[] = {
int gpio; { TOSA_GPIO_CHARGE_OFF, GPIOF_OUT_INIT_HIGH, "main charge off" },
char *name; { TOSA_GPIO_CHARGE_OFF_JC, GPIOF_OUT_INIT_HIGH, "jacket charge off" },
bool output; { TOSA_GPIO_BAT_SW_ON, GPIOF_OUT_INIT_LOW, "battery switch" },
int value; { TOSA_GPIO_BAT0_V_ON, GPIOF_OUT_INIT_LOW, "main battery" },
} gpios[] = { { TOSA_GPIO_BAT1_V_ON, GPIOF_OUT_INIT_LOW, "jacket battery" },
{ TOSA_GPIO_CHARGE_OFF, "main charge off", 1, 1 }, { TOSA_GPIO_BAT1_TH_ON, GPIOF_OUT_INIT_LOW, "main battery temp" },
{ TOSA_GPIO_CHARGE_OFF_JC, "jacket charge off", 1, 1 }, { TOSA_GPIO_BAT0_TH_ON, GPIOF_OUT_INIT_LOW, "jacket battery temp" },
{ TOSA_GPIO_BAT_SW_ON, "battery switch", 1, 0 }, { TOSA_GPIO_BU_CHRG_ON, GPIOF_OUT_INIT_LOW, "backup battery" },
{ TOSA_GPIO_BAT0_V_ON, "main battery", 1, 0 }, { TOSA_GPIO_BAT0_CRG, GPIOF_IN, "main battery full" },
{ TOSA_GPIO_BAT1_V_ON, "jacket battery", 1, 0 }, { TOSA_GPIO_BAT1_CRG, GPIOF_IN, "jacket battery full" },
{ TOSA_GPIO_BAT1_TH_ON, "main battery temp", 1, 0 }, { TOSA_GPIO_BAT0_LOW, GPIOF_IN, "main battery low" },
{ TOSA_GPIO_BAT0_TH_ON, "jacket battery temp", 1, 0 }, { TOSA_GPIO_BAT1_LOW, GPIOF_IN, "jacket battery low" },
{ TOSA_GPIO_BU_CHRG_ON, "backup battery", 1, 0 }, { TOSA_GPIO_JACKET_DETECT, GPIOF_IN, "jacket detect" },
{ TOSA_GPIO_BAT0_CRG, "main battery full", 0, 0 },
{ TOSA_GPIO_BAT1_CRG, "jacket battery full", 0, 0 },
{ TOSA_GPIO_BAT0_LOW, "main battery low", 0, 0 },
{ TOSA_GPIO_BAT1_LOW, "jacket battery low", 0, 0 },
{ TOSA_GPIO_JACKET_DETECT, "jacket detect", 0, 0 },
}; };
#ifdef CONFIG_PM #ifdef CONFIG_PM
...@@ -350,27 +345,13 @@ static int tosa_bat_resume(struct platform_device *dev) ...@@ -350,27 +345,13 @@ static int tosa_bat_resume(struct platform_device *dev)
static int __devinit tosa_bat_probe(struct platform_device *dev) static int __devinit tosa_bat_probe(struct platform_device *dev)
{ {
int ret; int ret;
int i;
if (!machine_is_tosa()) if (!machine_is_tosa())
return -ENODEV; return -ENODEV;
for (i = 0; i < ARRAY_SIZE(gpios); i++) { ret = gpio_request_array(tosa_bat_gpios, ARRAY_SIZE(tosa_bat_gpios));
ret = gpio_request(gpios[i].gpio, gpios[i].name); if (ret)
if (ret) { return ret;
i--;
goto err_gpio;
}
if (gpios[i].output)
ret = gpio_direction_output(gpios[i].gpio,
gpios[i].value);
else
ret = gpio_direction_input(gpios[i].gpio);
if (ret)
goto err_gpio;
}
mutex_init(&tosa_bat_main.work_lock); mutex_init(&tosa_bat_main.work_lock);
mutex_init(&tosa_bat_jacket.work_lock); mutex_init(&tosa_bat_jacket.work_lock);
...@@ -424,18 +405,12 @@ static int __devinit tosa_bat_probe(struct platform_device *dev) ...@@ -424,18 +405,12 @@ static int __devinit tosa_bat_probe(struct platform_device *dev)
/* see comment in tosa_bat_remove */ /* see comment in tosa_bat_remove */
cancel_work_sync(&bat_work); cancel_work_sync(&bat_work);
i--; gpio_free_array(tosa_bat_gpios, ARRAY_SIZE(tosa_bat_gpios));
err_gpio:
for (; i >= 0; i--)
gpio_free(gpios[i].gpio);
return ret; return ret;
} }
static int __devexit tosa_bat_remove(struct platform_device *dev) static int __devexit tosa_bat_remove(struct platform_device *dev)
{ {
int i;
free_irq(gpio_to_irq(TOSA_GPIO_JACKET_DETECT), &tosa_bat_jacket); free_irq(gpio_to_irq(TOSA_GPIO_JACKET_DETECT), &tosa_bat_jacket);
free_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG), &tosa_bat_jacket); free_irq(gpio_to_irq(TOSA_GPIO_BAT1_CRG), &tosa_bat_jacket);
free_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG), &tosa_bat_main); free_irq(gpio_to_irq(TOSA_GPIO_BAT0_CRG), &tosa_bat_main);
...@@ -450,10 +425,7 @@ static int __devexit tosa_bat_remove(struct platform_device *dev) ...@@ -450,10 +425,7 @@ static int __devexit tosa_bat_remove(struct platform_device *dev)
* unregistered now. * unregistered now.
*/ */
cancel_work_sync(&bat_work); cancel_work_sync(&bat_work);
gpio_free_array(tosa_bat_gpios, ARRAY_SIZE(tosa_bat_gpios));
for (i = ARRAY_SIZE(gpios) - 1; i >= 0; i--)
gpio_free(gpios[i].gpio);
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment