tosa_battery: Convert to gpio_request_array() / gpio_free_array()
This change simplifies the implementation. Signed-off-by: Axel Lin <axel.lin@gmail.com> Acked-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com>
This commit is contained in:
parent
389cd203d6
commit
019370d35a
@ -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)
|
|||||||
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) {
|
|
||||||
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)
|
if (ret)
|
||||||
goto err_gpio;
|
return ret;
|
||||||
}
|
|
||||||
|
|
||||||
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 @@ err_psy_reg_main:
|
|||||||
/* 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)
|
|||||||
* 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user