Loading include/linux/irq.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -60,7 +60,6 @@ typedef void (*irq_flow_handler_t)(unsigned int irq, #define IRQ_MASKED 0x00002000 /* DEPRECATED */ #define IRQ_MASKED 0x00002000 /* DEPRECATED */ #endif #endif #define IRQ_LEVEL 0x00004000 /* IRQ level triggered */ #define IRQ_LEVEL 0x00004000 /* IRQ level triggered */ #define IRQ_PER_CPU 0x00010000 /* IRQ is per CPU */ #define IRQ_PER_CPU 0x00010000 /* IRQ is per CPU */ #define IRQ_NOPROBE 0x00020000 /* IRQ is not valid for probing */ #define IRQ_NOPROBE 0x00020000 /* IRQ is not valid for probing */ Loading @@ -71,7 +70,6 @@ typedef void (*irq_flow_handler_t)(unsigned int irq, #define IRQ_NO_BALANCING 0x00400000 /* IRQ is excluded from balancing */ #define IRQ_NO_BALANCING 0x00400000 /* IRQ is excluded from balancing */ #define IRQ_MOVE_PCNTXT 0x01000000 /* IRQ migration from process context */ #define IRQ_MOVE_PCNTXT 0x01000000 /* IRQ migration from process context */ #define IRQ_AFFINITY_SET 0x02000000 /* IRQ affinity was set from userspace*/ #define IRQ_AFFINITY_SET 0x02000000 /* IRQ affinity was set from userspace*/ #define IRQ_SUSPENDED 0x04000000 /* IRQ has gone through suspend sequence */ #define IRQ_NESTED_THREAD 0x10000000 /* IRQ is nested into another, no own handler thread */ #define IRQ_NESTED_THREAD 0x10000000 /* IRQ is nested into another, no own handler thread */ #define IRQF_MODIFY_MASK \ #define IRQF_MODIFY_MASK \ Loading kernel/irq/internals.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ enum { * IRQS_DISABLED - irq is disabled * IRQS_DISABLED - irq is disabled * IRQS_PENDING - irq is pending and replayed later * IRQS_PENDING - irq is pending and replayed later * IRQS_MASKED - irq is masked * IRQS_MASKED - irq is masked * IRQS_SUSPENDED - irq is suspended */ */ enum { enum { IRQS_AUTODETECT = 0x00000001, IRQS_AUTODETECT = 0x00000001, Loading @@ -60,6 +61,7 @@ enum { IRQS_DISABLED = 0x00000100, IRQS_DISABLED = 0x00000100, IRQS_PENDING = 0x00000200, IRQS_PENDING = 0x00000200, IRQS_MASKED = 0x00000400, IRQS_MASKED = 0x00000400, IRQS_SUSPENDED = 0x00000800, }; }; #define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data) #define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data) Loading kernel/irq/manage.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -326,7 +326,7 @@ void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend) if (suspend) { if (suspend) { if (!desc->action || (desc->action->flags & IRQF_NO_SUSPEND)) if (!desc->action || (desc->action->flags & IRQF_NO_SUSPEND)) return; return; desc->status |= IRQ_SUSPENDED; desc->istate |= IRQS_SUSPENDED; } } if (!desc->depth++) if (!desc->depth++) Loading Loading @@ -388,7 +388,7 @@ EXPORT_SYMBOL(disable_irq); void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) { { if (resume) { if (resume) { if (!(desc->status & IRQ_SUSPENDED)) { if (!(desc->istate & IRQS_SUSPENDED)) { if (!desc->action) if (!desc->action) return; return; if (!(desc->action->flags & IRQF_FORCE_RESUME)) if (!(desc->action->flags & IRQF_FORCE_RESUME)) Loading @@ -396,7 +396,7 @@ void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) /* Pretend that it got disabled ! */ /* Pretend that it got disabled ! */ desc->depth++; desc->depth++; } } desc->status &= ~IRQ_SUSPENDED; desc->istate &= ~IRQS_SUSPENDED; } } switch (desc->depth) { switch (desc->depth) { Loading @@ -405,7 +405,7 @@ void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq); WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq); break; break; case 1: { case 1: { if (desc->status & IRQ_SUSPENDED) if (desc->istate & IRQS_SUSPENDED) goto err_out; goto err_out; /* Prevent probing on this irq: */ /* Prevent probing on this irq: */ desc->status |= IRQ_NOPROBE; desc->status |= IRQ_NOPROBE; Loading kernel/irq/pm.c +3 −3 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,7 @@ * During system-wide suspend or hibernation device drivers need to be prevented * During system-wide suspend or hibernation device drivers need to be prevented * from receiving interrupts and this function is provided for this purpose. * from receiving interrupts and this function is provided for this purpose. * It marks all interrupt lines in use, except for the timer ones, as disabled * It marks all interrupt lines in use, except for the timer ones, as disabled * and sets the IRQ_SUSPENDED flag for each of them. * and sets the IRQS_SUSPENDED flag for each of them. */ */ void suspend_device_irqs(void) void suspend_device_irqs(void) { { Loading @@ -34,7 +34,7 @@ void suspend_device_irqs(void) } } for_each_irq_desc(irq, desc) for_each_irq_desc(irq, desc) if (desc->status & IRQ_SUSPENDED) if (desc->istate & IRQS_SUSPENDED) synchronize_irq(irq); synchronize_irq(irq); } } EXPORT_SYMBOL_GPL(suspend_device_irqs); EXPORT_SYMBOL_GPL(suspend_device_irqs); Loading @@ -43,7 +43,7 @@ EXPORT_SYMBOL_GPL(suspend_device_irqs); * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs() * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs() * * * Enable all interrupt lines previously disabled by suspend_device_irqs() that * Enable all interrupt lines previously disabled by suspend_device_irqs() that * have the IRQ_SUSPENDED flag set. * have the IRQS_SUSPENDED flag set. */ */ void resume_device_irqs(void) void resume_device_irqs(void) { { Loading Loading
include/linux/irq.h +0 −2 Original line number Original line Diff line number Diff line Loading @@ -60,7 +60,6 @@ typedef void (*irq_flow_handler_t)(unsigned int irq, #define IRQ_MASKED 0x00002000 /* DEPRECATED */ #define IRQ_MASKED 0x00002000 /* DEPRECATED */ #endif #endif #define IRQ_LEVEL 0x00004000 /* IRQ level triggered */ #define IRQ_LEVEL 0x00004000 /* IRQ level triggered */ #define IRQ_PER_CPU 0x00010000 /* IRQ is per CPU */ #define IRQ_PER_CPU 0x00010000 /* IRQ is per CPU */ #define IRQ_NOPROBE 0x00020000 /* IRQ is not valid for probing */ #define IRQ_NOPROBE 0x00020000 /* IRQ is not valid for probing */ Loading @@ -71,7 +70,6 @@ typedef void (*irq_flow_handler_t)(unsigned int irq, #define IRQ_NO_BALANCING 0x00400000 /* IRQ is excluded from balancing */ #define IRQ_NO_BALANCING 0x00400000 /* IRQ is excluded from balancing */ #define IRQ_MOVE_PCNTXT 0x01000000 /* IRQ migration from process context */ #define IRQ_MOVE_PCNTXT 0x01000000 /* IRQ migration from process context */ #define IRQ_AFFINITY_SET 0x02000000 /* IRQ affinity was set from userspace*/ #define IRQ_AFFINITY_SET 0x02000000 /* IRQ affinity was set from userspace*/ #define IRQ_SUSPENDED 0x04000000 /* IRQ has gone through suspend sequence */ #define IRQ_NESTED_THREAD 0x10000000 /* IRQ is nested into another, no own handler thread */ #define IRQ_NESTED_THREAD 0x10000000 /* IRQ is nested into another, no own handler thread */ #define IRQF_MODIFY_MASK \ #define IRQF_MODIFY_MASK \ Loading
kernel/irq/internals.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -48,6 +48,7 @@ enum { * IRQS_DISABLED - irq is disabled * IRQS_DISABLED - irq is disabled * IRQS_PENDING - irq is pending and replayed later * IRQS_PENDING - irq is pending and replayed later * IRQS_MASKED - irq is masked * IRQS_MASKED - irq is masked * IRQS_SUSPENDED - irq is suspended */ */ enum { enum { IRQS_AUTODETECT = 0x00000001, IRQS_AUTODETECT = 0x00000001, Loading @@ -60,6 +61,7 @@ enum { IRQS_DISABLED = 0x00000100, IRQS_DISABLED = 0x00000100, IRQS_PENDING = 0x00000200, IRQS_PENDING = 0x00000200, IRQS_MASKED = 0x00000400, IRQS_MASKED = 0x00000400, IRQS_SUSPENDED = 0x00000800, }; }; #define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data) #define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data) Loading
kernel/irq/manage.c +4 −4 Original line number Original line Diff line number Diff line Loading @@ -326,7 +326,7 @@ void __disable_irq(struct irq_desc *desc, unsigned int irq, bool suspend) if (suspend) { if (suspend) { if (!desc->action || (desc->action->flags & IRQF_NO_SUSPEND)) if (!desc->action || (desc->action->flags & IRQF_NO_SUSPEND)) return; return; desc->status |= IRQ_SUSPENDED; desc->istate |= IRQS_SUSPENDED; } } if (!desc->depth++) if (!desc->depth++) Loading Loading @@ -388,7 +388,7 @@ EXPORT_SYMBOL(disable_irq); void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) { { if (resume) { if (resume) { if (!(desc->status & IRQ_SUSPENDED)) { if (!(desc->istate & IRQS_SUSPENDED)) { if (!desc->action) if (!desc->action) return; return; if (!(desc->action->flags & IRQF_FORCE_RESUME)) if (!(desc->action->flags & IRQF_FORCE_RESUME)) Loading @@ -396,7 +396,7 @@ void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) /* Pretend that it got disabled ! */ /* Pretend that it got disabled ! */ desc->depth++; desc->depth++; } } desc->status &= ~IRQ_SUSPENDED; desc->istate &= ~IRQS_SUSPENDED; } } switch (desc->depth) { switch (desc->depth) { Loading @@ -405,7 +405,7 @@ void __enable_irq(struct irq_desc *desc, unsigned int irq, bool resume) WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq); WARN(1, KERN_WARNING "Unbalanced enable for IRQ %d\n", irq); break; break; case 1: { case 1: { if (desc->status & IRQ_SUSPENDED) if (desc->istate & IRQS_SUSPENDED) goto err_out; goto err_out; /* Prevent probing on this irq: */ /* Prevent probing on this irq: */ desc->status |= IRQ_NOPROBE; desc->status |= IRQ_NOPROBE; Loading
kernel/irq/pm.c +3 −3 Original line number Original line Diff line number Diff line Loading @@ -18,7 +18,7 @@ * During system-wide suspend or hibernation device drivers need to be prevented * During system-wide suspend or hibernation device drivers need to be prevented * from receiving interrupts and this function is provided for this purpose. * from receiving interrupts and this function is provided for this purpose. * It marks all interrupt lines in use, except for the timer ones, as disabled * It marks all interrupt lines in use, except for the timer ones, as disabled * and sets the IRQ_SUSPENDED flag for each of them. * and sets the IRQS_SUSPENDED flag for each of them. */ */ void suspend_device_irqs(void) void suspend_device_irqs(void) { { Loading @@ -34,7 +34,7 @@ void suspend_device_irqs(void) } } for_each_irq_desc(irq, desc) for_each_irq_desc(irq, desc) if (desc->status & IRQ_SUSPENDED) if (desc->istate & IRQS_SUSPENDED) synchronize_irq(irq); synchronize_irq(irq); } } EXPORT_SYMBOL_GPL(suspend_device_irqs); EXPORT_SYMBOL_GPL(suspend_device_irqs); Loading @@ -43,7 +43,7 @@ EXPORT_SYMBOL_GPL(suspend_device_irqs); * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs() * resume_device_irqs - enable interrupt lines disabled by suspend_device_irqs() * * * Enable all interrupt lines previously disabled by suspend_device_irqs() that * Enable all interrupt lines previously disabled by suspend_device_irqs() that * have the IRQ_SUSPENDED flag set. * have the IRQS_SUSPENDED flag set. */ */ void resume_device_irqs(void) void resume_device_irqs(void) { { Loading