u64 hw_code;
        u32 keycode;
 } imon_panel_key_table[] = {
-       { 0x000000000f00ffee, KEY_PROG1 }, /* Go */
-       { 0x000000001f00ffee, KEY_AUDIO },
-       { 0x000000002000ffee, KEY_VIDEO },
-       { 0x000000002100ffee, KEY_CAMERA },
-       { 0x000000002700ffee, KEY_DVD },
-       { 0x000000002300ffee, KEY_TV },
-       { 0x000000000500ffee, KEY_PREVIOUS },
-       { 0x000000000700ffee, KEY_REWIND },
-       { 0x000000000400ffee, KEY_STOP },
-       { 0x000000003c00ffee, KEY_PLAYPAUSE },
-       { 0x000000000800ffee, KEY_FASTFORWARD },
-       { 0x000000000600ffee, KEY_NEXT },
-       { 0x000000010000ffee, KEY_RIGHT },
-       { 0x000001000000ffee, KEY_LEFT },
-       { 0x000000003d00ffee, KEY_SELECT },
-       { 0x000100000000ffee, KEY_VOLUMEUP },
-       { 0x010000000000ffee, KEY_VOLUMEDOWN },
-       { 0x000000000100ffee, KEY_MUTE },
+       { 0x000000000f00ffeell, KEY_PROG1 }, /* Go */
+       { 0x000000001f00ffeell, KEY_AUDIO },
+       { 0x000000002000ffeell, KEY_VIDEO },
+       { 0x000000002100ffeell, KEY_CAMERA },
+       { 0x000000002700ffeell, KEY_DVD },
+       { 0x000000002300ffeell, KEY_TV },
+       { 0x000000000500ffeell, KEY_PREVIOUS },
+       { 0x000000000700ffeell, KEY_REWIND },
+       { 0x000000000400ffeell, KEY_STOP },
+       { 0x000000003c00ffeell, KEY_PLAYPAUSE },
+       { 0x000000000800ffeell, KEY_FASTFORWARD },
+       { 0x000000000600ffeell, KEY_NEXT },
+       { 0x000000010000ffeell, KEY_RIGHT },
+       { 0x000001000000ffeell, KEY_LEFT },
+       { 0x000000003d00ffeell, KEY_SELECT },
+       { 0x000100000000ffeell, KEY_VOLUMEUP },
+       { 0x010000000000ffeell, KEY_VOLUMEDOWN },
+       { 0x000000000100ffeell, KEY_MUTE },
        /* iMON Knob values */
-       { 0x000100ffffffffee, KEY_VOLUMEUP },
-       { 0x010000ffffffffee, KEY_VOLUMEDOWN },
-       { 0x000008ffffffffee, KEY_MUTE },
+       { 0x000100ffffffffeell, KEY_VOLUMEUP },
+       { 0x010000ffffffffeell, KEY_VOLUMEDOWN },
+       { 0x000008ffffffffeell, KEY_MUTE },
 };
 
 /* to prevent races between open() and disconnect(), probing, etc */
        struct urb *tx_urb;
        struct device *dev = &intf->dev;
        struct usb_host_interface *iface_desc;
-       int ret;
+       int ret = -ENOMEM;
 
        ictx = kzalloc(sizeof(struct imon_context), GFP_KERNEL);
        if (!ictx) {
        ictx->vendor  = le16_to_cpu(ictx->usbdev_intf0->descriptor.idVendor);
        ictx->product = le16_to_cpu(ictx->usbdev_intf0->descriptor.idProduct);
 
+       ret = -ENODEV;
        iface_desc = intf->cur_altsetting;
-       if (!imon_find_endpoints(ictx, iface_desc))
+       if (!imon_find_endpoints(ictx, iface_desc)) {
                goto find_endpoint_failed;
+       }
 
        ictx->idev = imon_init_idev(ictx);
        if (!ictx->idev) {
 {
        struct urb *rx_urb;
        struct usb_host_interface *iface_desc;
-       int ret;
+       int ret = -ENOMEM;
 
        rx_urb = usb_alloc_urb(0, GFP_KERNEL);
        if (!rx_urb) {
                err("%s: usb_alloc_urb failed for IR urb", __func__);
-               ret = -ENOMEM;
                goto rx_urb_alloc_failed;
        }
 
        ictx->dev_present_intf1 = 1;
        ictx->rx_urb_intf1 = rx_urb;
 
+       ret = -ENODEV;
        iface_desc = intf->cur_altsetting;
        if (!imon_find_endpoints(ictx, iface_desc))
                goto find_endpoint_failed;