mirror of https://github.com/OpenIPC/firmware.git
49 lines
1.4 KiB
Diff
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;
|
|
|