1. 27 6月, 2012 1 次提交
    • G
      gpio/omap: fix irq loss while in idle with debounce on · 9e303f22
      Grazvydas Ignotas 提交于
      It seems that currently GPIO module is not working correctly during idle
      when debounce is enabled - the system almost never responds to button
      presses (observed on OMAP3530 ES2.1 and OMAP3630 ES1.2 pandora boards).
      Even though wakeups are probably working, it seems that the GPIO module
      itself is unable to detect input events and generate interrupts.
      OMAP35x TRM also states that:
        "If the debounce clock is inactive, the debounce cell gates all
         input signals and thus cannot be used."
      
      So whenever we are disabling debounce clocks (for PM or other reasons),
      be sure the module's debounce feature is disabled too.
      
      Cc: Kevin Hilman <khilman@ti.com>
      Signed-off-by: NGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      9e303f22
  2. 04 6月, 2012 1 次提交
  3. 23 5月, 2012 2 次提交
  4. 21 5月, 2012 3 次提交
  5. 20 5月, 2012 4 次提交
    • M
      mfd: Convert wm831x to irq_domain · cd99758b
      Mark Brown 提交于
      The modern idiom is to use irq_domain to allocate interrupts. This is
      useful partly to allow further infrastructure to be based on the domains
      and partly because it makes it much easier to allocate virtual interrupts
      to devices as we don't need to allocate a contiguous range of interrupt
      numbers.
      
      Convert the wm831x driver over to this infrastructure, using a legacy
      IRQ mapping if an irq_base is specified in platform data and otherwise
      using a linear mapping, always registering the interrupts even if they
      won't ever be used. Only boards which need to use the GPIOs as
      interrupts should need to use an irq_base.
      
      This means that we can't use the MFD irq_base management since the
      unless we're using an explicit irq_base from platform data we can't rely
      on a linear mapping of interrupts.  Instead we need to map things via
      the irq_domain - provide a conveniencem function wm831x_irq() to save a
      small amount of typing when doing so. Looking at this I couldn't clearly
      see anything the MFD core could do to make this nicer.
      
      Since we're not supporting device tree yet there's no meaningful
      advantage if we don't do this conversion in one, the fact that the
      interrupt resources are used for repeated IP blocks makes accessor
      functions for the irq_domain more trouble to do than they're worth.
      Signed-off-by: NMark Brown <broonie@opensource.wolfsonmicro.com>
      Signed-off-by: NSamuel Ortiz <sameo@linux.intel.com>
      cd99758b
    • L
      gpio: Convert tps65910 to a platform driver · 10bbc48d
      Laxman Dewangan 提交于
      Make the gpio-tps65910 as platform driver and register
      this from tps65910 core driver as mfd sub device.
      Signed-off-by: NLaxman Dewangan <ldewangan@nvidia.com>
      Acked-by: NGrant Likely <grant.likely@secretlab.ca>
      Signed-off-by: NSamuel Ortiz <sameo@linux.intel.com>
      10bbc48d
    • R
      mfd: Commonize tps65910 regmap access through header · 3f7e8275
      Rhyland Klein 提交于
      This change removes the read/write callback functions in favor of common
      regmap accessors inside the header file. This change also makes use of
      regmap_read/write for single register access which maps better onto what this
      driver actually needs.
      Signed-off-by: NRhyland Klein <rklein@nvidia.com>
      Signed-off-by: NSamuel Ortiz <sameo@linux.intel.com>
      3f7e8275
    • S
      gpio/generic: initialize basic_mmio_gpio shadow variables properly · 3e11f7b8
      Shawn Guo 提交于
      It fixes the issue in gpio-generic that commit fb149218 (gpio/mxc: add
      missing initialization of basic_mmio_gpio shadow variables) manged to
      fix in gpio-mxc driver, so that other platform specific drivers do not
      suffer from the same problem over and over again.
      
      Changes since v1:
      * Turn the last parameter of bgpio_init() "bool big_endian" into
        "unsigned long flags" and give those really quirky hardwares a
        chance to tell that reg_set and reg_dir are unreadable.
      Signed-off-by: NShawn Guo <shawn.guo@linaro.org>
      [grant.likely: Fix big-endian usage to explicitly set BBGPIOF_BIG_ENDIAN]
      Signed-off-by: NGrant Likely <grant.likely@secretlab.ca>
      3e11f7b8
  6. 19 5月, 2012 9 次提交
  7. 18 5月, 2012 3 次提交
    • K
      gpio/omap: (re)fix wakeups on level-triggered GPIOs · b3c64bc3
      Kevin Hilman 提交于
      commit 1b128703 (gpio/omap: fix missing check in *_runtime_suspend())
      broke wakeups on level-triggered GPIOs by adding the enabled
      non-wakeup GPIO check before the workaround that enables wakeups
      on level-triggered IRQs, effectively disabling that workaround.
      
      To fix, move the enabled non-wakeup GPIO check after the
      level-triggered IRQ workaround.
      Reported-by: NTony Lindgren <tony@atomide.com>
      Tested-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NSantosh Shilimkar <santosh.shilimkar@ti.com>
      Acked-by: NTarun Kanti DebBarma <tarun.kanti@ti.com>
      Tested-by: NTarun Kanti DebBarma <tarun.kanti@ti.com>
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      b3c64bc3
    • K
      gpio/omap: fix broken context restore for non-OFF mode transitions · 22770de1
      Kevin Hilman 提交于
      The fix in commit 1b128703 (gpio/omap: fix missing check in
      *_runtime_suspend()) exposed another bug in the context restore path.
      
      Currently, the per-bank context restore happens whenever the context
      loss count is different in runtime suspend and runtime resume *and*
      whenever the per-bank contex_loss_count == 0:
      
      	if (context_lost_cnt_after != bank->context_loss_count ||
      					!context_lost_cnt_after) {
      		omap_gpio_restore_context(bank);
      
      Restoring context when the context_lost_cnt_after == 0 is clearly
      wrong, since this will be true until the first off-mode transition
      (which could be never, if off-mode is never enabled.)  This check
      causes the context to be restored on *every* runtime PM transition.
      
      Before commit 1b128703 (gpio/omap: fix missing check in
      *_runtime_suspend()), this code was never executed in non-OFF mode, so
      there were never spurious context restores happening.  After that
      change though, spurious context restores could happen.
      
      To fix, simply remove the !context_lost_cnt_after check. It is not
      needed.
      
      This bug was found when noticing that the smc911x NIC on 3530/Overo
      was not working, and git bisect tracked it down to this patch.  It
      seems that the spurious context restore was causing the smsc911x to
      not be properly probed on this platform.
      Tested-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NTarun Kanti DebBarma <tarun.kanti@ti.com>
      Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
      Signed-off-by: NKevin Hilman <khilman@ti.com>
      22770de1
    • M
      gpio: Emma Mobile GPIO driver V2 · a07e103e
      Magnus Damm 提交于
      This patch is V2 of the Emma Mobile GPIO driver. This
      driver is designed to be reusable between multiple SoCs
      that share the same basic building block, but so far it
      has only been used on Emma Mobile EV2.
      
      Each driver instance handles 32 GPIOs with individually
      maskable IRQs. The driver operates on two I/O memory
      ranges and the 32 GPIOs are hooked up to two interrupts.
      
      In the case of Emma Mobile EV2 this GPIO building block
      is used as main external interrupt controller hooking up
      159 GPIOS as 159 interrupts via 5 driver instances and
      10 interrupts to the GIC and the Cortex-A9 Dual.
      Signed-off-by: NMagnus Damm <damm@opensource.se>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      a07e103e
  8. 16 5月, 2012 1 次提交
  9. 12 5月, 2012 15 次提交
  10. 11 5月, 2012 1 次提交