]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
PCI: mediatek: Fix operator precedence in PCIE_FTS_NUM_L0 macro
authorLi RongQing <lirongqing@baidu.com>
Fri, 15 May 2026 00:55:52 +0000 (20:55 -0400)
committerManivannan Sadhasivam <mani@kernel.org>
Tue, 9 Jun 2026 13:44:35 +0000 (19:14 +0530)
The original PCIE_FTS_NUM_L0(x) macro was buggy due to improper operator
precedence, where ((x) & 0xff << 8) was evaluated as ((x) & 0xff00).

Instead of just fixing the parentheses, use the standard FIELD_PREP()
macro. This makes the code more robust by automatically handling masks
and shifts, while also adding compile-time type and range checking to
ensure the value fits within PCIE_FTS_NUM_MASK.

Fixes: 637cfacae96f ("PCI: mediatek: Add MediaTek PCIe host controller support")
Signed-off-by: Li RongQing <lirongqing@baidu.com>
[mani: added the bitfield header include spotted by Sashiko]
Signed-off-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Krzysztof WilczyƄski <kwilczynski@kernel.org>
Link: https://patch.msgid.link/20260515005552.2343-1-lirongqing@baidu.com
drivers/pci/controller/pcie-mediatek.c

index 75722524fe744d38c403eaea8ebdeaa913320dc7..dcfc7408340f01fec506b4269f0f995d682bdb65 100644 (file)
@@ -7,6 +7,7 @@
  *        Honghui Zhang <honghui.zhang@mediatek.com>
  */
 
+#include <linux/bitfield.h>
 #include <linux/clk.h>
 #include <linux/delay.h>
 #include <linux/iopoll.h>
@@ -61,7 +62,7 @@
 /* MediaTek specific configuration registers */
 #define PCIE_FTS_NUM           0x70c
 #define PCIE_FTS_NUM_MASK      GENMASK(15, 8)
-#define PCIE_FTS_NUM_L0(x)     ((x) & 0xff << 8)
+#define PCIE_FTS_NUM_L0(x)     FIELD_PREP(PCIE_FTS_NUM_MASK, x)
 
 #define PCIE_FC_CREDIT         0x73c
 #define PCIE_FC_CREDIT_MASK    (GENMASK(31, 31) | GENMASK(28, 16))