summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2015-05-28 14:27:30 +0200
committerStefan Agner <stefan.agner@toradex.com>2015-05-28 14:42:42 +0200
commit223937ea36d692f4bc626066a6c0ac66bd56cbcd (patch)
tree480686560ac0a89aa39549277a9a6ac728042a01
parent0c60be648d6b7ddb1e42ca1970f6f2342f259568 (diff)
irqchip: vf610-mscm-ir: allow to enable/disable CPU2CPU interrupts
Extend the CPU2CPU interrupt API with enable/disable which allow to enable and disable the interrupts using the CPU2CPU IRQ numbers 0-3. Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
-rw-r--r--drivers/irqchip/irq-vf610-mscm-ir.c21
-rw-r--r--include/linux/vf610_mscm.h2
2 files changed, 23 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-vf610-mscm-ir.c b/drivers/irqchip/irq-vf610-mscm-ir.c
index 25c3b1337950..cb69a5901bc6 100644
--- a/drivers/irqchip/irq-vf610-mscm-ir.c
+++ b/drivers/irqchip/irq-vf610-mscm-ir.c
@@ -243,6 +243,27 @@ void mscm_trigger_cpu2cpu_irq(unsigned int intid, int cpuid)
}
EXPORT_SYMBOL(mscm_trigger_cpu2cpu_irq);
+void mscm_enable_cpu2cpu_irq(unsigned int intid)
+{
+ struct mscm_cpu2cpu_irq_data *data = &cpu2cpu_irq_data[intid];
+
+ if (intid >= MSCM_CPU2CPU_NUM)
+ return;
+
+ enable_irq(data->irq);
+}
+EXPORT_SYMBOL(mscm_enable_cpu2cpu_irq);
+
+void mscm_disable_cpu2cpu_irq(unsigned int intid)
+{
+ struct mscm_cpu2cpu_irq_data *data = &cpu2cpu_irq_data[intid];
+
+ if (intid >= MSCM_CPU2CPU_NUM)
+ return;
+
+ disable_irq(data->irq);
+}
+EXPORT_SYMBOL(mscm_disable_cpu2cpu_irq);
static int __init vf610_mscm_ir_of_init(struct device_node *node,
struct device_node *parent)
diff --git a/include/linux/vf610_mscm.h b/include/linux/vf610_mscm.h
index 881fbd772a95..e61c71caca87 100644
--- a/include/linux/vf610_mscm.h
+++ b/include/linux/vf610_mscm.h
@@ -7,5 +7,7 @@ int mscm_request_cpu2cpu_irq(unsigned int intid, irq_handler_t handler,
const char *name, void *priv);
void mscm_free_cpu2cpu_irq(unsigned int intid, void *priv);
void mscm_trigger_cpu2cpu_irq(unsigned int intid, int cpuid);
+void mscm_enable_cpu2cpu_irq(unsigned int intid);
+void mscm_disable_cpu2cpu_irq(unsigned int intid);
#endif /* __VF610_MSCM__ */