aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpio-mvebu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpio/gpio-mvebu.c')
-rw-r--r--drivers/gpio/gpio-mvebu.c30
1 files changed, 7 insertions, 23 deletions
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index be65c0451ad5..7d9bd94be8d2 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -41,7 +41,6 @@
41#include <linux/io.h> 41#include <linux/io.h>
42#include <linux/of_irq.h> 42#include <linux/of_irq.h>
43#include <linux/of_device.h> 43#include <linux/of_device.h>
44#include <linux/platform_device.h>
45#include <linux/pinctrl/consumer.h> 44#include <linux/pinctrl/consumer.h>
46 45
47/* 46/*
@@ -168,12 +167,12 @@ static void __iomem *mvebu_gpioreg_level_mask(struct mvebu_gpio_chip *mvchip)
168 * Functions implementing the gpio_chip methods 167 * Functions implementing the gpio_chip methods
169 */ 168 */
170 169
171int mvebu_gpio_request(struct gpio_chip *chip, unsigned pin) 170static int mvebu_gpio_request(struct gpio_chip *chip, unsigned pin)
172{ 171{
173 return pinctrl_request_gpio(chip->base + pin); 172 return pinctrl_request_gpio(chip->base + pin);
174} 173}
175 174
176void mvebu_gpio_free(struct gpio_chip *chip, unsigned pin) 175static void mvebu_gpio_free(struct gpio_chip *chip, unsigned pin)
177{ 176{
178 pinctrl_free_gpio(chip->base + pin); 177 pinctrl_free_gpio(chip->base + pin);
179} 178}
@@ -469,20 +468,7 @@ static void mvebu_gpio_irq_handler(unsigned int irq, struct irq_desc *desc)
469 } 468 }
470} 469}
471 470
472static struct platform_device_id mvebu_gpio_ids[] = { 471static struct of_device_id mvebu_gpio_of_match[] = {
473 {
474 .name = "orion-gpio",
475 }, {
476 .name = "mv78200-gpio",
477 }, {
478 .name = "armadaxp-gpio",
479 }, {
480 /* sentinel */
481 },
482};
483MODULE_DEVICE_TABLE(platform, mvebu_gpio_ids);
484
485static struct of_device_id mvebu_gpio_of_match[] __devinitdata = {
486 { 472 {
487 .compatible = "marvell,orion-gpio", 473 .compatible = "marvell,orion-gpio",
488 .data = (void*) MVEBU_GPIO_SOC_VARIANT_ORION, 474 .data = (void*) MVEBU_GPIO_SOC_VARIANT_ORION,
@@ -501,7 +487,7 @@ static struct of_device_id mvebu_gpio_of_match[] __devinitdata = {
501}; 487};
502MODULE_DEVICE_TABLE(of, mvebu_gpio_of_match); 488MODULE_DEVICE_TABLE(of, mvebu_gpio_of_match);
503 489
504static int __devinit mvebu_gpio_probe(struct platform_device *pdev) 490static int mvebu_gpio_probe(struct platform_device *pdev)
505{ 491{
506 struct mvebu_gpio_chip *mvchip; 492 struct mvebu_gpio_chip *mvchip;
507 const struct of_device_id *match; 493 const struct of_device_id *match;
@@ -546,6 +532,7 @@ static int __devinit mvebu_gpio_probe(struct platform_device *pdev)
546 mvchip->chip.label = dev_name(&pdev->dev); 532 mvchip->chip.label = dev_name(&pdev->dev);
547 mvchip->chip.dev = &pdev->dev; 533 mvchip->chip.dev = &pdev->dev;
548 mvchip->chip.request = mvebu_gpio_request; 534 mvchip->chip.request = mvebu_gpio_request;
535 mvchip->chip.free = mvebu_gpio_free;
549 mvchip->chip.direction_input = mvebu_gpio_direction_input; 536 mvchip->chip.direction_input = mvebu_gpio_direction_input;
550 mvchip->chip.get = mvebu_gpio_get; 537 mvchip->chip.get = mvebu_gpio_get;
551 mvchip->chip.direction_output = mvebu_gpio_direction_output; 538 mvchip->chip.direction_output = mvebu_gpio_direction_output;
@@ -554,9 +541,7 @@ static int __devinit mvebu_gpio_probe(struct platform_device *pdev)
554 mvchip->chip.base = id * MVEBU_MAX_GPIO_PER_BANK; 541 mvchip->chip.base = id * MVEBU_MAX_GPIO_PER_BANK;
555 mvchip->chip.ngpio = ngpios; 542 mvchip->chip.ngpio = ngpios;
556 mvchip->chip.can_sleep = 0; 543 mvchip->chip.can_sleep = 0;
557#ifdef CONFIG_OF
558 mvchip->chip.of_node = np; 544 mvchip->chip.of_node = np;
559#endif
560 545
561 spin_lock_init(&mvchip->lock); 546 spin_lock_init(&mvchip->lock);
562 mvchip->membase = devm_request_and_ioremap(&pdev->dev, res); 547 mvchip->membase = devm_request_and_ioremap(&pdev->dev, res);
@@ -673,8 +658,8 @@ static int __devinit mvebu_gpio_probe(struct platform_device *pdev)
673 IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE); 658 IRQ_NOREQUEST, IRQ_LEVEL | IRQ_NOPROBE);
674 659
675 /* Setup irq domain on top of the generic chip. */ 660 /* Setup irq domain on top of the generic chip. */
676 mvchip->domain = irq_domain_add_legacy(np, mvchip->chip.ngpio, 661 mvchip->domain = irq_domain_add_simple(np, mvchip->chip.ngpio,
677 mvchip->irqbase, 0, 662 mvchip->irqbase,
678 &irq_domain_simple_ops, 663 &irq_domain_simple_ops,
679 mvchip); 664 mvchip);
680 if (!mvchip->domain) { 665 if (!mvchip->domain) {
@@ -697,7 +682,6 @@ static struct platform_driver mvebu_gpio_driver = {
697 .of_match_table = mvebu_gpio_of_match, 682 .of_match_table = mvebu_gpio_of_match,
698 }, 683 },
699 .probe = mvebu_gpio_probe, 684 .probe = mvebu_gpio_probe,
700 .id_table = mvebu_gpio_ids,
701}; 685};
702 686
703static int __init mvebu_gpio_init(void) 687static int __init mvebu_gpio_init(void)