Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

MIPS: ar7: 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: linux-mips@linux-mips.org
Cc: Alban Bedel <albeu@free.fr>
Acked-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

+9 -17
+9 -17
arch/mips/ar7/gpio.c
··· 33 33 34 34 static int ar7_gpio_get_value(struct gpio_chip *chip, unsigned gpio) 35 35 { 36 - struct ar7_gpio_chip *gpch = 37 - container_of(chip, struct ar7_gpio_chip, chip); 36 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 38 37 void __iomem *gpio_in = gpch->regs + AR7_GPIO_INPUT; 39 38 40 39 return !!(readl(gpio_in) & (1 << gpio)); ··· 41 42 42 43 static int titan_gpio_get_value(struct gpio_chip *chip, unsigned gpio) 43 44 { 44 - struct ar7_gpio_chip *gpch = 45 - container_of(chip, struct ar7_gpio_chip, chip); 45 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 46 46 void __iomem *gpio_in0 = gpch->regs + TITAN_GPIO_INPUT_0; 47 47 void __iomem *gpio_in1 = gpch->regs + TITAN_GPIO_INPUT_1; 48 48 ··· 51 53 static void ar7_gpio_set_value(struct gpio_chip *chip, 52 54 unsigned gpio, int value) 53 55 { 54 - struct ar7_gpio_chip *gpch = 55 - container_of(chip, struct ar7_gpio_chip, chip); 56 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 56 57 void __iomem *gpio_out = gpch->regs + AR7_GPIO_OUTPUT; 57 58 unsigned tmp; 58 59 ··· 64 67 static void titan_gpio_set_value(struct gpio_chip *chip, 65 68 unsigned gpio, int value) 66 69 { 67 - struct ar7_gpio_chip *gpch = 68 - container_of(chip, struct ar7_gpio_chip, chip); 70 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 69 71 void __iomem *gpio_out0 = gpch->regs + TITAN_GPIO_OUTPUT_0; 70 72 void __iomem *gpio_out1 = gpch->regs + TITAN_GPIO_OUTPUT_1; 71 73 unsigned tmp; ··· 77 81 78 82 static int ar7_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) 79 83 { 80 - struct ar7_gpio_chip *gpch = 81 - container_of(chip, struct ar7_gpio_chip, chip); 84 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 82 85 void __iomem *gpio_dir = gpch->regs + AR7_GPIO_DIR; 83 86 84 87 writel(readl(gpio_dir) | (1 << gpio), gpio_dir); ··· 87 92 88 93 static int titan_gpio_direction_input(struct gpio_chip *chip, unsigned gpio) 89 94 { 90 - struct ar7_gpio_chip *gpch = 91 - container_of(chip, struct ar7_gpio_chip, chip); 95 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 92 96 void __iomem *gpio_dir0 = gpch->regs + TITAN_GPIO_DIR_0; 93 97 void __iomem *gpio_dir1 = gpch->regs + TITAN_GPIO_DIR_1; 94 98 ··· 102 108 static int ar7_gpio_direction_output(struct gpio_chip *chip, 103 109 unsigned gpio, int value) 104 110 { 105 - struct ar7_gpio_chip *gpch = 106 - container_of(chip, struct ar7_gpio_chip, chip); 111 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 107 112 void __iomem *gpio_dir = gpch->regs + AR7_GPIO_DIR; 108 113 109 114 ar7_gpio_set_value(chip, gpio, value); ··· 114 121 static int titan_gpio_direction_output(struct gpio_chip *chip, 115 122 unsigned gpio, int value) 116 123 { 117 - struct ar7_gpio_chip *gpch = 118 - container_of(chip, struct ar7_gpio_chip, chip); 124 + struct ar7_gpio_chip *gpch = gpiochip_get_data(chip); 119 125 void __iomem *gpio_dir0 = gpch->regs + TITAN_GPIO_DIR_0; 120 126 void __iomem *gpio_dir1 = gpch->regs + TITAN_GPIO_DIR_1; 121 127 ··· 327 335 return -ENOMEM; 328 336 } 329 337 330 - ret = gpiochip_add(&gpch->chip); 338 + ret = gpiochip_add_data(&gpch->chip, gpch); 331 339 if (ret) { 332 340 printk(KERN_ERR "%s: failed to add gpiochip\n", 333 341 gpch->chip.label);