struct keyspan_pda_private {
        int                     tx_room;
        int                     tx_throttled;
-       struct work_struct                      wakeup_work;
-       struct work_struct                      unthrottle_work;
+       struct work_struct      unthrottle_work;
        struct usb_serial       *serial;
        struct usb_serial_port  *port;
 };
 };
 #endif
 
-static void keyspan_pda_wakeup_write(struct work_struct *work)
-{
-       struct keyspan_pda_private *priv =
-               container_of(work, struct keyspan_pda_private, wakeup_work);
-       struct usb_serial_port *port = priv->port;
-
-       tty_port_tty_wakeup(&port->port);
-}
-
 static void keyspan_pda_request_unthrottle(struct work_struct *work)
 {
        struct keyspan_pda_private *priv =
                case 2: /* tx unthrottle interrupt */
                        priv->tx_throttled = 0;
                        /* queue up a wakeup at scheduler time */
-                       schedule_work(&priv->wakeup_work);
+                       usb_serial_port_softint(port);
                        break;
                default:
                        break;
        priv = usb_get_serial_port_data(port);
 
        /* queue up a wakeup at scheduler time */
-       schedule_work(&priv->wakeup_work);
+       usb_serial_port_softint(port);
 }
 
 
        if (!priv)
                return -ENOMEM;
 
-       INIT_WORK(&priv->wakeup_work, keyspan_pda_wakeup_write);
        INIT_WORK(&priv->unthrottle_work, keyspan_pda_request_unthrottle);
        priv->serial = port->serial;
        priv->port = port;