summaryrefslogtreecommitdiffstats
path: root/arch/arm/plat-nomadik/gpio.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* gpio: move Nomadik GPIO driver to drivers/gpioGrant Likely2011-05-271-1020/+0
| | | | | | | | | This moves the Nomadik GPIO driver out of arch/arm/plat-nomadik and into the desired location indicated by the subsystem maintainer. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> [grant.likely: squashed with kconfig fixup] Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
* ARM: nmk: update GPIO chained IRQ handler to entry/exit functionsWill Deacon2011-05-111-8/+4
| | | | | | | | | | | This patch updates the Nomadik gpio chained IRQ handler to use the chained IRQ enter/exit functions in order to function correctly on primary controllers with different methods of flow control. Cc: Rabin Vincent <rabin@rab.in> Cc: Grant Likely <grant.likely@secretlab.ca> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Will Deacon <will.deacon@arm.com>
* arm: Fold irq_set_chip/irq_set_handlerThomas Gleixner2011-03-291-2/+2
| | | | | | Use irq_set_chip_and_handler() instead. Converted with coccinelle. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* arm: Cleanup the irq namespaceThomas Gleixner2011-03-291-17/+17
| | | | | | Convert to the new function names. Automated with coccinelle. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* arm: nomadik: Use local irq stateThomas Gleixner2011-03-291-6/+10
| | | | | | | Store the enabled mask in the local state, so there is no need to fiddle in the irq descriptor. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* arm: nomadik: Remove non existing cpu id checkThomas Gleixner2011-03-291-7/+0
| | | | Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
* arm/gpio: Remove three copies of broken and racy debug codeThomas Gleixner2011-03-251-45/+0
| | | | | | | | | | | gpiolib plus two gpio implementations in arm fiddle in the guts of irq_desc in a racy and buggy way. Remove the stuff. I already told the gpio folks that we can provide that information in a proper way if necessary. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Grant Likely <grant.likely@secretlab.ca> LKML-Reference: <20110324212508.931638262@linutronix.de>
* plat-nomadik: make GPIO interrupts work with cpuidle ApSleepRabin Vincent2011-03-141-17/+97
| | | | | | | | | | | | Enable wakeups by default for any GPIO interrupts and in the suspend/resume path narrow this down to only the the real wakeup interrupts. This approach is based on the assumption that cpuidle ApSleep will be entered more often than system suspend. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> [Fixup for genirq changes to struct irq_data on 2.6.38] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: fix compilation warningLinus Walleij2011-03-141-5/+2
| | | | | | | | | | The compiler warns that [rf]wimsc may be used uninitialized in this function - the warning is actually false since the uses are in identical if()-clauses, but it can't hurt very much to read out the values to be modified early anyway and rid the warning. Cc: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: get rid of unused GPIO PM codeRabin Vincent2011-03-141-73/+3
| | | | | | | | | | | The NOMADIK_GPIO_PM config option is disabled by default, not user visible, and never selected by any other option: the code is therefore unused. The GPIO registers need not be saved and restored since their values are preserved when vAPE (on DB8500) is powered down. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Reviewed-by: Jonas Aberg <jonas.aberg@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: change sleep/wakeup setting in GPIO SLPM registerRikard Olsson2011-03-141-1/+1
| | | | | | | | | This patch fixes a bug when setting SLPM register for DB8500. When calling__nmk_gpio_set_slpm(...) offset to GPIO is now used instead of the GPIO number itself. Signed-off-by: Rikard Olsson <rikard.p.olsson@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: implement safe switch sequence for Alt-CRabin Vincent2011-03-141-40/+171
| | | | | | | | | | | | | | | Setting pinmux alternative C for a GPIO pin is actually not so easy since it ivolves setting value "1" in two registers, and since the combined result will take effect for intermediate values (01 or 10) this will cause glitches while you wrote one register but have not yet written the other. This patch implements a series of kludges including an optional machine-specific callback to avoid glitches when changing pin mux mode to alternative C. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: set altfunc to GPIO when enabling the sleep configRabin Vincent2011-03-141-0/+2
| | | | | Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: type secondary IRQ correctlyVirupax Sadashivpetimath2011-03-141-1/+1
| | | | | | | | Coverity found that we were checking an unsigned variable for >= zero. Type it correctly so that the check works as intended. Signed-off-by: Virupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: pull-up/down settings for GPIO resumeJonas Aaberg2011-03-141-24/+54
| | | | | | | | | | Suspend/resume didn't take care of pull-up and pull-down settings and writing back the DAT register at resume can change pull up/down settings, depending on pin input value. Output values are now also restored. Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: support secondary GPIO interruptsRabin Vincent2011-03-141-6/+45
| | | | | | | | | | | When GPIOs wake up the system from sleep mode, the normal GPIO interrupt handler does not hit and the normal interrupt status register does not contain the status. Instead the secondary GPIO handler does, and the interrupt status needs to be retrieved from the wakeup status saved by the suspend/resume code. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: implement suspend/resume for GPIORabin Vincent2011-03-141-2/+49
| | | | | Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: add custom dbg_show for GPIORabin Vincent2011-03-141-0/+92
| | | | | Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* plat-nomadik: support varying number of GPIOs per blockRabin Vincent2011-03-141-3/+2
| | | | | | Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> [Added constant 32-pin assignment in platform data] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* ARM: plat-nomadik: irq_data conversion.Lennert Buytenhek2011-01-131-28/+28
| | | | | Signed-off-by: Lennert Buytenhek <buytenh@secretlab.ca> Acked-by: Rabin Vincent <rabin.vincent@stericsson.com>
* nomadik-gpio: use dev name if no name is specifiedRabin Vincent2010-12-081-1/+1
| | | | | | | | Platforms may choose not to provide an additional name for the GPIO block. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
* nomadik-gpio: allow sleep mode dir/pull to differ from normal modeRabin Vincent2010-12-081-6/+44
| | | | | | | | | | | | | | | | In the nomadik GPIO pin configuration, allow the sleep mode direction and pull configurations to differ from the ones for the normal state. PIN_SLPM_PULL_*, PIN_SLPM_INPUT, PIN_SLPM_OUTPUT* macros are provided for this. Since the hardware does not allow seperate configurations for sleep mode and normal mode, this is implemented by having software remux the configurations as necessary. Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
* ARM: 6347/2: nomadik: move nmk_gpio_probe to .devinit.textUwe Kleine-König2010-09-021-1/+1
| | | | | | | | | | | | | | | | | | | This fixes a section mismatch reported by modpost: WARNING: arch/arm/plat-nomadik/built-in.o(.data+0x100): Section mismatch in reference from the variable nmk_gpio_driver to the function .init.text:nmk_gpio_probe() The variable nmk_gpio_driver references the function __init nmk_gpio_probe() If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console, According to Rabin VINCENT the alternative to use platform_driver_probe won't work because the "platform devices are not yet registered when nmk_gpio_init() is called." Acked-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6354/1: nomadik-gpio: allow control of sleep mode direction and pull upRabin Vincent2010-09-021-11/+31
| | | | | | | | | | DB8500v2 allows control of direction and pull up/down configuration in sleep mode, instead of switching the pin to input with pull up/down enabled. Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6353/1: nomadik-gpio: add SLPM register handing for DB8500v2Rabin Vincent2010-09-021-3/+27
| | | | | | | | The SLPM register enables/disables wakeup detection on DB8500v2. Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6177/1: nomadik-gpio: fix "ignoring return value" warningRabin Vincent2010-06-161-18/+0
| | | | | | | | | | | | | | arch/arm/plat-nomadik/gpio.c: In function 'nmk_gpio_remove': arch/arm/plat-nomadik/gpio.c:630: warning: ignoring return value of 'gpiochip_remove', declared with attribute warn_unused_result Because this function is marked __exit and this code can't be built as a module, this function is never used. So just remove it, fixing the warning in the process. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6176/1: nomadik-gpio: implement to_irqRabin Vincent2010-06-161-0/+9
| | | | | | | | | So that gpio_to_irq() works. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6175/1: nomadik-gpio: implement set_wakeRabin Vincent2010-06-161-14/+39
| | | | | | | | | So that set_irq_wake() works. Cc: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6156/1: nomadik-gpio: switch to core_initcallRabin Vincent2010-06-161-1/+1
| | | | | | | | | | | | Move the platform driver registration to a core_initcall, instead of an arch_initcall. This will allow us to use gpio related calls in init_machine() (which is an arch_initcall) after adding the gpio platform devices. Cc: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6155/1: nomadik-gpio: add pin configuration APIRabin Vincent2010-06-161-0/+96
| | | | | | | | | | | Add a pin configuration API to all pin-related configuration to be specified with a single macro and groups of pins to be configured at one go. Based on the PXA MFP implementation. Cc: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6154/1: nomadik-gpio: refactor nmk_gpio_set_modeRabin Vincent2010-06-161-11/+17
| | | | | | | | | | Extract out a portion of nmk_gpio_set_mode() that can be called with the lock already held. This will be used from the pincfg API. Cc: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6149/1: nomadik-gpio: add function to configure sleep mode behaviourRabin Vincent2010-06-161-0/+40
| | | | | | | | Cc: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6148/1: nomadik-gpio: add function to configure pullup/pulldownRabin Vincent2010-06-161-0/+48
| | | | | | | Cc: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6147/1: nomadik-gpio: set val in ->direction_output()Rabin Vincent2010-06-161-10/+12
| | | | | | | | | | | The ->direction_output() callback needs to set the value it was passed, in addition to setting the direction as output. On this peripheral, we can't set the value before setting the direction, so set it after. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* Merge branch 'devel-stable' into develRussell King2010-05-171-0/+1
| | | | | | | Conflicts: arch/arm/Kconfig arch/arm/include/asm/system.h arch/arm/mm/Kconfig
* ARM: 6104/1: nomadik-gpio: use clk APIRabin Vincent2010-05-061-1/+19
| | | | | | | | | | | Add clocks with appropriate names in platforms that use it, and use the clk API in nomadik-gpio. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Acked-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6102/1: nomadik-gpio: set a default trigger for interruptsRabin Vincent2010-05-061-0/+1
| | | | | | | | | | | Set a default trigger type for interrupts, otherwise if request_irq is called without specifiying a trigger type, the interrupt will not actually be enabled. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6101/1: nomadik-gpio: don't enable in set_typeRabin Vincent2010-05-061-4/+7
| | | | | | | | | | | | | | | | | | On this peripheral, setting the trigger type enables the interrupt, and the current set_type() implementation unconditionally enables the interrupt, even if it is called when the interrupt is disabled. Fix set_type() to: - if the interrupt is disabled, defer the actual trigger setting to when it is unmasked - if the interrupt is enabled, change the type immediately by clearing the old type and then re-enabling with the new type. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6100/1: nomadik-gpio: factor out helper to enable/disable irqsRabin Vincent2010-05-061-30/+27
| | | | | | | | | Remove some nearly-duplicated code to make the following patch simpler. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 6099/1: nomadik-gpio: fix mask/unmaskRabin Vincent2010-05-061-8/+8
| | | | | | | | | | Mask/unmask should modify the interrupt mask register (RIMSC and FIMSC) not the wakeup mask registers (RWIMSC and FWIMSC). Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 5972/1: nomadik-gpio: convert to platform driverRabin Vincent2010-03-191-31/+43
| | | | | | | | | | | | | | | | | | | | On the U8500 platform there are four GPIO blocks, each with a 4K address space, including the peripheral identification. However, each of these blocks have a varying number of banks, each of which have 32 GPIOs and an interrupt line. The current nomadik-gpio driver implementation can handle each of these sub-banks easily with one instance each, but cannot as-is be hooked up to them because it is an AMBA driver and it expects to see a peripheral with the appropriate peripheral ids but having only one bank and only one interrupt. Solve this by converting the driver to a platform driver. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 5971/1: nomadik-gpio: mask/ack/unmask the parent irqRabin Vincent2010-03-191-5/+11
| | | | | | | | | | | | | | | | | Since we register as a chained handler, we need to take care of acking the parent irq. Current code had the acking disabled because just acking the interrupt disables it on some interrupt controllers (like the VIC used on Nomadik). However, not acking at all is incorrect because interrupt controllers like the GIC need an EOI indication, which is done in the ack routine. Solve this by maskacking and unmasking it appropriately, similar to how handle_level_irq operates. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 5970/1: nomadik-gpio: fix spinlock usageRabin Vincent2010-03-191-1/+2
| | | | | | | | | | | | Fix the incorrect spinlock usage which leads to these compiler warnings: arch/arm/plat-nomadik/gpio.c:60: warning: passing argument 1 of `spinlock_check' from incompatible pointer type arch/arm/plat-nomadik/gpio.c:69: warning: passing argument 1 of `spin_unlock_irqrestore' from incompatible pointer type Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
* ARM: 5969/1: nomadik: move gpio to plat-nomadikRabin Vincent2010-03-191-0/+396
Move the Nomadik GPIO driver to plat-nomadik so that it can also be used on the Ux500 platform. The mach-nomadik include/mach/gpio.h is replaced by one that includes the one now in plat-nomadik, so that code doesn't need to include the one in plat specifically, and can instead use <linux/gpio.h> as usual. Acked-by: Alessandro Rubini <rubini@unipv.it> Acked-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>