Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29918b67 authored by Nishanth Menon's avatar Nishanth Menon Committed by Jason Cooper
Browse files

irqchip: crossbar: Introduce centralized check for crossbar write



This is a basic check to ensure that crossbar register needs to be
written. This ensures that we have a common check which is used in
both map and unmap logic.

Signed-off-by: default avatarNishanth Menon <nm@ti.com>
Signed-off-by: default avatarSricharan R <r.sricharan@ti.com>
Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@ti.com>
Link: https://lkml.kernel.org/r/1403766634-18543-15-git-send-email-r.sricharan@ti.com


Signed-off-by: default avatarJason Cooper <jason@lakedaemon.net>
parent 2f7d2fb7
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -84,10 +84,20 @@ static inline int allocate_free_irq(int cb_no)
	return -ENODEV;
}

static inline bool needs_crossbar_write(irq_hw_number_t hw)
{
	if (hw > GIC_IRQ_START)
		return true;

	return false;
}

static int crossbar_domain_map(struct irq_domain *d, unsigned int irq,
			       irq_hw_number_t hw)
{
	if (needs_crossbar_write(hw))
		cb->write(hw - GIC_IRQ_START, cb->irq_map[hw - GIC_IRQ_START]);

	return 0;
}

@@ -106,7 +116,7 @@ static void crossbar_domain_unmap(struct irq_domain *d, unsigned int irq)
{
	irq_hw_number_t hw = irq_get_irq_data(irq)->hwirq;

	if (hw > GIC_IRQ_START) {
	if (needs_crossbar_write(hw)) {
		cb->irq_map[hw - GIC_IRQ_START] = IRQ_FREE;
		cb->write(hw - GIC_IRQ_START, cb->safe_map);
	}