struct usb_xpad {
        struct input_dev *dev;          /* input device interface */
        struct usb_device *udev;        /* usb device */
+       struct usb_interface *intf;     /* usb interface */
 
        int pad_present;
 
 static void xpad_irq_in(struct urb *urb)
 {
        struct usb_xpad *xpad = urb->context;
-       struct device *dev = &xpad->dev->dev;
+       struct device *dev = &xpad->intf->dev;
        int retval, status;
 
        status = urb->status;
 static void xpad_bulk_out(struct urb *urb)
 {
        struct usb_xpad *xpad = urb->context;
-       struct device *dev = &xpad->dev->dev;
+       struct device *dev = &xpad->intf->dev;
 
        switch (urb->status) {
        case 0:
 static void xpad_irq_out(struct urb *urb)
 {
        struct usb_xpad *xpad = urb->context;
-       struct device *dev = &xpad->dev->dev;
+       struct device *dev = &xpad->intf->dev;
        int retval, status;
 
        status = urb->status;
        }
 
        xpad->udev = udev;
+       xpad->intf = intf;
        xpad->mapping = xpad_device[i].mapping;
        xpad->xtype = xpad_device[i].xtype;