On 7/12/24 3:21 PM, Philip Oberfichtner wrote:
Hi Marek,

Hi,

+static int __serdes_powerup(struct udevice *dev)
+{
+       /* Based on linux/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c */
+
+       const unsigned char phyad = INTEL_MGBE_ADHOC_ADDR;
+       struct eqos_priv *eqos = dev_get_priv(dev);
+       unsigned short data;
+       int ret;
+       bool is_pse;
+
+       /* Set the serdes rate and the PCLK rate */
+       miiphy_read(eqos->mii->name, phyad, SERDES_GCR0, &data);
+
+       data &= ~SERDES_RATE_MASK;
+       data &= ~SERDES_PCLK_MASK;
+
+       if (__serdes_link_mode_2500(dev))
+               data |= SERDES_RATE_PCIE_GEN2 << SERDES_RATE_PCIE_SHIFT |
+                       SERDES_PCLK_37p5MHZ << SERDES_PCLK_SHIFT;
+       else
+               data |= SERDES_RATE_PCIE_GEN1 << SERDES_RATE_PCIE_SHIFT |
+                       SERDES_PCLK_70MHZ << SERDES_PCLK_SHIFT;
+
+       miiphy_write(eqos->mii->name, phyad, SERDES_GCR0, data);
+
+       /* assert clk_req */
+       miiphy_read(eqos->mii->name, phyad, SERDES_GCR0, &data);
+       data |= SERDES_PLL_CLK;
+       miiphy_write(eqos->mii->name, phyad, SERDES_GCR0, data);

Could this use phy_modify() ?



I do agree using the phy_read()-API all over the place would be nice.
But I currently cannot do so, as I do not have a struct phy_device.
I am not accessing an actual PHY here, but a MAC-internal submodule.

Oh ok, then miiphy_write() is fine. Thanks for clarifying.

Reply via email to