/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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