Procházet zdrojové kódy

drivers: net: Dubhe GMAC Update

Signed-off-by: Wei Liang Lim <weiliang.lim@starfivetech.com>
Wei Liang Lim před 7 měsíci
rodič
revize
38368bc813
3 změnil soubory, kde provedl 28 přidání a 2 odebrání
  1. 12 2
      drivers/net/dwc_eth_qos.c
  2. 6 0
      drivers/net/phy/marvell.c
  3. 10 0
      drivers/net/phy/phy.c

+ 12 - 2
drivers/net/dwc_eth_qos.c

@@ -346,6 +346,7 @@ err:
 #endif
 }
 
+#if 0
 static int eqos_start_clks_jh7110(struct udevice *dev)
 {
 	struct eqos_priv *eqos = dev_get_priv(dev);
@@ -396,6 +397,7 @@ err:
 	debug("%s: FAILED: %d\n", __func__, ret);
 	return ret;
 }
+#endif
 
 static int eqos_stop_clks_tegra186(struct udevice *dev)
 {
@@ -431,6 +433,7 @@ static int eqos_stop_clks_stm32(struct udevice *dev)
 	return 0;
 }
 
+#if 0
 static int eqos_stop_clks_jh7110(struct udevice *dev)
 {
 	struct eqos_priv *eqos = dev_get_priv(dev);
@@ -444,6 +447,7 @@ static int eqos_stop_clks_jh7110(struct udevice *dev)
 	debug("%s: OK\n", __func__);
 	return 0;
 }
+#endif
 
 static int eqos_start_resets_tegra186(struct udevice *dev)
 {
@@ -517,6 +521,7 @@ static int eqos_stop_resets_tegra186(struct udevice *dev)
 	return 0;
 }
 
+#if 0
 static int eqos_stop_resets_jh7110(struct udevice *dev)
 {
 //	struct eqos_priv *eqos = dev_get_priv(dev);
@@ -526,6 +531,7 @@ static int eqos_stop_resets_jh7110(struct udevice *dev)
 
 	return 0;
 }
+#endif
 
 static int eqos_calibrate_pads_tegra186(struct udevice *dev)
 {
@@ -1693,8 +1699,10 @@ err_free_clk_master_bus:
 	clk_free(&eqos->clk_master_bus);
 err_free_gpio_phy_reset:
 	/* dm_gpio_free(dev, &eqos->phy_reset_gpio); */
+#if 0
 err_free_reset_eqos:
-	/* reset_free(&eqos->reset_ctl); */
+	/* reset_release_bulk(&eqos->reset_bulk); */
+#endif
 
 	return ret;
 }
@@ -1704,7 +1712,7 @@ static phy_interface_t eqos_get_interface_tegra186(const struct udevice *dev)
 	return PHY_INTERFACE_MODE_MII;
 }
 
-static phy_interface_t eqos_get_interface_jh7110(struct udevice *dev)
+static phy_interface_t eqos_get_interface_jh7110(const struct udevice *dev)
 {
 	const char *phy_mode;
 	phy_interface_t interface = PHY_INTERFACE_MODE_NA;
@@ -1756,6 +1764,7 @@ static int eqos_remove_resources_stm32(struct udevice *dev)
 	return 0;
 }
 
+#if 0
 static int eqos_remove_resources_jh7110(struct udevice *dev)
 {
 	struct eqos_priv *eqos = dev_get_priv(dev);
@@ -1771,6 +1780,7 @@ static int eqos_remove_resources_jh7110(struct udevice *dev)
 	debug("%s: OK\n", __func__);
 	return 0;
 }
+#endif
 
 static int eqos_probe(struct udevice *dev)
 {

+ 6 - 0
drivers/net/phy/marvell.c

@@ -424,6 +424,12 @@ static int m88e151x_config(struct phy_device *phydev)
 	phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x214D);
 	phy_write(phydev, MDIO_DEVAD_NONE, 17, 0xCC0C);
 	phy_write(phydev, MDIO_DEVAD_NONE, 16, 0x2159);
+	
+	/* Dubhe GMAC */
+	phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1118_PHY_PAGE, 18); //Switch to Page 18
+	phy_write(phydev, MDIO_DEVAD_NONE, 18, 0x2); //Enable CRC checker on Copper Interface
+	phy_write(phydev, MDIO_DEVAD_NONE, 20, 0x0); //Set RGMII to Copper mode
+	
 	phy_write(phydev, MDIO_DEVAD_NONE, MIIM_88E1118_PHY_PAGE, 0x0000);
 
 	/* SGMII-to-Copper mode initialization */

+ 10 - 0
drivers/net/phy/phy.c

@@ -81,6 +81,10 @@ static int genphy_config_advert(struct phy_device *phydev)
 		changed = 1;
 	}
 
+	/* Dubhe GMAC */
+	/* Enable MAC Pause and Auto-Negotiation Advertisement 10M Full Duplex */
+	phy_write(phydev, MDIO_DEVAD_NONE, 4, 0x441);
+
 	bmsr = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMSR);
 	if (bmsr < 0)
 		return bmsr;
@@ -101,6 +105,8 @@ static int genphy_config_advert(struct phy_device *phydev)
 
 	adv &= ~(ADVERTISE_1000FULL | ADVERTISE_1000HALF);
 
+/* Dubhe GMAC */
+#if 0
 	if (phydev->supported & (SUPPORTED_1000baseT_Half |
 				SUPPORTED_1000baseT_Full)) {
 		if (advertise & SUPPORTED_1000baseT_Half)
@@ -108,6 +114,7 @@ static int genphy_config_advert(struct phy_device *phydev)
 		if (advertise & SUPPORTED_1000baseT_Full)
 			adv |= ADVERTISE_1000FULL;
 	}
+#endif
 
 	if (adv != oldadv)
 		changed = 1;
@@ -585,6 +592,9 @@ struct phy_device *phy_device_create(struct mii_dev *bus, int addr,
 
 	dev->autoneg = AUTONEG_ENABLE;
 
+	/* Dubhe GMAC */
+	dev->speed = SPEED_10;
+
 	dev->addr = addr;
 	dev->phy_id = phy_id;
 	dev->is_c45 = is_c45;