#include <linux/delay.h>
 #include <linux/mutex.h>
 
-#include <asm/irq.h>
+#include <linux/irq.h>
 #include <linux/uaccess.h>
 
 /*
 
        tty_dev = device_find_child(uport->dev, &match, serial_match_port);
        if (tty_dev && device_may_wakeup(tty_dev)) {
-               if (!enable_irq_wake(uport->irq))
-                       uport->irq_wake = 1;
+               enable_irq_wake(uport->irq);
                put_device(tty_dev);
                mutex_unlock(&port->mutex);
                return 0;
 
        tty_dev = device_find_child(uport->dev, &match, serial_match_port);
        if (!uport->suspended && device_may_wakeup(tty_dev)) {
-               if (uport->irq_wake) {
+               if (irqd_is_wakeup_set(irq_get_irq_data((uport->irq))))
                        disable_irq_wake(uport->irq);
-                       uport->irq_wake = 0;
-               }
                put_device(tty_dev);
                mutex_unlock(&port->mutex);
                return 0;
 
        struct device           *dev;                   /* parent device */
        unsigned char           hub6;                   /* this should be in the 8250 driver */
        unsigned char           suspended;
-       unsigned char           irq_wake;
        unsigned char           unused[2];
        const char              *name;                  /* port name */
        struct attribute_group  *attr_group;            /* port specific attributes */