Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

gpio: mpc5200: Drop legacy-of-mm-gpiochip.h header

Remove legacy-of-mm-gpiochip.h header file. The above mentioned
file provides an OF API that's deprecated. There is no agnostic
alternatives to it and we have to open code the logic which was
hidden behind of_mm_gpiochip_add_data(). Note, most of the GPIO
drivers are using their own labeling schemas and resource retrieval
that only a few may gain of the code deduplication, so whenever
alternative is appear we can move drivers again to use that one.

[text copied from commit 34064c8267a6 ("powerpc/8xx:
Drop legacy-of-mm-gpiochip.h header")]

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/9652736ef05b94d9113ea5ce7899734ef82343d1.1755520794.git.christophe.leroy@csgroup.eu

authored by

Christophe Leroy and committed by
Madhavan Srinivasan
e7a6475c d2ad26e7

+43 -36
-1
drivers/gpio/Kconfig
··· 485 485 config GPIO_MPC5200 486 486 def_bool y 487 487 depends on PPC_MPC52xx 488 - select OF_GPIO_MM_GPIOCHIP 489 488 490 489 config GPIO_MPC8XXX 491 490 bool "MPC512x/MPC8xxx/QorIQ GPIO support"
+43 -35
drivers/gpio/gpio-mpc5200.c
··· 8 8 #include <linux/of.h> 9 9 #include <linux/kernel.h> 10 10 #include <linux/slab.h> 11 - #include <linux/gpio/legacy-of-mm-gpiochip.h> 11 + #include <linux/gpio/driver.h> 12 12 #include <linux/io.h> 13 13 #include <linux/platform_device.h> 14 14 #include <linux/module.h> ··· 19 19 static DEFINE_SPINLOCK(gpio_lock); 20 20 21 21 struct mpc52xx_gpiochip { 22 - struct of_mm_gpio_chip mmchip; 22 + struct gpio_chip gc; 23 + void __iomem *regs; 23 24 unsigned int shadow_dvo; 24 25 unsigned int shadow_gpioe; 25 26 unsigned int shadow_ddr; ··· 44 43 */ 45 44 static int mpc52xx_wkup_gpio_get(struct gpio_chip *gc, unsigned int gpio) 46 45 { 47 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 48 - struct mpc52xx_gpio_wkup __iomem *regs = mm_gc->regs; 46 + struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 47 + struct mpc52xx_gpio_wkup __iomem *regs = chip->regs; 49 48 unsigned int ret; 50 49 51 50 ret = (in_8(&regs->wkup_ival) >> (7 - gpio)) & 1; ··· 58 57 static inline void 59 58 __mpc52xx_wkup_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val) 60 59 { 61 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 62 60 struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 63 - struct mpc52xx_gpio_wkup __iomem *regs = mm_gc->regs; 61 + struct mpc52xx_gpio_wkup __iomem *regs = chip->regs; 64 62 65 63 if (val) 66 64 chip->shadow_dvo |= 1 << (7 - gpio); ··· 87 87 88 88 static int mpc52xx_wkup_gpio_dir_in(struct gpio_chip *gc, unsigned int gpio) 89 89 { 90 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 91 90 struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 92 - struct mpc52xx_gpio_wkup __iomem *regs = mm_gc->regs; 91 + struct mpc52xx_gpio_wkup __iomem *regs = chip->regs; 93 92 unsigned long flags; 94 93 95 94 spin_lock_irqsave(&gpio_lock, flags); ··· 109 110 static int 110 111 mpc52xx_wkup_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) 111 112 { 112 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 113 - struct mpc52xx_gpio_wkup __iomem *regs = mm_gc->regs; 114 113 struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 114 + struct mpc52xx_gpio_wkup __iomem *regs = chip->regs; 115 115 unsigned long flags; 116 116 117 117 spin_lock_irqsave(&gpio_lock, flags); ··· 134 136 135 137 static int mpc52xx_wkup_gpiochip_probe(struct platform_device *ofdev) 136 138 { 139 + struct device *dev = &ofdev->dev; 140 + struct device_node *np = dev->of_node; 137 141 struct mpc52xx_gpiochip *chip; 138 142 struct mpc52xx_gpio_wkup __iomem *regs; 139 143 struct gpio_chip *gc; 140 144 int ret; 141 145 142 - chip = devm_kzalloc(&ofdev->dev, sizeof(*chip), GFP_KERNEL); 146 + chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); 143 147 if (!chip) 144 148 return -ENOMEM; 145 149 146 150 platform_set_drvdata(ofdev, chip); 147 151 148 - gc = &chip->mmchip.gc; 152 + gc = &chip->gc; 149 153 154 + gc->base = -1; 150 155 gc->ngpio = 8; 151 156 gc->direction_input = mpc52xx_wkup_gpio_dir_in; 152 157 gc->direction_output = mpc52xx_wkup_gpio_dir_out; 153 158 gc->get = mpc52xx_wkup_gpio_get; 154 159 gc->set = mpc52xx_wkup_gpio_set; 155 160 156 - ret = of_mm_gpiochip_add_data(ofdev->dev.of_node, &chip->mmchip, chip); 161 + gc->label = devm_kasprintf(dev, GFP_KERNEL, "%pOF", np); 162 + if (!gc->label) 163 + return -ENOMEM; 164 + 165 + chip->regs = devm_of_iomap(dev, np, 0, NULL); 166 + if (IS_ERR(chip->regs)) 167 + return PTR_ERR(chip->regs); 168 + 169 + ret = devm_gpiochip_add_data(dev, gc, chip); 157 170 if (ret) 158 171 return ret; 159 172 160 - regs = chip->mmchip.regs; 173 + regs = chip->regs; 161 174 chip->shadow_gpioe = in_8(&regs->wkup_gpioe); 162 175 chip->shadow_ddr = in_8(&regs->wkup_ddr); 163 176 chip->shadow_dvo = in_8(&regs->wkup_dvo); 164 177 165 178 return 0; 166 - } 167 - 168 - static void mpc52xx_gpiochip_remove(struct platform_device *ofdev) 169 - { 170 - struct mpc52xx_gpiochip *chip = platform_get_drvdata(ofdev); 171 - 172 - of_mm_gpiochip_remove(&chip->mmchip); 173 179 } 174 180 175 181 static const struct of_device_id mpc52xx_wkup_gpiochip_match[] = { ··· 187 185 .of_match_table = mpc52xx_wkup_gpiochip_match, 188 186 }, 189 187 .probe = mpc52xx_wkup_gpiochip_probe, 190 - .remove = mpc52xx_gpiochip_remove, 191 188 }; 192 189 193 190 /* ··· 208 207 */ 209 208 static int mpc52xx_simple_gpio_get(struct gpio_chip *gc, unsigned int gpio) 210 209 { 211 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 212 - struct mpc52xx_gpio __iomem *regs = mm_gc->regs; 210 + struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 211 + struct mpc52xx_gpio __iomem *regs = chip->regs; 213 212 unsigned int ret; 214 213 215 214 ret = (in_be32(&regs->simple_ival) >> (31 - gpio)) & 1; ··· 220 219 static inline void 221 220 __mpc52xx_simple_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val) 222 221 { 223 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 224 222 struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 225 - struct mpc52xx_gpio __iomem *regs = mm_gc->regs; 223 + struct mpc52xx_gpio __iomem *regs = chip->regs; 226 224 227 225 if (val) 228 226 chip->shadow_dvo |= 1 << (31 - gpio); ··· 248 248 249 249 static int mpc52xx_simple_gpio_dir_in(struct gpio_chip *gc, unsigned int gpio) 250 250 { 251 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 252 251 struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 253 - struct mpc52xx_gpio __iomem *regs = mm_gc->regs; 252 + struct mpc52xx_gpio __iomem *regs = chip->regs; 254 253 unsigned long flags; 255 254 256 255 spin_lock_irqsave(&gpio_lock, flags); ··· 270 271 static int 271 272 mpc52xx_simple_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) 272 273 { 273 - struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 274 274 struct mpc52xx_gpiochip *chip = gpiochip_get_data(gc); 275 - struct mpc52xx_gpio __iomem *regs = mm_gc->regs; 275 + struct mpc52xx_gpio __iomem *regs = chip->regs; 276 276 unsigned long flags; 277 277 278 278 spin_lock_irqsave(&gpio_lock, flags); ··· 296 298 297 299 static int mpc52xx_simple_gpiochip_probe(struct platform_device *ofdev) 298 300 { 301 + struct device *dev = &ofdev->dev; 302 + struct device_node *np = dev->of_node; 299 303 struct mpc52xx_gpiochip *chip; 300 304 struct gpio_chip *gc; 301 305 struct mpc52xx_gpio __iomem *regs; 302 306 int ret; 303 307 304 - chip = devm_kzalloc(&ofdev->dev, sizeof(*chip), GFP_KERNEL); 308 + chip = devm_kzalloc(dev, sizeof(*chip), GFP_KERNEL); 305 309 if (!chip) 306 310 return -ENOMEM; 307 311 308 312 platform_set_drvdata(ofdev, chip); 309 313 310 - gc = &chip->mmchip.gc; 314 + gc = &chip->gc; 311 315 316 + gc->base = -1; 312 317 gc->ngpio = 32; 313 318 gc->direction_input = mpc52xx_simple_gpio_dir_in; 314 319 gc->direction_output = mpc52xx_simple_gpio_dir_out; 315 320 gc->get = mpc52xx_simple_gpio_get; 316 321 gc->set = mpc52xx_simple_gpio_set; 317 322 318 - ret = of_mm_gpiochip_add_data(ofdev->dev.of_node, &chip->mmchip, chip); 323 + gc->label = devm_kasprintf(dev, GFP_KERNEL, "%pOF", np); 324 + if (!gc->label) 325 + return -ENOMEM; 326 + 327 + chip->regs = devm_of_iomap(dev, np, 0, NULL); 328 + if (IS_ERR(chip->regs)) 329 + return PTR_ERR(chip->regs); 330 + 331 + ret = devm_gpiochip_add_data(dev, gc, chip); 319 332 if (ret) 320 333 return ret; 321 334 322 - regs = chip->mmchip.regs; 335 + regs = chip->regs; 323 336 chip->shadow_gpioe = in_be32(&regs->simple_gpioe); 324 337 chip->shadow_ddr = in_be32(&regs->simple_ddr); 325 338 chip->shadow_dvo = in_be32(&regs->simple_dvo); ··· 349 340 .of_match_table = mpc52xx_simple_gpiochip_match, 350 341 }, 351 342 .probe = mpc52xx_simple_gpiochip_probe, 352 - .remove = mpc52xx_gpiochip_remove, 353 343 }; 354 344 355 345 static struct platform_driver * const drivers[] = {