1. 12 8月, 2021 1 次提交
  2. 05 5月, 2021 1 次提交
  3. 21 4月, 2021 1 次提交
    • T
      gpio: omap: Save and restore sysconfig · ddd8d94c
      Tony Lindgren 提交于
      As we are using cpu_pm to save and restore context, we must also save and
      restore the GPIO sysconfig register. This is needed because we are not
      calling PM runtime functions at all with cpu_pm.
      
      We need to save the sysconfig on idle as it's value can get reconfigured by
      PM runtime and can be different from the init time value. Device specific
      flags like "ti,no-idle-on-init" can affect the init value.
      
      Fixes: b764a586 ("gpio: omap: Remove custom PM calls and use cpu_pm instead")
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Adam Ford <aford173@gmail.com>
      Cc: Andreas Kemnade <andreas@kemnade.info>
      Cc: Grygorii Strashko <grygorii.strashko@ti.com>
      Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NBartosz Golaszewski <bgolaszewski@baylibre.com>
      ddd8d94c
  4. 01 12月, 2020 1 次提交
  5. 28 10月, 2020 1 次提交
  6. 29 8月, 2020 1 次提交
  7. 20 8月, 2020 1 次提交
  8. 23 7月, 2020 1 次提交
  9. 20 7月, 2020 2 次提交
  10. 16 7月, 2020 1 次提交
  11. 30 6月, 2020 1 次提交
    • T
      gpio: omap: Add missing PM ops for suspend · f02a0398
      Tony Lindgren 提交于
      We've had the legacy platform code take care of suspend for us but
      this no longer is the case when probed without legacy mode with
      ti-sysc. We need to configure PM ops like standard Linux device
      drivers do.
      
      As we still have some SoCs booting also the legacy mode, we need to
      add omap_gpio_suspend() and omap_gpio_resume(), and check for the
      is_suspended flag to avoid legacy _od_suspend_noirq() calling them
      on an already suspended GPIO instance.
      
      Once we have no SoCs booting in legacy mode, we can just switch to
      using the standard PM ops with pm_runtime_force_suspend() and
      pm_runtime_force_resume().
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NBartosz Golaszewski <bgolaszewski@baylibre.com>
      f02a0398
  12. 09 3月, 2020 2 次提交
  13. 07 11月, 2019 1 次提交
  14. 19 6月, 2019 1 次提交
  15. 12 6月, 2019 21 次提交
  16. 11 4月, 2019 2 次提交
    • R
      gpio: gpio-omap: Remove conditional pm_runtime handling for GPIO interrupts · 044e499a
      Russell King 提交于
      Commit b764a586 ("gpio: omap: Remove custom PM calls and use cpu_pm
      instead") moved interrupt using GPIO banks to idle with cpu_pm in order
      to drop the use of pm_runtime_irq_safe() in a later patch. The GPIO
      banks with no interrupts claimed are still being idled based on PM
      runtime calls. However this caused a regression for am437x suspend for
      rtc+ddr idle mode where the device cannot enter idle state as reported
      by Keerthy <j-keerthy@ti.com>.
      
      To fix the issue, we must not fail the pm_runtime callbacks. For GPIO
      interrupts, we already have irq_chip_pm_get increment the PM runtime
      use count as pointed out by Grygorii Strashko <grygorii.strashko@ti.com>.
      
      So all we need to do is remove the conditional handling in the
      runtime_suspend and resume functions and let the CPU PM notifier idle
      the GPIO banks.
      
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Grygorii Strashko <grygorii.strashko@ti.com>
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
      Cc: Tero Kristo <t-kristo@ti.com>
      Fixes: b764a586 ("gpio: omap: Remove custom PM calls and use cpu_pm instead")
      Reported-by: NKeerthy <j-keerthy@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      [tony@atomide.com: updated patch description, dropped runtime count changes]
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Tested-by: NKeerthy <j-keerthy@ti.com>
      Reviewed-by: NKeerthy <j-keerthy@ti.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      044e499a
    • R
      gpio: gpio-omap: configure edge detection for level IRQs for idle wakeup · e6818d29
      Russell King 提交于
      The GPIO block can enter idle independently of the CPU power management
      calls via smart-idle.  When the GPIO block enters idle, level detection
      stops working due to clocks being shut off, and an alternative form of
      edge detection is used.  However, this needs the edge detection
      registers set to mark the appropriate edges.
      
      Arrange to configure the edge detection enables along with the level
      detection to ensure that any transition to active interrupt state that
      occurs while the block is idle is detected as a wake-up event.
      
      Since we enable the edge detection when configuring the IRQ, both
      omap2_gpio_enable_level_quirk() nor omap2_gpio_disable_level_quirk()
      become redundant, which also means OMAP_GPIO_QUIRK_IDLE_REMOVE_TRIGGER
      can be removed. This can be now done without regressions as patch
      "gpio: gpio-omap: fix level interrupt idling" allows level interrupts
      to idle on omap4 without a workaround.
      
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Grygorii Strashko <grygorii.strashko@ti.com>
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
      Cc: Tero Kristo <t-kristo@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      [tony@atomide.com: update description for the fix dependency]
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      e6818d29
  17. 05 4月, 2019 1 次提交