.unthrottle             = dbc_tty_unthrottle,
 };
 
-static void dbc_rx_push(unsigned long _port)
+static void dbc_rx_push(struct tasklet_struct *t)
 {
        struct dbc_request      *req;
        struct tty_struct       *tty;
        unsigned long           flags;
        bool                    do_push = false;
        bool                    disconnect = false;
-       struct dbc_port         *port = (void *)_port;
+       struct dbc_port         *port = from_tasklet(port, t, push);
        struct list_head        *queue = &port->read_queue;
 
        spin_lock_irqsave(&port->port_lock, flags);
 {
        tty_port_init(&port->port);
        spin_lock_init(&port->port_lock);
-       tasklet_init(&port->push, dbc_rx_push, (unsigned long)port);
+       tasklet_setup(&port->push, dbc_rx_push);
        INIT_LIST_HEAD(&port->read_pool);
        INIT_LIST_HEAD(&port->read_queue);
        INIT_LIST_HEAD(&port->write_pool);