From 42d14d9108de61ead41aebe74d668239ee7d5089 Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Sun, 24 Dec 2017 15:42:27 +0100 Subject: [PATCH] sysclk-lwla: Fix a regression with (at least) the LWLA1034. This regression was introduced in f1ba6b4b2c9a8ecf90bb31efb218752aa7e49d1a. Due to how the sysclk-lwla driver does up to 3 open/close operations in one dev_open() API callback we cannot rely on the sr_dev_open() and sr_dev_close() wrappers setting the sdi->status variable in this case. Tested on LWLA1034. --- src/hardware/sysclk-lwla/api.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hardware/sysclk-lwla/api.c b/src/hardware/sysclk-lwla/api.c index c6be15ed..085f46c7 100644 --- a/src/hardware/sysclk-lwla/api.c +++ b/src/hardware/sysclk-lwla/api.c @@ -259,6 +259,8 @@ static int dev_open(struct sr_dev_inst *sdi) /* 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; @@ -271,6 +273,7 @@ static int dev_open(struct sr_dev_inst *sdi) break; /* Rinse and repeat. */ + sdi->status = SR_ST_INACTIVE; sr_usb_close(usb); } @@ -306,7 +309,7 @@ static int dev_close(struct sr_dev_inst *sdi) sr_usb_close(usb); - return SR_OK; + return ret; } /* Check whether the device options contain a specific key.