net: phy: dp83869: fix default value for tx-/rx-internal-delay
commit82e2c39f9eupstream. dp83869 internally uses a look-up table for mapping supported delays in nanoseconds to register values. When specific delays are defined in device-tree, phy_get_internal_delay does the lookup automatically returning an index. The default case wrongly assigns the nanoseconds value from the lookup table, resulting in numeric value 2000 applied to delay configuration register, rather than the expected index values 0-7 (7 for 2000). Ultimately this issue broke RX for 1Gbps links. Fix default delay configuration by assigning the intended index value directly. Cc: stable@vger.kernel.org Fixes:736b25afe2("net: dp83869: Add RGMII internal delay configuration") Co-developed-by: Yazan Shhady <yazan.shhady@solid-run.com> Signed-off-by: Yazan Shhady <yazan.shhady@solid-run.com> Signed-off-by: Josua Mayer <josua@solid-run.com> Reviewed-by: Simon Horman <simon.horman@corigine.com> Link: https://lore.kernel.org/r/20230323102536.31988-1-josua@solid-run.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b3d7a4478c
commit
fbf3fe7f7b
@@ -553,15 +553,13 @@ static int dp83869_of_init(struct phy_device *phydev)
|
||||
&dp83869_internal_delay[0],
|
||||
delay_size, true);
|
||||
if (dp83869->rx_int_delay < 0)
|
||||
dp83869->rx_int_delay =
|
||||
dp83869_internal_delay[DP83869_CLK_DELAY_DEF];
|
||||
dp83869->rx_int_delay = DP83869_CLK_DELAY_DEF;
|
||||
|
||||
dp83869->tx_int_delay = phy_get_internal_delay(phydev, dev,
|
||||
&dp83869_internal_delay[0],
|
||||
delay_size, false);
|
||||
if (dp83869->tx_int_delay < 0)
|
||||
dp83869->tx_int_delay =
|
||||
dp83869_internal_delay[DP83869_CLK_DELAY_DEF];
|
||||
dp83869->tx_int_delay = DP83869_CLK_DELAY_DEF;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user