From nobody Thu Apr 2 12:20:49 2026 Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B570433C18B for ; Sat, 28 Mar 2026 16:34:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.67 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774715689; cv=none; b=aGTOzbi+pIo0gqzg0QIfRrLHuHRliNZAhqtf+CtMDFUHL/YetYo3ojO/FJEjTLMwY9jrA45dPzMTJNIv1kKiU65vYcINSZG0sk/uiaFdLJIXwcgFSXDZrhoUpzZ4lG4aTadm5ry07EnPKvNG0KzK1eyrnZybrXE9Vl0WEFV/ZMg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774715689; c=relaxed/simple; bh=H51MSAyGbbc81Asz9U/00ugrqL9E2Zvwgh93ExrY+QA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=DqAW7WW2VdB9mDM/P8FHOgbnGewwEr+ndyo4JgPIeHZoF1gIo6FAbdidI/KF3rFGh4W2NTGxxHayHiQYwyHDNrn3Ic++Em8C9BjMqKvHAhilrxk6s2kTP5OuRAldji7DlidfuhpDwmlxrTQVRgPvpGYmJZMAOKvMX4D2CCD5qOY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IWAvMcFb; arc=none smtp.client-ip=209.85.221.67 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IWAvMcFb" Received: by mail-wr1-f67.google.com with SMTP id ffacd0b85a97d-439cd6b0aedso2029694f8f.1 for ; Sat, 28 Mar 2026 09:34:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774715686; x=1775320486; 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=i+bpalMsRBepXYB/c8U7VCyKszPbZw7ZBfSrt+Ycym0=; b=IWAvMcFbRJIYYHG35vVqPsJN8XdjXQb+hkGEBRGBVHilNWhzuy/gAUvQPVtg6hzegp UU0oYxNKama9kjtVwVLBXo2Ws8vKHQfWZRAlUuAVXActuyjSD+zeVhM8iZzzQk1Q8Jqp VnXsotUEdVTXLMsmucWGOLKOZOexgAUg1o/+75GGZbjLRatJrXXF34STOym71XR9n3eC 7AJ8nCUEE5gjfnAOfh+Xo7iP3//0f8Zsi5IjsUVU/Z/7yvJ5H3MdqE+7qt14jbTgJl11 PcObHTA1NP1L57DC52xmfUOOOHwxyeCyh9cnM44E47PXqRy9BvonRHbgMJoqZsilS8RO uzrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774715686; x=1775320486; 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=i+bpalMsRBepXYB/c8U7VCyKszPbZw7ZBfSrt+Ycym0=; b=X46u9MMPY2+6/I1U2kC+KpWbkfa2pWE4tsgB/IWbE8o5AiZtpBjA6G0SiS7lLkfp3a 7fTGWKjFgH8MXddB0MLayPhAq4jo6Vw0oAuO70yyRIKke7pecqyRrJmwehhZ7H7wTsis cXtEn8ZmgMLlCBOMWWvJUZlXBqPQsNim1sD5CDTVs/9Aj6tLLjEGow5yZVuXy44XDX3U 54+LgVVsBkDedo2kQvi53zYLZVnKNosxx4w2DTN7vUmRD+o//pMzZQimMr22LlJwbT58 MImZ1DCtLbb+y3H3/h+Y7VpzDqXME9Hq3An9pmwkG/A0ZspG3Zw/BfRi9zs947J+DqpI isJQ== X-Forwarded-Encrypted: i=1; AJvYcCViG+Q2XvK1zYD78czXYVCr0Z4XiQloSrQzgcIjBqBt6N0gSwR4TONia38l/jyO6B7ZgTaE/BnBdVBFZg4=@vger.kernel.org X-Gm-Message-State: AOJu0YyGlY3V7nfl+xcU79zY+g8O/bon4KyTVuzOqKFvQJiXd5RZkb+m O8W/bJn1iQs+sZgLZcjbPRfjyc5BGdYgrRgmKAlAE65NIyQhHEweoNBW X-Gm-Gg: ATEYQzwDodO3o763CfAvOZglxOiKzJuMgdvhwuQCVqrjn9vly8nXjuQUn7zzIDdmbcg FI/4m33+B3fAlN402TMYcyVEEUFXe06Wzd19yOSXQdBJDnw5CgG++/5NFG58rK1f3Mdlsd6OyIl 2fV30oofZ9WEi46GUQ4EJ8hpkwVIo+K1Zp33IzhF7iYCo0G4rgRlKlY+mvHohFhOoebVwWS+z5/ SbI99CA/MEQ6v6l5Ea4znWa0OlBYDLHoZyy/oJ5CD6rdspKbiWTaueOqYyjV/iK9RVBxqiBdi05 cSH2yYL6ubkJuDBLfo0RIwGZKaSS3cHMC13D1QmX4RHC5e7j58hxdlRS+gtgNxv8GCg6hu+QzXC uKCeTBIQKeLeBzC0gzmCs8Ltiqz5bxz8LhdJxtP3uhC1mv6NlV8q0er3Y/bKJNyceM991FA6UG0 FxujDr1CyhQ2qZ1H4dk/r7 X-Received: by 2002:a05:6000:26c2:b0:439:c279:32df with SMTP id ffacd0b85a97d-43b9ea4aa73mr10748910f8f.35.1774715685824; Sat, 28 Mar 2026 09:34:45 -0700 (PDT) Received: from bera-arch ([2a02:ff0:c13:2eeb:2e7c:3a4f:2bc2:f78a]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43cf257cbc3sm5778321f8f.35.2026.03.28.09.34.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Mar 2026 09:34:45 -0700 (PDT) From: =?UTF-8?q?Bera=20Y=C3=BCzl=C3=BC?= To: gregkh@linuxfoundation.org Cc: filippo.muschera@gmail.com, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, =?UTF-8?q?Bera=20Y=C3=BCzl=C3=BC?= Subject: [PATCH] staging: rtl8723bs: refactor switch-case Date: Sat, 28 Mar 2026 19:33:58 +0300 Message-ID: <20260328163357.163332-2-b9788213@gmail.com> X-Mailer: git-send-email 2.53.0 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: quoted-printable Refactored huge switch-case to lookup table. Used if-else for dynamic values. Signed-off-by: Bera Y=C3=BCzl=C3=BC --- .../staging/rtl8723bs/hal/HalBtc8723b1Ant.c | 269 +++++------------- 1 file changed, 69 insertions(+), 200 deletions(-) diff --git a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c b/drivers/stag= ing/rtl8723bs/hal/HalBtc8723b1Ant.c index b3e34f97cfc6..c02df8e3c398 100644 --- a/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c +++ b/drivers/staging/rtl8723bs/hal/HalBtc8723b1Ant.c @@ -989,6 +989,51 @@ static void halbtc8723b1ant_SetFwPstdma( pBtCoexist->fBtcFillH2c(pBtCoexist, 0x60, 5, H2C_Parameter); } =20 +static const u32 FwPstdma_table[41][5] =3D { + {0, 0, 0, 0, 0}, // 0 + {0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0}, + {0x51, 0x1d, 0x1d, 0x0, 0x10}, + {0x93, 0x15, 0x3, 0x14, 0x0}, + {0x61, 0x15, 0x3, 0x11, 0x10}, // 5 + {0x61, 0x20, 0x3, 0x11, 0x11}, + {0x13, 0xc, 0x5, 0x0, 0x0}, + {0x93, 0x25, 0x3, 0x10, 0x0}, + {0, 0, 0, 0, 0}, + {0x13, 0xa, 0xa, 0x0, 0x40}, // 10 + {0, 0, 0, 0, 0}, + {0x51, 0x0a, 0x0a, 0x0, 0x50}, + {0x51, 0x12, 0x12, 0x0, 0x10}, + {0, 0, 0, 0, 0}, + {0x13, 0xa, 0x3, 0x8, 0x0}, // 15 + {0x93, 0x15, 0x3, 0x10, 0x0}, + {0, 0, 0, 0, 0}, + {0x93, 0x25, 0x3, 0x10, 0x0}, + {0, 0, 0, 0, 0}, + {0x61, 0x3f, 0x03, 0x11, 0x10}, // 20 + {0x61, 0x25, 0x03, 0x11, 0x11}, + {0x61, 0x25, 0x03, 0x11, 0x10}, + {0xe3, 0x25, 0x3, 0x31, 0x18}, + {0xe3, 0x15, 0x3, 0x31, 0x18}, + {0xe3, 0xa, 0x3, 0x31, 0x18}, // 25 + {0xe3, 0xa, 0x3, 0x31, 0x18}, + {0xe3, 0x25, 0x3, 0x31, 0x98}, + {0x69, 0x25, 0x3, 0x31, 0x0}, + {0xab, 0x1a, 0x1a, 0x1, 0x10}, + {0x51, 0x30, 0x3, 0x10, 0x10}, // 30 + {0xd3, 0x1a, 0x1a, 0x0, 0x58}, + {0x61, 0x35, 0x3, 0x11, 0x11}, + {0xa3, 0x25, 0x3, 0x30, 0x90}, + {0x53, 0x1a, 0x1a, 0x0, 0x10}, + {0x63, 0x1a, 0x1a, 0x0, 0x10}, // 35 + {0xd3, 0x12, 0x3, 0x14, 0x50}, + {0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0}, + {0, 0, 0, 0, 0}, + /* SoftAP only with no sta associated, BT disable , TDMA mode for power = saving */ + /* here softap mode screen off will cost 70-80mA for phone */ + {0x23, 0x18, 0x00, 0x10, 0x24}, // 40 +}; =20 static void halbtc8723b1ant_PsTdma( struct btc_coexist *pBtCoexist, bool bForceExec, bool bTurnOn, u8 type @@ -1032,207 +1077,31 @@ static void halbtc8723b1ant_PsTdma( if (pBtLinkInfo->bSlaveRole) psTdmaByte4Val =3D psTdmaByte4Val | 0x1; /* 0x778 =3D 0x1 at wifi slot= (no blocking BT Low-Pri pkts) */ =20 + if (type =3D=3D 1) + halbtc8723b1ant_SetFwPstdma(pBtCoexist, psTdmaByte0Val, + 0x3a + nWiFiDurationAdjust, 0x03, + psTdmaByte3Val, psTdmaByte4Val); + else if (type =3D=3D 2) + halbtc8723b1ant_SetFwPstdma(pBtCoexist, psTdmaByte0Val, + 0x2d + nWiFiDurationAdjust, 0x03, + psTdmaByte3Val, psTdmaByte4Val); + else if (type =3D=3D 9 || type =3D=3D 11) + halbtc8723b1ant_SetFwPstdma(pBtCoexist, psTdmaByte0Val, + 0x21, 0x3, + psTdmaByte3Val, psTdmaByte4Val); + else if (type =3D=3D 14) + halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x51, + 0x21, 0x3, + 0x10, psTdmaByte4Val); + else if (type =3D=3D 0 || type =3D=3D 17 || type =3D=3D 19 || type =3D= =3D 37 || type =3D=3D 38 || type =3D=3D 39) + halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x51, + 0x1a, 0x1a, + 0x0, psTdmaByte4Val); + else if (type < 41) + halbtc8723b1ant_SetFwPstdma(pBtCoexist, FwPstdma_table[type][0], + FwPstdma_table[type][1], FwPstdma_table[type][2], + FwPstdma_table[type][3], FwPstdma_table[type][4]); =20 - switch (type) { - default: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x51, 0x1a, 0x1a, 0x0, psTdmaByte4Val - ); - break; - case 1: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, - psTdmaByte0Val, - 0x3a + nWiFiDurationAdjust, - 0x03, - psTdmaByte3Val, - psTdmaByte4Val - ); - break; - case 2: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, - psTdmaByte0Val, - 0x2d + nWiFiDurationAdjust, - 0x03, - psTdmaByte3Val, - psTdmaByte4Val - ); - break; - case 3: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x51, 0x1d, 0x1d, 0x0, 0x10 - ); - break; - case 4: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x93, 0x15, 0x3, 0x14, 0x0 - ); - break; - case 5: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x61, 0x15, 0x3, 0x11, 0x10 - ); - break; - case 6: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x61, 0x20, 0x3, 0x11, 0x11 - ); - break; - case 7: - halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x13, 0xc, 0x5, 0x0, 0x0); - break; - case 8: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x93, 0x25, 0x3, 0x10, 0x0 - ); - break; - case 9: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, - psTdmaByte0Val, - 0x21, - 0x3, - psTdmaByte3Val, - psTdmaByte4Val - ); - break; - case 10: - halbtc8723b1ant_SetFwPstdma(pBtCoexist, 0x13, 0xa, 0xa, 0x0, 0x40); - break; - case 11: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, - psTdmaByte0Val, - 0x21, - 0x03, - psTdmaByte3Val, - psTdmaByte4Val - ); - break; - case 12: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x51, 0x0a, 0x0a, 0x0, 0x50 - ); - break; - case 13: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x51, 0x12, 0x12, 0x0, 0x10 - ); - break; - case 14: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x51, 0x21, 0x3, 0x10, psTdmaByte4Val - ); - break; - case 15: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x13, 0xa, 0x3, 0x8, 0x0 - ); - break; - case 16: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x93, 0x15, 0x3, 0x10, 0x0 - ); - break; - case 18: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x93, 0x25, 0x3, 0x10, 0x0 - ); - break; - case 20: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x61, 0x3f, 0x03, 0x11, 0x10 - - ); - break; - case 21: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x61, 0x25, 0x03, 0x11, 0x11 - ); - break; - case 22: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x61, 0x25, 0x03, 0x11, 0x10 - ); - break; - case 23: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xe3, 0x25, 0x3, 0x31, 0x18 - ); - break; - case 24: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xe3, 0x15, 0x3, 0x31, 0x18 - ); - break; - case 25: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xe3, 0xa, 0x3, 0x31, 0x18 - ); - break; - case 26: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xe3, 0xa, 0x3, 0x31, 0x18 - ); - break; - case 27: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xe3, 0x25, 0x3, 0x31, 0x98 - ); - break; - case 28: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x69, 0x25, 0x3, 0x31, 0x0 - ); - break; - case 29: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xab, 0x1a, 0x1a, 0x1, 0x10 - ); - break; - case 30: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x51, 0x30, 0x3, 0x10, 0x10 - ); - break; - case 31: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xd3, 0x1a, 0x1a, 0x0, 0x58 - ); - break; - case 32: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x61, 0x35, 0x3, 0x11, 0x11 - ); - break; - case 33: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xa3, 0x25, 0x3, 0x30, 0x90 - ); - break; - case 34: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x53, 0x1a, 0x1a, 0x0, 0x10 - ); - break; - case 35: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x63, 0x1a, 0x1a, 0x0, 0x10 - ); - break; - case 36: - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0xd3, 0x12, 0x3, 0x14, 0x50 - ); - break; - case 40: /* SoftAP only with no sta associated, BT disable , TDMA mode = for power saving */ - /* here softap mode screen off will cost 70-80mA for phone */ - halbtc8723b1ant_SetFwPstdma( - pBtCoexist, 0x23, 0x18, 0x00, 0x10, 0x24 - ); - break; - } } else { =20 /* disable PS tdma */ --=20 2.53.0