From nobody Thu Apr 2 14:08:20 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 78B9332824D for ; Tue, 10 Feb 2026 12:01:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770724903; cv=none; b=ePbTAajKa35q86VPkLtZ3lvhm15nx4D0f+vHPAka7MG4cAJ37hLhdejtpbnME6y2/IlMsDVwxIka4rFLf0NMoIcN295/TAsm1txV6MiZwbCyTlVfRqsv88JKU45oqdYVlsM/mlsHZvjAjEy4wjPMCE0w+5N6poggC5vkFJownbY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770724903; c=relaxed/simple; bh=IqjpYTWxrm4uyR3YSpzOagusXq5h1tnHrXNAMRPwlJo=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=qPUPuO7CIECYytsD2+sZYV9cAg0ful5ggkyUOPU6CjwSQW6zm392uSZXuHOkJl5hjkimqEjgWlnnA2QTgTAN09IShoX8NnRi50Lht13CQtgY7FZDjLnAs1Y4QrTXwzfiRpaoTPTx2ssw7KMeVh394m1XhCh8CPtfaK0YIA7YHWo= 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=DEtY8KqZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UxHCSo8u; arc=none smtp.client-ip=205.220.168.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="DEtY8KqZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UxHCSo8u" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61A8ec5P2340449 for ; Tue, 10 Feb 2026 12:01:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=l0lWt3RD/v0gUJzCHHWP/b5c44WkG12+TyK 4wxyVsFM=; b=DEtY8KqZdFtfdvZ81g5M0IKjzh3lz1q9wK/nnp/TvK4mAMVFFIP 3wKfy1ecAi9Py4df8iAK5y6h3LR4uTu59on86IwC06bnl2WTuXfJFHI511T238ph kIbuR8ccsmmh7546aq1EXKaGWglxuBjBhBGfWDxjQKkvnYldv6z02FVHMfHxwF52 6guA706X9MpqloamT8/TS6SCzJZk3lOWbit/caX34HQ8O1IsHK7Ob7P94POL2fP7 MvIF27++WH0dBIu4oWymfPhvYy5jrOeaRonxnYxoD/bz3HqdfUJ030RWPtCzXG9r 6XEAD5q2Dl6d1w6PPiziOGiV4Agk2ONwbvQ== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c7ga643ac-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 10 Feb 2026 12:01:40 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-352e195f662so841254a91.2 for ; Tue, 10 Feb 2026 04:01:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770724900; x=1771329700; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=l0lWt3RD/v0gUJzCHHWP/b5c44WkG12+TyK4wxyVsFM=; b=UxHCSo8ucKywi6Uf/iKCnExjUZYhSST+Bi890WolSW1N9ffkr5QHCCcjSYOZtKYNig BeE8mvXwhycDA8VhsDwz3n/90BRMbWGocrJRAJUrpTk2iv/xcjsJ9YSKObnsOGVB+Jko sKVfptNZk4nh3faa7TUo2xtHecu5kfGm8XTh0442nC7mXovbJVbmzBp7Sx6dgs74tRxQ cdxAn92Dvcm3vLDMlkr3HOiNjO6HYsR1zQzPB0zFyneNTw20YUQreaWVECE1QpxUBh6H yK/31qzuVSF5ygTzyu/UhDQNLEvySb/Omt4XzGZ3lyuw6amC+DZtJhfs82Sy1KQmUtYB NEkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770724900; x=1771329700; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=l0lWt3RD/v0gUJzCHHWP/b5c44WkG12+TyK4wxyVsFM=; b=U/4GnabWiQfG7gpagVSxu1x8V1DDxR1GQ/VX5BkvAD5uSXQ71oPp/zVz0yT9tNk5aO dkgbNNRcB4R6Lhi9ZftytyrK4rNWRLTnrlm1W49krkSYBnjOWjwo6pA+5j5Mmg7HJGa4 p9hG3o+G+4/rGRSLwfvqZ6eRZjSyFq6+tq+Dp0gFM1i8EyakJGxDUkZ4QxsYNs5V5aSC Jnx6Jq+n01+F5aVLbzgePapJ9YfuMGMWpa4FKPbJ+g+uiPusVcxKhnU1OaIobIgW/mh3 ydIpFMohLDkZ4D1PJEfTSpOLFHEdBH1advfeNRJSXGcnxe1h13R8V8F5hWCFGgOeDgJN 740g== X-Forwarded-Encrypted: i=1; AJvYcCUfto8Cp+PicIEAm0vJg4m6KJzdI/SCBEjboOISR+At3Vwq/VB2ZyDlZ0O3LlcJBkQgajUsLAxnRPf8c4E=@vger.kernel.org X-Gm-Message-State: AOJu0YzW+aYf2pnFaBoEOFkuTw0FA89oJ/ThKxvQZ70lPsG+qJ7ggvvz YJGRKYhIA+O6I72NDbgEVpWxsxZCQ8I0fQTlYRDGJGqfPtBdZLUybmw/E7NTkBIgSyCZ25RChQk 0tsoZaybo6I0FtA9ciSrZnjL04UWCWPkoof5UsOyrI3+0WtGYDo2L0e3rIOrxirVyy2w= X-Gm-Gg: AZuq6aJ6LPVtYPARiez0t8gXUdCNQR94qcUapsPvQIg7bAUmUxn/KVzOQGE8lrvHB3w XHjYlmiiQ6/QDczCLg3bXEg3xVIv0a7vs6RLfy5IJ0BSqxHLbYvQIOIYcQLAKznNZme8AEnTnRZ iCz5h8WCzSLvmvoxHZBDlGDSYnkiGCQYpBRbbIjh1+3EBOElBrRnbTGM6NmlQTZfyFXQBRijkJL s8Ow6QgDaM/BRFRERdEGFdrw8CZzKCztKLuvm+HvnIoIvHB+BDOTzEbasZ0hqMVOKFnhh65iX4V NCsczQNHGE1qqVlCnQHXfeUrcQVPKvL8IENmuWRwnkD01h+mr/pPXabL/f1G83osqPfetWEh5sW WvqZHicptb6y/DxVtdoSc0338aQhEnyeSGWq3xjoWrMSUhnggNuY= X-Received: by 2002:a17:90b:28cc:b0:356:282e:7eb5 with SMTP id 98e67ed59e1d1-356282e7f91mr6966833a91.24.1770724899931; Tue, 10 Feb 2026 04:01:39 -0800 (PST) X-Received: by 2002:a17:90b:28cc:b0:356:282e:7eb5 with SMTP id 98e67ed59e1d1-356282e7f91mr6966789a91.24.1770724899316; Tue, 10 Feb 2026 04:01:39 -0800 (PST) Received: from hu-vivesahu-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35662e8c819sm2796236a91.12.2026.02.10.04.01.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Feb 2026 04:01:38 -0800 (PST) From: Vivek Sahu To: Bartosz Golaszewski , Marcel Holtmann , Luiz Augusto von Dentz Cc: quic_mohamull@quicinc.com, quic_hbandi@quicinc.com, linux-arm-msm@vger.kernel.org, linux-bluetooth@vger.kernel.org, linux-kernel@vger.kernel.org, Vivek Sahu Subject: [PATCH v1] Bluetooth: qca: Refactor code on the basis of chipset names Date: Tue, 10 Feb 2026 17:31:01 +0530 Message-Id: <20260210120101.1046091-1-vivek.sahu@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: NJjtQ8Bj9JjQussN3DupeZ3dnjlI0Xwr X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjEwMDEwMSBTYWx0ZWRfX8tvD7zem9dml E972wXwXz4WyE48i6LaqCMoXRyqESkeg2q54KJLLf3bby7lt85HHAONc7e9PjS6Zp0p6eg3P48R jXQqGGHI8Wr7PAUdKMq4wFS+xxFXr8ewOh08IwvrRe+abXOe+4su0Al5Do7pLiB/AdKvBgC1pkT 2uwB/ax05AsN0PbF2GNtr3OWViGvSyu1IaLSieWEwJGP1a0uKqR0yKgM6Jtzm2up5fUFgbmnWC1 sGPIo2kAr0LmBjdIii2c8rKr4KFpTnTp1qBbwM9wJJw2TADjV5cvQtsXQ/68D2bD09FiBXQNmsM SNHC7JZkaJQMKD94Mv/A2vHfcNqpXmE26slIKANSY9A76YJParVpOtM1ckWGVp7ijjM1FxxCCC0 q9SfQZsc1+4j0Y+ZGVyLKoQ5vHcYeXa6J7sd95MTRTIOyZIW/gLL7ar7G//Mf7BiFDCy02H7fJk uVRedIU+qG4N1fW9MAA== X-Authority-Analysis: v=2.4 cv=WK1yn3sR c=1 sm=1 tr=0 ts=698b1e24 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=_Hwy5uYH7oNXmxhsLToA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: NJjtQ8Bj9JjQussN3DupeZ3dnjlI0Xwr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-10_01,2026-02-10_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 suspectscore=0 adultscore=0 malwarescore=0 clxscore=1015 impostorscore=0 lowpriorityscore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602100101 Content-Type: text/plain; charset="utf-8" Whenever new chipset support is added to the driver code, we ended up adding chipset name to the last of the switch case arising code readability issue because of improper sorting of the chipset names in various places of the code. Refactor code such a way that new chipset can be added easily in the code without compromising code readability. Signed-off-by: Vivek Sahu Reviewed-by: Dmitry Baryshkov --- drivers/bluetooth/btqca.c | 37 +++++++++++++++++++------------------ drivers/bluetooth/hci_qca.c | 30 +++++++++++++++--------------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/drivers/bluetooth/btqca.c b/drivers/bluetooth/btqca.c index 74f820e89655..9f7e13fcb20e 100644 --- a/drivers/bluetooth/btqca.c +++ b/drivers/bluetooth/btqca.c @@ -799,6 +799,14 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, snprintf(config.fwname, sizeof(config.fwname), "qca/%s", rampatch_name); } else { switch (soc_type) { + case QCA_QCA2066: + snprintf(config.fwname, sizeof(config.fwname), + "qca/hpbtfw%02x.tlv", rom_ver); + break; + case QCA_QCA6390: + snprintf(config.fwname, sizeof(config.fwname), + "qca/htbtfw%02x.tlv", rom_ver); + break; case QCA_WCN3950: snprintf(config.fwname, sizeof(config.fwname), "qca/cmbtfw%02x.tlv", rom_ver); @@ -813,14 +821,6 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, snprintf(config.fwname, sizeof(config.fwname), "qca/apbtfw%02x.tlv", rom_ver); break; - case QCA_QCA2066: - snprintf(config.fwname, sizeof(config.fwname), - "qca/hpbtfw%02x.tlv", rom_ver); - break; - case QCA_QCA6390: - snprintf(config.fwname, sizeof(config.fwname), - "qca/htbtfw%02x.tlv", rom_ver); - break; case QCA_WCN6750: /* Choose mbn file by default.If mbn file is not found * then choose tlv file @@ -890,6 +890,16 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, } } else { switch (soc_type) { + case QCA_QCA2066: + qca_get_nvm_name_by_board(config.fwname, + sizeof(config.fwname), + "hpnv", soc_type, ver, + rom_ver, boardid); + break; + case QCA_QCA6390: + snprintf(config.fwname, sizeof(config.fwname), + "qca/htnv%02x.bin", rom_ver); + break; case QCA_WCN3950: if (le32_to_cpu(ver.soc_id) =3D=3D QCA_WCN3950_SOC_ID_T) variant =3D "t"; @@ -912,15 +922,6 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudr= ate, snprintf(config.fwname, sizeof(config.fwname), "qca/apnv%02x.bin", rom_ver); break; - case QCA_QCA2066: - qca_get_nvm_name_by_board(config.fwname, - sizeof(config.fwname), "hpnv", soc_type, ver, - rom_ver, boardid); - break; - case QCA_QCA6390: - snprintf(config.fwname, sizeof(config.fwname), - "qca/htnv%02x.bin", rom_ver); - break; case QCA_WCN6750: snprintf(config.fwname, sizeof(config.fwname), "qca/msnv%02x.bin", rom_ver); @@ -954,9 +955,9 @@ int qca_uart_setup(struct hci_dev *hdev, uint8_t baudra= te, } =20 switch (soc_type) { - case QCA_WCN3991: case QCA_QCA2066: case QCA_QCA6390: + case QCA_WCN3991: case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index c511546f793e..d8e5957a2edf 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -1850,6 +1850,7 @@ static int qca_power_on(struct hci_dev *hdev) return 0; =20 switch (soc_type) { + case QCA_QCA6390: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -1858,7 +1859,6 @@ static int qca_power_on(struct hci_dev *hdev) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: - case QCA_QCA6390: ret =3D qca_regulator_init(hu); break; =20 @@ -2092,6 +2092,18 @@ static const struct hci_uart_proto qca_proto =3D { .dequeue =3D qca_dequeue, }; =20 +static const struct qca_device_data qca_soc_data_qca2066 __maybe_unused = =3D { + .soc_type =3D QCA_QCA2066, + .num_vregs =3D 0, + .capabilities =3D QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES | + QCA_CAP_HFP_HW_OFFLOAD, +}; + +static const struct qca_device_data qca_soc_data_qca6390 __maybe_unused = =3D { + .soc_type =3D QCA_QCA6390, + .num_vregs =3D 0, +}; + static const struct qca_device_data qca_soc_data_wcn3950 __maybe_unused = =3D { .soc_type =3D QCA_WCN3950, .vregs =3D (struct qca_vreg []) { @@ -2148,18 +2160,6 @@ static const struct qca_device_data qca_soc_data_wcn= 3998 __maybe_unused =3D { .num_vregs =3D 4, }; =20 -static const struct qca_device_data qca_soc_data_qca2066 __maybe_unused = =3D { - .soc_type =3D QCA_QCA2066, - .num_vregs =3D 0, - .capabilities =3D QCA_CAP_WIDEBAND_SPEECH | QCA_CAP_VALID_LE_STATES | - QCA_CAP_HFP_HW_OFFLOAD, -}; - -static const struct qca_device_data qca_soc_data_qca6390 __maybe_unused = =3D { - .soc_type =3D QCA_QCA6390, - .num_vregs =3D 0, -}; - static const struct qca_device_data qca_soc_data_wcn6750 __maybe_unused = =3D { .soc_type =3D QCA_WCN6750, .vregs =3D (struct qca_vreg []) { @@ -2398,6 +2398,7 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) qcadev->btsoc_type =3D QCA_ROME; =20 switch (qcadev->btsoc_type) { + case QCA_QCA6390: case QCA_WCN3950: case QCA_WCN3988: case QCA_WCN3990: @@ -2406,7 +2407,6 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: - case QCA_QCA6390: qcadev->bt_power =3D devm_kzalloc(&serdev->dev, sizeof(struct qca_power), GFP_KERNEL); @@ -2418,9 +2418,9 @@ static int qca_serdev_probe(struct serdev_device *ser= dev) } =20 switch (qcadev->btsoc_type) { + case QCA_WCN6750: case QCA_WCN6855: case QCA_WCN7850: - case QCA_WCN6750: if (!device_property_present(&serdev->dev, "enable-gpios")) { /* * Backward compatibility with old DT sources. If the --=20 2.34.1