diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-19 13:58:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2019-05-19 13:58:45 -0400 |
commit | d9351ea14ddca708d3cb384f828af4bf82fcc772 (patch) | |
tree | 90c5fe9067f1005ce512c63b2e664a670af72b4f /include/linux/msi.h | |
parent | 39feaa3ff4453594297574e116a55bd6d5371f37 (diff) | |
parent | fb4e0592654adb31bc6f3a738d6499b816a655d6 (diff) |
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull IRQ chip updates from Ingo Molnar:
"A late irqchips update:
- New TI INTR/INTA set of drivers
- Rewrite of the stm32mp1-exti driver as a platform driver
- Update the IOMMU MSI mapping API to be RT friendly
- A number of cleanups and other low impact fixes"
* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (34 commits)
iommu/dma-iommu: Remove iommu_dma_map_msi_msg()
irqchip/gic-v3-mbi: Don't map the MSI page in mbi_compose_m{b, s}i_msg()
irqchip/ls-scfg-msi: Don't map the MSI page in ls_scfg_msi_compose_msg()
irqchip/gic-v3-its: Don't map the MSI page in its_irq_compose_msi_msg()
irqchip/gicv2m: Don't map the MSI page in gicv2m_compose_msi_msg()
iommu/dma-iommu: Split iommu_dma_map_msi_msg() in two parts
genirq/msi: Add a new field in msi_desc to store an IOMMU cookie
arm64: arch_k3: Enable interrupt controller drivers
irqchip/ti-sci-inta: Add msi domain support
soc: ti: Add MSI domain bus support for Interrupt Aggregator
irqchip/ti-sci-inta: Add support for Interrupt Aggregator driver
dt-bindings: irqchip: Introduce TISCI Interrupt Aggregator bindings
irqchip/ti-sci-intr: Add support for Interrupt Router driver
dt-bindings: irqchip: Introduce TISCI Interrupt router bindings
gpio: thunderx: Use the default parent apis for {request,release}_resources
genirq: Introduce irq_chip_{request,release}_resource_parent() apis
firmware: ti_sci: Add helper apis to manage resources
firmware: ti_sci: Add RM mapping table for am654
firmware: ti_sci: Add support for IRQ management
firmware: ti_sci: Add support for RM core ops
...
Diffstat (limited to 'include/linux/msi.h')
-rw-r--r-- | include/linux/msi.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/include/linux/msi.h b/include/linux/msi.h index 052f04fcf953..d48e919d55ae 100644 --- a/include/linux/msi.h +++ b/include/linux/msi.h | |||
@@ -48,6 +48,14 @@ struct fsl_mc_msi_desc { | |||
48 | }; | 48 | }; |
49 | 49 | ||
50 | /** | 50 | /** |
51 | * ti_sci_inta_msi_desc - TISCI based INTA specific msi descriptor data | ||
52 | * @dev_index: TISCI device index | ||
53 | */ | ||
54 | struct ti_sci_inta_msi_desc { | ||
55 | u16 dev_index; | ||
56 | }; | ||
57 | |||
58 | /** | ||
51 | * struct msi_desc - Descriptor structure for MSI based interrupts | 59 | * struct msi_desc - Descriptor structure for MSI based interrupts |
52 | * @list: List head for management | 60 | * @list: List head for management |
53 | * @irq: The base interrupt number | 61 | * @irq: The base interrupt number |
@@ -68,6 +76,7 @@ struct fsl_mc_msi_desc { | |||
68 | * @mask_base: [PCI MSI-X] Mask register base address | 76 | * @mask_base: [PCI MSI-X] Mask register base address |
69 | * @platform: [platform] Platform device specific msi descriptor data | 77 | * @platform: [platform] Platform device specific msi descriptor data |
70 | * @fsl_mc: [fsl-mc] FSL MC device specific msi descriptor data | 78 | * @fsl_mc: [fsl-mc] FSL MC device specific msi descriptor data |
79 | * @inta: [INTA] TISCI based INTA specific msi descriptor data | ||
71 | */ | 80 | */ |
72 | struct msi_desc { | 81 | struct msi_desc { |
73 | /* Shared device/bus type independent data */ | 82 | /* Shared device/bus type independent data */ |
@@ -77,6 +86,9 @@ struct msi_desc { | |||
77 | struct device *dev; | 86 | struct device *dev; |
78 | struct msi_msg msg; | 87 | struct msi_msg msg; |
79 | struct irq_affinity_desc *affinity; | 88 | struct irq_affinity_desc *affinity; |
89 | #ifdef CONFIG_IRQ_MSI_IOMMU | ||
90 | const void *iommu_cookie; | ||
91 | #endif | ||
80 | 92 | ||
81 | union { | 93 | union { |
82 | /* PCI MSI/X specific data */ | 94 | /* PCI MSI/X specific data */ |
@@ -106,6 +118,7 @@ struct msi_desc { | |||
106 | */ | 118 | */ |
107 | struct platform_msi_desc platform; | 119 | struct platform_msi_desc platform; |
108 | struct fsl_mc_msi_desc fsl_mc; | 120 | struct fsl_mc_msi_desc fsl_mc; |
121 | struct ti_sci_inta_msi_desc inta; | ||
109 | }; | 122 | }; |
110 | }; | 123 | }; |
111 | 124 | ||
@@ -119,6 +132,29 @@ struct msi_desc { | |||
119 | #define for_each_msi_entry_safe(desc, tmp, dev) \ | 132 | #define for_each_msi_entry_safe(desc, tmp, dev) \ |
120 | list_for_each_entry_safe((desc), (tmp), dev_to_msi_list((dev)), list) | 133 | list_for_each_entry_safe((desc), (tmp), dev_to_msi_list((dev)), list) |
121 | 134 | ||
135 | #ifdef CONFIG_IRQ_MSI_IOMMU | ||
136 | static inline const void *msi_desc_get_iommu_cookie(struct msi_desc *desc) | ||
137 | { | ||
138 | return desc->iommu_cookie; | ||
139 | } | ||
140 | |||
141 | static inline void msi_desc_set_iommu_cookie(struct msi_desc *desc, | ||
142 | const void *iommu_cookie) | ||
143 | { | ||
144 | desc->iommu_cookie = iommu_cookie; | ||
145 | } | ||
146 | #else | ||
147 | static inline const void *msi_desc_get_iommu_cookie(struct msi_desc *desc) | ||
148 | { | ||
149 | return NULL; | ||
150 | } | ||
151 | |||
152 | static inline void msi_desc_set_iommu_cookie(struct msi_desc *desc, | ||
153 | const void *iommu_cookie) | ||
154 | { | ||
155 | } | ||
156 | #endif | ||
157 | |||
122 | #ifdef CONFIG_PCI_MSI | 158 | #ifdef CONFIG_PCI_MSI |
123 | #define first_pci_msi_entry(pdev) first_msi_entry(&(pdev)->dev) | 159 | #define first_pci_msi_entry(pdev) first_msi_entry(&(pdev)->dev) |
124 | #define for_each_pci_msi_entry(desc, pdev) \ | 160 | #define for_each_pci_msi_entry(desc, pdev) \ |