aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-12-08 09:05:43 -0500
committerLinus Walleij <linus.walleij@linaro.org>2016-03-30 04:52:37 -0400
commita14a2d484b386972f9027246dbe5d066519edb9f (patch)
treefd0f749a0e9822168b8598c571a5cb49580d3ab0
parente65078f1f3490c753f8c223b088e8a482968b891 (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.c18
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
83static inline struct cpm2_gpio32_chip *
84to_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
89static void cpm2_gpio32_save_regs(struct of_mm_gpio_chip *mm_gc) 83static 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)
108static void __cpm2_gpio32_set(struct of_mm_gpio_chip *mm_gc, u32 pin_mask, 102static 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,
122static void cpm2_gpio32_set(struct gpio_chip *gc, unsigned int gpio, int value) 116static 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)
136static int cpm2_gpio32_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) 130static 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)
154static int cpm2_gpio32_dir_in(struct gpio_chip *gc, unsigned int gpio) 148static 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 */