diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2014-04-23 17:13:01 -0400 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2015-04-09 04:16:13 -0400 |
commit | 1dfe0d159dc7f7b6d1734b2010aabda2bbe87d5a (patch) | |
tree | 0b3b568261230afba27e267a836fa5e306209349 | |
parent | 7414b0993cd020aea14574065c28b55f3f849688 (diff) |
pinctrl: sirf: move sgpio lock into state container
Instead of referring to a global static variable for the sgpio
locking, use the state container to contain the lock.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
-rw-r--r-- | drivers/pinctrl/sirf/pinctrl-sirf.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/drivers/pinctrl/sirf/pinctrl-sirf.c b/drivers/pinctrl/sirf/pinctrl-sirf.c index abc5c475ea85..e2efbbae4061 100644 --- a/drivers/pinctrl/sirf/pinctrl-sirf.c +++ b/drivers/pinctrl/sirf/pinctrl-sirf.c | |||
@@ -39,10 +39,9 @@ struct sirfsoc_gpio_bank { | |||
39 | struct sirfsoc_gpio_chip { | 39 | struct sirfsoc_gpio_chip { |
40 | struct of_mm_gpio_chip chip; | 40 | struct of_mm_gpio_chip chip; |
41 | struct sirfsoc_gpio_bank sgpio_bank[SIRFSOC_GPIO_NO_OF_BANKS]; | 41 | struct sirfsoc_gpio_bank sgpio_bank[SIRFSOC_GPIO_NO_OF_BANKS]; |
42 | spinlock_t lock; | ||
42 | }; | 43 | }; |
43 | 44 | ||
44 | static DEFINE_SPINLOCK(sgpio_lock); | ||
45 | |||
46 | static struct sirfsoc_pin_group *sirfsoc_pin_groups; | 45 | static struct sirfsoc_pin_group *sirfsoc_pin_groups; |
47 | static int sirfsoc_pingrp_cnt; | 46 | static int sirfsoc_pingrp_cnt; |
48 | 47 | ||
@@ -427,13 +426,13 @@ static void sirfsoc_gpio_irq_ack(struct irq_data *d) | |||
427 | 426 | ||
428 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); | 427 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); |
429 | 428 | ||
430 | spin_lock_irqsave(&sgpio_lock, flags); | 429 | spin_lock_irqsave(&sgpio->lock, flags); |
431 | 430 | ||
432 | val = readl(sgpio->chip.regs + offset); | 431 | val = readl(sgpio->chip.regs + offset); |
433 | 432 | ||
434 | writel(val, sgpio->chip.regs + offset); | 433 | writel(val, sgpio->chip.regs + offset); |
435 | 434 | ||
436 | spin_unlock_irqrestore(&sgpio_lock, flags); | 435 | spin_unlock_irqrestore(&sgpio->lock, flags); |
437 | } | 436 | } |
438 | 437 | ||
439 | static void __sirfsoc_gpio_irq_mask(struct sirfsoc_gpio_chip *sgpio, | 438 | static void __sirfsoc_gpio_irq_mask(struct sirfsoc_gpio_chip *sgpio, |
@@ -445,14 +444,14 @@ static void __sirfsoc_gpio_irq_mask(struct sirfsoc_gpio_chip *sgpio, | |||
445 | 444 | ||
446 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); | 445 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); |
447 | 446 | ||
448 | spin_lock_irqsave(&sgpio_lock, flags); | 447 | spin_lock_irqsave(&sgpio->lock, flags); |
449 | 448 | ||
450 | val = readl(sgpio->chip.regs + offset); | 449 | val = readl(sgpio->chip.regs + offset); |
451 | val &= ~SIRFSOC_GPIO_CTL_INTR_EN_MASK; | 450 | val &= ~SIRFSOC_GPIO_CTL_INTR_EN_MASK; |
452 | val &= ~SIRFSOC_GPIO_CTL_INTR_STS_MASK; | 451 | val &= ~SIRFSOC_GPIO_CTL_INTR_STS_MASK; |
453 | writel(val, sgpio->chip.regs + offset); | 452 | writel(val, sgpio->chip.regs + offset); |
454 | 453 | ||
455 | spin_unlock_irqrestore(&sgpio_lock, flags); | 454 | spin_unlock_irqrestore(&sgpio->lock, flags); |
456 | } | 455 | } |
457 | 456 | ||
458 | static void sirfsoc_gpio_irq_mask(struct irq_data *d) | 457 | static void sirfsoc_gpio_irq_mask(struct irq_data *d) |
@@ -475,14 +474,14 @@ static void sirfsoc_gpio_irq_unmask(struct irq_data *d) | |||
475 | 474 | ||
476 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); | 475 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); |
477 | 476 | ||
478 | spin_lock_irqsave(&sgpio_lock, flags); | 477 | spin_lock_irqsave(&sgpio->lock, flags); |
479 | 478 | ||
480 | val = readl(sgpio->chip.regs + offset); | 479 | val = readl(sgpio->chip.regs + offset); |
481 | val &= ~SIRFSOC_GPIO_CTL_INTR_STS_MASK; | 480 | val &= ~SIRFSOC_GPIO_CTL_INTR_STS_MASK; |
482 | val |= SIRFSOC_GPIO_CTL_INTR_EN_MASK; | 481 | val |= SIRFSOC_GPIO_CTL_INTR_EN_MASK; |
483 | writel(val, sgpio->chip.regs + offset); | 482 | writel(val, sgpio->chip.regs + offset); |
484 | 483 | ||
485 | spin_unlock_irqrestore(&sgpio_lock, flags); | 484 | spin_unlock_irqrestore(&sgpio->lock, flags); |
486 | } | 485 | } |
487 | 486 | ||
488 | static int sirfsoc_gpio_irq_type(struct irq_data *d, unsigned type) | 487 | static int sirfsoc_gpio_irq_type(struct irq_data *d, unsigned type) |
@@ -496,7 +495,7 @@ static int sirfsoc_gpio_irq_type(struct irq_data *d, unsigned type) | |||
496 | 495 | ||
497 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); | 496 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); |
498 | 497 | ||
499 | spin_lock_irqsave(&sgpio_lock, flags); | 498 | spin_lock_irqsave(&sgpio->lock, flags); |
500 | 499 | ||
501 | val = readl(sgpio->chip.regs + offset); | 500 | val = readl(sgpio->chip.regs + offset); |
502 | val &= ~(SIRFSOC_GPIO_CTL_INTR_STS_MASK | SIRFSOC_GPIO_CTL_OUT_EN_MASK); | 501 | val &= ~(SIRFSOC_GPIO_CTL_INTR_STS_MASK | SIRFSOC_GPIO_CTL_OUT_EN_MASK); |
@@ -533,7 +532,7 @@ static int sirfsoc_gpio_irq_type(struct irq_data *d, unsigned type) | |||
533 | 532 | ||
534 | writel(val, sgpio->chip.regs + offset); | 533 | writel(val, sgpio->chip.regs + offset); |
535 | 534 | ||
536 | spin_unlock_irqrestore(&sgpio_lock, flags); | 535 | spin_unlock_irqrestore(&sgpio->lock, flags); |
537 | 536 | ||
538 | return 0; | 537 | return 0; |
539 | } | 538 | } |
@@ -697,11 +696,11 @@ static int sirfsoc_gpio_direction_output(struct gpio_chip *chip, | |||
697 | 696 | ||
698 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); | 697 | offset = SIRFSOC_GPIO_CTRL(bank->id, idx); |
699 | 698 | ||
700 | spin_lock_irqsave(&sgpio_lock, flags); | 699 | spin_lock_irqsave(&sgpio->lock, flags); |
701 | 700 | ||
702 | sirfsoc_gpio_set_output(sgpio, bank, offset, value); | 701 | sirfsoc_gpio_set_output(sgpio, bank, offset, value); |
703 | 702 | ||
704 | spin_unlock_irqrestore(&sgpio_lock, flags); | 703 | spin_unlock_irqrestore(&sgpio->lock, flags); |
705 | 704 | ||
706 | return 0; | 705 | return 0; |
707 | } | 706 | } |
@@ -793,6 +792,7 @@ static int sirfsoc_gpio_probe(struct device_node *np) | |||
793 | sgpio = devm_kzalloc(&pdev->dev, sizeof(*sgpio), GFP_KERNEL); | 792 | sgpio = devm_kzalloc(&pdev->dev, sizeof(*sgpio), GFP_KERNEL); |
794 | if (!sgpio) | 793 | if (!sgpio) |
795 | return -ENOMEM; | 794 | return -ENOMEM; |
795 | spin_lock_init(&sgpio->lock); | ||
796 | 796 | ||
797 | regs = of_iomap(np, 0); | 797 | regs = of_iomap(np, 0); |
798 | if (!regs) | 798 | if (!regs) |