10 Mar, 2016

1 commit

  • The of_io_request_and_map() returns a valid pointer in iomem region or
    ERR_PTR(), check for NULL always fails and may cause a NULL pointer
    dereference on error path.

    Fixes: 25e34b44313b ("irqchip/mxs: Prepare driver for hardware with different offsets")
    Signed-off-by: Vladimir Zapolskiy
    Cc: Jason Cooper
    Cc: Marc Zyngier
    Cc: Oleksij Rempel
    Cc: Sascha Hauer
    Cc: Shawn Guo
    Cc: linux-arm-kernel@lists.infradead.org
    Link: http://lkml.kernel.org/r/1457486500-10237-1-git-send-email-vz@mleia.com
    Signed-off-by: Thomas Gleixner

    Vladimir Zapolskiy
     

29 Jan, 2016

1 commit

  • The rework of the driver missed to move the call to set_handle_irq() into
    asm9260_of_init(). As a consequence no interrupt entry point is installed and
    no interrupts are delivered

    Solution is simple: Install the interrupt entry handler.

    Fixes: 7e4ac676ee ("irqchip/mxs: Add Alphascale ASM9260 support")
    Signed-off-by: Oleksij Rempel
    Cc: kernel@pengutronix.de
    Cc: jason@lakedaemon.net
    Cc: marc.zyngier@arm.com
    Cc: stable@vger.kernel.org
    Link: http://lkml.kernel.org/r/1454061473-24957-1-git-send-email-linux@rempel-privat.de
    Signed-off-by: Thomas Gleixner

    Oleksij Rempel
     

14 Oct, 2015

3 commits

  • Freescale iMX23/iMX28 and Alphascale ASM9260 have similar interrupt
    collectors. We already prepared the mxs driver to handle a different
    register layout. Add the actual ASM9260 support.

    Differences between these devices:
    - Different register offsets
    - Different count of interupt lines per register
    - ASM9260 does not provide reset bit
    - ASM9260 does not support FIQ.

    Signed-off-by: Oleksij Rempel
    Tested-by: Shawn Guo
    Cc: Sascha Hauer
    Cc: marc.zyngier@arm.com
    Cc: jason@lakedaemon.net
    Link: http://lkml.kernel.org/r/1444677334-12242-6-git-send-email-linux@rempel-privat.de
    Signed-off-by: Thomas Gleixner

    Oleksij Rempel
     
  • Alphascale asm9260 has similar functionality but different register
    offsets. To support asm9260 in the mxs driver we need to rework the
    hardcoded access mechanisms.

    - Define SET_REG and CLR_REG. These controllers support seperate CLR and
    SET offsets for each register.

    - Reimplement HW_ICOLL_INTERRUPT with SET_REG and CLR_REG to make it
    usable for both cases.

    - Instead of using icoll_base and adding the offsets at runtime,
    create a new data structure which contains base pointers to all
    required regitsters and use it.

    - Split out functionality, which is required for the init code of mxs
    and asm9260, into helper functions

    [ tglx: Massaged changelog and moved the return value change to the
    previous patch ]

    Signed-off-by: Oleksij Rempel
    Tested-by: Shawn Guo
    Cc: Sascha Hauer
    Cc: marc.zyngier@arm.com
    Cc: jason@lakedaemon.net
    Link: http://lkml.kernel.org/r/1444677334-12242-5-git-send-email-linux@rempel-privat.de
    Signed-off-by: Thomas Gleixner

    Oleksij Rempel
     
  • Current code will only warn and then dereference the NULL pointer or
    continue, which results in a fatal NULL pointer dereference later.

    If the initialization fails, the machine is unusable, so panic right
    away.

    [ tglx: Massaged changelog and picked the irqdomain panic from the
    next patch]

    Signed-off-by: Oleksij Rempel
    Tested-by: Shawn Guo
    Cc: Sascha Hauer
    Cc: marc.zyngier@arm.com
    Cc: jason@lakedaemon.net
    Link: http://lkml.kernel.org/r/1444677334-12242-2-git-send-email-linux@rempel-privat.de
    Signed-off-by: Thomas Gleixner

    Oleksij Rempel
     

16 Sep, 2015

1 commit

  • set_irq_flags is ARM specific with custom flags which have genirq
    equivalents. Convert drivers to use the genirq interfaces directly, so we
    can kill off set_irq_flags. The translation of flags is as follows:

    IRQF_VALID -> !IRQ_NOREQUEST
    IRQF_PROBE -> !IRQ_NOPROBE
    IRQF_NOAUTOEN -> IRQ_NOAUTOEN

    For IRQs managed by an irqdomain, the irqdomain core code handles clearing
    and setting IRQ_NOREQUEST already, so there is no need to do this in
    .map() functions and we can simply remove the set_irq_flags calls. Some
    users also modify IRQ_NOPROBE and this has been maintained although it
    is not clear that is really needed. There appears to be a great deal of
    blind copy and paste of this code.

    Signed-off-by: Rob Herring
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Russell King
    Cc: Jason Cooper
    Cc: Kukjin Kim
    Cc: Krzysztof Kozlowski
    Cc: Stephen Warren
    Cc: Lee Jones
    Cc: Alexander Shiyan
    Cc: Maxime Ripard
    Cc: linux-rpi-kernel@lists.infradead.org
    Cc: linux-samsung-soc@vger.kernel.org
    Link: http://lkml.kernel.org/r/1440889285-5637-3-git-send-email-robh@kernel.org
    Signed-off-by: Thomas Gleixner

    Rob Herring
     

12 Jul, 2015

1 commit

  • The IRQCHIP_DECLARE macro moved to to 'include/linux/irqchip.h', so
    the local irqchip.h became an empty shell, which solely includes
    include/linux/irqchip.h

    Include the global header in all irqchip drivers instead of the local
    header, so we can remove it.

    Signed-off-by: Joel Porquet
    Cc: vgupta@synopsys.com
    Cc: monstr@monstr.eu
    Cc: ralf@linux-mips.org
    Cc: jason@lakedaemon.net
    Link: http://lkml.kernel.org/r/1882096.X39jVG8e0D@joel-zenbook
    Signed-off-by: Thomas Gleixner

    Joel Porquet
     

05 May, 2015

1 commit

  • The irq_domain_ops are not modified by the driver and the irqdomain core
    code accepts pointer to a const data.

    Signed-off-by: Krzysztof Kozlowski
    Cc: Jason Cooper
    Cc: Kukjin Kim
    Cc: Stephen Warren
    Cc: Lee Jones
    Cc: Matthias Brugger
    Cc: Maxime Ripard
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-rpi-kernel@lists.infradead.org
    Cc: linux-mediatek@lists.infradead.org
    Link: http://lkml.kernel.org/r/1430139264-4362-2-git-send-email-k.kozlowski.k@gmail.com
    Signed-off-by: Thomas Gleixner

    Krzysztof Kozlowski
     

03 Sep, 2014

1 commit


21 May, 2014

1 commit


03 Jun, 2013

1 commit

  • The mxs interrupt controller does not support polling for interrupts,
    but the driver still does it, which is a relict from
    pre-MULTI_IRQ_HANDLER times.

    The existing code assumes that 0x7f means no interrupt, but this value
    is an actually valid irq number, namely gpio bank 0's irq. This results
    in the driver not detecting when irq 0x7f is active which makes the
    machine effectively dead lock.

    This patch removes the interrupt poll loop and allows usage of gpio0
    interrupt without an infinite loop.

    Signed-off-by: Uwe Kleine-König
    Signed-off-by: Markus Pargmann
    Cc: stable@vger.kernel.org
    Signed-off-by: Shawn Guo

    Markus Pargmann
     

01 Apr, 2013

1 commit