1. 21 Sep, 2016 2 commits
    • Arnd Bergmann's avatar
      Merge tag 'mvebu-soc-4.9-1' of git://git.infradead.org/linux-mvebu into next/soc · e40454d3
      Arnd Bergmann authored
      Pull "mvebu soc for 4.9 (part 1)" from Gregory CLEMENT:
      
      - irq cleanup for old mvebu SoC
      
      * tag 'mvebu-soc-4.9-1' of git://git.infradead.org/linux-mvebu:
        ARM: orion5x: remove extraneous NO_IRQ
        ARM: orion: simplify orion_ge00_switch_init
        ARM: mvebu/orion: remove NO_IRQ check from device init
        ARM: mv78xx0: simplify ethernet device creation
      e40454d3
    • Arnd Bergmann's avatar
      Merge tag 'imx-legacy-4.9' of... · b315dac3
      Arnd Bergmann authored
      Merge tag 'imx-legacy-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/soc
      
      Pull "i.MX legacy board file changes for 4.9" from Shawn Guo:
      
      It includes a patch series that moves registrations and initializations
      of all peripherals which are GPIO line consumers for all legacy boards
      from .init_machine to .init_late init level. This is needed to
      proactively prevent boot time issues on the legacy boards due to the
      deprioritized init level of the GPIO controller driver (set lower than
      IOMUX controller driver init level), which is shared among all i.MX
      SoCs.
      
      * tag 'imx-legacy-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
        ARM: imx legacy: pca100: move peripheral initialization to .init_late
        ARM: imx legacy: mx27ads: move peripheral initialization to .init_late
        ARM: imx legacy: mx21ads: move peripheral initialization to .init_late
        ARM: imx legacy: pcm043: move peripheral initialization to .init_late
        ARM: imx legacy: mx35-3ds: move peripheral initialization to .init_late
        ARM: imx legacy: mx27-3ds: move peripheral initialization to .init_late
        ARM: imx legacy: imx27-visstrim-m10: move peripheral initialization to .init_late
        ARM: imx legacy: vpr200: move peripheral initialization to .init_late
        ARM: imx legacy: mx31moboard: move peripheral initialization to .init_late
        ARM: imx legacy: armadillo5x0: move peripheral initialization to .init_late
        ARM: imx legacy: qong: move peripheral initialization to .init_late
        ARM: imx legacy: mx31-3ds: move peripheral initialization to .init_late
        ARM: imx legacy: pcm037: move peripheral initialization to .init_late
        ARM: imx legacy: mx31lilly: move peripheral initialization to .init_late
        ARM: imx legacy: mx31ads: move peripheral initialization to .init_late
        ARM: imx legacy: mx31lite: move peripheral initialization to .init_late
        ARM: imx legacy: kzm: move peripheral initialization to .init_late
      b315dac3
  2. 20 Sep, 2016 17 commits
  3. 19 Sep, 2016 3 commits
  4. 14 Sep, 2016 9 commits
  5. 09 Sep, 2016 5 commits
    • Robert Jarzmik's avatar
      ARM: pxa: pxa_cplds: fix interrupt handling · 9ba63e3c
      Robert Jarzmik authored
      Since its initial commit, the driver is buggy for multiple interrupts
      handling. The translation from the former lubbock.c file was not
      complete, and might stall all interrupt handling when multiple
      interrupts occur.
      
      This is especially true when inside the interrupt handler and if a new
      interrupt comes and is not handled, leaving the output line still held,
      and not creating a transition as the GPIO block behind would expect to
      trigger another cplds_irq_handler() call.
      
      For the record, the hardware is working as follows.
      
      The interrupt mechanism relies on :
       - one status register
       - one mask register
      
      Let's suppose the input irq lines are called :
       - i_sa1111
       - i_lan91x
       - i_mmc_cd
      Let's suppose the status register for each irq line is called :
       - status_sa1111
       - status_lan91x
       - status_mmc_cd
      Let's suppose the interrupt mask for each irq line is called :
       - irqen_sa1111
       - irqen_lan91x
       - irqen_mmc_cd
      Let's suppose the output irq line, connected to GPIO0 is called :
       - o_gpio0
      
      The behavior is as follows :
       - o_gpio0 = not((status_sa1111 & irqen_sa1111) |
      		 (status_lan91x & irqen_lan91x) |
      		 (status_mmc_cd & irqen_mmc_cd))
         => this is a N-to-1 NOR gate and multiple AND gates
       - irqen_* is exactly as programmed by a write to the FPGA
       - status_* behavior is governed by a bi-stable D flip-flop
         => on next FPGA clock :
           - if i_xxx is high, status_xxx becomes 1
           - if i_xxx is low, status_xxx remains as it is
           - if software sets status_xxx to 0, the D flip-flop is reset
             => status_xxx becomes 0
             => on next FPGA clock cycle, if i_xxx is high, status_xxx becomes
      	  1 again
      
      Fixes: fc9e38c0 ("ARM: pxa: lubbock: use new pxa_cplds driver")
      Reported-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      9ba63e3c
    • Robert Jarzmik's avatar
      ARM: pxa: remove irq init from dt machines · 32f17997
      Robert Jarzmik authored
      The init_irq and handle_irq can be declared through standard irqchip
      declaration and are not necessary in machine descriptions.
      
      This is another step towards the generic kernel for the pxa
      architecture.
      Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
      32f17997
    • Markus Elfring's avatar
      ARM: pxa: Use kmalloc_array() in pxa_pm_init() · 85711105
      Markus Elfring authored
      * A multiplication for the size determination of a memory allocation
        indicated that an array data structure should be processed.
        Thus use the corresponding function "kmalloc_array".
      
        This issue was detected by using the Coccinelle software.
      
      * Replace the specification of a data type by a pointer dereference
        to make the corresponding size determination a bit safer according to
        the Linux coding style convention.
      Signed-off-by: default avatarMarkus Elfring <elfring@users.sourceforge.net>
      Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      85711105
    • Petr Cvek's avatar
      ARM: pxa: magician: Remove duplicated I2C pins declaration · e572f649
      Petr Cvek authored
      Magician has GPIO117_I2C_SCL and GPIO118_I2C_SDA pins declared twice.
      Signed-off-by: default avatarPetr Cvek <petr.cvek@tul.cz>
      Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      e572f649
    • Robert Jarzmik's avatar
      ARM: pxa: fix GPIO double shifts · ca26475b
      Robert Jarzmik authored
      The commit 9bf448c6 ("ARM: pxa: use generic gpio operation instead of
      gpio register") from Oct 17, 2011, leads to the following static checker
      warning:
        arch/arm/mach-pxa/spitz_pm.c:172 spitz_charger_wakeup()
        warn: double left shift '!gpio_get_value(SPITZ_GPIO_KEY_INT)
              << (1 << ((SPITZ_GPIO_KEY_INT) & 31))'
      
      As Dan reported, the value is shifted three times :
       - once by gpio_get_value(), which returns either 0 or BIT(gpio)
       - once by the shift operation '<<'
       - a last time by GPIO_bit(gpio) which is BIT(gpio)
      
      Therefore the calculation lead to a chained or operator of :
       - (1 << gpio) << (1 << gpio) = (2^gpio)^gpio = 2 ^ (gpio * gpio)
      
      It is be sheer luck the former statement works, only because each gpio
      used is strictly smaller than 6, and therefore 2^(gpio^2) never
      overflows a 32 bits value, and because it is used as a boolean value to
      check a gpio activation.
      
      As the xxx_charger_wakeup() functions are used as a true/false detection
      mechanism, take that opportunity to change their prototypes from integer
      return value to boolean one.
      
      Fixes: 9bf448c6 ("ARM: pxa: use generic gpio operation instead of
      gpio register")
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Cc: Joe Perches <joe@perches.com>
      Signed-off-by: default avatarRobert Jarzmik <robert.jarzmik@free.fr>
      ca26475b
  6. 08 Sep, 2016 2 commits
  7. 02 Sep, 2016 2 commits