{
        int retval, parse_retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        static const int out_data_length = 0x20;
        int in_data_length;
        struct ni_usb_register reg;
 
        *bytes_read = 0;
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
        if (length > max_read_length)
                return -EINVAL;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
                return -ENOMEM;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        int out_data_length;
        static const int in_data_length = 0x10;
        struct ni_usb_status_block status;
        static const int max_write_length = 0xffff;
 
-       *bytes_written = 0;
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
        if (length > max_write_length)
                return -EINVAL;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        out_data_length = length + 0x10;
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        int out_data_length;
        static const int in_data_length = 0x10;
        static const int max_command_length = 0x10;
 
        *command_bytes_written = 0;
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
        if (length > max_command_length)
                length = max_command_length;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        out_data_length = length + 0x10;
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        static const int out_data_length = 0x10;
        static const int  in_data_length = 0x10;
        int i = 0;
        struct ni_usb_status_block status;
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
                return -ENOMEM;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        static const int out_data_length = 0x10;
        static const int  in_data_length = 0x20;
        int i = 0;
        struct ni_usb_status_block status;
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
                return -ENOMEM;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        int i = 0;
        struct ni_usb_register writes[4];
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return; // -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        if (request_control) {
                writes[i].device = NIUSB_SUBDEV_TNT4882;
                writes[i].address = CMDR;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        static const int out_data_length = 0x10;
        static const int  in_data_length = 0x10;
        int i = 0;
        struct ni_usb_status_block status;
 
-       // FIXME: we are going to pulse when assert is true, and ignore otherwise
+       if (!ni_priv->bus_interface)
+               return; // -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+// FIXME: we are going to pulse when assert is true, and ignore otherwise
        if (assert == 0)
                return;
        out_data = kmalloc(out_data_length, GFP_KERNEL);
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct ni_usb_register reg;
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return; // -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        reg.device = NIUSB_SUBDEV_TNT4882;
        reg.address = nec7210_to_tnt4882_offset(AUXMR);
        if (enable)
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        static const int buffer_length = 8;
        u8 *buffer;
        struct ni_usb_status_block status;
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        buffer = kmalloc(buffer_length, GFP_KERNEL);
        if (!buffer)
                return board->status;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        int i = 0;
        struct ni_usb_register writes[2];
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        writes[i].device = NIUSB_SUBDEV_TNT4882;
        writes[i].address = nec7210_to_tnt4882_offset(ADR);
        writes[i].value = address;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        int i = 0;
        struct ni_usb_register writes[3];
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        i += ni_usb_write_sad(writes, address, enable);
        retval = ni_usb_write_registers(ni_priv, writes, i, &ibsta);
        if (retval < 0) {
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        static const int out_data_length = 0x10;
        static const int  in_data_length = 0x20;
        int j = 0;
        struct ni_usb_status_block status;
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
                return -ENOMEM;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        int i = 0;
        struct ni_usb_register writes[1];
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return; // -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        writes[i].device = NIUSB_SUBDEV_TNT4882;
        writes[i].address = nec7210_to_tnt4882_offset(AUXMR);
        writes[i].value = PPR | config;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        int i = 0;
        struct ni_usb_register writes[1];
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return; // -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        writes[i].device = NIUSB_SUBDEV_TNT4882;
        writes[i].address = nec7210_to_tnt4882_offset(AUXMR);
        if (ist)
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        int i = 0;
        struct ni_usb_register writes[1];
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return; // -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        writes[i].device = NIUSB_SUBDEV_TNT4882;
        writes[i].address = nec7210_to_tnt4882_offset(SPMR);
        writes[i].value = status;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        int i = 0;
        struct ni_usb_register writes[1];
        unsigned int ibsta;
 
+       if (!ni_priv->bus_interface)
+               return; // -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        writes[i].device = NIUSB_SUBDEV_TNT4882;
        writes[i].address = nec7210_to_tnt4882_offset(AUXMR);
        writes[i].value = AUX_RTL;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        u8 *out_data, *in_data;
        static const int out_data_length = 0x20;
        static const int  in_data_length = 0x20;
        int line_status = ValidALL;
        // NI windows driver reads 0xd(HSSEL), 0xc (ARD0), 0x1f (BSR)
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        out_data = kmalloc(out_data_length, GFP_KERNEL);
        if (!out_data)
                return -ENOMEM;
 {
        int retval;
        struct ni_usb_priv *ni_priv = board->private_data;
-       struct usb_device *usb_dev = interface_to_usbdev(ni_priv->bus_interface);
+       struct usb_device *usb_dev;
        struct ni_usb_register writes[3];
        unsigned int ibsta;
        unsigned int actual_ns;
        int i;
 
+       if (!ni_priv->bus_interface)
+               return -ENODEV;
+       usb_dev = interface_to_usbdev(ni_priv->bus_interface);
        i = ni_usb_setup_t1_delay(writes, nano_sec, &actual_ns);
        retval = ni_usb_write_registers(ni_priv, writes, i, &ibsta);
        if (retval < 0) {