linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/6] Add support for BCM7271 style interrupt controller
@ 2017-07-19 19:07 Doug Berger
  2017-07-19 19:07 ` [PATCH v2 1/6] genirq: generic chip: add irq_gc_mask_disable_and_ack_set() Doug Berger
                   ` (5 more replies)
  0 siblings, 6 replies; 23+ messages in thread
From: Doug Berger @ 2017-07-19 19:07 UTC (permalink / raw)
  To: Thomas Gleixner
  Cc: Doug Berger, Jason Cooper, Marc Zyngier, Rob Herring,
	Mark Rutland, Kevin Cernekee, Florian Fainelli, Brian Norris,
	Gregory Fong, bcm-kernel-feedback-list, Marc Gonzalez,
	Bartosz Golaszewski, Sebastian Frias, Boris Brezillon,
	linux-kernel, devicetree, linux-mips, linux-arm-kernel

This patch set extends the functionality of the irq-brcmstb-l2 interrupt
controller driver to cover a hardware variant first introduced in the
BCM7271 SoC.  The main difference between this variant and the block
found in earlier brcmstb SoCs is that this variant only supports level
sensitive interrupts and therefore does not latch the interrupt state
based on edges.  Since there is no longer a need to ack interrupts with
a register write to clear the latch the register map has been changed.

Therefore the change to add support for the new hardware block is to
abstract the register accesses to accommodate different maps and to
identify the block with a new device-tree compatible string.

I also took the opportunity to make some small efficiency enhancements
to the driver.  One of these was to make use of the slightly more
efficient irq_mask_ack method.  However, I discovered that the defined
irq_gc_mask_disable_reg_and_ack() generic irq function was insufficient
for my needs.  The first three commits of this set are intended to be a
correction of the existing generic irq implementation to provide a
function that can be used by interrupt controller drivers for their
irq_mask_ack method when disable/enable registers are used for masking
and interrupts are acknowledged by setting a bit in an ack register.

I believe these first three commits should be added to the irq/core
repository and possibly stable branches. The remaining commits should be
added to the irqchip/core repository but I have included the complete
set here for improved context since the irqchip patches are dependent on
the irq patches.  This entire set is therefore based on the irq/core
master branch.  Please let me know if you would like a different
packaging.

If the changes to genirq are not acceptable I can implement the
irq_mask_ask method locally in the irq-brcmstb-l2 driver and submit
that on its own.

Changes in v2:

- removed unused permutations of irq_mask_ack methods
- added Reviewed-by and Acked-by responses from first submission

Doug Berger (5):
  genirq: generic chip: add irq_gc_mask_disable_and_ack_set()
  genirq: generic chip: remove irq_gc_mask_disable_reg_and_ack()
  irqchip: brcmstb-l2: Remove some processing from the handler
  irqchip: brcmstb-l2: Abstract register accesses
  irqchip: brcmstb-l2: Add support for the BCM7271 L2 controller

Florian Fainelli (1):
  irqchip/tango: Use irq_gc_mask_disable_and_ack_set

 .../bindings/interrupt-controller/brcm,l2-intc.txt |   3 +-
 drivers/irqchip/irq-brcmstb-l2.c                   | 145 ++++++++++++++-------
 drivers/irqchip/irq-tango.c                        |   2 +-
 include/linux/irq.h                                |   2 +-
 kernel/irq/generic-chip.c                          |  15 ++-
 5 files changed, 114 insertions(+), 53 deletions(-)

-- 
2.13.0

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2017-09-18  8:51 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-19 19:07 [PATCH v2 0/6] Add support for BCM7271 style interrupt controller Doug Berger
2017-07-19 19:07 ` [PATCH v2 1/6] genirq: generic chip: add irq_gc_mask_disable_and_ack_set() Doug Berger
2017-07-19 19:07 ` [PATCH v2 2/6] irqchip/tango: Use irq_gc_mask_disable_and_ack_set Doug Berger
2017-07-24 16:40   ` Marc Gonzalez
2017-07-24 17:54     ` Doug Berger
2017-07-25 13:08       ` [PATCH v3] irqchip/tango: Don't use incorrect irq_mask_ack callback Marc Gonzalez
2017-07-25 13:16         ` Måns Rullgård
2017-07-25 13:26           ` Marc Gonzalez
2017-07-25 13:29             ` Måns Rullgård
2017-07-26 18:20               ` Florian Fainelli
2017-07-26 19:13                 ` Måns Rullgård
2017-07-27 18:17                   ` Florian Fainelli
2017-07-28 14:06                     ` Marc Gonzalez
2017-08-07 12:56                       ` Marc Zyngier
2017-08-18 18:24                         ` Florian Fainelli
2017-08-19 16:05                           ` Måns Rullgård
2017-08-21 13:25                         ` Marc Gonzalez
2017-09-18  8:49                           ` Marc Gonzalez
2017-07-25 14:15         ` Marc Gonzalez
2017-07-19 19:07 ` [PATCH v2 3/6] genirq: generic chip: remove irq_gc_mask_disable_reg_and_ack() Doug Berger
2017-07-19 19:07 ` [PATCH v2 4/6] irqchip: brcmstb-l2: Remove some processing from the handler Doug Berger
2017-07-19 19:07 ` [PATCH v2 5/6] irqchip: brcmstb-l2: Abstract register accesses Doug Berger
2017-07-19 19:07 ` [PATCH v2 6/6] irqchip: brcmstb-l2: Add support for the BCM7271 L2 controller Doug Berger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).