aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-12-08 03:37:00 -0500
committerLinus Walleij <linus.walleij@linaro.org>2016-01-05 08:14:55 -0500
commit3d18fb5c87576493a00fe51f09b6e82a17168177 (patch)
treed6b355aef9b4f6df6b4b698e0d173f1c84252031
parent573718337f0359a935a276ce98996bbe062c926d (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.c23
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
845static 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
850static inline struct pistachio_gpio_bank *irqd_to_bank(struct irq_data *d) 845static 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
855static inline u32 gpio_readl(struct pistachio_gpio_bank *bank, u32 reg) 850static 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
1174static int pistachio_gpio_get_direction(struct gpio_chip *chip, unsigned offset) 1169static 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
1181static int pistachio_gpio_get(struct gpio_chip *chip, unsigned offset) 1176static 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)
1194static void pistachio_gpio_set(struct gpio_chip *chip, unsigned offset, 1189static 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,
1202static int pistachio_gpio_direction_input(struct gpio_chip *chip, 1197static 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,
1213static int pistachio_gpio_direction_output(struct gpio_chip *chip, 1208static 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)
1303static void pistachio_gpio_irq_handler(struct irq_desc *desc) 1298static 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);