Commit c634fc19 authored by Linus Walleij's avatar Linus Walleij

gpio: cs5535: 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: Fabian Frederick <fabf@skynet.be>
Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent 435cc3d4
...@@ -42,6 +42,10 @@ static ulong mask = GPIO_DEFAULT_MASK; ...@@ -42,6 +42,10 @@ static ulong mask = GPIO_DEFAULT_MASK;
module_param_named(mask, mask, ulong, 0444); module_param_named(mask, mask, ulong, 0444);
MODULE_PARM_DESC(mask, "GPIO channel mask."); MODULE_PARM_DESC(mask, "GPIO channel mask.");
/*
* FIXME: convert this singleton driver to use the state container
* design pattern, see Documentation/driver-model/design-patterns.txt
*/
static struct cs5535_gpio_chip { static struct cs5535_gpio_chip {
struct gpio_chip chip; struct gpio_chip chip;
resource_size_t base; resource_size_t base;
...@@ -201,8 +205,7 @@ EXPORT_SYMBOL_GPL(cs5535_gpio_setup_event); ...@@ -201,8 +205,7 @@ EXPORT_SYMBOL_GPL(cs5535_gpio_setup_event);
static int chip_gpio_request(struct gpio_chip *c, unsigned offset) static int chip_gpio_request(struct gpio_chip *c, unsigned offset)
{ {
struct cs5535_gpio_chip *chip = struct cs5535_gpio_chip *chip = gpiochip_get_data(c);
container_of(c, struct cs5535_gpio_chip, chip);
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&chip->lock, flags); spin_lock_irqsave(&chip->lock, flags);
...@@ -242,8 +245,7 @@ static void chip_gpio_set(struct gpio_chip *chip, unsigned offset, int val) ...@@ -242,8 +245,7 @@ static void chip_gpio_set(struct gpio_chip *chip, unsigned offset, int val)
static int chip_direction_input(struct gpio_chip *c, unsigned offset) static int chip_direction_input(struct gpio_chip *c, unsigned offset)
{ {
struct cs5535_gpio_chip *chip = struct cs5535_gpio_chip *chip = gpiochip_get_data(c);
container_of(c, struct cs5535_gpio_chip, chip);
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&chip->lock, flags); spin_lock_irqsave(&chip->lock, flags);
...@@ -256,8 +258,7 @@ static int chip_direction_input(struct gpio_chip *c, unsigned offset) ...@@ -256,8 +258,7 @@ static int chip_direction_input(struct gpio_chip *c, unsigned offset)
static int chip_direction_output(struct gpio_chip *c, unsigned offset, int val) static int chip_direction_output(struct gpio_chip *c, unsigned offset, int val)
{ {
struct cs5535_gpio_chip *chip = struct cs5535_gpio_chip *chip = gpiochip_get_data(c);
container_of(c, struct cs5535_gpio_chip, chip);
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&chip->lock, flags); spin_lock_irqsave(&chip->lock, flags);
...@@ -347,7 +348,7 @@ static int cs5535_gpio_probe(struct platform_device *pdev) ...@@ -347,7 +348,7 @@ static int cs5535_gpio_probe(struct platform_device *pdev)
mask_orig, mask); mask_orig, mask);
/* finally, register with the generic GPIO API */ /* finally, register with the generic GPIO API */
err = gpiochip_add(&cs5535_gpio_chip.chip); err = gpiochip_add_data(&cs5535_gpio_chip.chip, &cs5535_gpio_chip);
if (err) if (err)
goto done; goto done;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment