summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Liang Lim <weiliang.lim@starfivetech.com>2023-10-20 13:54:42 +0300
committerWei Liang Lim <weiliang.lim@starfivetech.com>2023-10-20 13:54:42 +0300
commit38368bc81339771df8a653c66798bf92f5005312 (patch)
tree23c07f269ede95649b466e4b4292554ada787a64
parent1e2016ed0e6cb5f3cc0959a7db40bdd2fdf78432 (diff)
downloadu-boot-38368bc81339771df8a653c66798bf92f5005312.tar.xz
drivers: net: Dubhe GMAC Update
Signed-off-by: Wei Liang Lim <weiliang.lim@starfivetech.com>
-rw-r--r--drivers/net/dwc_eth_qos.c14
-rw-r--r--drivers/net/phy/marvell.c6
-rw-r--r--drivers/net/phy/phy.c10
3 files changed, 28 insertions, 2 deletions
diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c
index 2b58dbb0f0..a29155ad6e 100644
--- a/drivers/net/dwc_eth_qos.c
+++ b/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)
{
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index 0a90f710df..66d415091c 100644
--- a/drivers/net/phy/marvell.c
+++ b/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 */
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index ae21acb059..c12bca6ef5 100644
--- a/drivers/net/phy/phy.c
+++ b/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;