firmware/br-ext-chip-hisilicon/board/hi3516cv100/kernel/patches/23_stmmac_port.patch

49 lines
1.4 KiB
Diff

--- a/drivers/net/stmmac/stmmac_main.c 2022-01-14 11:09:38.965900712 +0300
+++ b/drivers/net/stmmac/stmmac_main.c 2022-01-14 11:48:05.613133817 +0300
@@ -125,6 +125,10 @@
module_param(debug, int, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(debug, "Message Level (0: no output, 16: all)");
+static int phymode = -1;
+module_param(phymode, int, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(phymode, "PHY interface mode (0=MII,4=RMII,5=RGMII)");
+
static int phyaddr = -1;
module_param(phyaddr, int, S_IRUGO);
MODULE_PARM_DESC(phyaddr, "Physical device address");
@@ -347,10 +351,21 @@
else
netif_carrier_off(priv->dev);
- /* Always RGMII mode */
- newval |= 0x20;
+ switch (priv->phy_interface) {
+ case PHY_INTERFACE_MODE_RGMII:
+ case PHY_INTERFACE_MODE_RGMII_ID:
+ case PHY_INTERFACE_MODE_RGMII_RXID:
+ case PHY_INTERFACE_MODE_RGMII_TXID:
+ newval |= 0x20;
+ break;
+ case PHY_INTERFACE_MODE_RMII:
+ newval |= 0x80;
+ break;
+ default:
+ break;
+ }
- /* Shift left for GMAC1 */
+ /* Shift left for GMAC1 */
newval <<= shift;
newval |= oldval & ~(mask << shift);
@@ -2235,6 +2250,9 @@
/* Override with kernel parameters if supplied XXX CRS XXX
* this needs to have multiple instances */
+ if (phymode >= 0)
+ plat_dat->interface = phymode;
+
if ((phyaddr >= 0) && (phyaddr <= 31))
plat_dat->phy_addr = phyaddr;