[PATCH v2] net: designware: Fix get_timer value overflow
Jim Liu
jim.t90615 at gmail.com
Thu Aug 7 07:28:32 CEST 2025
get_timer returns a ulong value representing system time in ms.
On a 64-bit system, this ulong value is 64 bits long. However,
the driver stores it in a 32-bit unsigned integer, which overflows
after 49 days up time, causing the driver to get an incorrect time.
Replace the unsigned int variable with a ulong type to properly store
the value returned by get_timer.
Signed-off-by: Stanley Chu <yschu at nuvoton.com>
Signed-off-by: Jim Liu <JJLIU0 at nuvoton.com>
---
drivers/net/designware.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/designware.c b/drivers/net/designware.c
index fce3ef910cb..7ecedc3d7f0 100644
--- a/drivers/net/designware.c
+++ b/drivers/net/designware.c
@@ -486,7 +486,7 @@ static int dw_adjust_link(struct dw_eth_dev *priv, struct eth_mac_regs *mac_p,
#ifdef CONFIG_ARCH_NPCM8XX
if (phydev->interface == PHY_INTERFACE_MODE_SGMII) {
- unsigned int start;
+ ulong start;
/* Indirect access to VR_MII_MMD registers */
writew((VR_MII_MMD >> 9), PCS_BA + PCS_IND_AC);
@@ -532,7 +532,7 @@ int designware_eth_init(struct dw_eth_dev *priv, u8 *enetaddr)
{
struct eth_mac_regs *mac_p = priv->mac_regs_p;
struct eth_dma_regs *dma_p = priv->dma_regs_p;
- unsigned int start;
+ ulong start;
int ret;
writel(readl(&dma_p->busmode) | DMAMAC_SRST, &dma_p->busmode);
--
2.34.1
More information about the U-Boot
mailing list