From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2E11328B61 for ; Mon, 22 Jun 2026 14:52:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782139950; cv=none; b=rvbnfAiuXO/HZJeBNthVfwaYG6htmL51z1yTaZbkBDLWSsA5sugJAx+spMayMqW6uVIFqyy3AOpwvY7b2u1FnTrSm1/QQwFTBbsHNZsXa/d2V94CGc5i/yYjvooLrBJynvWWcJ1br3fWwyPD5R5RDXiyMdAoIux9qKpT8errybU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782139950; c=relaxed/simple; bh=gtdxpeDCPXJnoqczVLM4bqxIwx5PDjFJLCIseCO6uPI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KTJKpFwWh5pTGRE521HGi3VCZV8+UHWgFg6CT91WmqMRSBrzhrVTh5S+NQvp8yFWiwvw9NemXVUcvtVx9q8Q7L06zkYmOf3lUtddpYaFJ8W+CRn+6xl+EuWCmTgmXpoHYMHeB761HLuqlo091ib0PNU0N5kfeIzM+vfTggYk4YM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=DydO/tk+; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HEryQQ3M; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="DydO/tk+"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HEryQQ3M" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65MDGSpT1261518 for ; Mon, 22 Jun 2026 14:52:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= V0hnYSsyp9tNtKrK+c49aUINayymi5eAWdZv9/f/PLc=; b=DydO/tk+z+qjYb9n GLKgxHPv7VINzreYfuCjQEskDEG4Vh+JUVVJeN4FLiS9NqTS3eCMX6r5MaL4739L d2t2fmFo3DkXFrNe653l2vxD2twd7uTEGI9sNWzCPuZEnkDx9asqw/B7LTan5UVH g4tKcXcvs1im5NuEmJwtITSL8ftcPgGNvp0tJBDaX51do91gJpXoxsqzqU5oihSk TYIz38vzaIr8C19+enQN7hkxf6o6sgNNSpLNJOqfSa/RvNLewx7SUIbINwzQkeuK v7gcYxrZTyQZ+IHPZ2kvRq8B2tOe+oLHvRZILVkm3dx6sqsh30M8BeVQ/KDKiILZ 1VYuSg== Received: from mail-dl1-f69.google.com (mail-dl1-f69.google.com [74.125.82.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ey3eb8vcc-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 22 Jun 2026 14:52:27 +0000 (GMT) Received: by mail-dl1-f69.google.com with SMTP id a92af1059eb24-13825f68028so334673c88.1 for ; Mon, 22 Jun 2026 07:52:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782139947; x=1782744747; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=V0hnYSsyp9tNtKrK+c49aUINayymi5eAWdZv9/f/PLc=; b=HEryQQ3MedakLb23tA5l0TzZVpWPxjif8UYTAfEWpV6wB31XCQEC9m/ufGoz/HhFrB jBXQliwmBLYq7O90tistVBoYar6PQlmVqfkkCYaf78wTwJ1OTcZ7jvM+51U1df4XLZQN iS/wkXiTccF9MVdH96/e2I8eh2it3bKErskAr0n9l8tnn484A5W68ZT0ixvp52dKRbBg meQzkk/OI1LLLQCeR9W6PM09nmkTSoWP+EGPQgODyJLxDDJGxc+AF/lYhV2SYvmnew2U WSGxInhYHnWaJyvOMzCk14UI5wMe7yu4N4Emwrb+PA5US460i7MqVhyTqBHTf+rXTTX5 jb6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782139947; x=1782744747; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=V0hnYSsyp9tNtKrK+c49aUINayymi5eAWdZv9/f/PLc=; b=Rx9IWAWzHbyKZr7loo4HpNct9JGQYeCS2GBfTRcCSzeZuQQDSAimyL72pD3omboEi1 Cd76B0wv3mm7yJjwP3gqWCH/GdyLgz3rTWWybO12euMrILhTdbxyFp0R+bPHcWQHDIAv NsukwTCMYekzkx3mkB1QFCeO5wAEjppGX7prINLitYcBgpJSrWq1x4Ovo3oxuvejljw+ UUJ6S9+jNi6wQPknoS4jlGBIS4EHinASzi00IpVy4Uyh1XXpNuC7nnSbCax+UMyN1gqZ TuRdqo+1znncjuUnJ91NpbXMFjNCE1ZyGM/O568DCl5YdS0Xn7oEVBFoEn3UBrVuxj43 V0YQ== X-Forwarded-Encrypted: i=1; AHgh+Rq+tXbNiKzDkMaxS5X2Ai7wUczEzo0HxtSVDvYYmu3fAdyoEpAg6tp+1nZElKBZvZRPPHpbQDCzgBIH/5Y=@vger.kernel.org X-Gm-Message-State: AOJu0YxzkaCU35T+psnfN6xpvrmVCh9sYeIYJogeRIknZWNzYpvDtAtF TXE8Oyv1vFXc7T65cVGRSZ+G538bvGzXIq2tw+A7c5f1m4g/DWYE6tK3t88k6ffsahnkNqoZYeb zOFC770U4IRRj2uCM2K8mO+oZZt6UmoY9VTGMxu0IhkpfNdZkphbB9aFqhHkCyyY8S8Y= X-Gm-Gg: AfdE7cnZ542lqCK8LeoOwMelu/PSgDeJu7yK5lBOzimnIOTIDkj7/ejamcDlc/dxeZh yUubayTZ2JrY1++0yamv0a4Fd9OAZoM/VeCRrLxF6oDE98ZaoKSjDpmQlsLyNCdExhMn7c7Bfbm n05n0/65VkkpE2ke+tPLyKd74sz+aNtyKLNuZX3mkWoua8A7x/ys5L0Mxi93U3ZxsxXXUskZtbb +zgYN3kFZHJaRnXijs073g9nkCosQ8r6V6LL40o3WgP+GZJZZcm1BdF/ae4xxKEvl4BRSrB3NBz C0zrPdb7ABlyCHKcQwxrbkMuHljqJnIHhNfgQIYTd5Ka9CV29vf8clO+BztFQ468/ffxZMH0lEq RkL7xR8tcVOBzzZ6dKWVkbBSfXcC8qInL8cJVjC1/umPzFUz3+7laO5Ey9A== X-Received: by 2002:a05:7300:c86:b0:304:3c33:7afd with SMTP id 5a478bee46e88-30c520988camr220547eec.1.1782139946475; Mon, 22 Jun 2026 07:52:26 -0700 (PDT) X-Received: by 2002:a05:7300:c86:b0:304:3c33:7afd with SMTP id 5a478bee46e88-30c520988camr220526eec.1.1782139945704; Mon, 22 Jun 2026 07:52:25 -0700 (PDT) Received: from hu-zijuhu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30c1bddfe34sm12025561eec.20.2026.06.22.07.52.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 22 Jun 2026 07:52:25 -0700 (PDT) From: Zijun Hu Date: Mon, 22 Jun 2026 07:52:24 -0700 Subject: [PATCH 11/13] Bluetooth: btusb: Move struct btusb_data and macros into btusb.h Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260622-bt_bugfix-v1-11-11f936d84e72@oss.qualcomm.com> References: <20260622-bt_bugfix-v1-0-11f936d84e72@oss.qualcomm.com> In-Reply-To: <20260622-bt_bugfix-v1-0-11f936d84e72@oss.qualcomm.com> To: Marcel Holtmann , Luiz Augusto von Dentz , Rocky Liao , Bartosz Golaszewski , Ben Young Tae Kim , Balakrishna Godavarthi , Matthias Kaehlcke Cc: Zijun Hu , linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, Luiz Augusto von Dentz , linux-arm-msm@vger.kernel.org, Zijun Hu X-Mailer: b4 0.14.3 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjIyMDE0NyBTYWx0ZWRfXyqgCYJdRRSMy Hgdo/hR6jZbB7HiBc53VztUOPxOXR0s9JJ0mNx3MbjMD2wfBaM9CSlmJ/JG0vUF1tXHaqB6AEUM WQ46KHtd53Z5A8CmjLZroVWKlMPA7YI= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjIyMDE0NyBTYWx0ZWRfXzvX82BVV+Ie5 TlCzUnz6Bu+GKn+KKKdlyPxVIKijdwQlK2yI+kX8ZDkpuVqM+p5OMEWE4Dhjpuf5oJtu1gwjAOf Bw/CyqVGmLtwu9W3ozO2q67b/1Qn/RKIXnW8Xx7OTxEXM4dIeSOtjpIqUiBJzVegg95NxV41GST lptIo6jzrsJyMchES34upJGCWabBSjOQr2SJXN0juz3Od4oT73Gzbkh7Zdvk3rN9DXhvpD3y6Sf ei40BDIIe6NA24ougq94pzVICv38RzbrieVxJq5mbgtIuYO043RP6KSUkwfEtNDVyqz9r2IPyqS BPsnoieoLLWiPr4GiWs1MZoqEvUz7AouRL/A0/QtVrR/YFNVMfGZ+g7BIw5uUKr5e2Q2SQVMxf2 U4SpwjIV9uqoZOCeys22WGWtLzUtHEkdSAwWHk3nbl9dSn/Laz3629JOkZWJ2WL8oCKG+TWS6Z/ JcEQSGGI5bPS6IWmqFg== X-Authority-Analysis: v=2.4 cv=ILIyzAvG c=1 sm=1 tr=0 ts=6a394c2b cx=c_pps a=kVLUcbK0zfr7ocalXnG1qA==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=Dei6p5SHAAAA:8 a=7ErfrF5Y_EYtAn6cJgkA:9 a=QEXdDO2ut3YA:10 a=vr4QvYf-bLy2KjpDp97w:22 a=M-Yerj1wOn-OpK7r_3ei:22 X-Proofpoint-GUID: g7Cfxez3u9PWL8jMZEuzFS3kX_f4jVTP X-Proofpoint-ORIG-GUID: g7Cfxez3u9PWL8jMZEuzFS3kX_f4jVTP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-22_02,2026-06-22_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 adultscore=0 suspectscore=0 malwarescore=0 spamscore=0 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606220147 btusb.c is growing large as vendor-specific code accumulates. Ideally, btusb.c contains only the default implementation while vendor-specific code lives in separate files for easier maintenance. The newly added btusb.h also reduces unnecessary data copies in hooks like btusb_mtk_setup(). Signed-off-by: Zijun Hu --- drivers/bluetooth/btusb.c | 119 +-------------------------------------- drivers/bluetooth/btusb.h | 139 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 140 insertions(+), 118 deletions(-) diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 21e125db1b1f..0d0bd7b559c6 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -23,6 +23,7 @@ #include #include +#include "btusb.h" #include "btintel.h" #include "btbcm.h" #include "btrtl.h" @@ -38,36 +39,6 @@ static bool reset = true; static struct usb_driver btusb_driver; -#define BTUSB_IGNORE BIT(0) -#define BTUSB_DIGIANSWER BIT(1) -#define BTUSB_CSR BIT(2) -#define BTUSB_SNIFFER BIT(3) -#define BTUSB_BCM92035 BIT(4) -#define BTUSB_BROKEN_ISOC BIT(5) -#define BTUSB_WRONG_SCO_MTU BIT(6) -#define BTUSB_ATH3012 BIT(7) -#define BTUSB_INTEL_COMBINED BIT(8) -#define BTUSB_INTEL_BOOT BIT(9) -#define BTUSB_BCM_PATCHRAM BIT(10) -#define BTUSB_MARVELL BIT(11) -#define BTUSB_SWAVE BIT(12) -#define BTUSB_AMP BIT(13) -#define BTUSB_QCA_ROME BIT(14) -#define BTUSB_BCM_APPLE BIT(15) -#define BTUSB_REALTEK BIT(16) -#define BTUSB_BCM2045 BIT(17) -#define BTUSB_IFNUM_2 BIT(18) -#define BTUSB_CW6622 BIT(19) -#define BTUSB_MEDIATEK BIT(20) -#define BTUSB_WIDEBAND_SPEECH BIT(21) -#define BTUSB_INVALID_LE_STATES BIT(22) -#define BTUSB_QCA_WCN6855 BIT(23) -#define BTUSB_INTEL_BROKEN_SHUTDOWN_LED BIT(24) -#define BTUSB_INTEL_BROKEN_INITIAL_NCMD BIT(25) -#define BTUSB_INTEL_NO_WBS_SUPPORT BIT(26) -#define BTUSB_ACTIONS_SEMI BIT(27) -#define BTUSB_BARROT BIT(28) - static const struct usb_device_id btusb_table[] = { /* Generic Bluetooth USB device */ { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, @@ -943,94 +914,6 @@ struct btqca_data { struct qca_dump_info qca_dump; }; -#define BTUSB_MAX_ISOC_FRAMES 10 - -#define BTUSB_INTR_RUNNING 0 -#define BTUSB_BULK_RUNNING 1 -#define BTUSB_ISOC_RUNNING 2 -#define BTUSB_SUSPENDING 3 -#define BTUSB_DID_ISO_RESUME 4 -#define BTUSB_BOOTLOADER 5 -#define BTUSB_DOWNLOADING 6 -#define BTUSB_FIRMWARE_LOADED 7 -#define BTUSB_FIRMWARE_FAILED 8 -#define BTUSB_BOOTING 9 -#define BTUSB_DIAG_RUNNING 10 -#define BTUSB_OOB_WAKE_ENABLED 11 -#define BTUSB_HW_RESET_ACTIVE 12 -#define BTUSB_TX_WAIT_VND_EVT 13 -#define BTUSB_WAKEUP_AUTOSUSPEND 14 -#define BTUSB_USE_ALT3_FOR_WBS 15 -#define BTUSB_ALT6_CONTINUOUS_TX 16 -#define BTUSB_HW_SSR_ACTIVE 17 - -struct btusb_data { - struct hci_dev *hdev; - struct usb_device *udev; - struct usb_interface *intf; - struct usb_interface *isoc; - struct usb_interface *diag; - unsigned isoc_ifnum; - - unsigned long flags; - - bool poll_sync; - int intr_interval; - struct work_struct work; - struct work_struct waker; - struct delayed_work rx_work; - - struct sk_buff_head acl_q; - - struct usb_anchor deferred; - struct usb_anchor tx_anchor; - int tx_in_flight; - spinlock_t txlock; - - struct usb_anchor intr_anchor; - struct usb_anchor bulk_anchor; - struct usb_anchor isoc_anchor; - struct usb_anchor diag_anchor; - struct usb_anchor ctrl_anchor; - spinlock_t rxlock; - - struct sk_buff *evt_skb; - struct sk_buff *acl_skb; - struct sk_buff *sco_skb; - - struct usb_endpoint_descriptor *intr_ep; - struct usb_endpoint_descriptor *bulk_tx_ep; - struct usb_endpoint_descriptor *bulk_rx_ep; - struct usb_endpoint_descriptor *isoc_tx_ep; - struct usb_endpoint_descriptor *isoc_rx_ep; - struct usb_endpoint_descriptor *diag_tx_ep; - struct usb_endpoint_descriptor *diag_rx_ep; - - struct gpio_desc *reset_gpio; - - __u8 cmdreq_type; - __u8 cmdreq; - - unsigned int sco_num; - unsigned int air_mode; - bool usb_alt6_packet_flow; - int isoc_altsetting; - int suspend_count; - const struct usb_device_id *match_id; - - int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb); - int (*recv_acl)(struct hci_dev *hdev, struct sk_buff *skb); - int (*recv_bulk)(struct btusb_data *data, void *buffer, int count); - - int (*setup_on_usb)(struct hci_dev *hdev); - - int (*suspend)(struct hci_dev *hdev); - int (*resume)(struct hci_dev *hdev); - int (*disconnect)(struct hci_dev *hdev); - - int oob_wake_irq; /* irq for out-of-band wake-on-bt */ -}; - static void btusb_reset(struct hci_dev *hdev) { struct btusb_data *data; diff --git a/drivers/bluetooth/btusb.h b/drivers/bluetooth/btusb.h new file mode 100644 index 000000000000..ad13c7d44836 --- /dev/null +++ b/drivers/bluetooth/btusb.h @@ -0,0 +1,139 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * + * Generic Bluetooth USB driver + * + * Copyright (C) 2005-2008 Marcel Holtmann + */ + +#ifndef __BTUSB_H +#define __BTUSB_H + +#include +#include +#include +#include +#include +#include + +/* driver_info flags */ +#define BTUSB_IGNORE BIT(0) +#define BTUSB_DIGIANSWER BIT(1) +#define BTUSB_CSR BIT(2) +#define BTUSB_SNIFFER BIT(3) +#define BTUSB_BCM92035 BIT(4) +#define BTUSB_BROKEN_ISOC BIT(5) +#define BTUSB_WRONG_SCO_MTU BIT(6) +#define BTUSB_ATH3012 BIT(7) +#define BTUSB_INTEL_COMBINED BIT(8) +#define BTUSB_INTEL_BOOT BIT(9) +#define BTUSB_BCM_PATCHRAM BIT(10) +#define BTUSB_MARVELL BIT(11) +#define BTUSB_SWAVE BIT(12) +#define BTUSB_AMP BIT(13) +#define BTUSB_QCA_ROME BIT(14) +#define BTUSB_BCM_APPLE BIT(15) +#define BTUSB_REALTEK BIT(16) +#define BTUSB_BCM2045 BIT(17) +#define BTUSB_IFNUM_2 BIT(18) +#define BTUSB_CW6622 BIT(19) +#define BTUSB_MEDIATEK BIT(20) +#define BTUSB_WIDEBAND_SPEECH BIT(21) +#define BTUSB_INVALID_LE_STATES BIT(22) +#define BTUSB_QCA_WCN6855 BIT(23) +#define BTUSB_INTEL_BROKEN_SHUTDOWN_LED BIT(24) +#define BTUSB_INTEL_BROKEN_INITIAL_NCMD BIT(25) +#define BTUSB_INTEL_NO_WBS_SUPPORT BIT(26) +#define BTUSB_ACTIONS_SEMI BIT(27) +#define BTUSB_BARROT BIT(28) + +#define BTUSB_MAX_ISOC_FRAMES 10 + +/* btusb_data flags */ +#define BTUSB_INTR_RUNNING 0 +#define BTUSB_BULK_RUNNING 1 +#define BTUSB_ISOC_RUNNING 2 +#define BTUSB_SUSPENDING 3 +#define BTUSB_DID_ISO_RESUME 4 +#define BTUSB_BOOTLOADER 5 +#define BTUSB_DOWNLOADING 6 +#define BTUSB_FIRMWARE_LOADED 7 +#define BTUSB_FIRMWARE_FAILED 8 +#define BTUSB_BOOTING 9 +#define BTUSB_DIAG_RUNNING 10 +#define BTUSB_OOB_WAKE_ENABLED 11 +#define BTUSB_HW_RESET_ACTIVE 12 +#define BTUSB_TX_WAIT_VND_EVT 13 +#define BTUSB_WAKEUP_AUTOSUSPEND 14 +#define BTUSB_USE_ALT3_FOR_WBS 15 +#define BTUSB_ALT6_CONTINUOUS_TX 16 +#define BTUSB_HW_SSR_ACTIVE 17 + +struct btusb_data { + struct hci_dev *hdev; + struct usb_device *udev; + struct usb_interface *intf; + struct usb_interface *isoc; + struct usb_interface *diag; + unsigned int isoc_ifnum; + + unsigned long flags; + + bool poll_sync; + int intr_interval; + struct work_struct work; + struct work_struct waker; + struct delayed_work rx_work; + + struct sk_buff_head acl_q; + + struct usb_anchor deferred; + struct usb_anchor tx_anchor; + int tx_in_flight; + spinlock_t txlock; + + struct usb_anchor intr_anchor; + struct usb_anchor bulk_anchor; + struct usb_anchor isoc_anchor; + struct usb_anchor diag_anchor; + struct usb_anchor ctrl_anchor; + spinlock_t rxlock; + + struct sk_buff *evt_skb; + struct sk_buff *acl_skb; + struct sk_buff *sco_skb; + + struct usb_endpoint_descriptor *intr_ep; + struct usb_endpoint_descriptor *bulk_tx_ep; + struct usb_endpoint_descriptor *bulk_rx_ep; + struct usb_endpoint_descriptor *isoc_tx_ep; + struct usb_endpoint_descriptor *isoc_rx_ep; + struct usb_endpoint_descriptor *diag_tx_ep; + struct usb_endpoint_descriptor *diag_rx_ep; + + struct gpio_desc *reset_gpio; + + __u8 cmdreq_type; + __u8 cmdreq; + + unsigned int sco_num; + unsigned int air_mode; + bool usb_alt6_packet_flow; + int isoc_altsetting; + int suspend_count; + const struct usb_device_id *match_id; + + int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb); + int (*recv_acl)(struct hci_dev *hdev, struct sk_buff *skb); + int (*recv_bulk)(struct btusb_data *data, void *buffer, int count); + + int (*setup_on_usb)(struct hci_dev *hdev); + + int (*suspend)(struct hci_dev *hdev); + int (*resume)(struct hci_dev *hdev); + int (*disconnect)(struct hci_dev *hdev); + + int oob_wake_irq; /* irq for out-of-band wake-on-bt */ +}; + +#endif /* __BTUSB_H */ -- 2.34.1