Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0ae756b authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "qdss_bridge: fix stuck issue when driver remove"

parents 9e2b9b27 db786c4d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -151,7 +151,8 @@ static int qdss_check_entry(struct qdss_bridge_drvdata *drvdata)
	int ret = 0;

	list_for_each_entry(entry, &drvdata->buf_tbl, link) {
		if (atomic_read(&entry->available) == 0) {
		if (atomic_read(&entry->available) == 0
			&& atomic_read(&entry->used) == 1) {
			ret = 1;
			return ret;
		}
@@ -199,6 +200,7 @@ static void qdss_buf_tbl_remove(struct qdss_bridge_drvdata *drvdata,
		if (entry->buf != buf)
			continue;
		atomic_set(&entry->available, 1);
		atomic_set(&entry->used, 0);
		spin_unlock_bh(&drvdata->lock);
		return;
	}
@@ -382,6 +384,7 @@ static int usb_write(struct qdss_bridge_drvdata *drvdata,

	entry->usb_req->buf = buf;
	entry->usb_req->length = len;
	atomic_set(&entry->used, 1);
	ret = usb_qdss_write(drvdata->usb_ch, entry->usb_req);

	return ret;
+2 −1
Original line number Diff line number Diff line
/* 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.
 */

#ifndef _QDSS_BRIDGE_H
@@ -11,6 +11,7 @@ struct qdss_buf_tbl_lst {
	unsigned char *buf;
	struct qdss_request *usb_req;
	atomic_t available;
	atomic_t used;
};

struct qdss_mhi_buf_tbl_t {