]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: pcs: xpcs: mask readl() return value to 16 bits
authorJack Ping CHNG <jchng@maxlinear.com>
Wed, 16 Jul 2025 03:03:49 +0000 (11:03 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Aug 2025 16:41:07 +0000 (18:41 +0200)
[ Upstream commit 2b0ba7b5b010455c4e43ab557860f8b1089e7424 ]

readl() returns 32-bit value but Clause 22/45 registers are 16-bit wide.
Masking with 0xFFFF avoids using garbage upper bits.

Signed-off-by: Jack Ping CHNG <jchng@maxlinear.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Link: https://patch.msgid.link/20250716030349.3796806-1-jchng@maxlinear.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/pcs/pcs-xpcs-plat.c

index 629315f1e57cb32e6df20b7378be8a59a932709c..9dcaf7a66113edab6c53ad3aa78094ebbaf2895d 100644 (file)
@@ -66,7 +66,7 @@ static int xpcs_mmio_read_reg_indirect(struct dw_xpcs_plat *pxpcs,
        switch (pxpcs->reg_width) {
        case 4:
                writel(page, pxpcs->reg_base + (DW_VR_CSR_VIEWPORT << 2));
-               ret = readl(pxpcs->reg_base + (ofs << 2));
+               ret = readl(pxpcs->reg_base + (ofs << 2)) & 0xffff;
                break;
        default:
                writew(page, pxpcs->reg_base + (DW_VR_CSR_VIEWPORT << 1));
@@ -124,7 +124,7 @@ static int xpcs_mmio_read_reg_direct(struct dw_xpcs_plat *pxpcs,
 
        switch (pxpcs->reg_width) {
        case 4:
-               ret = readl(pxpcs->reg_base + (csr << 2));
+               ret = readl(pxpcs->reg_base + (csr << 2)) & 0xffff;
                break;
        default:
                ret = readw(pxpcs->reg_base + (csr << 1));