mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 13:53:33 +00:00
gpio: max732x: Drop unused support for irq and setup code via platform data
The only user of max732x_platform_data is arch/arm/mach-pxa/littleton.c and it only uses .gpio_base. So drop the other members from the data struct and simplify the driver accordingly. The motivating side effect of this change is that the .remove() callback cannot return a nonzero error code any more which prepares making i2c remove callbacks return void. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
This commit is contained in:
parent
30a35c07d9
commit
6d5f220744
2 changed files with 2 additions and 47 deletions
|
@ -496,17 +496,13 @@ static int max732x_irq_setup(struct max732x_chip *chip,
|
||||||
const struct i2c_device_id *id)
|
const struct i2c_device_id *id)
|
||||||
{
|
{
|
||||||
struct i2c_client *client = chip->client;
|
struct i2c_client *client = chip->client;
|
||||||
struct max732x_platform_data *pdata = dev_get_platdata(&client->dev);
|
|
||||||
int has_irq = max732x_features[id->driver_data] >> 32;
|
int has_irq = max732x_features[id->driver_data] >> 32;
|
||||||
int irq_base = 0;
|
int irq_base = 0;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (((pdata && pdata->irq_base) || client->irq)
|
if (client->irq && has_irq != INT_NONE) {
|
||||||
&& has_irq != INT_NONE) {
|
|
||||||
struct gpio_irq_chip *girq;
|
struct gpio_irq_chip *girq;
|
||||||
|
|
||||||
if (pdata)
|
|
||||||
irq_base = pdata->irq_base;
|
|
||||||
chip->irq_features = has_irq;
|
chip->irq_features = has_irq;
|
||||||
mutex_init(&chip->irq_lock);
|
mutex_init(&chip->irq_lock);
|
||||||
|
|
||||||
|
@ -540,10 +536,9 @@ static int max732x_irq_setup(struct max732x_chip *chip,
|
||||||
const struct i2c_device_id *id)
|
const struct i2c_device_id *id)
|
||||||
{
|
{
|
||||||
struct i2c_client *client = chip->client;
|
struct i2c_client *client = chip->client;
|
||||||
struct max732x_platform_data *pdata = dev_get_platdata(&client->dev);
|
|
||||||
int has_irq = max732x_features[id->driver_data] >> 32;
|
int has_irq = max732x_features[id->driver_data] >> 32;
|
||||||
|
|
||||||
if (((pdata && pdata->irq_base) || client->irq) && has_irq != INT_NONE)
|
if (client->irq && has_irq != INT_NONE)
|
||||||
dev_warn(&client->dev, "interrupt support not compiled in\n");
|
dev_warn(&client->dev, "interrupt support not compiled in\n");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -703,44 +698,16 @@ static int max732x_probe(struct i2c_client *client,
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
if (pdata->setup) {
|
|
||||||
ret = pdata->setup(client, chip->gpio_chip.base,
|
|
||||||
chip->gpio_chip.ngpio, pdata->context);
|
|
||||||
if (ret < 0)
|
|
||||||
dev_warn(&client->dev, "setup failed, %d\n", ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
i2c_set_clientdata(client, chip);
|
i2c_set_clientdata(client, chip);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int max732x_remove(struct i2c_client *client)
|
|
||||||
{
|
|
||||||
struct max732x_platform_data *pdata = dev_get_platdata(&client->dev);
|
|
||||||
struct max732x_chip *chip = i2c_get_clientdata(client);
|
|
||||||
|
|
||||||
if (pdata && pdata->teardown) {
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
ret = pdata->teardown(client, chip->gpio_chip.base,
|
|
||||||
chip->gpio_chip.ngpio, pdata->context);
|
|
||||||
if (ret < 0) {
|
|
||||||
dev_err(&client->dev, "%s failed, %d\n",
|
|
||||||
"teardown", ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct i2c_driver max732x_driver = {
|
static struct i2c_driver max732x_driver = {
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "max732x",
|
.name = "max732x",
|
||||||
.of_match_table = of_match_ptr(max732x_of_table),
|
.of_match_table = of_match_ptr(max732x_of_table),
|
||||||
},
|
},
|
||||||
.probe = max732x_probe,
|
.probe = max732x_probe,
|
||||||
.remove = max732x_remove,
|
|
||||||
.id_table = max732x_id,
|
.id_table = max732x_id,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,17 +7,5 @@
|
||||||
struct max732x_platform_data {
|
struct max732x_platform_data {
|
||||||
/* number of the first GPIO */
|
/* number of the first GPIO */
|
||||||
unsigned gpio_base;
|
unsigned gpio_base;
|
||||||
|
|
||||||
/* interrupt base */
|
|
||||||
int irq_base;
|
|
||||||
|
|
||||||
void *context; /* param to setup/teardown */
|
|
||||||
|
|
||||||
int (*setup)(struct i2c_client *client,
|
|
||||||
unsigned gpio, unsigned ngpio,
|
|
||||||
void *context);
|
|
||||||
int (*teardown)(struct i2c_client *client,
|
|
||||||
unsigned gpio, unsigned ngpio,
|
|
||||||
void *context);
|
|
||||||
};
|
};
|
||||||
#endif /* __LINUX_I2C_MAX732X_H */
|
#endif /* __LINUX_I2C_MAX732X_H */
|
||||||
|
|
Loading…
Reference in a new issue