]> git.baikalelectronics.ru Git - kernel.git/commit
irqdomain: Don't set type when mapping an IRQ
authorJon Hunter <jonathanh@nvidia.com>
Tue, 7 Jun 2016 15:12:28 +0000 (16:12 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 13 Jun 2016 10:53:51 +0000 (11:53 +0100)
commitb07332dc5f37f9db3c18320ab8567442b269d9d2
treeb2b3b3b0c3e45173838c83d1b3181097a4c7bc23
parent7ac3e22a44772a1dfd9708ca7f98541a854bcccc
irqdomain: Don't set type when mapping an IRQ

Some IRQ chips, such as GPIO controllers or secondary level interrupt
controllers, may require require additional runtime power management
control to ensure they are accessible. For such IRQ chips, it makes sense
to enable the IRQ chip when interrupts are requested and disabled them
again once all interrupts have been freed.

When mapping an IRQ, the IRQ type settings are read and then programmed.
The mapping of the IRQ happens before the IRQ is requested and so the
programming of the type settings occurs before the IRQ is requested. This
is a problem for IRQ chips that require additional power management
control because they may not be accessible yet. Therefore, when mapping
the IRQ, don't program the type settings, just save them and then program
these saved settings when the IRQ is requested (so long as if they are not
overridden via the call to request the IRQ).

Add a stub function for irq_domain_free_irqs() to avoid any compilation
errors when CONFIG_IRQ_DOMAIN_HIERARCHY is not selected.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
include/linux/irqdomain.h
kernel/irq/irqdomain.c