diff options
Diffstat (limited to 'drivers/gpio/gpio-mvebu.c')
| -rw-r--r-- | drivers/gpio/gpio-mvebu.c | 30 |
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 | ||
| 171 | int mvebu_gpio_request(struct gpio_chip *chip, unsigned pin) | 170 | static 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 | ||
| 176 | void mvebu_gpio_free(struct gpio_chip *chip, unsigned pin) | 175 | static 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 | ||
| 472 | static struct platform_device_id mvebu_gpio_ids[] = { | 471 | static 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 | }; | ||
| 483 | MODULE_DEVICE_TABLE(platform, mvebu_gpio_ids); | ||
| 484 | |||
| 485 | static 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 | }; |
| 502 | MODULE_DEVICE_TABLE(of, mvebu_gpio_of_match); | 488 | MODULE_DEVICE_TABLE(of, mvebu_gpio_of_match); |
| 503 | 489 | ||
| 504 | static int __devinit mvebu_gpio_probe(struct platform_device *pdev) | 490 | static 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 | ||
| 703 | static int __init mvebu_gpio_init(void) | 687 | static int __init mvebu_gpio_init(void) |
