History

Merge tag 'irq-core-2020-08-04' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull irq updates from Thomas Gleixner: "The usual boring updates from the interrupt subsystem: - Infrastructure to allow building irqchip drivers as modules - Consolidation of irqchip ACPI probing - Removal of the EOI-preflow interrupt handler which was required for SPARC support and became obsolete after SPARC was converted to use sparse interrupts. - Cleanups, fixes and improvements all over the place" * tag 'irq-core-2020-08-04' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (51 commits) irqchip/loongson-pch-pic: Fix the misused irq flow handler irqchip/loongson-htvec: Support 8 groups of HT vectors irqchip/loongson-liointc: Fix misuse of gc->mask_cache dt-bindings: interrupt-controller: Update Loongson HTVEC description irqchip/imx-intmux: Fix irqdata regs save in imx_intmux_runtime_suspend() irqchip/imx-intmux: Implement intmux runtime power management irqchip/gic-v4.1: Use GFP_ATOMIC flag in allocate_vpe_l1_table() irqchip: Fix IRQCHIP_PLATFORM_DRIVER_* compilation by including module.h irqchip/stm32-exti: Map direct event to irq parent irqchip/mtk-cirq: Convert to a platform driver irqchip/mtk-sysirq: Convert to a platform driver irqchip/qcom-pdc: Switch to using IRQCHIP_PLATFORM_DRIVER helper macros irqchip: Add IRQCHIP_PLATFORM_DRIVER_BEGIN/END and IRQCHIP_MATCH helper macros irqchip: irq-bcm2836.h: drop a duplicated word irqchip/gic-v4.1: Ensure accessing the correct RD when writing INVALLR irqchip/irq-bcm7038-l1: Guard uses of cpu_logical_map irqchip/gic-v3: Remove unused register definition irqchip/qcom-pdc: Allow QCOM_PDC to be loadable as a permanent module genirq: Export irq_chip_retrigger_hierarchy and irq_chip_set_vcpu_affinity_parent irqdomain: Export irq_domain_update_bus_token ...

Linus Torvalds committed 6 years ago

Commit f8b036a2 parents 2ed90db 3d5128c36 files · +346 −244Browse files

Showing the changes to include/linux (7 of 36 files). Show all

Unified · Split

7 files
  1. include/linux/acpi.h +17 −6
  2. include/linux/irqchip.h +27 −2
  3. include/linux/irqchip/arm-gic-v3.h +0 −4
  4. include/linux/irqchip/arm-vic.h +0 −11
  5. include/linux/irqchip/irq-bcm2836.h +1 −1
  6. include/linux/irqdesc.h +0 −15
  7. include/linux/irqhandler.h +0 −1
include/linux/acpi.h+17−6
@@ -1150,16 +1150,27 @@ struct acpi_probe_entry { · 1149 unmodified lines
11501150 kernel_ulong_t driver_data;
11511151 };
11521152
1153−#define ACPI_DECLARE_PROBE_ENTRY(table, name, table_id, subtable, valid, data, fn) \
1153+#define ACPI_DECLARE_PROBE_ENTRY(table, name, table_id, subtable, \
1154+ valid, data, fn) \
11541155 static const struct acpi_probe_entry __acpi_probe_##name \
1155− __used __section(__##table##_acpi_probe_table) \
1156− = { \
1156+ __used __section(__##table##_acpi_probe_table) = { \
11571157 .id = table_id, \
11581158 .type = subtable, \
11591159 .subtable_valid = valid, \
1160− .probe_table = (acpi_tbl_table_handler)fn, \
1161− .driver_data = data, \
1162− }
1160+ .probe_table = fn, \
1161+ .driver_data = data, \
1162+ }
1163+
1164+#define ACPI_DECLARE_SUBTABLE_PROBE_ENTRY(table, name, table_id, \
1165+ subtable, valid, data, fn) \
1166+ static const struct acpi_probe_entry __acpi_probe_##name \
1167+ __used __section(__##table##_acpi_probe_table) = { \
1168+ .id = table_id, \
1169+ .type = subtable, \
1170+ .subtable_valid = valid, \
1171+ .probe_subtbl = fn, \
1172+ .driver_data = data, \
1173+ }
11631174
11641175 #define ACPI_PROBE_TABLE(name) __##name##_acpi_probe_table
11651176 #define ACPI_PROBE_TABLE_END(name) __##name##_acpi_probe_table_end
include/linux/irqchip.h+27−2
@@ -12,7 +12,9 @@ · 11 unmodified lines
1212 #define _LINUX_IRQCHIP_H
1313
1414 #include <linux/acpi.h>
15+#include <linux/module.h>
1516 #include <linux/of.h>
17+#include <linux/platform_device.h>
1618
1719 /*
1820 * This macro must be used by the different irqchip drivers to declare
@@ -26,6 +28,28 @@ · 7 unmodified lines
2628 */
2729 #define IRQCHIP_DECLARE(name, compat, fn) OF_DECLARE_2(irqchip, name, compat, fn)
2830
31+extern int platform_irqchip_probe(struct platform_device *pdev);
32+
33+#define IRQCHIP_PLATFORM_DRIVER_BEGIN(drv_name) \
34+static const struct of_device_id drv_name##_irqchip_match_table[] = {
35+
36+#define IRQCHIP_MATCH(compat, fn) { .compatible = compat, .data = fn },
37+
38+#define IRQCHIP_PLATFORM_DRIVER_END(drv_name) \
39+ {}, \
40+}; \
41+MODULE_DEVICE_TABLE(of, drv_name##_irqchip_match_table); \
42+static struct platform_driver drv_name##_driver = { \
43+ .probe = platform_irqchip_probe, \
44+ .driver = { \
45+ .name = #drv_name, \
46+ .owner = THIS_MODULE, \
47+ .of_match_table = drv_name##_irqchip_match_table, \
48+ .suppress_bind_attrs = true, \
49+ }, \
50+}; \
51+builtin_platform_driver(drv_name##_driver)
52+
2953 /*
3054 * This macro must be used by the different irqchip drivers to declare
3155 * the association between their version and their initialization function.
@@ -39,8 +63,9 @@ · 7 unmodified lines
3963 * @fn: initialization function
4064 */
4165 #define IRQCHIP_ACPI_DECLARE(name, subtable, validate, data, fn) \
42− ACPI_DECLARE_PROBE_ENTRY(irqchip, name, ACPI_SIG_MADT, \
43− subtable, validate, data, fn)
66+ ACPI_DECLARE_SUBTABLE_PROBE_ENTRY(irqchip, name, \
67+ ACPI_SIG_MADT, subtable, \
68+ validate, data, fn)
4469
4570 #ifdef CONFIG_IRQCHIP
4671 void irqchip_init(void);
include/linux/irqchip/arm-gic-v3.h+0−4
@@ -19,7 +19,6 @@ · 18 unmodified lines
1919 #define GICD_CLRSPI_NSR 0x0048
2020 #define GICD_SETSPI_SR 0x0050
2121 #define GICD_CLRSPI_SR 0x0058
22−#define GICD_SEIR 0x0068
2322 #define GICD_IGROUPR 0x0080
2423 #define GICD_ISENABLER 0x0100
2524 #define GICD_ICENABLER 0x0180
@@ -119,14 +118,11 @@ · 93 unmodified lines
119118 #define GICR_WAKER 0x0014
120119 #define GICR_SETLPIR 0x0040
121120 #define GICR_CLRLPIR 0x0048
122−#define GICR_SEIR GICD_SEIR
123121 #define GICR_PROPBASER 0x0070
124122 #define GICR_PENDBASER 0x0078
125123 #define GICR_INVLPIR 0x00A0
126124 #define GICR_INVALLR 0x00B0
127125 #define GICR_SYNCR 0x00C0
128−#define GICR_MOVLPIR 0x0100
129−#define GICR_MOVALLR 0x0110
130126 #define GICR_IDREGS GICD_IDREGS
131127 #define GICR_PIDR2 GICD_PIDR2
132128
include/linux/irqchip/arm-vic.h+0−11
@@ -9,17 +9,6 @@ · 8 unmodified lines
99
1010 #include <linux/types.h>
1111
12−#define VIC_RAW_STATUS 0x08
13−#define VIC_INT_ENABLE 0x10 /* 1 = enable, 0 = disable */
14−#define VIC_INT_ENABLE_CLEAR 0x14
15−
16−struct device_node;
17−struct pt_regs;
18−
19−void __vic_init(void __iomem *base, int parent_irq, int irq_start,
20− u32 vic_sources, u32 resume_sources, struct device_node *node);
2112 void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources, u32 resume_sources);
22−int vic_init_cascaded(void __iomem *base, unsigned int parent_irq,
23− u32 vic_sources, u32 resume_sources);
2413
2514 #endif
include/linux/irqchip/irq-bcm2836.h+1−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
3030 */
3131 #define LOCAL_MAILBOX_INT_CONTROL0 0x050
3232 /*
33− * The CPU's interrupt status register. Bits are defined by the the
33+ * The CPU's interrupt status register. Bits are defined by the
3434 * LOCAL_IRQ_* bits below.
3535 */
3636 #define LOCAL_IRQ_PENDING0 0x060
include/linux/irqdesc.h+0−15
@@ -22,7 +22,6 @@ struct pt_regs; · 21 unmodified lines
2222 * @irq_common_data: per irq and chip data passed down to chip functions
2323 * @kstat_irqs: irq stats per cpu
2424 * @handle_irq: highlevel irq-events handler
25− * @preflow_handler: handler called before the flow handler (currently used by sparc)
2625 * @action: the irq action chain
2726 * @status_use_accessors: status information
2827 * @core_internal_state__do_not_mess_with_it: core internal status information
@@ -58,9 +57,6 @@ struct irq_desc { · 29 unmodified lines
5857 struct irq_data irq_data;
5958 unsigned int __percpu *kstat_irqs;
6059 irq_flow_handler_t handle_irq;
61−#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
62− irq_preflow_handler_t preflow_handler;
63−#endif
6460 struct irqaction *action; /* IRQ action list */
6561 unsigned int status_use_accessors;
6662 unsigned int core_internal_state__do_not_mess_with_it;
@@ -268,15 +264,4 @@ irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class, · 201 unmodified lines
268264 }
269265 }
270266
271−#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
272−static inline void
273−__irq_set_preflow_handler(unsigned int irq, irq_preflow_handler_t handler)
274−{
275− struct irq_desc *desc;
276−
277− desc = irq_to_desc(irq);
278− desc->preflow_handler = handler;
279−}
280−#endif
281−
282267 #endif
include/linux/irqhandler.h+0−1
@@ -10,6 +10,5 @@ · 9 unmodified lines
1010 struct irq_desc;
1111 struct irq_data;
1212 typedef void (*irq_flow_handler_t)(struct irq_desc *desc);
13−typedef void (*irq_preflow_handler_t)(struct irq_data *data);
1413
1514 #endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t