#include <linux/tty_flip.h>
 #include <linux/usb.h>
 #include <linux/usb/serial.h>
+#include <linux/slab.h>
+#include "usb-wwan.h"
 
 #define DRIVER_AUTHOR "Qualcomm Inc"
 #define DRIVER_DESC "Qualcomm USB Serial driver"
 
 static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
 {
+       struct usb_wwan_intf_private *data;
        int retval = -ENODEV;
        __u8 nintf;
        __u8 ifnum;
        ifnum = serial->interface->cur_altsetting->desc.bInterfaceNumber;
        dbg("This Interface = %d", ifnum);
 
+       data = serial->private = kzalloc(sizeof(struct usb_wwan_intf_private),
+                                        GFP_KERNEL);
+       if (!data)
+               return -ENOMEM;
+
+       spin_lock_init(&data->susp_lock);
+
        switch (nintf) {
        case 1:
                /* QDL mode */
        .usb_driver          = &qcdriver,
        .num_ports           = 1,
        .probe               = qcprobe,
+       .open                = usb_wwan_open,
+       .close               = usb_wwan_close,
+       .write               = usb_wwan_write,
+       .write_room          = usb_wwan_write_room,
+       .chars_in_buffer     = usb_wwan_chars_in_buffer,
+       .attach              = usb_wwan_startup,
+       .disconnect          = usb_wwan_disconnect,
+       .release             = usb_wwan_release,
+#ifdef CONFIG_PM
+       .suspend             = usb_wwan_suspend,
+       .resume              = usb_wwan_resume,
+#endif
 };
 
 static int __init qcinit(void)