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/gpio.h>
|
||||||
#include <linux/i2c.h>
|
#include <linux/i2c.h>
|
||||||
|
|
||||||
#include <linux/power/bq24190_charger.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define BQ24190_MANUFACTURER "Texas Instruments"
|
#define BQ24190_MANUFACTURER "Texas Instruments"
|
||||||
|
|
||||||
#define BQ24190_REG_ISC 0x00 /* Input Source Control */
|
#define BQ24190_REG_ISC 0x00 /* Input Source Control */
|
||||||
|
@ -153,8 +150,6 @@ struct bq24190_dev_info {
|
||||||
struct power_supply *battery;
|
struct power_supply *battery;
|
||||||
char model_name[I2C_NAME_SIZE];
|
char model_name[I2C_NAME_SIZE];
|
||||||
kernel_ulong_t model;
|
kernel_ulong_t model;
|
||||||
unsigned int gpio_int;
|
|
||||||
unsigned int irq;
|
|
||||||
bool initialized;
|
bool initialized;
|
||||||
bool irq_event;
|
bool irq_event;
|
||||||
struct mutex f_reg_lock;
|
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);
|
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,
|
static int bq24190_probe(struct i2c_client *client,
|
||||||
const struct i2c_device_id *id)
|
const struct i2c_device_id *id)
|
||||||
{
|
{
|
||||||
struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
|
struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent);
|
||||||
struct device *dev = &client->dev;
|
struct device *dev = &client->dev;
|
||||||
struct bq24190_platform_data *pdata = client->dev.platform_data;
|
|
||||||
struct power_supply_config charger_cfg = {}, battery_cfg = {};
|
struct power_supply_config charger_cfg = {}, battery_cfg = {};
|
||||||
struct bq24190_dev_info *bdi;
|
struct bq24190_dev_info *bdi;
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -1385,12 +1335,7 @@ static int bq24190_probe(struct i2c_client *client,
|
||||||
|
|
||||||
i2c_set_clientdata(client, bdi);
|
i2c_set_clientdata(client, bdi);
|
||||||
|
|
||||||
if (dev->of_node)
|
if (!client->irq) {
|
||||||
ret = bq24190_setup_dt(bdi);
|
|
||||||
else
|
|
||||||
ret = bq24190_setup_pdata(bdi, pdata);
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
dev_err(dev, "Can't get irq info\n");
|
dev_err(dev, "Can't get irq info\n");
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
@ -1436,7 +1381,7 @@ static int bq24190_probe(struct i2c_client *client,
|
||||||
|
|
||||||
bdi->initialized = true;
|
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,
|
bq24190_irq_handler_thread,
|
||||||
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
|
||||||
"bq24190-charger", bdi);
|
"bq24190-charger", bdi);
|
||||||
|
@ -1445,7 +1390,7 @@ static int bq24190_probe(struct i2c_client *client,
|
||||||
goto out5;
|
goto out5;
|
||||||
}
|
}
|
||||||
|
|
||||||
enable_irq_wake(bdi->irq);
|
enable_irq_wake(client->irq);
|
||||||
|
|
||||||
pm_runtime_mark_last_busy(dev);
|
pm_runtime_mark_last_busy(dev);
|
||||||
pm_runtime_put_autosuspend(dev);
|
pm_runtime_put_autosuspend(dev);
|
||||||
|
@ -1467,8 +1412,6 @@ out2:
|
||||||
out1:
|
out1:
|
||||||
pm_runtime_dont_use_autosuspend(dev);
|
pm_runtime_dont_use_autosuspend(dev);
|
||||||
pm_runtime_disable(dev);
|
pm_runtime_disable(dev);
|
||||||
if (bdi->gpio_int)
|
|
||||||
gpio_free(bdi->gpio_int);
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1492,9 +1435,6 @@ static int bq24190_remove(struct i2c_client *client)
|
||||||
pm_runtime_dont_use_autosuspend(bdi->dev);
|
pm_runtime_dont_use_autosuspend(bdi->dev);
|
||||||
pm_runtime_disable(bdi->dev);
|
pm_runtime_disable(bdi->dev);
|
||||||
|
|
||||||
if (bdi->gpio_int)
|
|
||||||
gpio_free(bdi->gpio_int);
|
|
||||||
|
|
||||||
return 0;
|
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