1. 10 Feb, 2013 3 commits
    • Linus Walleij's avatar
      pinctrl/abx500: use direct IRQ defines · 43a255db
      Linus Walleij authored
      Make it harder to do mistakes by introducing the actual
      defined ABx500 IRQ number into the IRQ cluster definitions.
      Deduct cluster offset from the GPIO offset to make each
      cluster coherent.
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      43a255db
    • Lee Jones's avatar
      pinctrl/abx500: replace IRQ offsets with table read-in values · a6a16d27
      Lee Jones authored
      The ABx500 GPIO controller used to provide a set of virtual contiguous
      IRQs for use by sub-devices, but they have been removed after a request
      from Mainline Maintainers. Now the AB8500 core driver deals with almost
      all IRQ related issues instead.
      
      The ABx500 GPIO driver is now only used to convert between GPIO and IRQ
      numbers which is actually quite difficult, as the ABx500 GPIO's
      associated IRQs are clustered together throughout the interrupt number
      space at irregular intervals. To solve this quandary, we have placed the
      read-in values into the existing cluster information table to use during
      conversion.
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      [Moved irq_base removal into this patch]
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      a6a16d27
    • Lee Jones's avatar
      pinctrl/abx500: move IRQ handling to ab8500-core · ac652d79
      Lee Jones authored
      In its current state the gpio-ab8500 driver looks after some GPIO
      lines found on the AB8500 MFD chip. It also controls all of its
      own IRQ handling for these GPIOs by inventing some virtual IRQs
      and handing those out to sub-devices. There has been quite a bit
      of controversy over this and it was a contributing factor to the
      driver being marked as BROKEN in Mainline.
      
      The reason for adopting this method was due to added complexity
      in the hardware. Unusually, each GPIO has two separate IRQs
      associated with it, one for a rising and a different one for a
      falling interrupt. Using this method complicates matters further
      because the GPIO IRQs are actually sandwiched between a bunch
      of IRQs which are handled solely by the AB8500 core driver.
      
      The best way for us to take this forward is to get rid of the
      virtual IRQs and only hand out the rising IRQ lines. If a
      sub-driver wishes to request a falling interrupt, they can do
      so by requesting a rising line in the normal way. They just
      have to add IRQ_TYPE_EDGE_FALLING or IRQ_TYPE_EDGE_BOTH, if
      they require both in the flags. Then if a falling IRQ is
      triggered, the AB8500 core driver will know how to handle the
      added complexity accordingly. This should greatly simply things.
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      [Augment to keep irq_base for a while (removed later)]
      Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
      ac652d79
  2. 08 Feb, 2013 1 commit
  3. 07 Feb, 2013 2 commits
  4. 06 Feb, 2013 3 commits
  5. 05 Feb, 2013 18 commits
  6. 01 Feb, 2013 5 commits
  7. 30 Jan, 2013 7 commits
  8. 29 Jan, 2013 1 commit