RK3588 android12休眠唤醒后以太网不可用
现象开机后连接网线可正常使用系统休眠后再次唤醒后网络不通等待约30秒后看门狗复位gmac重新初始化后可继续使用。此问题还会导致屏幕唤醒点亮延时1-2秒日志休眠唤醒后提示报错如下[ 32.952428][ T1945] rk_gmac-dwmac fe1b0000.ethernet: init for RGMII_RXID [ 32.952660][ T1945] rk_gmac-dwmac fe1b0000.ethernet eth0: configuring for phy/rgmii-rxid link mode [ 33.953054][ T1945] rk_gmac-dwmac fe1b0000.ethernet: Failed to reset the dma [ 33.953060][ T1945] rk_gmac-dwmac fe1b0000.ethernet eth0: stmmac_hw_setup: DMA engine initialization failed分析此问题原因为phy上电过晚导致phy电源上电加打印可确认时序在dma初始化时phy必须已经完成上电处于稳定工作状态。而从日志分析dma初始化之后phy才上电这是导致此问题的根本原因。解决按照规范将phy的电源放到gmac的节点中配置比如下面配置代码gmac0 {/* Use rgmii-rxid mode to disable rx delay inside Soc */phy-mode rgmii-rxid;clock_in_out output;phy-supply phy_pwr;这个节点会在kernel-5.10\drivers\net\ethernet\stmicro\stmmac\dwmac-rk.c的rk_gmac_setup函数中解析如下bsp_priv-regulator devm_regulator_get_optional(dev, phy);if (IS_ERR(bsp_priv-regulator)) {if (PTR_ERR(bsp_priv-regulator) -EPROBE_DEFER) {dev_err(dev, phy regulator is not available yet, deferred probing\n);return ERR_PTR(-EPROBE_DEFER);}dev_err(dev, no regulator found\n);bsp_priv-regulator NULL;}通过rk_gmac_phy_power_on函数控制phy上下电。此文件中的rk_gmac_resume函数先调用rk_gmac_powerup通过rk_gmac_powerup调用rk_gmac_phy_power_on实现phy的上电之后rk_gmac_resume函数继续调用stmmac_resume实现dma初始化操作其中会调用stmmac_hw_setup。stmmac_resume函数位于kernel-5.10\drivers\net\ethernet\stmicro\stmmac\stmmac_main.c文件中。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2477857.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!