net: stmmac: qcom-ethqos: convert to set_clk_tx_rate() method
Set the RGMII link clock using the set_clk_tx_rate() method rather than coding it into the .fix_mac_speed() method. This simplifies ethqos's ethqos_fix_mac_speed(). Tested-by: Mohd Ayaan Anwar <mohd.anwar@oss.qualcomm.com> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> Link: https://patch.msgid.link/E1vuSLF-0000000ASci-42kh@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>master
parent
fb42f19e67
commit
9192320a65
|
|
@ -103,7 +103,6 @@ struct qcom_ethqos {
|
|||
void (*configure_func)(struct qcom_ethqos *ethqos,
|
||||
phy_interface_t interface, int speed);
|
||||
|
||||
unsigned int link_clk_rate;
|
||||
struct clk *link_clk;
|
||||
struct phy *serdes_phy;
|
||||
int serdes_speed;
|
||||
|
|
@ -175,19 +174,20 @@ static void rgmii_dump(void *priv)
|
|||
rgmii_readl(ethqos, EMAC_SYSTEM_LOW_POWER_DEBUG));
|
||||
}
|
||||
|
||||
static void
|
||||
ethqos_update_link_clk(struct qcom_ethqos *ethqos, int speed)
|
||||
static int ethqos_set_clk_tx_rate(void *bsp_priv, struct clk *clk_tx_i,
|
||||
phy_interface_t interface, int speed)
|
||||
{
|
||||
struct qcom_ethqos *ethqos = bsp_priv;
|
||||
long rate;
|
||||
|
||||
if (!phy_interface_mode_is_rgmii(ethqos->phy_mode))
|
||||
return;
|
||||
if (!phy_interface_mode_is_rgmii(interface))
|
||||
return 0;
|
||||
|
||||
rate = rgmii_clock(speed);
|
||||
if (rate > 0)
|
||||
ethqos->link_clk_rate = rate * 2;
|
||||
if (rate < 0)
|
||||
return rate;
|
||||
|
||||
clk_set_rate(ethqos->link_clk, ethqos->link_clk_rate);
|
||||
return clk_set_rate(ethqos->link_clk, rate * 2);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -643,7 +643,6 @@ static void ethqos_fix_mac_speed(void *priv, phy_interface_t interface,
|
|||
{
|
||||
struct qcom_ethqos *ethqos = priv;
|
||||
|
||||
ethqos_update_link_clk(ethqos, speed);
|
||||
ethqos_configure(ethqos, interface, speed);
|
||||
}
|
||||
|
||||
|
|
@ -821,12 +820,14 @@ static int qcom_ethqos_probe(struct platform_device *pdev)
|
|||
"Failed to get serdes phy\n");
|
||||
|
||||
ethqos->serdes_speed = SPEED_1000;
|
||||
ethqos_update_link_clk(ethqos, SPEED_1000);
|
||||
ethqos_set_clk_tx_rate(ethqos, NULL, plat_dat->phy_interface,
|
||||
SPEED_1000);
|
||||
|
||||
qcom_ethqos_set_sgmii_loopback(ethqos, true);
|
||||
ethqos_set_func_clk_en(ethqos);
|
||||
|
||||
plat_dat->bsp_priv = ethqos;
|
||||
plat_dat->set_clk_tx_rate = ethqos_set_clk_tx_rate;
|
||||
plat_dat->fix_mac_speed = ethqos_fix_mac_speed;
|
||||
plat_dat->dump_debug_regs = rgmii_dump;
|
||||
plat_dat->ptp_clk_freq_config = ethqos_ptp_clk_freq_config;
|
||||
|
|
|
|||
Loading…
Reference in New Issue