byte-cntr: ensure usbch to be ready

Ensure usbch is ready before usb bypass start to avoid usbch is NULL
in usb_read_work_fn().

Change-Id: I0b932f1713a2d49424860728e79e3684122b4e40
Signed-off-by: Yuanfang Zhang <zhangyuanfang@codeaurora.org>
This commit is contained in:
Yuanfang Zhang 2021-02-26 17:25:34 +08:00
commit e98d3f8c74

View file

@ -1,5 +1,5 @@
// SPDX-License-Identifier: GPL-2.0-only
/* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
/* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
*
* Description: CoreSight Trace Memory Controller driver
*/
@ -207,6 +207,24 @@ static int usb_bypass_start(struct byte_cntr *byte_cntr_data)
return -EINVAL;
}
/*Ensure usbch is ready*/
if (!tmcdrvdata->usbch) {
int i;
for (i = TIMEOUT_US; i > 0; i--) {
if (tmcdrvdata->usbch)
break;
if (i - 1)
udelay(1);
else {
dev_err(&tmcdrvdata->csdev->dev,
"timeout while waiting usbch to be ready\n");
mutex_unlock(&byte_cntr_data->usb_bypass_lock);
return -EAGAIN;
}
}
}
atomic_set(&byte_cntr_data->usb_free_buf, USB_BUF_NUM);
offset = tmc_sg_get_rwp_offset(tmcdrvdata);