|
@@ -862,6 +862,54 @@ void irq_chip_ack_parent(struct irq_data *data)
|
|
|
data->chip->irq_ack(data);
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * irq_chip_mask_parent - Mask the parent interrupt
|
|
|
+ * @data: Pointer to interrupt specific data
|
|
|
+ */
|
|
|
+void irq_chip_mask_parent(struct irq_data *data)
|
|
|
+{
|
|
|
+ data = data->parent_data;
|
|
|
+ data->chip->irq_mask(data);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * irq_chip_unmask_parent - Unmask the parent interrupt
|
|
|
+ * @data: Pointer to interrupt specific data
|
|
|
+ */
|
|
|
+void irq_chip_unmask_parent(struct irq_data *data)
|
|
|
+{
|
|
|
+ data = data->parent_data;
|
|
|
+ data->chip->irq_unmask(data);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * irq_chip_eoi_parent - Invoke EOI on the parent interrupt
|
|
|
+ * @data: Pointer to interrupt specific data
|
|
|
+ */
|
|
|
+void irq_chip_eoi_parent(struct irq_data *data)
|
|
|
+{
|
|
|
+ data = data->parent_data;
|
|
|
+ data->chip->irq_eoi(data);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * irq_chip_set_affinity_parent - Set affinity on the parent interrupt
|
|
|
+ * @data: Pointer to interrupt specific data
|
|
|
+ * @dest: The affinity mask to set
|
|
|
+ * @force: Flag to enforce setting (disable online checks)
|
|
|
+ *
|
|
|
+ * Conditinal, as the underlying parent chip might not implement it.
|
|
|
+ */
|
|
|
+int irq_chip_set_affinity_parent(struct irq_data *data,
|
|
|
+ const struct cpumask *dest, bool force)
|
|
|
+{
|
|
|
+ data = data->parent_data;
|
|
|
+ if (data->chip->irq_set_affinity)
|
|
|
+ return data->chip->irq_set_affinity(data, dest, force);
|
|
|
+
|
|
|
+ return -ENOSYS;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* irq_chip_retrigger_hierarchy - Retrigger an interrupt in hardware
|
|
|
* @data: Pointer to interrupt specific data
|