Re: [PATCH net] net: phy: qcom: at803x: Fix IPQ5018 short-cable DAC values
From: Andrew Lunn
Date: Sun Sep 27 2026 - 12:00:56 EST
On Sun, Sep 27, 2026 at 05:51:36PM +0200, Yongzhao Chen wrote:
> When "qcom,dac-preset-short-cable" is set, ipq5018_config_init()
> programs the MDAC (MMD1 0x8100) and EDAC (debug 0x4380) fields. Both
> fields occupy bits 15:8 (IPQ5018_PHY_DAC_MASK), but the value 0x10 is
> passed unshifted as the set argument of phy_modify_mmd() and
> at803x_debug_reg_mask(). Neither helper shifts or masks that argument,
> so both fields are cleared to 0x00 instead of being set to 0x10, and
> bit 4 of the low byte, which is outside the field, is set.
>
> Use FIELD_PREP() to place the value in the field. This matches the
> vendor SDK, which clears bits 15:8 and ORs in the value shifted left
> by 8.
>
> On a Redmi AX5400 board, where the IPQ5018 internal PHY connects to a
> QCA8337 switch PHY without a cable, MDAC and EDAC read 0x6868 and
> 0x7800 before the write. With this change they read back 0x1068 and
> 0x1000, with the low byte preserved. Without it, the same writes would
> leave 0x0078 and 0x0010.
>
> No in-tree DTS sets this property yet, but it is documented in
> qca,ar803x.yaml and used by several IPQ5018 boards in OpenWrt.
>
> Fixes: d46502279a11 ("net: phy: qcom: at803x: Add Qualcomm IPQ5018 Internal PHY support")
> Signed-off-by: Yongzhao Chen <yongzhao.derek@xxxxxxxxx>
Reviewed-by: Andrew Lunn <andrew@xxxxxxx>
Andrew