aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-12-08 04:18:50 -0500
committerLinus Walleij <linus.walleij@linaro.org>2016-01-05 08:15:03 -0500
commit9f57f81c129f0f9456f78f00235f70ac5e21e0f5 (patch)
treeacef14ad403452f4a81413eeb93d3162654546e4
parent378596f99460ebd255dc3f5c1bc67a9ff09273f3 (diff)
pinctrl: samsung: 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: Tomasz Figa <tomasz.figa@gmail.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r--drivers/pinctrl/samsung/pinctrl-samsung.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/drivers/pinctrl/samsung/pinctrl-samsung.c b/drivers/pinctrl/samsung/pinctrl-samsung.c
index bb4db2050f19..a4fb8379f521 100644
--- a/drivers/pinctrl/samsung/pinctrl-samsung.c
+++ b/drivers/pinctrl/samsung/pinctrl-samsung.c
@@ -50,11 +50,6 @@ static LIST_HEAD(drvdata_list);
50 50
51static unsigned int pin_base; 51static unsigned int pin_base;
52 52
53static inline struct samsung_pin_bank *gc_to_pin_bank(struct gpio_chip *gc)
54{
55 return container_of(gc, struct samsung_pin_bank, gpio_chip);
56}
57
58static int samsung_get_group_count(struct pinctrl_dev *pctldev) 53static int samsung_get_group_count(struct pinctrl_dev *pctldev)
59{ 54{
60 struct samsung_pinctrl_drv_data *pmx = pinctrl_dev_get_drvdata(pctldev); 55 struct samsung_pinctrl_drv_data *pmx = pinctrl_dev_get_drvdata(pctldev);
@@ -522,7 +517,7 @@ static const struct pinconf_ops samsung_pinconf_ops = {
522/* gpiolib gpio_set callback function */ 517/* gpiolib gpio_set callback function */
523static void samsung_gpio_set(struct gpio_chip *gc, unsigned offset, int value) 518static void samsung_gpio_set(struct gpio_chip *gc, unsigned offset, int value)
524{ 519{
525 struct samsung_pin_bank *bank = gc_to_pin_bank(gc); 520 struct samsung_pin_bank *bank = gpiochip_get_data(gc);
526 const struct samsung_pin_bank_type *type = bank->type; 521 const struct samsung_pin_bank_type *type = bank->type;
527 unsigned long flags; 522 unsigned long flags;
528 void __iomem *reg; 523 void __iomem *reg;
@@ -546,7 +541,7 @@ static int samsung_gpio_get(struct gpio_chip *gc, unsigned offset)
546{ 541{
547 void __iomem *reg; 542 void __iomem *reg;
548 u32 data; 543 u32 data;
549 struct samsung_pin_bank *bank = gc_to_pin_bank(gc); 544 struct samsung_pin_bank *bank = gpiochip_get_data(gc);
550 const struct samsung_pin_bank_type *type = bank->type; 545 const struct samsung_pin_bank_type *type = bank->type;
551 546
552 reg = bank->drvdata->virt_base + bank->pctl_offset; 547 reg = bank->drvdata->virt_base + bank->pctl_offset;
@@ -571,7 +566,7 @@ static int samsung_gpio_set_direction(struct gpio_chip *gc,
571 u32 data, mask, shift; 566 u32 data, mask, shift;
572 unsigned long flags; 567 unsigned long flags;
573 568
574 bank = gc_to_pin_bank(gc); 569 bank = gpiochip_get_data(gc);
575 type = bank->type; 570 type = bank->type;
576 drvdata = bank->drvdata; 571 drvdata = bank->drvdata;
577 572
@@ -619,7 +614,7 @@ static int samsung_gpio_direction_output(struct gpio_chip *gc, unsigned offset,
619 */ 614 */
620static int samsung_gpio_to_irq(struct gpio_chip *gc, unsigned offset) 615static int samsung_gpio_to_irq(struct gpio_chip *gc, unsigned offset)
621{ 616{
622 struct samsung_pin_bank *bank = gc_to_pin_bank(gc); 617 struct samsung_pin_bank *bank = gpiochip_get_data(gc);
623 unsigned int virq; 618 unsigned int virq;
624 619
625 if (!bank->irq_domain) 620 if (!bank->irq_domain)
@@ -918,7 +913,7 @@ static int samsung_gpiolib_register(struct platform_device *pdev,
918 gc->of_node = bank->of_node; 913 gc->of_node = bank->of_node;
919 gc->label = bank->name; 914 gc->label = bank->name;
920 915
921 ret = gpiochip_add(gc); 916 ret = gpiochip_add_data(gc, bank);
922 if (ret) { 917 if (ret) {
923 dev_err(&pdev->dev, "failed to register gpio_chip %s, error code: %d\n", 918 dev_err(&pdev->dev, "failed to register gpio_chip %s, error code: %d\n",
924 gc->label, ret); 919 gc->label, ret);