1. 12 6月, 2019 7 次提交
  2. 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
  3. 05 4月, 2019 2 次提交
  4. 27 3月, 2019 3 次提交
    • T
      gpio: gpio-omap: add check for off wake capable gpios · da38ef3e
      Tony Lindgren 提交于
      We are currently assuming all GPIOs are non-wakeup capable GPIOs as we
      not configuring the bank->non_wakeup_gpios like we used to earlier with
      platform_data.
      
      Let's add omap_gpio_is_off_wakeup_capable() to make the handling clearer
      while considering that later patches may want to configure SoC specific
      bank->non_wakeup_gpios for the GPIOs in wakeup domain.
      
      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: Russell King <rmk+kernel@armlinux.org.uk>
      Cc: Tero Kristo <t-kristo@ti.com>
      Reported-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NBartosz Golaszewski <bgolaszewski@baylibre.com>
      da38ef3e
    • T
      gpio: gpio-omap: always scan for triggered non-wakeup capable interrupts · 06dce84e
      Tony Lindgren 提交于
      The bank->workaround_enabled should be for omap24xx erratum 1.101 but is not
      needed any longer as erratum 1.101 handling only needs to happen based on
      !bank->loses_context with patch "gpio: omap: Limit errata 1.101 handling to
      wkup domain gpios only".
      
      Further Grygorii Strashko <grygorii.strashko@ti.com> points out that we are
      now tagging all edge GPIOs as non-wakeup GPIOs and rely on original erratum
      1.101 handling for scacnning for edge interrupts that have triggered during
      idle.
      
      Also the TI Android kernel tree has an earlier commit "GPIO: OMAP: Always
      scan gpios during runtime resume" by Tero Kristo <t-kristo@ti.com> saying:
      
       "This allows the driver to generate interrupts for GPIOs that can't
        wakeup but have changed state during runtime suspend. We cannot
        depend on the decision based on no need to restore, as the system
        state might change and pending events could gather up."
      
      So let's remove bank->workaround_enabled and always scan for triggered edge
      interrupts on resume. We do that based on bank->enabled_non_wakeup_gpios.
      
      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: Russell King <rmk+kernel@armlinux.org.uk>
      Cc: Tero Kristo <t-kristo@ti.com>
      Reported-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NBartosz Golaszewski <bgolaszewski@baylibre.com>
      06dce84e
    • T
      gpio: gpio-omap: limit errata 1.101 handling to wkup domain gpios only · 21e2118f
      Tony Lindgren 提交于
      We need to only apply errata 1.101 handling to clear non-wakeup edge gpios
      for idle to the gpio bank(s) in the wkup domain to prevent spurious wake-up
      events.
      
      And we must restore what we did after idle manually as the gpio bank in
      wkup domain is not restored otherwise.
      
      Let's keep bank->saved_datain register reading separate, that's not related
      to the 1.101 errata and is used separately on restore.
      
      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: Russell King <rmk+kernel@armlinux.org.uk>
      Cc: Tero Kristo <t-kristo@ti.com>
      Reported-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NBartosz Golaszewski <bgolaszewski@baylibre.com>
      21e2118f
  5. 08 3月, 2019 1 次提交
    • R
      gpio: gpio-omap: fix level interrupt idling · d01849f7
      Russell King 提交于
      Tony notes that the GPIO module does not idle when level interrupts are
      in use, as the wakeup appears to get stuck.
      
      After extensive investigation, it appears that the wakeup will only be
      cleared if the interrupt status register is cleared while the interrupt
      is enabled. However, we are currently clearing it with the interrupt
      disabled for level-based interrupts.
      
      It is acknowledged that this observed behaviour conflicts with a
      statement in the TRM:
      
      CAUTION
        After servicing the interrupt, the status bit in the interrupt status
        register (GPIOi.GPIO_IRQSTATUS_0 or GPIOi.GPIO_IRQSTATUS_1) must be
        reset and the interrupt line released (by setting the corresponding
        bit of the interrupt status register to 1) before enabling an
        interrupt for the GPIO channel in the interrupt-enable register
        (GPIOi.GPIO_IRQSTATUS_SET_0 or GPIOi.GPIO_IRQSTATUS_SET_1) to prevent
        the occurrence of unexpected interrupts when enabling an interrupt
        for the GPIO channel.
      
      However, this does not appear to be a practical problem.
      
      Further, as reported by Grygorii Strashko <grygorii.strashko@ti.com>,
      the TI Android kernel tree has an earlier similar patch as "GPIO: OMAP:
      Fix the sequence to clear the IRQ status" saying:
      
       if the status is cleared after disabling the IRQ then sWAKEUP will not
       be cleared and gates the module transition
      
      When we unmask the level interrupt after the interrupt has been handled,
      enable the interrupt and only then clear the interrupt. If the interrupt
      is still pending, the hardware will re-assert the interrupt status.
      
      Should the caution note in the TRM prove to be a problem, we could
      use a clear-enable-clear sequence instead.
      
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Peter Ujfalusi <peter.ujfalusi@ti.com>
      Signed-off-by: NRussell King <rmk+kernel@armlinux.org.uk>
      [tony@atomide.com: updated comments based on an earlier TI patch]
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      d01849f7
  6. 21 12月, 2018 1 次提交
    • T
      gpio: gpio-omap: Revert deferred wakeup quirk handling for regressions · 00ded24c
      Tony Lindgren 提交于
      Commit ec0daae6 ("gpio: omap: Add level wakeup handling for omap4
      based SoCs") attempted to fix omap4 GPIO wakeup handling as it was
      blocking deeper SoC idle states. However this caused a regression for
      GPIOs during runtime having over second long latencies for Ethernet
      GPIO interrupt as reportedy by Russell King <rmk+kernel@armlinux.org.uk>.
      
      Let's fix this issue by doing a partial revert of the breaking commit.
      We still want to keep the quirk handling around as it is also used for
      OMAP_GPIO_QUIRK_IDLE_REMOVE_TRIGGER.
      
      The real fix for omap4 GPIO wakeup handling involves fixes for
      omap_set_gpio_trigger() and omap_gpio_unmask_irq() and will be posted
      separately. And we must keep the wakeup bit enabled during runtime
      because of module doing clock autogating with autoidle configured.
      Reported-by: NRussell King <rmk+kernel@armlinux.org.uk>
      Fixes: ec0daae6 ("gpio: omap: Add level wakeup handling for omap4
      based SoCs")
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Grygorii Strashko <grygorii.strashko@ti.com>
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Ladislav Michl <ladis@linux-mips.org>
      Cc: Russell King <rmk+kernel@armlinux.org.uk>
      Cc: Tero Kristo <t-kristo@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      00ded24c
  7. 05 11月, 2018 1 次提交
  8. 01 10月, 2018 3 次提交
  9. 24 9月, 2018 3 次提交
    • T
      gpio: omap: Get rid of pm_runtime_irq_safe() · 5284521a
      Tony Lindgren 提交于
      If a gpio instance has any GPIO bits requested we do a pm_runtime_get()
      on the device. Now with cpu_pm handling the deeper SoC idle state quirks,
      let's just remove pm_runtime_irq_safe() call and add a warning in case we
      ever happen to encounter it.
      
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Ladislav Michl <ladis@linux-mips.org>
      Cc: Tero Kristo <t-kristo@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      5284521a
    • T
      gpio: omap: Remove custom PM calls and use cpu_pm instead · b764a586
      Tony Lindgren 提交于
      For a long time the gpio-omap custom PM calls have been annoying me so
      let's replace them with cpu_pm instead. This will enable GPIO PM for
      deeper idle states on omap4. And we can handle GPIO PM for omap2/3/4
      in the same way.
      
      Note that with this patch we are also slightly changing GPIO PM to be
      less aggressive for omap3 and only will idle GPIO when PER context
      may be lost.
      
      For omap2, we don't need to save context and don't want to remove any
      triggering so let's add a quirk flag for that.
      
      Let's do this all in a single patch to avoid a situation where old
      custom calls still are used with new code.
      
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Keerthy <j-keerthy@ti.com>
      Cc: Ladislav Michl <ladis@linux-mips.org>
      Cc: Tero Kristo <t-kristo@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      b764a586
    • T
      gpio: omap: Add level wakeup handling for omap4 based SoCs · ec0daae6
      Tony Lindgren 提交于
      I noticed that unlike omap2 and 3 based SoCs, omap4 based SoCs keep
      the GPIO clocks enabled for GPIO level interrupts with wakeup enabled.
      This blocks deeper idle states as the whole domain will stay busy.
      
      The GPIO functional clock seems to stay enabled if the wakeup register
      is enabled and a level interrupt is triggered. In that case the only
      way to have the GPIO module idle is to reset it. It is possible this
      has gone unnoticed with OSWR (Open SWitch Retention) and off mode
      during idle resetting GPIO context most GPIO instances in the earlier
      Android trees for example.
      
      Looks like the way to deal with this is to have omap4 based SoCs
      only set wake for the duration of idle for level interrupts, and clear
      level registers for the idle. With level interrupts we can do this as
      the level interrupt from device will be still there on resume.
      
      I've taken the long path to fixing this to avoid yet more hard to
      read code. I've set up a quirks flag, and a struct for function
      pointers so we can use these to clean up other quirk handling easier
      in the later patches. The current level quirk handling is moved to
      the new functions.
      
      Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
      Cc: Ladislav Michl <ladis@linux-mips.org>
      Cc: Tero Kristo <t-kristo@ti.com>
      Signed-off-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Tested-by: NKeerthy <j-keerthy@ti.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      ec0daae6
  10. 07 8月, 2018 1 次提交
  11. 24 5月, 2018 1 次提交
  12. 22 2月, 2018 2 次提交
  13. 03 1月, 2018 1 次提交
    • L
      gpio: omap: Give unique labels to each GPIO bank/chip · 088413bc
      Linus Walleij 提交于
      As we need to add GPIO lookup tables to the OMAP platforms, we
      need to reference each GPIO chip with a unique label. Use the GPIO
      base to name each chip, "gpio-0-31", "gpio-32-63" etc.
      
      Cc: Grygorii Strashko <grygorii.strashko@ti.com>
      Cc: Santosh Shilimkar <ssantosh@kernel.org>
      Cc: Kevin Hilman <khilman@kernel.org>
      Cc: linux-omap@vger.kernel.org
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      088413bc
  14. 30 11月, 2017 1 次提交
  15. 08 11月, 2017 1 次提交
  16. 07 10月, 2017 1 次提交
  17. 21 9月, 2017 1 次提交
    • A
      gpio: omap: omap_gpio_show_rev is not __init · e4b2ae7a
      Arnd Bergmann 提交于
      The probe function calls omap_gpio_show_rev(), which on most
      compilers is inlined, but on the old gcc-4.6 is not, causing
      a valid warning about the incorrect __init annotation:
      
      WARNING: vmlinux.o(.text+0x40f614): Section mismatch in reference from the function omap_gpio_probe() to the function .init.text:omap_gpio_show_rev()
      The function omap_gpio_probe() references
      the function __init omap_gpio_show_rev().
      This is often because omap_gpio_probe lacks a __init
      annotation or the annotation of omap_gpio_show_rev is wrong.
      
      This removes the __init.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NSantosh Shilimkar <ssantosh@kernel.org>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      e4b2ae7a
  18. 14 8月, 2017 1 次提交
  19. 28 4月, 2017 1 次提交
  20. 15 3月, 2017 1 次提交
  21. 26 1月, 2017 1 次提交
    • M
      pinctrl / gpio: Introduce .set_config() callback for GPIO chips · 2956b5d9
      Mika Westerberg 提交于
      Currently we already have two pin configuration related callbacks
      available for GPIO chips .set_single_ended() and .set_debounce(). In
      future we expect to have even more, which does not scale well if we need
      to add yet another callback to the GPIO chip structure for each possible
      configuration parameter.
      
      Better solution is to reuse what we already have available in the
      generic pinconf.
      
      To support this, we introduce a new .set_config() callback for GPIO
      chips. The callback takes a single packed pin configuration value as
      parameter. This can then be extended easily beyond what is currently
      supported by just adding new types to the generic pinconf enum.
      
      If the GPIO driver is backed up by a pinctrl driver the GPIO driver can
      just assign gpiochip_generic_config() (introduced in this patch) to
      .set_config and that will take care configuration requests are directed
      to the pinctrl driver.
      
      We then convert the existing drivers over .set_config() and finally
      remove the .set_single_ended() and .set_debounce() callbacks.
      Suggested-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NMika Westerberg <mika.westerberg@linux.intel.com>
      Reviewed-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      2956b5d9
  22. 26 4月, 2016 1 次提交
    • G
      gpio: omap: fix irq triggering in smart-idle wakeup mode · 0c0451e7
      Grygorii Strashko 提交于
      Now GPIO IRQ loss is observed on dra7-evm after suspend/resume cycle
      in the following case:
        extcon_usb1(id_irq) ->  pcf8575.gpio1 -> omapgpio6.gpio11 -> gic
      
      the extcon_usb1 is wake up source and it enables IRQ wake up for
      id_irq by calling enable/disable_irq_wake() during suspend/resume
      which, in turn, causes execution of omap_gpio_wake_enable(). And
      omap_gpio_wake_enable() will set/clear corresponding bit in
      GPIO_IRQWAKEN_x register.
      
      omapgpio6 configuration after boot - wakeup is enabled for GPIO IRQs
      by default from  omap_gpio_irq_type:
      GPIO_IRQSTATUS_SET_0    | 0x00000400
      GPIO_IRQSTATUS_CLR_0    | 0x00000400
      GPIO_IRQWAKEN_0         | 0x00000400
      GPIO_RISINGDETECT       | 0x00000000
      GPIO_FALLINGDETECT      | 0x00000400
      
      omapgpio6 configuration after after suspend/resume cycle:
      GPIO_IRQSTATUS_SET_0    | 0x00000400
      GPIO_IRQSTATUS_CLR_0    | 0x00000400
      GPIO_IRQWAKEN_0         | 0x00000000 <---
      GPIO_RISINGDETECT       | 0x00000000
      GPIO_FALLINGDETECT      | 0x00000400
      
      As result, system will start to lose interrupts from pcf8575 GPIO
      expander, because when OMAP GPIO IP is in smart-idle wakeup mode, there
      is no guarantee that transition(s) on input non wake up GPIO pin will
      trigger asynchronous wake-up request to PRCM and then IRQ generation.
      IRQ will be generated when GPIO is in active mode - for example, some
      time after accessing GPIO bank registers IRQs will be generated
      normally, but issue will happen again once PRCM will put GPIO in low
      power smart-idle wakeup mode.
      
      Note 1. Issue is not reproduced if debounce clk is enabled for GPIO
      bank.
      
      Note 2. Issue hardly reproducible if GPIO pins group contains both
      wakeup/non-wakeup gpios - for example, it will be hard to reproduce
      issue with pin2 if GPIO_IRQWAKEN_0=0x1 GPIO_IRQSTATUS_SET_0=0x3
      GPIO_FALLINGDETECT = 0x3 (TRM "Power Saving by Grouping the Edge/Level
      Detection").
      
      Note 3. There nothing common bitween System wake up and OMAP GPIO bank
      IP wake up logic - the last one defines how the GPIO bank ON-IDLE-ON
      transition will happen inside SoC under control of PRCM.
      
      Hence, fix the problem by removing omap_set_gpio_wakeup() function
      completely and so keeping always in sync GPIO IRQ mask/unmask
      (IRQSTATUS_SET) and wake up enable (GPIO_IRQWAKEN) bits; and adding
      IRQCHIP_MASK_ON_SUSPEND flag in OMAP GPIO irqchip. That way non wakeup
      GPIO IRQs will be properly masked/unmask by IRQ PM core during
      suspend/resume cycle.
      
      Cc: Roger Quadros <rogerq@ti.com>
      Signed-off-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Acked-by: NTony Lindgren <tony@atomide.com>
      Acked-by: NSantosh Shilimkar <santosh.shilimkar@oracle.com>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      0c0451e7
  23. 09 3月, 2016 1 次提交
  24. 05 1月, 2016 1 次提交
  25. 30 11月, 2015 1 次提交
    • G
      gpio: omap: drop omap1 mpuio specific irq_mask/unmask callbacks · 000255b7
      Grygorii Strashko 提交于
      Originally OMAP MPUIO GPIO irqchip was implemented using Generic irq
      chip, but after set of reworks Generic irq chip code was replaced by
      common OMAP GPIO implementation and finally removed by
      commit d2d05c65 ("gpio: omap: Fix regression for MPUIO interrupts").
      Unfortunately, above commit left .irq_mask/unmask callbacks assigned
      as below for MPUIO GPIO case:
      	irqc->irq_mask = irq_gc_mask_set_bit;
      	irqc->irq_unmask = irq_gc_mask_clr_bit;
      
      This now causes boot failure on OMAP1 platforms, after
      commit 450fa54c ("gpio: omap: convert to use generic irq handler")
      which forces these callbacks to be called during GPIO IRQs mapping
      from gpiochip_irq_map:
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000000
      pgd = c0004000
      [00000000] *pgd=00000000
      Internal error: Oops: 75 [#1] ARM
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper Not tainted 4.4.0-rc1-e3-los_afe0c+-00002-g25379c0-dirty #1
      Hardware name: Amstrad E3 (Delta)
      task: c1836000 ti: c1838000 task.ti: c1838000
      PC is at irq_gc_mask_set_bit+0x1c/0x60
      LR is at __irq_do_set_handler+0x118/0x15c
      pc : [<c004848c>]    lr : [<c0047d4c>]    psr: 600000d3
      sp : c1839c90  ip : c1862c64  fp : c1839c9c
      r10: 00000000  r9 : c0411950  r8 : c0411bbc
      r7 : 00000000  r6 : c185c310  r5 : c00444e8  r4 : c185c300
      r3 : c1854b50  r2 : 00000000  r1 : 00000000  r0 : c185c310
      Flags: nZCv  IRQs off  FIQs off  Mode SVC_32  ISA ARM  Segment kernel
      Control: 0000317f  Table: 10004000  DAC: 00000057
      Process swapper (pid: 1, stack limit = 0xc1838190)
      Stack: (0xc1839c90 to 0xc183a000)
      
      [...]
      
      Backtrace:
      [<c0048470>] (irq_gc_mask_set_bit) from [<c0047d4c>] (__irq_do_set_handler+0x118/0x15c)
      [<c0047c34>] (__irq_do_set_handler) from [<c0047dd4>] (__irq_set_handler+0x44/0x5c)
       r6:00000000 r5:c00444e8 r4:c185c300
      [<c0047d90>] (__irq_set_handler) from [<c0047e1c>] (irq_set_chip_and_handler_name+0x30/0x34)
       r7:00000050 r6:00000000 r5:c00444e8 r4:00000050
      [<c0047dec>] (irq_set_chip_and_handler_name) from [<c01b345c>] (gpiochip_irq_map+0x3c/0x8c)
       r7:00000050 r6:00000000 r5:00000050 r4:c1862c64
      [<c01b3420>] (gpiochip_irq_map) from [<c0049670>] (irq_domain_associate+0x7c/0x1c4)
       r5:c185c310 r4:c185cb00
      [<c00495f4>] (irq_domain_associate) from [<c0049894>] (irq_domain_add_simple+0x98/0xc0)
       r8:c0411bbc r7:c185cb00 r6:00000050 r5:00000010 r4:00000001
      [<c00497fc>] (irq_domain_add_simple) from [<c01b3328>] (_gpiochip_irqchip_add+0x64/0x10c)
       r7:c1862c64 r6:c0419280 r5:c1862c64 r4:c1854b50
      [<c01b32c4>] (_gpiochip_irqchip_add) from [<c01b79f4>] (omap_gpio_probe+0x2fc/0x63c)
       r5:c1854b50 r4:c1862c10
      [<c01b76f8>] (omap_gpio_probe) from [<c01fcf58>] (platform_drv_probe+0x2c/0x64)
       r10:00000000 r9:c03e45e8 r8:00000000 r7:c0419294 r6:c0411984 r5:c0419294
       r4:c0411950
      [<c01fcf2c>] (platform_drv_probe) from [<c01fb668>] (really_probe+0x160/0x29c)
      
      Hence, fix it by remove obsolete callbacks assignment. After this
      change 	omap_gpio_mask_irq()/omap_gpio_unmask_irq() will be used
      for MPUIO IRQs masking, but this now happens anyway from
      omap_gpio_irq_startup/shutdown().
      
      Cc: Tony Lindgren <tony@atomide.com>
      Fixes: commit d2d05c65 ("gpio: omap: Fix regression for MPUIO interrupts")
      Reported-by: NAaro Koskinen <aaro.koskinen@iki.fi>
      Signed-off-by: NGrygorii Strashko <grygorii.strashko@ti.com>
      Acked-by: NSantosh Shilimkar <ssantosh@kernel.org>
      Tested-by: NAaro Koskinen <aaro.koskinen@iki.fi>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      000255b7