diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2015-12-08 09:05:43 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2016-03-30 04:52:37 -0400 |
commit | a14a2d484b386972f9027246dbe5d066519edb9f (patch) | |
tree | fd0f749a0e9822168b8598c571a5cb49580d3ab0 | |
parent | e65078f1f3490c753f8c223b088e8a482968b891 (diff) |
powerpc: cpm_common: 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: Anatolij Gustschin <agust@denx.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | arch/powerpc/sysdev/cpm_common.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c index 9d32465eddb1..0ac12e5fd8ab 100644 --- a/arch/powerpc/sysdev/cpm_common.c +++ b/arch/powerpc/sysdev/cpm_common.c | |||
@@ -80,15 +80,9 @@ struct cpm2_gpio32_chip { | |||
80 | u32 cpdata; | 80 | u32 cpdata; |
81 | }; | 81 | }; |
82 | 82 | ||
83 | static inline struct cpm2_gpio32_chip * | ||
84 | to_cpm2_gpio32_chip(struct of_mm_gpio_chip *mm_gc) | ||
85 | { | ||
86 | return container_of(mm_gc, struct cpm2_gpio32_chip, mm_gc); | ||
87 | } | ||
88 | |||
89 | static void cpm2_gpio32_save_regs(struct of_mm_gpio_chip *mm_gc) | 83 | static void cpm2_gpio32_save_regs(struct of_mm_gpio_chip *mm_gc) |
90 | { | 84 | { |
91 | struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); | 85 | struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(&mm_gc->gc); |
92 | struct cpm2_ioports __iomem *iop = mm_gc->regs; | 86 | struct cpm2_ioports __iomem *iop = mm_gc->regs; |
93 | 87 | ||
94 | cpm2_gc->cpdata = in_be32(&iop->dat); | 88 | cpm2_gc->cpdata = in_be32(&iop->dat); |
@@ -108,7 +102,7 @@ static int cpm2_gpio32_get(struct gpio_chip *gc, unsigned int gpio) | |||
108 | static void __cpm2_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask, | 102 | static void __cpm2_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask, |
109 | int value) | 103 | int value) |
110 | { | 104 | { |
111 | struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); | 105 | struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(&mm_gc->gc); |
112 | struct cpm2_ioports __iomem *iop = mm_gc->regs; | 106 | struct cpm2_ioports __iomem *iop = mm_gc->regs; |
113 | 107 | ||
114 | if (value) | 108 | if (value) |
@@ -122,7 +116,7 @@ static void __cpm2_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask, | |||
122 | static void cpm2_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value) | 116 | static void cpm2_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value) |
123 | { | 117 | { |
124 | struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); | 118 | struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); |
125 | struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); | 119 | struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(gc); |
126 | unsigned long flags; | 120 | unsigned long flags; |
127 | u32 pin_mask = 1 << (31 - gpio); | 121 | u32 pin_mask = 1 << (31 - gpio); |
128 | 122 | ||
@@ -136,7 +130,7 @@ static void cpm2_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value) | |||
136 | static int cpm2_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) | 130 | static int cpm2_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) |
137 | { | 131 | { |
138 | struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); | 132 | struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); |
139 | struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); | 133 | struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(gc); |
140 | struct cpm2_ioports __iomem *iop = mm_gc->regs; | 134 | struct cpm2_ioports __iomem *iop = mm_gc->regs; |
141 | unsigned long flags; | 135 | unsigned long flags; |
142 | u32 pin_mask = 1 << (31 - gpio); | 136 | u32 pin_mask = 1 << (31 - gpio); |
@@ -154,7 +148,7 @@ static int cpm2_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) | |||
154 | static int cpm2_gpio32_dir_in(struct gpio_chip *gc, unsigned int gpio) | 148 | static int cpm2_gpio32_dir_in(struct gpio_chip *gc, unsigned int gpio) |
155 | { | 149 | { |
156 | struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); | 150 | struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); |
157 | struct cpm2_gpio32_chip *cpm2_gc = to_cpm2_gpio32_chip(mm_gc); | 151 | struct cpm2_gpio32_chip *cpm2_gc = gpiochip_get_data(gc); |
158 | struct cpm2_ioports __iomem *iop = mm_gc->regs; | 152 | struct cpm2_ioports __iomem *iop = mm_gc->regs; |
159 | unsigned long flags; | 153 | unsigned long flags; |
160 | u32 pin_mask = 1 << (31 - gpio); | 154 | u32 pin_mask = 1 << (31 - gpio); |
@@ -190,6 +184,6 @@ int cpm2_gpiochip_add32(struct device_node *np) | |||
190 | gc->get = cpm2_gpio32_get; | 184 | gc->get = cpm2_gpio32_get; |
191 | gc->set = cpm2_gpio32_set; | 185 | gc->set = cpm2_gpio32_set; |
192 | 186 | ||
193 | return of_mm_gpiochip_add(np, mm_gc); | 187 | return of_mm_gpiochip_add_data(np, mm_gc, cpm2_gc); |
194 | } | 188 | } |
195 | #endif /* CONFIG_CPM2 || CONFIG_8xx_GPIO */ | 189 | #endif /* CONFIG_CPM2 || CONFIG_8xx_GPIO */ |