Files
kernel_xiaomi_sm8250/drivers/soc/qcom/qdss_bridge.h
Yuanfang Zhang db786c4d22 qdss_bridge: fix stuck issue when driver remove
Only the memory written to usb needs to wait for write complete
when removed driver or modem ssr happened. The "used" member is
used to mark the state of memory written to usb.

Change-Id: Ia1755a6c38f8419c5282347744a3d8f3d3b58ad7
Signed-off-by: Yuanfang Zhang <zhangyuanfang@codeaurora.org>
2021-10-25 19:18:38 -07:00

68 lines
1.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
*/
#ifndef _QDSS_BRIDGE_H
#define _QDSS_BRIDGE_H
struct qdss_buf_tbl_lst {
struct list_head link;
unsigned char *buf;
struct qdss_request *usb_req;
atomic_t available;
atomic_t used;
};
struct qdss_mhi_buf_tbl_t {
struct list_head link;
unsigned char *buf;
size_t len;
};
enum mhi_transfer_mode {
MHI_TRANSFER_TYPE_USB,
MHI_TRANSFER_TYPE_UCI,
};
enum open_status {
DISABLE,
ENABLE,
SSR,
};
enum mhi_ch {
QDSS,
QDSS_HW,
EMPTY,
};
struct qdss_bridge_drvdata {
int alias;
int nr_trbs;
enum open_status opened;
struct completion completion;
size_t mtu;
enum mhi_transfer_mode mode;
spinlock_t lock;
struct device *dev;
struct cdev *cdev;
struct mhi_device *mhi_dev;
struct work_struct read_work;
struct work_struct read_done_work;
struct work_struct open_work;
struct work_struct close_work;
struct workqueue_struct *mhi_wq;
struct mhi_client_handle *hdl;
struct mhi_client_info_t *client_info;
struct list_head buf_tbl;
struct list_head mhi_buf_tbl;
struct list_head read_done_list;
struct usb_qdss_ch *usb_ch;
struct qdss_mhi_buf_tbl_t *cur_buf;
wait_queue_head_t uci_wq;
size_t rx_size;
};
#endif