diff options
| author | Jiang Liu <jiang.liu@linux.intel.com> | 2014-11-06 09:20:17 -0500 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2014-11-23 07:01:46 -0500 |
| commit | 515085ef7ee74694bc9b02bc45196452defad59a (patch) | |
| tree | e72aeb0216fcdcd1e91b26a4dacd118ee6b6a0c9 /include/linux | |
| parent | 56e8abab615e0c5858cfb9fa0015a44641762b9d (diff) | |
genirq: Introduce irq_chip.irq_compose_msi_msg() to support stacked irqchip
Add callback irq_compose_msi_msg to struct irq_chip, which will be used
to support stacked irqchip.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Yingjoe Chen <yingjoe.chen@mediatek.com>
Cc: Yijing Wang <wangyijing@huawei.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/irq.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index fad4bf6f15f6..d58e58935465 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -29,6 +29,7 @@ struct seq_file; | |||
| 29 | struct module; | 29 | struct module; |
| 30 | struct irq_desc; | 30 | struct irq_desc; |
| 31 | struct irq_data; | 31 | struct irq_data; |
| 32 | struct msi_msg; | ||
| 32 | typedef void (*irq_flow_handler_t)(unsigned int irq, | 33 | typedef void (*irq_flow_handler_t)(unsigned int irq, |
| 33 | struct irq_desc *desc); | 34 | struct irq_desc *desc); |
| 34 | typedef void (*irq_preflow_handler_t)(struct irq_data *data); | 35 | typedef void (*irq_preflow_handler_t)(struct irq_data *data); |
| @@ -320,6 +321,7 @@ static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d) | |||
| 320 | * any other callback related to this irq | 321 | * any other callback related to this irq |
| 321 | * @irq_release_resources: optional to release resources acquired with | 322 | * @irq_release_resources: optional to release resources acquired with |
| 322 | * irq_request_resources | 323 | * irq_request_resources |
| 324 | * @irq_compose_msi_msg: optional to compose message content for MSI | ||
| 323 | * @flags: chip specific flags | 325 | * @flags: chip specific flags |
| 324 | */ | 326 | */ |
| 325 | struct irq_chip { | 327 | struct irq_chip { |
| @@ -356,6 +358,8 @@ struct irq_chip { | |||
| 356 | int (*irq_request_resources)(struct irq_data *data); | 358 | int (*irq_request_resources)(struct irq_data *data); |
| 357 | void (*irq_release_resources)(struct irq_data *data); | 359 | void (*irq_release_resources)(struct irq_data *data); |
| 358 | 360 | ||
| 361 | void (*irq_compose_msi_msg)(struct irq_data *data, struct msi_msg *msg); | ||
| 362 | |||
| 359 | unsigned long flags; | 363 | unsigned long flags; |
| 360 | }; | 364 | }; |
| 361 | 365 | ||
| @@ -443,6 +447,7 @@ extern void handle_percpu_devid_irq(unsigned int irq, struct irq_desc *desc); | |||
| 443 | extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc); | 447 | extern void handle_bad_irq(unsigned int irq, struct irq_desc *desc); |
| 444 | extern void handle_nested_irq(unsigned int irq); | 448 | extern void handle_nested_irq(unsigned int irq); |
| 445 | 449 | ||
| 450 | extern int irq_chip_compose_msi_msg(struct irq_data *data, struct msi_msg *msg); | ||
| 446 | #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY | 451 | #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY |
| 447 | extern void irq_chip_ack_parent(struct irq_data *data); | 452 | extern void irq_chip_ack_parent(struct irq_data *data); |
| 448 | extern int irq_chip_retrigger_hierarchy(struct irq_data *data); | 453 | extern int irq_chip_retrigger_hierarchy(struct irq_data *data); |
