diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2015-12-08 03:37:00 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2016-01-05 08:14:55 -0500 |
commit | 3d18fb5c87576493a00fe51f09b6e82a17168177 (patch) | |
tree | d6b355aef9b4f6df6b4b698e0d173f1c84252031 | |
parent | 573718337f0359a935a276ce98996bbe062c926d (diff) |
pinctrl: pistachio: 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().
Acked-by: Andrew Bresticker <abrestic@chromium.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/pinctrl/pinctrl-pistachio.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/drivers/pinctrl/pinctrl-pistachio.c b/drivers/pinctrl/pinctrl-pistachio.c index fd5148d106a3..856f736cb1a6 100644 --- a/drivers/pinctrl/pinctrl-pistachio.c +++ b/drivers/pinctrl/pinctrl-pistachio.c | |||
@@ -842,14 +842,9 @@ static inline void pctl_writel(struct pistachio_pinctrl *pctl, u32 val, u32 reg) | |||
842 | writel(val, pctl->base + reg); | 842 | writel(val, pctl->base + reg); |
843 | } | 843 | } |
844 | 844 | ||
845 | static inline struct pistachio_gpio_bank *gc_to_bank(struct gpio_chip *gc) | ||
846 | { | ||
847 | return container_of(gc, struct pistachio_gpio_bank, gpio_chip); | ||
848 | } | ||
849 | |||
850 | static inline struct pistachio_gpio_bank *irqd_to_bank(struct irq_data *d) | 845 | static inline struct pistachio_gpio_bank *irqd_to_bank(struct irq_data *d) |
851 | { | 846 | { |
852 | return gc_to_bank(irq_data_get_irq_chip_data(d)); | 847 | return gpiochip_get_data(irq_data_get_irq_chip_data(d)); |
853 | } | 848 | } |
854 | 849 | ||
855 | static inline u32 gpio_readl(struct pistachio_gpio_bank *bank, u32 reg) | 850 | static inline u32 gpio_readl(struct pistachio_gpio_bank *bank, u32 reg) |
@@ -992,7 +987,7 @@ static int pistachio_pinmux_enable(struct pinctrl_dev *pctldev, | |||
992 | 987 | ||
993 | range = pinctrl_find_gpio_range_from_pin(pctl->pctldev, pg->pin); | 988 | range = pinctrl_find_gpio_range_from_pin(pctl->pctldev, pg->pin); |
994 | if (range) | 989 | if (range) |
995 | gpio_disable(gc_to_bank(range->gc), pg->pin - range->pin_base); | 990 | gpio_disable(gpiochip_get_data(range->gc), pg->pin - range->pin_base); |
996 | 991 | ||
997 | return 0; | 992 | return 0; |
998 | } | 993 | } |
@@ -1173,14 +1168,14 @@ static struct pinctrl_desc pistachio_pinctrl_desc = { | |||
1173 | 1168 | ||
1174 | static int pistachio_gpio_get_direction(struct gpio_chip *chip, unsigned offset) | 1169 | static int pistachio_gpio_get_direction(struct gpio_chip *chip, unsigned offset) |
1175 | { | 1170 | { |
1176 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | 1171 | struct pistachio_gpio_bank *bank = gpiochip_get_data(chip); |
1177 | 1172 | ||
1178 | return !(gpio_readl(bank, GPIO_OUTPUT_EN) & BIT(offset)); | 1173 | return !(gpio_readl(bank, GPIO_OUTPUT_EN) & BIT(offset)); |
1179 | } | 1174 | } |
1180 | 1175 | ||
1181 | static int pistachio_gpio_get(struct gpio_chip *chip, unsigned offset) | 1176 | static int pistachio_gpio_get(struct gpio_chip *chip, unsigned offset) |
1182 | { | 1177 | { |
1183 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | 1178 | struct pistachio_gpio_bank *bank = gpiochip_get_data(chip); |
1184 | u32 reg; | 1179 | u32 reg; |
1185 | 1180 | ||
1186 | if (gpio_readl(bank, GPIO_OUTPUT_EN) & BIT(offset)) | 1181 | if (gpio_readl(bank, GPIO_OUTPUT_EN) & BIT(offset)) |
@@ -1194,7 +1189,7 @@ static int pistachio_gpio_get(struct gpio_chip *chip, unsigned offset) | |||
1194 | static void pistachio_gpio_set(struct gpio_chip *chip, unsigned offset, | 1189 | static void pistachio_gpio_set(struct gpio_chip *chip, unsigned offset, |
1195 | int value) | 1190 | int value) |
1196 | { | 1191 | { |
1197 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | 1192 | struct pistachio_gpio_bank *bank = gpiochip_get_data(chip); |
1198 | 1193 | ||
1199 | gpio_mask_writel(bank, GPIO_OUTPUT, offset, !!value); | 1194 | gpio_mask_writel(bank, GPIO_OUTPUT, offset, !!value); |
1200 | } | 1195 | } |
@@ -1202,7 +1197,7 @@ static void pistachio_gpio_set(struct gpio_chip *chip, unsigned offset, | |||
1202 | static int pistachio_gpio_direction_input(struct gpio_chip *chip, | 1197 | static int pistachio_gpio_direction_input(struct gpio_chip *chip, |
1203 | unsigned offset) | 1198 | unsigned offset) |
1204 | { | 1199 | { |
1205 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | 1200 | struct pistachio_gpio_bank *bank = gpiochip_get_data(chip); |
1206 | 1201 | ||
1207 | gpio_mask_writel(bank, GPIO_OUTPUT_EN, offset, 0); | 1202 | gpio_mask_writel(bank, GPIO_OUTPUT_EN, offset, 0); |
1208 | gpio_enable(bank, offset); | 1203 | gpio_enable(bank, offset); |
@@ -1213,7 +1208,7 @@ static int pistachio_gpio_direction_input(struct gpio_chip *chip, | |||
1213 | static int pistachio_gpio_direction_output(struct gpio_chip *chip, | 1208 | static int pistachio_gpio_direction_output(struct gpio_chip *chip, |
1214 | unsigned offset, int value) | 1209 | unsigned offset, int value) |
1215 | { | 1210 | { |
1216 | struct pistachio_gpio_bank *bank = gc_to_bank(chip); | 1211 | struct pistachio_gpio_bank *bank = gpiochip_get_data(chip); |
1217 | 1212 | ||
1218 | pistachio_gpio_set(chip, offset, value); | 1213 | pistachio_gpio_set(chip, offset, value); |
1219 | gpio_mask_writel(bank, GPIO_OUTPUT_EN, offset, 1); | 1214 | gpio_mask_writel(bank, GPIO_OUTPUT_EN, offset, 1); |
@@ -1303,7 +1298,7 @@ static int pistachio_gpio_irq_set_type(struct irq_data *data, unsigned int type) | |||
1303 | static void pistachio_gpio_irq_handler(struct irq_desc *desc) | 1298 | static void pistachio_gpio_irq_handler(struct irq_desc *desc) |
1304 | { | 1299 | { |
1305 | struct gpio_chip *gc = irq_desc_get_handler_data(desc); | 1300 | struct gpio_chip *gc = irq_desc_get_handler_data(desc); |
1306 | struct pistachio_gpio_bank *bank = gc_to_bank(gc); | 1301 | struct pistachio_gpio_bank *bank = gpiochip_get_data(gc); |
1307 | struct irq_chip *chip = irq_desc_get_chip(desc); | 1302 | struct irq_chip *chip = irq_desc_get_chip(desc); |
1308 | unsigned long pending; | 1303 | unsigned long pending; |
1309 | unsigned int pin; | 1304 | unsigned int pin; |
@@ -1390,7 +1385,7 @@ static int pistachio_gpio_register(struct pistachio_pinctrl *pctl) | |||
1390 | 1385 | ||
1391 | bank->gpio_chip.parent = pctl->dev; | 1386 | bank->gpio_chip.parent = pctl->dev; |
1392 | bank->gpio_chip.of_node = child; | 1387 | bank->gpio_chip.of_node = child; |
1393 | ret = gpiochip_add(&bank->gpio_chip); | 1388 | ret = gpiochip_add_data(&bank->gpio_chip, bank); |
1394 | if (ret < 0) { | 1389 | if (ret < 0) { |
1395 | dev_err(pctl->dev, "Failed to add GPIO chip %u: %d\n", | 1390 | dev_err(pctl->dev, "Failed to add GPIO chip %u: %d\n", |
1396 | i, ret); | 1391 | i, ret); |