| /linux/kernel/irq/ |
| H A D | chip.c | 46 scoped_irqdesc->irq_data.chip = (struct irq_chip *)(chip ?: &no_irq_chip); in irq_set_chip() 127 scoped_irqdesc->irq_data.chip_data = data; in irq_set_chip_data() 134 struct irq_data *irq_get_irq_data(unsigned int irq) in irq_get_irq_data() 138 return desc ? &desc->irq_data : NULL; in irq_get_irq_data() 144 irqd_clear(&desc->irq_data, IRQD_IRQ_DISABLED); in irq_state_clr_disabled() 149 irqd_clear(&desc->irq_data, IRQD_IRQ_MASKED); in irq_state_clr_masked() 154 irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED); in irq_state_clr_started() 159 irqd_set(&desc->irq_data, IRQD_IRQ_STARTED); in irq_state_set_started() 173 struct irq_data *d = irq_desc_get_irq_data(desc); in __irq_startup_managed() 208 struct irq_data *d = irq_desc_get_irq_data(desc); in irq_startup_managed() [all …]
|
| H A D | manage.c | 38 static int __irq_get_irqchip_state(struct irq_data *d, enum irqchip_irq_state which, bool *state); 42 struct irq_data *irqd = irq_desc_get_irq_data(desc); in __synchronize_hardirq() 50 while (irqd_irq_inprogress(&desc->irq_data)) in __synchronize_hardirq() 55 inprogress = irqd_irq_inprogress(&desc->irq_data); in __synchronize_hardirq() 147 if (!desc || !irqd_can_balance(&desc->irq_data) || in __irq_can_set_affinity() 148 !desc->irq_data.chip || !desc->irq_data.chip->irq_set_affinity) in __irq_can_set_affinity() 175 !irqd_affinity_is_managed(&desc->irq_data); in irq_can_set_affinity_usr() 204 static void irq_validate_effective_affinity(struct irq_data *data) in irq_validate_effective_affinity() 215 static inline void irq_validate_effective_affinity(struct irq_data *dat [all...] |
| H A D | internals.h | 136 extern int irq_do_set_affinity(struct irq_data *data, 152 if (unlikely(desc->irq_data.chip->irq_bus_lock)) in chip_bus_lock() 153 desc->irq_data.chip->irq_bus_lock(&desc->irq_data); in chip_bus_lock() 158 if (unlikely(desc->irq_data.chip->irq_bus_sync_unlock)) in chip_bus_sync_unlock() 159 desc->irq_data.chip->irq_bus_sync_unlock(&desc->irq_data); in chip_bus_sync_unlock() 197 static inline unsigned int irqd_get(struct irq_data *d) in irqd_get() 205 static inline void irqd_set_move_pending(struct irq_data *d) in irqd_set_move_pending() 210 static inline void irqd_clr_move_pending(struct irq_data *d) in irqd_clr_move_pending() 215 static inline void irqd_set_managed_shutdown(struct irq_data *d) in irqd_set_managed_shutdown() 220 static inline void irqd_clr_managed_shutdown(struct irq_data *d) in irqd_clr_managed_shutdown() [all …]
|
| H A D | migration.c | 20 struct irq_data *data = irq_desc_get_irq_data(desc); in irq_fixup_move_pending() 40 for (struct irq_data *d = irq_desc_get_irq_data(desc); d; d = irqd_get_parent_data(d)) { in irq_force_complete_move() 48 void irq_move_masked_irq(struct irq_data *idata) in irq_move_masked_irq() 51 struct irq_data *data = &desc->irq_data; in irq_move_masked_irq() 104 void __irq_move_irq(struct irq_data *idata) in __irq_move_irq() 131 bool irq_can_move_in_process_context(struct irq_data *data) in irq_can_move_in_process_context()
|
| /linux/drivers/iommu/ |
| H A D | hyperv-iommu.c | 39 static int hyperv_ir_set_affinity(struct irq_data *data, in hyperv_ir_set_affinity() 42 struct irq_data *parent = data->parent_data; in hyperv_ir_set_affinity() 70 struct irq_data *irq_data; in hyperv_irq_remapping_alloc() local 80 irq_data = irq_domain_get_irq_data(domain, virq); in hyperv_irq_remapping_alloc() 81 if (!irq_data) { in hyperv_irq_remapping_alloc() 86 irq_data->chip = &hyperv_ir_chip; in hyperv_irq_remapping_alloc() 92 irq_data_update_affinity(irq_data, &ioapic_max_cpumask); in hyperv_irq_remapping_alloc() 194 hyperv_root_ir_compose_msi_msg(struct irq_data *irq_data, struct msi_msg *msg) in hyperv_root_ir_compose_msi_msg() argument 196 struct hyperv_root_ir_data *data = irq_data->chip_data; in hyperv_root_ir_compose_msi_msg() 204 cfg = irqd_cfg(irq_data); in hyperv_root_ir_compose_msi_msg() [all …]
|
| /linux/drivers/net/ethernet/marvell/octeontx2/af/cn20k/ |
| H A D | mbox_init.c | 40 struct rvu_irq_data *irq_data; in cn20k_register_afvf_mbox_intr() local 45 irq_data = devm_kcalloc(rvu->dev, 4, in cn20k_register_afvf_mbox_intr() 47 if (!irq_data) in cn20k_register_afvf_mbox_intr() 55 irq_data[vec].intr_status = in cn20k_register_afvf_mbox_intr() 57 irq_data[vec].start = 0; in cn20k_register_afvf_mbox_intr() 58 irq_data[vec].mdevs = 64; in cn20k_register_afvf_mbox_intr() 61 irq_data[vec].intr_status = in cn20k_register_afvf_mbox_intr() 63 irq_data[vec].start = 64; in cn20k_register_afvf_mbox_intr() 64 irq_data[vec].mdevs = 64; in cn20k_register_afvf_mbox_intr() 67 irq_data[vec].intr_status = in cn20k_register_afvf_mbox_intr() [all …]
|
| /linux/arch/x86/platform/uv/ |
| H A D | uv_irq.c | 48 static void uv_noop(struct irq_data *data) { } in uv_noop() 51 uv_set_irq_affinity(struct irq_data *data, const struct cpumask *mask, in uv_set_irq_affinity() 54 struct irq_data *parent = data->parent_data; in uv_set_irq_affinity() 80 struct irq_data *irq_data = irq_domain_get_irq_data(domain, virq); in uv_domain_alloc() local 87 irq_data_get_node(irq_data)); in uv_domain_alloc() 110 struct irq_data *irq_data = irq_domain_get_irq_data(domain, virq); in uv_domain_free() local 113 kfree(irq_data->chip_data); in uv_domain_free() 123 struct irq_data *irq_data, bool reserve) in uv_domain_activate() argument 125 uv_program_mmr(irqd_cfg(irq_data), irq_data->chip_data); in uv_domain_activate() 134 struct irq_data *irq_data) in uv_domain_deactivate() argument [all …]
|
| /linux/Documentation/translations/zh_CN/core-api/ |
| H A D | genericirq.rst | 107 这个高层IRQ处理函数只使用由分配的芯片描述符结构体引用的desc->irq_data.chip 176 default_enable(struct irq_data *data) 178 desc->irq_data.chip->irq_unmask(data); 181 default_disable(struct irq_data *data) 184 desc->irq_data.chip->irq_mask(data); 187 default_ack(struct irq_data *data) 192 default_mask_ack(struct irq_data *data) 202 noop(struct irq_data *data)) 218 desc->irq_data.chip->irq_mask_ack(); 220 desc->irq_data.chip->irq_unmask(); [all …]
|
| /linux/arch/sparc/kernel/ |
| H A D | prom_irqtrans.c | 118 struct sabre_irq_data *irq_data = _arg2; in sabre_wsync_handler() local 119 unsigned long controller_regs = irq_data->controller_regs; in sabre_wsync_handler() 226 struct sabre_irq_data *irq_data = _data; in sabre_irq_build() local 227 unsigned long controller_regs = irq_data->controller_regs; in sabre_irq_build() 264 (void *) irq_data); in sabre_irq_build() 273 struct sabre_irq_data *irq_data; in sabre_irq_trans_init() local 279 irq_data = prom_early_alloc(sizeof(struct sabre_irq_data)); in sabre_irq_trans_init() 282 irq_data->controller_regs = regs[0].phys_addr; in sabre_irq_trans_init() 285 irq_data->pci_first_busno = busrange[0]; in sabre_irq_trans_init() 287 dp->irq_trans->data = irq_data; in sabre_irq_trans_init() [all …]
|
| /linux/drivers/mfd/ |
| H A D | rc5t583-irq.c | 140 static void rc5t583_irq_lock(struct irq_data *irq_data) in rc5t583_irq_lock() argument 142 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_lock() 146 static void rc5t583_irq_unmask(struct irq_data *irq_data) in rc5t583_irq_unmask() argument 148 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_unmask() 149 unsigned int __irq = irq_data->irq - rc5t583->irq_base; in rc5t583_irq_unmask() 157 static void rc5t583_irq_mask(struct irq_data *irq_data) in rc5t583_irq_mask() argument 159 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_mask() 160 unsigned int __irq = irq_data->irq - rc5t583->irq_base; in rc5t583_irq_mask() 170 static int rc5t583_irq_set_type(struct irq_data *irq_data, unsigned int type) in rc5t583_irq_set_type() argument 172 struct rc5t583 *rc5t583 = irq_data_get_irq_chip_data(irq_data); in rc5t583_irq_set_type() [all …]
|
| H A D | qcom-pm8008.c | 109 const struct regmap_irq *irq_data, int idx, in pm8008_set_type_config() argument 115 buf[POLARITY_HI_INDEX][idx] &= ~irq_data->mask; in pm8008_set_type_config() 116 buf[POLARITY_LO_INDEX][idx] |= irq_data->mask; in pm8008_set_type_config() 121 buf[POLARITY_HI_INDEX][idx] |= irq_data->mask; in pm8008_set_type_config() 122 buf[POLARITY_LO_INDEX][idx] &= ~irq_data->mask; in pm8008_set_type_config() 126 buf[POLARITY_HI_INDEX][idx] |= irq_data->mask; in pm8008_set_type_config() 127 buf[POLARITY_LO_INDEX][idx] |= irq_data->mask; in pm8008_set_type_config() 135 buf[SET_TYPE_INDEX][idx] |= irq_data->mask; in pm8008_set_type_config() 137 buf[SET_TYPE_INDEX][idx] &= ~irq_data->mask; in pm8008_set_type_config() 195 struct regmap_irq_chip_data *irq_data; in pm8008_probe() local [all …]
|
| H A D | max8925-core.c | 474 struct max8925_irq_data *irq_data; in max8925_irq() local 480 irq_data = &max8925_irqs[i]; in max8925_irq() 482 if (irq_data->tsc_irq) in max8925_irq() 484 if (irq_data->flags == FLAGS_RTC) in max8925_irq() 486 else if (irq_data->flags == FLAGS_ADC) in max8925_irq() 490 if (read_reg != irq_data->reg) { in max8925_irq() 491 read_reg = irq_data->reg; in max8925_irq() 492 value = max8925_reg_read(i2c, irq_data->reg); in max8925_irq() 494 if (value & irq_data->enable) in max8925_irq() 503 struct max8925_irq_data *irq_data; in max8925_tsc_irq() local [all …]
|
| H A D | max8998-irq.c | 95 irq_to_max8998_irq(struct max8998_dev *max8998, struct irq_data *data) in irq_to_max8998_irq() 100 static void max8998_irq_lock(struct irq_data *data) in max8998_irq_lock() 107 static void max8998_irq_sync_unlock(struct irq_data *data) in max8998_irq_sync_unlock() 127 static void max8998_irq_unmask(struct irq_data *data) in max8998_irq_unmask() 130 struct max8998_irq_data *irq_data = irq_to_max8998_irq(max8998, data); in max8998_irq_unmask() local 132 max8998->irq_masks_cur[irq_data->reg - 1] &= ~irq_data->mask; in max8998_irq_unmask() 135 static void max8998_irq_mask(struct irq_data *data) in max8998_irq_mask() 138 struct max8998_irq_data *irq_data = irq_to_max8998_irq(max8998, data); in max8998_irq_mask() local 140 max8998->irq_masks_cur[irq_data->reg - 1] |= irq_data->mask; in max8998_irq_mask()
|
| /linux/drivers/regulator/ |
| H A D | tps65219-regulator.c | 340 struct tps65219_regulator_irq_data *irq_data = data; in tps65219_regulator_irq_handler() local 342 if (irq_data->type->event_name[0] == '\0') { in tps65219_regulator_irq_handler() 344 dev_err(irq_data->dev, in tps65219_regulator_irq_handler() 349 regulator_notifier_call_chain(irq_data->rdev, in tps65219_regulator_irq_handler() 350 irq_data->type->event, NULL); in tps65219_regulator_irq_handler() 352 dev_err(irq_data->dev, "Error IRQ trap %s for %s\n", in tps65219_regulator_irq_handler() 353 irq_data->type->event_name, irq_data->type->regulator_name); in tps65219_regulator_irq_handler() 403 struct tps65219_regulator_irq_data *irq_data; in tps65219_regulator_probe() local 445 irq_data = devm_kmalloc(tps->dev, sizeof(*irq_data), GFP_KERNEL); in tps65219_regulator_probe() 446 if (!irq_data) in tps65219_regulator_probe() [all …]
|
| /linux/include/linux/ |
| H A D | irqdesc.h | 69 struct irq_data irq_data; member 136 static inline struct irq_desc *irq_data_to_desc(struct irq_data *data) in irq_data_to_desc() 143 return desc->irq_data.irq; in irq_desc_get_irq() 146 static inline struct irq_data *irq_desc_get_irq_data(struct irq_desc *desc) in irq_desc_get_irq_data() 148 return &desc->irq_data; in irq_desc_get_irq_data() 153 return desc->irq_data.chip; in irq_desc_get_chip() 158 return desc->irq_data.chip_data; in irq_desc_get_chip_data() 206 static inline void irq_set_handler_locked(struct irq_data *data, in irq_set_handler_locked() 227 irq_set_chip_handler_name_locked(struct irq_data *data, in irq_set_chip_handler_name_locked()
|
| /linux/arch/x86/kernel/apic/ |
| H A D | io_apic.c | 402 static void mask_ioapic_irq(struct irq_data *irq_data) in mask_ioapic_irq() argument 404 struct mp_chip_data *data = irq_data->chip_data; in mask_ioapic_irq() 415 static void unmask_ioapic_irq(struct irq_data *irq_data) in unmask_ioapic_irq() argument 417 struct mp_chip_data *data = irq_data->chip_data; in unmask_ioapic_irq() 926 struct irq_data *irq_data = irq_get_irq_data(irq); in alloc_isa_irq_from_domain() local 935 if (irq_data && irq_data->parent_data) { in alloc_isa_irq_from_domain() 938 if (!add_pin_to_irq_node(irq_data->chip_data, node, ioapic, info->ioapic.pin)) in alloc_isa_irq_from_domain() 944 irq_data = irq_domain_get_irq_data(domain, irq); in alloc_isa_irq_from_domain() 945 data = irq_data->chip_data; in alloc_isa_irq_from_domain() 1049 struct irq_data *irq_data = irq_get_irq_data(irq); in mp_unmap_irq() local [all …]
|
| H A D | vector.c | 89 static struct apic_chip_data *apic_chip_data(struct irq_data *irqd) in apic_chip_data() 100 struct irq_cfg *irqd_cfg(struct irq_data *irqd) in irqd_cfg() 128 static void apic_update_irq_cfg(struct irq_data *irqd, unsigned int vector, in apic_update_irq_cfg() 150 static void chip_data_update(struct irq_data *irqd, unsigned int newvec, unsigned int newcpu) in chip_data_update() 195 static void vector_assign_managed_shutdown(struct irq_data *irqd) in vector_assign_managed_shutdown() 202 static int reserve_managed_vector(struct irq_data *irqd) in reserve_managed_vector() 217 static void reserve_irq_vector_locked(struct irq_data *irqd) in reserve_irq_vector_locked() 229 static int reserve_irq_vector(struct irq_data *irqd) in reserve_irq_vector() 240 assign_vector_locked(struct irq_data *irqd, const struct cpumask *dest) in assign_vector_locked() 275 static int assign_irq_vector(struct irq_data *irqd, const struct cpumask *dest) in assign_irq_vector() [all …]
|
| /linux/arch/m68k/atari/ |
| H A D | ataints.c | 85 static unsigned int atari_irq_startup(struct irq_data *data) in atari_irq_startup() 95 static void atari_irq_shutdown(struct irq_data *data) in atari_irq_shutdown() 107 static void atari_irq_enable(struct irq_data *data) in atari_irq_enable() 112 static void atari_irq_disable(struct irq_data *data) in atari_irq_disable() 160 static void atari_mfptimer_enable(struct irq_data *data) in atari_mfptimer_enable() 167 static void atari_mfptimer_disable(struct irq_data *data) in atari_mfptimer_disable() 193 static unsigned int atari_ethernat_startup(struct irq_data *data) in atari_ethernat_startup() 215 static void atari_ethernat_enable(struct irq_data *data) in atari_ethernat_enable() 226 static void atari_ethernat_disable(struct irq_data *data) in atari_ethernat_disable() 237 static void atari_ethernat_shutdown(struct irq_data *data) in atari_ethernat_shutdown()
|
| /linux/include/linux/irqchip/ |
| H A D | chained_irq.h | 24 chip->irq_mask_ack(&desc->irq_data); in chained_irq_enter() 26 chip->irq_mask(&desc->irq_data); in chained_irq_enter() 28 chip->irq_ack(&desc->irq_data); in chained_irq_enter() 36 chip->irq_eoi(&desc->irq_data); in chained_irq_exit() 38 chip->irq_unmask(&desc->irq_data); in chained_irq_exit()
|
| /linux/arch/mips/cavium-octeon/ |
| H A D | octeon-irq.c | 120 struct irq_data *data = irq_get_irq_data(irq); in octeon_irq_free_cd() 161 static void octeon_irq_core_ack(struct irq_data *data) in octeon_irq_core_ack() 177 static void octeon_irq_core_eoi(struct irq_data *data) in octeon_irq_core_eoi() 191 struct irq_data *data = arg; in octeon_irq_core_set_enable_local() 205 static void octeon_irq_core_disable(struct irq_data *data) in octeon_irq_core_disable() 211 static void octeon_irq_core_enable(struct irq_data *data) in octeon_irq_core_enable() 217 static void octeon_irq_core_bus_lock(struct irq_data *data) in octeon_irq_core_bus_lock() 224 static void octeon_irq_core_bus_sync_unlock(struct irq_data *data) in octeon_irq_core_bus_sync_unlock() 271 static int next_cpu_for_irq(struct irq_data *data) in next_cpu_for_irq() 303 static void octeon_irq_ciu_enable(struct irq_data *data) in octeon_irq_ciu_enable() [all …]
|
| /linux/arch/m68k/mac/ |
| H A D | macints.c | 131 static unsigned int mac_irq_startup(struct irq_data *); 132 static void mac_irq_shutdown(struct irq_data *); 188 void mac_irq_enable(struct irq_data *data) in mac_irq_enable() 218 void mac_irq_disable(struct irq_data *data) in mac_irq_disable() 248 static unsigned int mac_irq_startup(struct irq_data *data) in mac_irq_startup() 260 static void mac_irq_shutdown(struct irq_data *data) in mac_irq_shutdown()
|
| /linux/arch/powerpc/platforms/52xx/ |
| H A D | mpc52xx_pic.c | 159 static void mpc52xx_extirq_mask(struct irq_data *d) in mpc52xx_extirq_mask() 165 static void mpc52xx_extirq_unmask(struct irq_data *d) in mpc52xx_extirq_unmask() 171 static void mpc52xx_extirq_ack(struct irq_data *d) in mpc52xx_extirq_ack() 177 static int mpc52xx_extirq_set_type(struct irq_data *d, unsigned int flow_type) in mpc52xx_extirq_set_type() 216 static int mpc52xx_null_set_type(struct irq_data *d, unsigned int flow_type) in mpc52xx_null_set_type() 221 static void mpc52xx_main_mask(struct irq_data *d) in mpc52xx_main_mask() 227 static void mpc52xx_main_unmask(struct irq_data *d) in mpc52xx_main_unmask() 244 static void mpc52xx_periph_mask(struct irq_data *d) in mpc52xx_periph_mask() 250 static void mpc52xx_periph_unmask(struct irq_data *d) in mpc52xx_periph_unmask() 267 static void mpc52xx_sdma_mask(struct irq_data *d) in mpc52xx_sdma_mask() [all …]
|
| /linux/arch/x86/include/asm/ |
| H A D | irqdomain.h | 26 struct irq_data; 48 struct irq_data *irq_data, bool reserve); 50 struct irq_data *irq_data);
|
| /linux/arch/powerpc/platforms/embedded6xx/ |
| H A D | hlwd-pic.c | 42 static void hlwd_pic_mask_and_ack(struct irq_data *d) in hlwd_pic_mask_and_ack() 52 static void hlwd_pic_ack(struct irq_data *d) in hlwd_pic_ack() 60 static void hlwd_pic_mask(struct irq_data *d) in hlwd_pic_mask() 68 static void hlwd_pic_unmask(struct irq_data *d) in hlwd_pic_unmask() 128 chip->irq_mask(&desc->irq_data); /* IRQ_LEVEL */ in hlwd_pic_irq_cascade() 138 chip->irq_ack(&desc->irq_data); /* IRQ_LEVEL */ in hlwd_pic_irq_cascade() 139 if (!irqd_irq_disabled(&desc->irq_data) && chip->irq_unmask) in hlwd_pic_irq_cascade() 140 chip->irq_unmask(&desc->irq_data); in hlwd_pic_irq_cascade()
|
| /linux/Documentation/translations/zh_CN/core-api/irq/ |
| H A D | irq-domain.rst | 70 如果驱动程序有Linux的IRQ号或irq_data指针,并且需要知道相关的hwirq号(比 71 如在irq_chip回调中),那么可以直接从irq_data->hwirq中获得。 208 2) 一个新的字段 'parent_data' 被添加到irq_data结构中;它用于建立层次结构irq_data以 209 匹配irq_domain层次结构。irq_data用于存储irq_domain指针和硬件irq号。 212 在支持分层irq_domain和分层irq_data准备就绪后,为每个中断控制器建立一个irq_domain结 213 构,并为每个与IRQ相关联的irq_domain分配一个irq_data结构。现在我们可以再进一步支持堆 214 栈式(层次结构)的irq_chip。也就是说,一个irq_chip与层次结构中的每个irq_data相关联。
|