Lines Matching full:irq

10 #include <linux/irq.h>
115 static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node, in desc_set_defaults() argument
124 desc->irq_data.irq = irq; in desc_set_defaults()
194 static void irq_insert_desc(unsigned int irq, struct irq_desc *desc) in irq_insert_desc() argument
196 MA_STATE(mas, &sparse_irqs, irq, irq); in irq_insert_desc()
200 static void delete_irq_desc(unsigned int irq) in delete_irq_desc() argument
202 MA_STATE(mas, &sparse_irqs, irq, irq); in delete_irq_desc()
210 static int init_desc(struct irq_desc *desc, int irq, int node, in init_desc() argument
228 desc_set_defaults(irq, desc, node, affinity, owner); in init_desc()
350 ATTRIBUTE_GROUPS(irq);
358 static void irq_sysfs_add(int irq, struct irq_desc *desc) in irq_sysfs_add() argument
366 if (kobject_add(&desc->kobj, irq_kobj_base, "%d", irq)) in irq_sysfs_add()
367 pr_warn("Failed to add kobject for irq %d\n", irq); in irq_sysfs_add()
388 int irq; in irq_sysfs_init() local
390 /* Prevent concurrent irq alloc/free */ in irq_sysfs_init()
392 irq_kobj_base = kobject_create_and_add("irq", kernel_kobj); in irq_sysfs_init()
397 for_each_irq_desc(irq, desc) in irq_sysfs_init()
398 irq_sysfs_add(irq, desc); in irq_sysfs_init()
409 static void irq_sysfs_add(int irq, struct irq_desc *desc) {} in irq_sysfs_add() argument
414 struct irq_desc *irq_to_desc(unsigned int irq) in irq_to_desc() argument
416 return mtree_load(&sparse_irqs, irq); in irq_to_desc()
432 static struct irq_desc *alloc_desc(int irq, int node, unsigned int flags, in alloc_desc() argument
443 ret = init_desc(desc, irq, node, flags, affinity, owner); in alloc_desc()
468 static void free_desc(unsigned int irq) in free_desc() argument
470 struct irq_desc *desc = irq_to_desc(irq); in free_desc()
473 unregister_irq_proc(irq, desc); in free_desc()
485 delete_irq_desc(irq); in free_desc()
615 struct irq_desc *irq_to_desc(unsigned int irq) in irq_to_desc() argument
617 return (irq < NR_IRQS) ? irq_desc + irq : NULL; in irq_to_desc()
621 static void free_desc(unsigned int irq) in free_desc() argument
623 struct irq_desc *desc = irq_to_desc(irq); in free_desc()
626 desc_set_defaults(irq, desc, irq_desc_get_node(desc), NULL, NULL); in free_desc()
627 delete_irq_desc(irq); in free_desc()
650 void irq_mark_irq(unsigned int irq) in irq_mark_irq() argument
653 irq_insert_desc(irq, irq_desc + irq); in irq_mark_irq()
674 * generic_handle_irq - Invoke the handler for a particular irq
675 * @irq: The irq number to handle
679 * This function must be called from an IRQ context with irq regs
682 int generic_handle_irq(unsigned int irq) in generic_handle_irq() argument
684 return handle_irq_desc(irq_to_desc(irq)); in generic_handle_irq()
689 * generic_handle_irq_safe - Invoke the handler for a particular irq from any
691 * @irq: The irq number to handle
695 * This function can be called from any context (IRQ or process context). It
696 * will report an error if not invoked from IRQ context and the irq has been
697 * marked to enforce IRQ-context only.
699 int generic_handle_irq_safe(unsigned int irq) in generic_handle_irq_safe() argument
705 ret = handle_irq_desc(irq_to_desc(irq)); in generic_handle_irq_safe()
713 * generic_handle_domain_irq - Invoke the handler for a HW irq belonging
716 * @hwirq: The HW irq number to convert to a logical one
720 * This function must be called from an IRQ context with irq regs
730 * generic_handle_irq_safe - Invoke the handler for a HW irq belonging
733 * @hwirq: The HW irq number to convert to a logical one
737 * This function can be called from any context (IRQ or process
738 * context). If the interrupt is marked as 'enforce IRQ-context only' then
757 * @hwirq: The HW irq number to convert to a logical one
761 * This function must be called from an NMI context with irq regs
774 * irq_free_descs - free irq descriptors
792 * __irq_alloc_descs - allocate and initialize a range of irq descriptors
793 * @irq: Allocate for specific irq number if irq >= 0
794 * @from: Start the search from this irq number
796 * @node: Preferred node on which the irq descriptor should be allocated
799 * hints where the irq descriptors should be allocated and which
802 * Returns the first irq number or error code
804 int __ref __irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node, in __irq_alloc_descs() argument
812 if (irq >= 0) { in __irq_alloc_descs()
813 if (from > irq) in __irq_alloc_descs()
815 from = irq; in __irq_alloc_descs()
828 if (irq >=0 && start != irq) in __irq_alloc_descs()
840 * irq_get_next_irq - get next allocated irq number
843 * Returns next irq number after offset or nr_irqs if none is found.
850 struct irq_desc *__irq_get_desc_lock(unsigned int irq, unsigned long *flags, bool bus, in __irq_get_desc_lock() argument
855 desc = irq_to_desc(irq); in __irq_get_desc_lock()
882 int irq_set_percpu_devid_partition(unsigned int irq, in irq_set_percpu_devid_partition() argument
885 struct irq_desc *desc = irq_to_desc(irq); in irq_set_percpu_devid_partition()
897 irq_set_percpu_devid_flags(irq); in irq_set_percpu_devid_partition()
901 int irq_set_percpu_devid(unsigned int irq) in irq_set_percpu_devid() argument
903 return irq_set_percpu_devid_partition(irq, NULL); in irq_set_percpu_devid()
906 int irq_get_percpu_devid_partition(unsigned int irq, struct cpumask *affinity) in irq_get_percpu_devid_partition() argument
908 struct irq_desc *desc = irq_to_desc(irq); in irq_get_percpu_devid_partition()
920 void kstat_incr_irq_this_cpu(unsigned int irq) in kstat_incr_irq_this_cpu() argument
922 kstat_incr_irqs_this_cpu(irq_to_desc(irq)); in kstat_incr_irq_this_cpu()
927 * @irq: The interrupt number
931 * @irq. The caller must ensure that the interrupt is not removed
934 unsigned int kstat_irqs_cpu(unsigned int irq, int cpu) in kstat_irqs_cpu() argument
936 struct irq_desc *desc = irq_to_desc(irq); in kstat_irqs_cpu()
956 static unsigned int kstat_irqs(unsigned int irq) in kstat_irqs() argument
958 struct irq_desc *desc = irq_to_desc(irq); in kstat_irqs()
970 unsigned int irq; in kstat_snapshot_irqs() local
972 for_each_irq_desc(irq, desc) { in kstat_snapshot_irqs()
979 unsigned int kstat_get_irq_since_snapshot(unsigned int irq) in kstat_get_irq_since_snapshot() argument
981 struct irq_desc *desc = irq_to_desc(irq); in kstat_get_irq_since_snapshot()
992 * @irq: The interrupt number
994 * Returns the sum of interrupt counts on all cpus since boot for @irq.
1000 unsigned int kstat_irqs_usr(unsigned int irq) in kstat_irqs_usr() argument
1005 sum = kstat_irqs(irq); in kstat_irqs_usr()
1011 void __irq_set_lockdep_class(unsigned int irq, struct lock_class_key *lock_class, in __irq_set_lockdep_class() argument
1014 struct irq_desc *desc = irq_to_desc(irq); in __irq_set_lockdep_class()