Commit 6d5f2207 authored by Uwe Kleine-König's avatar Uwe Kleine-König Committed by Bartosz Golaszewski
Browse files

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: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: default avatarBartosz Golaszewski <brgl@bgdev.pl>
parent 30a35c07
Loading
Loading
Loading
Loading
+2 −35
Original line number Diff line number Diff line
@@ -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,
};

+0 −12
Original line number Diff line number Diff line
@@ -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 */