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: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
435cc3d428
commit
c634fc19fe
1 changed files with 8 additions and 7 deletions
|
@ -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);
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue