mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +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
@ -496,17 +496,13 @@ static int max732x_irq_setup(struct max732x_chip *chip,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
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 irq_base = 0;
|
||||
int ret;
|
||||
|
||||
if (((pdata && pdata->irq_base) || client->irq)
|
||||
&& has_irq != INT_NONE) {
|
||||
if (client->irq && has_irq != INT_NONE) {
|
||||
struct gpio_irq_chip *girq;
|
||||
|
||||
if (pdata)
|
||||
irq_base = pdata->irq_base;
|
||||
chip->irq_features = has_irq;
|
||||
mutex_init(&chip->irq_lock);
|
||||
|
||||
@ -540,10 +536,9 @@ static int max732x_irq_setup(struct max732x_chip *chip,
|
||||
const struct i2c_device_id *id)
|
||||
{
|
||||
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;
|
||||
|
||||
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");
|
||||
|
||||
return 0;
|
||||
@ -703,44 +698,16 @@ static int max732x_probe(struct i2c_client *client,
|
||||
if (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);
|
||||
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 = {
|
||||
.driver = {
|
||||
.name = "max732x",
|
||||
.of_match_table = of_match_ptr(max732x_of_table),
|
||||
},
|
||||
.probe = max732x_probe,
|
||||
.remove = max732x_remove,
|
||||
.id_table = max732x_id,
|
||||
};
|
||||
|
||||
|
@ -7,17 +7,5 @@
|
||||
struct max732x_platform_data {
|
||||
/* number of the first GPIO */
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user