From 58383c78425e4ee1c077253cf297b641c861c02e Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Wed, 4 Nov 2015 09:56:26 +0100 Subject: gpio: change member .dev to .parent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The name .dev in a struct is normally reserved for a struct device that is let us say a superclass to the thing described by the struct. struct gpio_chip stands out by confusingly using a struct device *dev to point to the parent device (such as a platform_device) that represents the hardware. As we want to give gpio_chip:s real devices, this is not working. We need to rename this member to parent. This was done by two coccinelle scripts, I guess it is possible to combine them into one, but I don't know such stuff. They look like this: @@ struct gpio_chip *var; @@ -var->dev +var->parent and: @@ struct gpio_chip var; @@ -var.dev +var.parent and: @@ struct bgpio_chip *var; @@ -var->gc.dev +var->gc.parent Plus a few instances of bgpio that I couldn't figure out how to teach Coccinelle to rewrite. This patch hits all over the place, but I *strongly* prefer this solution to any piecemal approaches that just exercise patch mechanics all over the place. It mainly hits drivers/gpio and drivers/pinctrl which is my own backyard anyway. Cc: Haavard Skinnemoen Cc: Rafał Miłecki Cc: Richard Purdie Cc: Mauro Carvalho Chehab Cc: Alek Du Cc: Jaroslav Kysela Cc: Takashi Iwai Acked-by: Dmitry Torokhov Acked-by: Greg Kroah-Hartman Acked-by: Lee Jones Acked-by: Jiri Kosina Acked-by: Hans-Christian Egtvedt Acked-by: Jacek Anaszewski Signed-off-by: Linus Walleij --- drivers/leds/leds-pca9532.c | 6 +++--- drivers/leds/leds-tca6507.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'drivers/leds') diff --git a/drivers/leds/leds-pca9532.c b/drivers/leds/leds-pca9532.c index 5a6363d161a2..a975b32ee8c8 100644 --- a/drivers/leds/leds-pca9532.c +++ b/drivers/leds/leds-pca9532.c @@ -319,7 +319,7 @@ static int pca9532_destroy_devices(struct pca9532_data *data, int n_devs) } #ifdef CONFIG_LEDS_PCA9532_GPIO - if (data->gpio.dev) + if (data->gpio.parent) gpiochip_remove(&data->gpio); #endif @@ -413,13 +413,13 @@ static int pca9532_configure(struct i2c_client *client, data->gpio.can_sleep = 1; data->gpio.base = pdata->gpio_base; data->gpio.ngpio = data->chip_info->num_leds; - data->gpio.dev = &client->dev; + data->gpio.parent = &client->dev; data->gpio.owner = THIS_MODULE; err = gpiochip_add(&data->gpio); if (err) { /* Use data->gpio.dev as a flag for freeing gpiochip */ - data->gpio.dev = NULL; + data->gpio.parent = NULL; dev_warn(&client->dev, "could not add gpiochip\n"); } else { dev_info(&client->dev, "gpios %i...%i\n", diff --git a/drivers/leds/leds-tca6507.c b/drivers/leds/leds-tca6507.c index edbecc4ca2da..75529a24a615 100644 --- a/drivers/leds/leds-tca6507.c +++ b/drivers/leds/leds-tca6507.c @@ -651,7 +651,7 @@ static int tca6507_probe_gpios(struct i2c_client *client, tca->gpio.owner = THIS_MODULE; tca->gpio.direction_output = tca6507_gpio_direction_output; tca->gpio.set = tca6507_gpio_set_value; - tca->gpio.dev = &client->dev; + tca->gpio.parent = &client->dev; #ifdef CONFIG_OF_GPIO tca->gpio.of_node = of_node_get(client->dev.of_node); #endif -- cgit v1.2.3 From 2a6643437083c4dc28169a706099cd22769be1f5 Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Tue, 8 Dec 2015 16:42:58 +0100 Subject: leds: tca6507: use gpiochip data pointer This makes the driver use the data pointer added to the gpio_chip to store a pointer to the state container instead of relying on container_of(). Cc: Riku Voipio Cc: Richard Purdie Cc: linux-leds@vger.kernel.org Acked-by: Jacek Anaszewski Signed-off-by: Linus Walleij --- drivers/leds/leds-tca6507.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/leds') diff --git a/drivers/leds/leds-tca6507.c b/drivers/leds/leds-tca6507.c index 75529a24a615..c548ea10f0f0 100644 --- a/drivers/leds/leds-tca6507.c +++ b/drivers/leds/leds-tca6507.c @@ -603,7 +603,7 @@ static int tca6507_blink_set(struct led_classdev *led_cdev, static void tca6507_gpio_set_value(struct gpio_chip *gc, unsigned offset, int val) { - struct tca6507_chip *tca = container_of(gc, struct tca6507_chip, gpio); + struct tca6507_chip *tca = gpiochip_get_data(gc); unsigned long flags; spin_lock_irqsave(&tca->lock, flags); @@ -655,7 +655,7 @@ static int tca6507_probe_gpios(struct i2c_client *client, #ifdef CONFIG_OF_GPIO tca->gpio.of_node = of_node_get(client->dev.of_node); #endif - err = gpiochip_add(&tca->gpio); + err = gpiochip_add_data(&tca->gpio, tca); if (err) { tca->gpio.ngpio = 0; return err; -- cgit v1.2.3 From dced14675818bc9627febcc3159ffc1a0d88199d Mon Sep 17 00:00:00 2001 From: Linus Walleij Date: Tue, 8 Dec 2015 16:39:20 +0100 Subject: leds: pca9532: use gpiochip data pointer This makes the driver use the data pointer added to the gpio_chip to store a pointer to the state container instead of relying on container_of(). Cc: Riku Voipio Cc: Richard Purdie Cc: linux-leds@vger.kernel.org Acked-by: Jacek Anaszewski Signed-off-by: Linus Walleij --- drivers/leds/leds-pca9532.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'drivers/leds') diff --git a/drivers/leds/leds-pca9532.c b/drivers/leds/leds-pca9532.c index a975b32ee8c8..1b228adfd1a7 100644 --- a/drivers/leds/leds-pca9532.c +++ b/drivers/leds/leds-pca9532.c @@ -245,7 +245,7 @@ static void pca9532_led_work(struct work_struct *work) #ifdef CONFIG_LEDS_PCA9532_GPIO static int pca9532_gpio_request_pin(struct gpio_chip *gc, unsigned offset) { - struct pca9532_data *data = container_of(gc, struct pca9532_data, gpio); + struct pca9532_data *data = gpiochip_get_data(gc); struct pca9532_led *led = &data->leds[offset]; if (led->type == PCA9532_TYPE_GPIO) @@ -256,7 +256,7 @@ static int pca9532_gpio_request_pin(struct gpio_chip *gc, unsigned offset) static void pca9532_gpio_set_value(struct gpio_chip *gc, unsigned offset, int val) { - struct pca9532_data *data = container_of(gc, struct pca9532_data, gpio); + struct pca9532_data *data = gpiochip_get_data(gc); struct pca9532_led *led = &data->leds[offset]; if (val) @@ -269,7 +269,7 @@ static void pca9532_gpio_set_value(struct gpio_chip *gc, unsigned offset, int va static int pca9532_gpio_get_value(struct gpio_chip *gc, unsigned offset) { - struct pca9532_data *data = container_of(gc, struct pca9532_data, gpio); + struct pca9532_data *data = gpiochip_get_data(gc); unsigned char reg; reg = i2c_smbus_read_byte_data(data->client, PCA9532_REG_INPUT(offset)); @@ -416,7 +416,7 @@ static int pca9532_configure(struct i2c_client *client, data->gpio.parent = &client->dev; data->gpio.owner = THIS_MODULE; - err = gpiochip_add(&data->gpio); + err = gpiochip_add_data(&data->gpio, data); if (err) { /* Use data->gpio.dev as a flag for freeing gpiochip */ data->gpio.parent = NULL; -- cgit v1.2.3