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
1150 kernel_ulong_t driver_data;1150 kernel_ulong_t driver_data;
1151};1151};
1152 1152
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) \
1154 static const struct acpi_probe_entry __acpi_probe_##name \1155 static const struct acpi_probe_entry __acpi_probe_##name \
1155 __used __section(__##table##_acpi_probe_table) \1156 __used __section(__##table##_acpi_probe_table) = { \
1156 = { \
1157 .id = table_id, \1157 .id = table_id, \
1158 .type = subtable, \1158 .type = subtable, \
1159 .subtable_valid = valid, \1159 .subtable_valid = valid, \
1160 .probe_table = (acpi_tbl_table_handler)fn, \1160 .probe_table = fn, \
1161 .driver_data = data, \1161 .driver_data = data, \
1162 }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 }
1163 1174
1164#define ACPI_PROBE_TABLE(name) __##name##_acpi_probe_table1175#define ACPI_PROBE_TABLE(name) __##name##_acpi_probe_table
1165#define ACPI_PROBE_TABLE_END(name) __##name##_acpi_probe_table_end1176#define ACPI_PROBE_TABLE_END(name) __##name##_acpi_probe_table_end
include/linux/irqchip.h+27−2
@@ -12,7 +12,9 @@ · 11 unmodified lines
12#define _LINUX_IRQCHIP_H12#define _LINUX_IRQCHIP_H
13 13
14#include <linux/acpi.h>14#include <linux/acpi.h>
15#include <linux/module.h>
15#include <linux/of.h>16#include <linux/of.h>
17#include <linux/platform_device.h>
16 18
17/*19/*
18 * This macro must be used by the different irqchip drivers to declare20 * This macro must be used by the different irqchip drivers to declare
@@ -26,6 +28,28 @@ · 7 unmodified lines
26 */28 */
27#define IRQCHIP_DECLARE(name, compat, fn) OF_DECLARE_2(irqchip, name, compat, fn)29#define IRQCHIP_DECLARE(name, compat, fn) OF_DECLARE_2(irqchip, name, compat, fn)
28 30
31extern int platform_irqchip_probe(struct platform_device *pdev);
32
33#define IRQCHIP_PLATFORM_DRIVER_BEGIN(drv_name) \
34static 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}; \
41MODULE_DEVICE_TABLE(of, drv_name##_irqchip_match_table); \
42static 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}; \
51builtin_platform_driver(drv_name##_driver)
52
29/*53/*
30 * This macro must be used by the different irqchip drivers to declare54 * This macro must be used by the different irqchip drivers to declare
31 * the association between their version and their initialization function.55 * the association between their version and their initialization function.
@@ -39,8 +63,9 @@ · 7 unmodified lines
39 * @fn: initialization function63 * @fn: initialization function
40 */64 */
41#define IRQCHIP_ACPI_DECLARE(name, subtable, validate, data, fn) \65#define IRQCHIP_ACPI_DECLARE(name, subtable, validate, data, fn) \
42 ACPI_DECLARE_PROBE_ENTRY(irqchip, name, ACPI_SIG_MADT, \66 ACPI_DECLARE_SUBTABLE_PROBE_ENTRY(irqchip, name, \
43 subtable, validate, data, fn)67 ACPI_SIG_MADT, subtable, \
68 validate, data, fn)
44 69
45#ifdef CONFIG_IRQCHIP70#ifdef CONFIG_IRQCHIP
46void irqchip_init(void);71void irqchip_init(void);
include/linux/irqchip/arm-gic-v3.h+0−4
@@ -19,7 +19,6 @@ · 18 unmodified lines
19#define GICD_CLRSPI_NSR 0x004819#define GICD_CLRSPI_NSR 0x0048
20#define GICD_SETSPI_SR 0x005020#define GICD_SETSPI_SR 0x0050
21#define GICD_CLRSPI_SR 0x005821#define GICD_CLRSPI_SR 0x0058
22#define GICD_SEIR 0x0068
23#define GICD_IGROUPR 0x008022#define GICD_IGROUPR 0x0080
24#define GICD_ISENABLER 0x010023#define GICD_ISENABLER 0x0100
25#define GICD_ICENABLER 0x018024#define GICD_ICENABLER 0x0180
@@ -119,14 +118,11 @@ · 93 unmodified lines
119#define GICR_WAKER 0x0014118#define GICR_WAKER 0x0014
120#define GICR_SETLPIR 0x0040119#define GICR_SETLPIR 0x0040
121#define GICR_CLRLPIR 0x0048120#define GICR_CLRLPIR 0x0048
122#define GICR_SEIR GICD_SEIR
123#define GICR_PROPBASER 0x0070121#define GICR_PROPBASER 0x0070
124#define GICR_PENDBASER 0x0078122#define GICR_PENDBASER 0x0078
125#define GICR_INVLPIR 0x00A0123#define GICR_INVLPIR 0x00A0
126#define GICR_INVALLR 0x00B0124#define GICR_INVALLR 0x00B0
127#define GICR_SYNCR 0x00C0125#define GICR_SYNCR 0x00C0
128#define GICR_MOVLPIR 0x0100
129#define GICR_MOVALLR 0x0110
130#define GICR_IDREGS GICD_IDREGS126#define GICR_IDREGS GICD_IDREGS
131#define GICR_PIDR2 GICD_PIDR2127#define GICR_PIDR2 GICD_PIDR2
132 128
include/linux/irqchip/arm-vic.h+0−11
@@ -9,17 +9,6 @@ · 8 unmodified lines
9 9
10#include <linux/types.h>10#include <linux/types.h>
11 11
12#define VIC_RAW_STATUS 0x08
13#define VIC_INT_ENABLE 0x10 /* 1 = enable, 0 = disable */
14#define VIC_INT_ENABLE_CLEAR 0x14
15
16struct device_node;
17struct pt_regs;
18
19void __vic_init(void __iomem *base, int parent_irq, int irq_start,
20 u32 vic_sources, u32 resume_sources, struct device_node *node);
21void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources, u32 resume_sources);12void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources, u32 resume_sources);
22int vic_init_cascaded(void __iomem *base, unsigned int parent_irq,
23 u32 vic_sources, u32 resume_sources);
24 13
25#endif14#endif
include/linux/irqchip/irq-bcm2836.h+1−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
30 */30 */
31#define LOCAL_MAILBOX_INT_CONTROL0 0x05031#define LOCAL_MAILBOX_INT_CONTROL0 0x050
32/*32/*
33 * The CPU's interrupt status register. Bits are defined by the the33 * The CPU's interrupt status register. Bits are defined by the
34 * LOCAL_IRQ_* bits below.34 * LOCAL_IRQ_* bits below.
35 */35 */
36#define LOCAL_IRQ_PENDING0 0x06036#define LOCAL_IRQ_PENDING0 0x060
include/linux/irqdesc.h+0−15
@@ -22,7 +22,6 @@ struct pt_regs; · 21 unmodified lines
22 * @irq_common_data: per irq and chip data passed down to chip functions22 * @irq_common_data: per irq and chip data passed down to chip functions
23 * @kstat_irqs: irq stats per cpu23 * @kstat_irqs: irq stats per cpu
24 * @handle_irq: highlevel irq-events handler24 * @handle_irq: highlevel irq-events handler
25 * @preflow_handler: handler called before the flow handler (currently used by sparc)
26 * @action: the irq action chain25 * @action: the irq action chain
27 * @status_use_accessors: status information26 * @status_use_accessors: status information
28 * @core_internal_state__do_not_mess_with_it: core internal status information27 * @core_internal_state__do_not_mess_with_it: core internal status information
@@ -58,9 +57,6 @@ struct irq_desc { · 29 unmodified lines
58 struct irq_data irq_data;57 struct irq_data irq_data;
59 unsigned int __percpu *kstat_irqs;58 unsigned int __percpu *kstat_irqs;
60 irq_flow_handler_t handle_irq;59 irq_flow_handler_t handle_irq;
61#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
62 irq_preflow_handler_t preflow_handler;
63#endif
64 struct irqaction *action; /* IRQ action list */60 struct irqaction *action; /* IRQ action list */
65 unsigned int status_use_accessors;61 unsigned int status_use_accessors;
66 unsigned int core_internal_state__do_not_mess_with_it;62 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
268 }264 }
269}265}
270 266
271#ifdef CONFIG_IRQ_PREFLOW_FASTEOI
272static 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
282#endif267#endif
include/linux/irqhandler.h+0−1
@@ -10,6 +10,5 @@ · 9 unmodified lines
10struct irq_desc;10struct irq_desc;
11struct irq_data;11struct irq_data;
12typedef void (*irq_flow_handler_t)(struct irq_desc *desc);12typedef void (*irq_flow_handler_t)(struct irq_desc *desc);
13typedef void (*irq_preflow_handler_t)(struct irq_data *data);
14 13
15#endif14#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