]> sigrok.org Git - libsigrok.git/blobdiff - src/hardware/sysclk-lwla/api.c
sysclk-lwla: Use static array for init sequence
[libsigrok.git] / src / hardware / sysclk-lwla / api.c
index 6ba18a28b76987b9123703da8d0b6eb9a42af773..36c9ee608bfc7dc05796437cae9728707ee8e023 100644 (file)
@@ -325,12 +325,17 @@ static int dev_open(struct sr_dev_inst *sdi)
        }
 
        ret = drain_usb(usb, EP_REPLY);
-       if (ret != SR_OK)
+       if (ret != SR_OK) {
+               sr_usb_close(usb);
                return ret;
+       }
+       /* This delay appears to be necessary for reliable operation. */
+       g_usleep(30 * 1000);
 
        sdi->status = SR_ST_ACTIVE;
 
        devc->active_fpga_config = FPGA_NOCONF;
+       devc->short_transfer_quirk = FALSE;
        devc->state = STATE_IDLE;
 
        ret = (*devc->model->apply_fpga_config)(sdi);
@@ -341,8 +346,12 @@ static int dev_open(struct sr_dev_inst *sdi)
        if (ret != SR_OK) {
                sdi->status = SR_ST_INACTIVE;
                sr_usb_close(usb);
+               return ret;
        }
-       return ret;
+       if (devc->short_transfer_quirk)
+               sr_warn("Short transfer quirk detected! "
+                       "Memory reads will be slow.");
+       return SR_OK;
 }
 
 /* Shutdown and close device.