16 Sep, 2015

2 commits

  • 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
    Acked-by: Simon Horman
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-sh@vger.kernel.org
    Cc: Russell King
    Cc: Magnus Damm
    Link: http://lkml.kernel.org/r/1440889285-5637-4-git-send-email-robh@kernel.org
    Signed-off-by: Thomas Gleixner

    Rob Herring
     
  • Most interrupt flow handlers do not use the irq argument. Those few
    which use it can retrieve the irq number from the irq descriptor.

    Remove the argument.

    Search and replace was done with coccinelle and some extra helper
    scripts around it. Thanks to Julia for her help!

    Signed-off-by: Thomas Gleixner
    Cc: Julia Lawall
    Cc: Jiang Liu

    Thomas Gleixner
     

29 Jul, 2015

4 commits

  • The irq argument of most interrupt flow handlers is unused or merily
    used instead of a local variable. The handlers which need the irq
    argument can retrieve the irq number from the irq descriptor.

    Search and update was done with coccinelle and the invaluable help of
    Julia Lawall.

    Signed-off-by: Thomas Gleixner
    Cc: Jiang Liu
    Cc: Simon Horman
    Cc: Magnus Damm
    Cc: Julia Lawall
    Link: http://lkml.kernel.org/r/20150713151626.872605327@linutronix.de
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc while we
    already have a pointer to corresponding irq_desc.

    Also replace generic_handle_irq with generic_handle_irq_desc() to avoid
    looking up irq_desc again.

    Signed-off-by: Jiang Liu
    Cc: Simon Horman
    Cc: Magnus Damm
    Link: http://lkml.kernel.org/r/20150713151626.792845830@linutronix.de
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Jiang Liu
     
  • This is a preparatory patch for moving irq_data struct members.

    Signed-off-by: Jiang Liu
    Cc: Simon Horman
    Cc: Magnus Damm
    Link: http://lkml.kernel.org/r/20150713151626.713278346@linutronix.de
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Thomas Gleixner
     
  • This is a preparatory patch for refactoring the internals if irq_data.

    Signed-off-by: Jiang Liu
    Cc: Simon Horman
    Cc: Magnus Damm
    Link: http://lkml.kernel.org/r/20150713151626.616384365@linutronix.de
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar

    Jiang Liu
     

25 Jun, 2015

2 commits

  • Fix a race where a pending interrupt could be received and the handler
    called before the handler's data has been setup, by converting to
    irq_set_chained_handler_and_data().

    Search and conversion was done with coccinelle:

    @@
    expression E1, E2, E3;
    @@
    (
    -if (irq_set_chained_handler(E1, E3) != 0)
    - BUG();
    |
    -irq_set_chained_handler(E1, E3);
    )
    -irq_set_handler_data(E1, E2);
    +irq_set_chained_handler_and_data(E1, E3, E2);

    @@
    expression E1, E2, E3;
    @@
    (
    -if (irq_set_chained_handler(E1, E3) != 0)
    - BUG();
    ...
    |
    -irq_set_chained_handler(E1, E3);
    ...
    )
    -irq_set_handler_data(E1, E2);
    +irq_set_chained_handler_and_data(E1, E3, E2);

    Reported-by: Russell King
    Signed-off-by: Thomas Gleixner
    Cc: Julia Lawall
    Cc: Simon Horman
    Cc: Magnus Damm
    Cc: linux-sh@vger.kernel.org

    Thomas Gleixner
     
  • Fix a race where a pending interrupt could be received and the handler
    called before the handler's data has been setup, by moving the call to
    irq_set_chained_handler() after the function which sets up the handler
    data.

    Found by code inspection.

    Reported-by: Russell King
    Signed-off-by: Thomas Gleixner
    Cc: Simon Horman
    Cc: Magnus Damm
    Cc: linux-sh@vger.kernel.org

    Thomas Gleixner
     

22 Aug, 2014

1 commit

  • Currently the sh-intc driver is compiled on all SuperH and
    non-multiplatform SH-Mobile platforms, while it's only used on a limited
    number of platforms:
    - SuperH: SH2(A), SH3(A), SH4(A)(L) (all but SH5)
    - ARM: sh7372, sh73a0

    Drop the "default y" on SH_INTC, make all CPU platforms that use it
    select it, and protect all sub-options by "if SH_INTC" to fix this.

    Signed-off-by: Geert Uytterhoeven
    Acked-by: Magnus Damm
    Signed-off-by: Simon Horman

    Geert Uytterhoeven
     

07 Jun, 2014

1 commit

  • …ernel/git/horms/renesas into next

    Pull SH driver update from Simon Horman:

    - PM Runtime enhancements targeted for use with ARM-based Renesas R-Car
    Gen2 SoCs

    - Restrict INTC_USERIMASK to SH4A as it is only used there

    * tag 'renesas-sh-drivers-for-v3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
    drivers: sh: Enable PM runtime for new R-Car Gen2 SoCs
    drivers: sh: pm_runtime implementation needs to suspend and resume devices
    drivers: sh: Restrict INTC_USERIMASK to SH4A
    drivers: sh: pm_runtime does not need idle callback

    Linus Torvalds
     

26 May, 2014

1 commit


16 May, 2014

1 commit

  • The preceding call to irq_create_identity_mapping() marks the
    interrupt as allocated already. Remove the leftover.

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Grant Likely
    Cc: Tony Luck
    Cc: Peter Zijlstra
    Acked-by: Simon Horman
    Cc: linux-sh@vger.kernel.org
    Link: http://lkml.kernel.org/r/20140507154339.189047829@linutronix.de
    Signed-off-by: Thomas Gleixner

    Thomas Gleixner
     

18 Feb, 2014

1 commit


15 Oct, 2012

1 commit


20 Aug, 2012

1 commit


09 Aug, 2012

1 commit

  • Presently it's assumed that the irqdomain code handles the irq_desc
    allocation for us, but this isn't necessarily the case when we've
    pre-allocated IRQs via sparseirq. Previously we had a -EEXIST check in
    the code that attempted to trap these cases and simply update them
    in-place, but this behaviour was inadvertently lost in the transition to
    irqdomains.

    This simply restores the previous behaviour, first attempting to let the
    irqdomain core fetch the allocation for us, and falling back to an
    in-place domain association in the extant IRQ case. Fixes up regressions
    on platforms that pre-allocate legacy IRQs (specifically ARM-based
    SH-Mobile platforms, as SH stopped pre-allocating vectors some time ago).

    Reported-by: Kuninori Morimoto
    Signed-off-by: Paul Mundt

    Paul Mundt
     

01 Aug, 2012

1 commit


13 Jun, 2012

1 commit


24 May, 2012

1 commit


30 Mar, 2012

1 commit

  • Pull SuperH updates from Paul Mundt.

    * tag 'sh-for-linus' of git://github.com/pmundt/linux-sh: (25 commits)
    sh: Support I/O space swapping where needed.
    sh: use set_current_blocked() and block_sigmask()
    sh: no need to reset handler if SA_ONESHOT
    sh: intc: Fix up section mismatch for intc_ack_data
    sh: select ARCH_DISCARD_MEMBLOCK.
    sh: Consolidate duplicate _32/_64 unistd definitions.
    sh: ecovec: switch SDHI controllers to card polling
    sh: Avoid exporting unimplemented syscalls.
    sh: add platform_device for RSPI in setup-sh7757
    SH: pci-sh7780: enable big-endian operation.
    serial: sh-sci: fix a race of DMA submit_tx on transfer
    sh: dma: Collect up CHCR of SH7763, SH7764, SH7780 and SH7785
    sh: dma: Collect up CHCR of SH7723 and SH7730
    sh/next: Fix build fail by asm/system.h in asm/bitops.h
    arch/sh/drivers/dma/{dma-g2,dmabrg}.c: ensure arguments to request_irq and free_irq are compatible
    sh: cpufreq: Wire up scaling_available_freqs support.
    sh: cpufreq: notify about rate rounding fallback.
    sh: cpufreq: Support CPU clock frequency table.
    sh: cpufreq: struct device lookup from CPU topology.
    sh: cpufreq: percpu struct clk accounting.
    ...

    Linus Torvalds
     

28 Mar, 2012

1 commit

  • intc_ack_data is flagged as __init when it shouldn't be, causing section
    mismatches in non-init paths like intc_set_ack_handle():

    WARNING: drivers/built-in.o(.text+0x5d760):
    Section mismatch in reference from the function
    intc_set_ack_handle() to the function .init.text:intc_ack_data()
    The function intc_set_ack_handle()
    references the function __init intc_ack_data().
    This is often because intc_set_ack_handle lacks a __init
    annotation or the annotation of intc_ack_data is wrong.

    Reported-by: Kuninori Morimoto
    Signed-off-by: Paul Mundt

    Paul Mundt
     

26 Jan, 2012

1 commit


24 Jan, 2012

5 commits


09 Jan, 2012

1 commit

  • * 'pm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (76 commits)
    PM / Hibernate: Implement compat_ioctl for /dev/snapshot
    PM / Freezer: fix return value of freezable_schedule_timeout_killable()
    PM / shmobile: Allow the A4R domain to be turned off at run time
    PM / input / touchscreen: Make st1232 use device PM QoS constraints
    PM / QoS: Introduce dev_pm_qos_add_ancestor_request()
    PM / shmobile: Remove the stay_on flag from SH7372's PM domains
    PM / shmobile: Don't include SH7372's INTCS in syscore suspend/resume
    PM / shmobile: Add support for the sh7372 A4S power domain / sleep mode
    PM: Drop generic_subsys_pm_ops
    PM / Sleep: Remove forward-only callbacks from AMBA bus type
    PM / Sleep: Remove forward-only callbacks from platform bus type
    PM: Run the driver callback directly if the subsystem one is not there
    PM / Sleep: Make pm_op() and pm_noirq_op() return callback pointers
    PM/Devfreq: Add Exynos4-bus device DVFS driver for Exynos4210/4212/4412.
    PM / Sleep: Merge internal functions in generic_ops.c
    PM / Sleep: Simplify generic system suspend callbacks
    PM / Hibernate: Remove deprecated hibernation snapshot ioctls
    PM / Sleep: Fix freezer failures due to racy usermodehelper_is_disabled()
    ARM: S3C64XX: Implement basic power domain support
    PM / shmobile: Use common always on power domain governor
    ...

    Fix up trivial conflict in fs/xfs/xfs_buf.c due to removal of unused
    XBT_FORCE_SLEEP bit

    Linus Torvalds
     

26 Dec, 2011

1 commit

  • Since the SH7372's INTCS in included into syscore suspend/resume,
    which causes the chip to be accessed when PM domains have been
    turned off during system suspend, the A4R domain containing the
    INTCS has to stay on during system sleep, which is suboptimal
    from the power consumption point of view.

    For this reason, add a new INTC flag, skip_syscore_suspend, to mark
    the INTCS for intc_suspend() and intc_resume(), so that they don't
    touch it. This allows the A4R domain to be turned off during
    system suspend and the INTCS state is resrored during system
    resume by the A4R's "power on" code.

    Suggested-by: Magnus Damm
    Signed-off-by: Rafael J. Wysocki
    Acked-by: Magnus Damm

    Rafael J. Wysocki
     

22 Dec, 2011

1 commit


07 Nov, 2011

1 commit

  • * 'modsplit-Oct31_2011' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux: (230 commits)
    Revert "tracing: Include module.h in define_trace.h"
    irq: don't put module.h into irq.h for tracking irqgen modules.
    bluetooth: macroize two small inlines to avoid module.h
    ip_vs.h: fix implicit use of module_get/module_put from module.h
    nf_conntrack.h: fix up fallout from implicit moduleparam.h presence
    include: replace linux/module.h with "struct module" wherever possible
    include: convert various register fcns to macros to avoid include chaining
    crypto.h: remove unused crypto_tfm_alg_modname() inline
    uwb.h: fix implicit use of asm/page.h for PAGE_SIZE
    pm_runtime.h: explicitly requires notifier.h
    linux/dmaengine.h: fix implicit use of bitmap.h and asm/page.h
    miscdevice.h: fix up implicit use of lists and types
    stop_machine.h: fix implicit use of smp.h for smp_processor_id
    of: fix implicit use of errno.h in include/linux/of.h
    of_platform.h: delete needless include
    acpi: remove module.h include from platform/aclinux.h
    miscdevice.h: delete unnecessary inclusion of module.h
    device_cgroup.h: delete needless include
    net: sch_generic remove redundant use of
    net: inet_timewait_sock doesnt need
    ...

    Fix up trivial conflicts (other header files, and removal of the ab3550 mfd driver) in
    - drivers/media/dvb/frontends/dibx000_common.c
    - drivers/media/video/{mt9m111.c,ov6650.c}
    - drivers/mfd/ab3550-core.c
    - include/linux/dmaengine.h

    Linus Torvalds
     

04 Nov, 2011

1 commit


01 Nov, 2011

4 commits


28 Oct, 2011

2 commits

  • This fix the problem that S_IRUSR and S_IWUSR are not solved in userimask.c.

    -----
    CC drivers/usb/host/r8a66597-hcd.o
    drivers/sh/intc/userimask.c:57: error: ‘S_IRUSR’ undeclared here (not in a function)
    drivers/sh/intc/userimask.c:57: error: ‘S_IWUSR’ undeclared here (not in a function)
    CC drivers/watchdog/shwdt.o
    -----

    Signed-off-by: Nobuhiro Iwamatsu
    Signed-off-by: Paul Mundt

    Nobuhiro Iwamatsu
     
  • R-Mobile SoCs such as sh73a0 include PINT blocks in INTC
    that come with 2-bit IRQ trigger support. Add code to make
    sure the bit width is checked so 4-bit only modes like for
    instance EDGE_BOTH will fail for PINT.

    Signed-off-by: Magnus Damm
    Signed-off-by: Paul Mundt

    Magnus Damm
     

21 Jul, 2011

1 commit


27 Apr, 2011

1 commit