/* During system-wide suspend or hibernation device drivers need to be prevented 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 and sets the IRQ_SUSPENDED flag for each of them.  */
void suspend_device_irqs(void)
/* During system-wide suspend or hibernation device drivers need to be prevented 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 and sets the IRQ_SUSPENDED flag for each of them.  */
void suspend_device_irqs(void)
{
	struct irq_desc *desc;
	int irq;
	for_each_irq_desc(irq, desc) {
		unsigned long flags;
		raw_spin_lock_irqsave(&desc->lock, flags);
		__disable_irq(desc, irq, true);
		raw_spin_unlock_irqrestore(&desc->lock, flags);
	}
	for_each_irq_desc(irq, desc)
		if (desc->status & IRQ_SUSPENDED)
			synchronize_irq(irq);
}