power: supply: bq24190_charger: Use i2c-core irq-mapping code
The i2c-core already maps of irqs before calling the driver's probe function and there are no in tree users of bq24190_platform_data->gpio_int. Remove the redundant custom irq-mapping code and just use client->irq. Cc: Liam Breck <kernel@networkimprov.net> Cc: Tony Lindgren <tony@atomide.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
This commit is contained in:
parent
b98074e2ad
commit
01c0e0a28d
|
@ -18,9 +18,6 @@
|
|||
#include <linux/gpio.h>
|
||||
#include <linux/i2c.h>
|
||||
|
||||
#include <linux/power/bq24190_charger.h>
|
||||
|
||||
|
||||
#define BQ24190_MANUFACTURER "Texas Instruments"
|
||||
|
||||
#define BQ24190_REG_ISC 0x00 /* Input Source Control */
|
||||
|
@ -153,8 +150,6 @@ struct bq24190_dev_info {
|
|||
struct power_supply *battery;
|
||||
char model_name[I2C_NAME_SIZE];
|
||||
kernel_ulong_t model;
|
||||
unsigned int gpio_int;
|
||||
unsigned int irq;
|
||||
bool initialized;
|
||||
bool irq_event;
|
||||
struct mutex f_reg_lock;
|
||||
|
@ -1310,56 +1305,11 @@ static int bq24190_hw_init(struct bq24190_dev_info *bdi)
|
|||
return bq24190_read(bdi, BQ24190_REG_SS, &bdi->ss_reg);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
static int bq24190_setup_dt(struct bq24190_dev_info *bdi)
|
||||
{
|
||||
bdi->irq = irq_of_parse_and_map(bdi->dev->of_node, 0);
|
||||
if (bdi->irq <= 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
static int bq24190_setup_dt(struct bq24190_dev_info *bdi)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
static int bq24190_setup_pdata(struct bq24190_dev_info *bdi,
|
||||
struct bq24190_platform_data *pdata)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (!gpio_is_valid(pdata->gpio_int))
|
||||
return -1;
|
||||
|
||||
ret = gpio_request(pdata->gpio_int, dev_name(bdi->dev));
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
|
||||
ret = gpio_direction_input(pdata->gpio_int);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
|
||||
bdi->irq = gpio_to_irq(pdata->gpio_int);
|
||||
if (!bdi->irq)
|
||||
goto out;
|
||||
|
||||
bdi->gpio_int = pdata->gpio_int;
|
||||
return 0;
|
||||
|
||||
out:
|
||||
gpio_free(pdata->gpio_int);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int bq24190_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
|
||||
struct device *dev = &client->dev;
|
||||
struct bq24190_platform_data *pdata = client->dev.platform_data;
|
||||
struct power_supply_config charger_cfg = {}, battery_cfg = {};
|
||||
struct bq24190_dev_info *bdi;
|
||||
int ret;
|
||||
|
@ -1385,12 +1335,7 @@ static int bq24190_probe(struct i2c_client *client,
|
|||
|
||||
i2c_set_clientdata(client, bdi);
|
||||
|
||||
if (dev->of_node)
|
||||
ret = bq24190_setup_dt(bdi);
|
||||
else
|
||||
ret = bq24190_setup_pdata(bdi, pdata);
|
||||
|
||||
if (ret) {
|
||||
if (!client->irq) {
|
||||
dev_err(dev, "Can't get irq info\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -1436,7 +1381,7 @@ static int bq24190_probe(struct i2c_client *client,
|
|||
|
||||
bdi->initialized = true;
|
||||
|
||||
ret = devm_request_threaded_irq(dev, bdi->irq, NULL,
|
||||
ret = devm_request_threaded_irq(dev, client->irq, NULL,
|
||||
bq24190_irq_handler_thread,
|
||||
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
||||
"bq24190-charger", bdi);
|
||||
|
@ -1445,7 +1390,7 @@ static int bq24190_probe(struct i2c_client *client,
|
|||
goto out5;
|
||||
}
|
||||
|
||||
enable_irq_wake(bdi->irq);
|
||||
enable_irq_wake(client->irq);
|
||||
|
||||
pm_runtime_mark_last_busy(dev);
|
||||
pm_runtime_put_autosuspend(dev);
|
||||
|
@ -1467,8 +1412,6 @@ out2:
|
|||
out1:
|
||||
pm_runtime_dont_use_autosuspend(dev);
|
||||
pm_runtime_disable(dev);
|
||||
if (bdi->gpio_int)
|
||||
gpio_free(bdi->gpio_int);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1492,9 +1435,6 @@ static int bq24190_remove(struct i2c_client *client)
|
|||
pm_runtime_dont_use_autosuspend(bdi->dev);
|
||||
pm_runtime_disable(bdi->dev);
|
||||
|
||||
if (bdi->gpio_int)
|
||||
gpio_free(bdi->gpio_int);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
/*
|
||||
* Platform data for the TI bq24190 battery charger driver.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef _BQ24190_CHARGER_H_
|
||||
#define _BQ24190_CHARGER_H_
|
||||
|
||||
struct bq24190_platform_data {
|
||||
unsigned int gpio_int; /* GPIO pin that's connected to INT# */
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue