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_NOAUTOENFor 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 -
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
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 -
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 -
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 -
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
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 -
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
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, sh73a0Drop 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
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
26 May, 2014
1 commit
-
register_intc_userimask() is called from sh4a code only.
Signed-off-by: Geert Uytterhoeven
Reviewed-by: Laurent Pinchart
Tested-by: Laurent Pinchart [r8a7779 legacy]
Signed-off-by: Simon Horman
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
18 Feb, 2014
1 commit
-
This helps increasing build testing coverage.
Signed-off-by: Laurent Pinchart
Signed-off-by: Simon Horman
15 Oct, 2012
1 commit
-
It was already pointed out how to fix these cases before the offending
patches were merged, but unsurprisingly, that didn't happen. As this
change is entirely superfluous to begin with, simply shut things up by
casting everything away.Signed-off-by: Paul Mundt
20 Aug, 2012
1 commit
-
In the multi-evt case we were accidentally associating the parent IRQ,
fix this up.Signed-off-by: Paul Mundt
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
01 Aug, 2012
1 commit
-
Trivial support for irq domains, using either a linear map or radix tree
depending on the vector layout.Signed-off-by: Paul Mundt
13 Jun, 2012
1 commit
-
This switches to using irq_alloc_desc() directly for subgroup IRQs.
We still need to call activate_irq() on these in order to make them
requestable, at least up until these get moved in to their own irq
domain..Signed-off-by: Paul Mundt
24 May, 2012
1 commit
-
Now that all of the users have been converted away, kill off the remnants
of the old API.Signed-off-by: Paul Mundt
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.
...
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
26 Jan, 2012
1 commit
-
SH intc has a compile time dependency on NR_IRQS. Make this dependency a
local define so that shmobile (and ARM in general) can have run-time
NR_IRQS setting.Signed-off-by: Rob Herring
24 Jan, 2012
5 commits
-
This ensures that the sense/prio lists are sorted at registration time,
enabling us to use a simple binary search for an optimized lookup
(something that had been on the TODO for some time).Signed-off-by: Paul Mundt
-
intc_set_affinity() updates the cpumask in place, so there's no need for
the upper layer to do this itself.Signed-off-by: Paul Mundt
-
This already gets handled via disable, as per the notes in linux/irq.h.
Signed-off-by: Paul Mundt
-
It's possible to use IRQCHIP_SKIP_SET_WAKE to get the behaviour that
we're after, without having to bother with a dummy ->set_wake() callback
for the IRQ chip.Signed-off-by: Paul Mundt
-
No need to expose this globally since it's only used for core accounting.
Signed-off-by: Paul Mundt
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
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
22 Dec, 2011
1 commit
-
After all sysdev classes are ported to regular driver core entities, the
sysdev implementation will be entirely removed from the kernel.Cc: Paul Mundt
Cc: Magnus Damm
Cc: Paul Gortmaker
Signed-off-by: Kay Sievers
Signed-off-by: Greg Kroah-Hartman
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
04 Nov, 2011
1 commit
-
Enable IRQ_TYPE_EDGE_BOTH on all R/SH-Mobile ARM SoCs.
This hardware feature is supported by sh7367, sh7377,
sh7372 and sh73a0.Signed-off-by: Magnus Damm
Signed-off-by: Paul Mundt
01 Nov, 2011
4 commits
-
This is exporting symbols and will fail to build once we remove
the implicit presence of module.hSigned-off-by: Paul Gortmaker
-
Signed-off-by: Paul Gortmaker
-
Signed-off-by: Paul Gortmaker
-
To fix:
arch/sh/drivers/dma/dma-sysfs.c:45:8: error: 'S_IRUGO' undeclared here (not in a function)
arch/sh/drivers/dma/dma-sysfs.c:75:8: error: 'S_IWUSR' undeclared here (not in a function)
make[4]: *** [arch/sh/drivers/dma/dma-sysfs.o] Error 1drivers/sh/intc/core.c:449: error: 'S_IRUGO' undeclared here (not in a function)
make[5]: *** [drivers/sh/intc/core.o] Error 1Signed-off-by: Paul Gortmaker
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 -
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
21 Jul, 2011
1 commit
-
IRQ-capable GPIOs on sh7372 can be configured to produce interrupts on
both edges.Signed-off-by: Guennadi Liakhovetski
Acked-by: Magnus Damm
Signed-off-by: Paul Mundt
27 Apr, 2011
1 commit
-
Signed-off-by: Paul Mundt