mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
net: stmmac: pass interface mode into fix_mac_speed() method
Pass the current interface mode reported by phylink into the fix_mac_speed() method. This will be used by qcom-ethqos for its "SGMII" configuration. Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com> 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/E1vuSKv-0000000AScG-1zv6@rmk-PC.armlinux.org.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
834c72ca30
commit
cd0aa65153
|
|
@ -112,7 +112,8 @@ static int dwc_qos_probe(struct platform_device *pdev,
|
|||
#define AUTO_CAL_STATUS 0x880c
|
||||
#define AUTO_CAL_STATUS_ACTIVE BIT(31)
|
||||
|
||||
static void tegra_eqos_fix_speed(void *bsp_priv, int speed, unsigned int mode)
|
||||
static void tegra_eqos_fix_speed(void *bsp_priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode)
|
||||
{
|
||||
struct tegra_eqos *eqos = bsp_priv;
|
||||
bool needs_calibration = false;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,8 @@ struct imx_dwmac_ops {
|
|||
|
||||
int (*fix_soc_reset)(struct stmmac_priv *priv);
|
||||
int (*set_intf_mode)(struct imx_priv_data *dwmac, u8 phy_intf_sel);
|
||||
void (*fix_mac_speed)(void *priv, int speed, unsigned int mode);
|
||||
void (*fix_mac_speed)(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode);
|
||||
};
|
||||
|
||||
struct imx_priv_data {
|
||||
|
|
@ -160,7 +161,8 @@ static int imx_dwmac_set_clk_tx_rate(void *bsp_priv, struct clk *clk_tx_i,
|
|||
return stmmac_set_clk_tx_rate(bsp_priv, clk_tx_i, interface, speed);
|
||||
}
|
||||
|
||||
static void imx_dwmac_fix_speed(void *priv, int speed, unsigned int mode)
|
||||
static void imx_dwmac_fix_speed(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode)
|
||||
{
|
||||
struct plat_stmmacenet_data *plat_dat;
|
||||
struct imx_priv_data *dwmac = priv;
|
||||
|
|
@ -185,13 +187,14 @@ static void imx_dwmac_fix_speed(void *priv, int speed, unsigned int mode)
|
|||
dev_err(dwmac->dev, "failed to set tx rate %lu\n", rate);
|
||||
}
|
||||
|
||||
static void imx93_dwmac_fix_speed(void *priv, int speed, unsigned int mode)
|
||||
static void imx93_dwmac_fix_speed(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode)
|
||||
{
|
||||
struct imx_priv_data *dwmac = priv;
|
||||
unsigned int iface;
|
||||
int ctrl, old_ctrl;
|
||||
|
||||
imx_dwmac_fix_speed(priv, speed, mode);
|
||||
imx_dwmac_fix_speed(priv, interface, speed, mode);
|
||||
|
||||
if (!dwmac || mode != MLO_AN_FIXED)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -143,7 +143,8 @@ static struct stmmac_pci_info loongson_gmac_pci_info = {
|
|||
.setup = loongson_gmac_data,
|
||||
};
|
||||
|
||||
static void loongson_gnet_fix_speed(void *priv, int speed, unsigned int mode)
|
||||
static void loongson_gnet_fix_speed(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode)
|
||||
{
|
||||
struct loongson_data *ld = (struct loongson_data *)priv;
|
||||
struct net_device *ndev = dev_get_drvdata(ld->dev);
|
||||
|
|
|
|||
|
|
@ -643,7 +643,8 @@ static void ethqos_configure(struct qcom_ethqos *ethqos, int speed)
|
|||
return ethqos->configure_func(ethqos, speed);
|
||||
}
|
||||
|
||||
static void ethqos_fix_mac_speed(void *priv, int speed, unsigned int mode)
|
||||
static void ethqos_fix_mac_speed(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode)
|
||||
{
|
||||
struct qcom_ethqos *ethqos = priv;
|
||||
|
||||
|
|
|
|||
|
|
@ -72,7 +72,8 @@ struct socfpga_dwmac {
|
|||
const struct socfpga_dwmac_ops *ops;
|
||||
};
|
||||
|
||||
static void socfpga_dwmac_fix_mac_speed(void *bsp_priv, int speed,
|
||||
static void socfpga_dwmac_fix_mac_speed(void *bsp_priv,
|
||||
phy_interface_t interface, int speed,
|
||||
unsigned int mode)
|
||||
{
|
||||
struct socfpga_dwmac *dwmac = (struct socfpga_dwmac *)bsp_priv;
|
||||
|
|
|
|||
|
|
@ -91,11 +91,13 @@ struct sti_dwmac {
|
|||
struct regmap *regmap;
|
||||
bool gmac_en;
|
||||
int speed;
|
||||
void (*fix_retime_src)(void *priv, int speed, unsigned int mode);
|
||||
void (*fix_retime_src)(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode);
|
||||
};
|
||||
|
||||
struct sti_dwmac_of_data {
|
||||
void (*fix_retime_src)(void *priv, int speed, unsigned int mode);
|
||||
void (*fix_retime_src)(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode);
|
||||
};
|
||||
|
||||
enum {
|
||||
|
|
@ -114,7 +116,8 @@ static u32 stih4xx_tx_retime_val[] = {
|
|||
| STIH4XX_ETH_SEL_INTERNAL_NOTEXT_PHYCLK,
|
||||
};
|
||||
|
||||
static void stih4xx_fix_retime_src(void *priv, int spd, unsigned int mode)
|
||||
static void stih4xx_fix_retime_src(void *priv, phy_interface_t interface,
|
||||
int spd, unsigned int mode)
|
||||
{
|
||||
struct sti_dwmac *dwmac = priv;
|
||||
u32 src = dwmac->tx_retime_src;
|
||||
|
|
@ -170,7 +173,7 @@ static int sti_set_phy_intf_sel(void *bsp_priv, u8 phy_intf_sel)
|
|||
val = (dwmac->interface == PHY_INTERFACE_MODE_REVMII) ? 0 : ENMII;
|
||||
regmap_update_bits(regmap, reg, ENMII_MASK, val);
|
||||
|
||||
dwmac->fix_retime_src(dwmac, dwmac->speed, 0);
|
||||
dwmac->fix_retime_src(dwmac, dwmac->interface, dwmac->speed, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1071,7 +1071,8 @@ static void stmmac_mac_link_up(struct phylink_config *config,
|
|||
}
|
||||
|
||||
if (priv->plat->fix_mac_speed)
|
||||
priv->plat->fix_mac_speed(priv->plat->bsp_priv, speed, mode);
|
||||
priv->plat->fix_mac_speed(priv->plat->bsp_priv, interface,
|
||||
speed, mode);
|
||||
|
||||
if (!duplex)
|
||||
ctrl &= ~priv->hw->link.duplex;
|
||||
|
|
|
|||
|
|
@ -256,7 +256,8 @@ struct plat_stmmacenet_data {
|
|||
int (*set_phy_intf_sel)(void *priv, u8 phy_intf_sel);
|
||||
int (*set_clk_tx_rate)(void *priv, struct clk *clk_tx_i,
|
||||
phy_interface_t interface, int speed);
|
||||
void (*fix_mac_speed)(void *priv, int speed, unsigned int mode);
|
||||
void (*fix_mac_speed)(void *priv, phy_interface_t interface,
|
||||
int speed, unsigned int mode);
|
||||
int (*fix_soc_reset)(struct stmmac_priv *priv);
|
||||
int (*serdes_powerup)(struct net_device *ndev, void *priv);
|
||||
void (*serdes_powerdown)(struct net_device *ndev, void *priv);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user