1 From 1ec619ee4a052fb9ac48b57554ac2722a0bfe73c Mon Sep 17 00:00:00 2001
2 From: "Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>
3 Date: Wed, 18 May 2022 15:55:02 +0100
4 Subject: [PATCH 07/12] net: mtk_eth_soc: provide mtk_sgmii_config()
6 Provide mtk_sgmii_config() to wrap up the decisions about which SGMII
7 configuration will be called.
9 Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
10 Signed-off-by: Jakub Kicinski <kuba@kernel.org>
12 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 7 +------
13 drivers/net/ethernet/mediatek/mtk_eth_soc.h | 5 ++---
14 drivers/net/ethernet/mediatek/mtk_sgmii.c | 20 +++++++++++++++++---
15 3 files changed, 20 insertions(+), 12 deletions(-)
17 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
18 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
19 @@ -435,12 +435,7 @@ static void mtk_mac_config(struct phylin
22 /* Setup SGMIISYS with the determined property */
23 - if (state->interface != PHY_INTERFACE_MODE_SGMII)
24 - err = mtk_sgmii_setup_mode_force(eth->sgmii, sid,
26 - else if (phylink_autoneg_inband(mode))
27 - err = mtk_sgmii_setup_mode_an(eth->sgmii, sid);
29 + err = mtk_sgmii_config(eth->sgmii, sid, mode, state->interface);
33 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
34 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
35 @@ -1100,9 +1100,8 @@ u32 mtk_r32(struct mtk_eth *eth, unsigne
37 int mtk_sgmii_init(struct mtk_sgmii *ss, struct device_node *np,
39 -int mtk_sgmii_setup_mode_an(struct mtk_sgmii *ss, int id);
40 -int mtk_sgmii_setup_mode_force(struct mtk_sgmii *ss, int id,
41 - phy_interface_t interface);
42 +int mtk_sgmii_config(struct mtk_sgmii *ss, int id, unsigned int mode,
43 + phy_interface_t interface);
44 void mtk_sgmii_link_up(struct mtk_sgmii *ss, int id, int speed, int duplex);
45 void mtk_sgmii_restart_an(struct mtk_eth *eth, int mac_id);
47 --- a/drivers/net/ethernet/mediatek/mtk_sgmii.c
48 +++ b/drivers/net/ethernet/mediatek/mtk_sgmii.c
49 @@ -35,7 +35,7 @@ int mtk_sgmii_init(struct mtk_sgmii *ss,
52 /* For SGMII interface mode */
53 -int mtk_sgmii_setup_mode_an(struct mtk_sgmii *ss, int id)
54 +static int mtk_sgmii_setup_mode_an(struct mtk_sgmii *ss, int id)
58 @@ -64,8 +64,8 @@ int mtk_sgmii_setup_mode_an(struct mtk_s
59 /* For 1000BASE-X and 2500BASE-X interface modes, which operate at a
62 -int mtk_sgmii_setup_mode_force(struct mtk_sgmii *ss, int id,
63 - phy_interface_t interface)
64 +static int mtk_sgmii_setup_mode_force(struct mtk_sgmii *ss, int id,
65 + phy_interface_t interface)
69 @@ -97,6 +97,20 @@ int mtk_sgmii_setup_mode_force(struct mt
73 +int mtk_sgmii_config(struct mtk_sgmii *ss, int id, unsigned int mode,
74 + phy_interface_t interface)
78 + /* Setup SGMIISYS with the determined property */
79 + if (interface != PHY_INTERFACE_MODE_SGMII)
80 + err = mtk_sgmii_setup_mode_force(ss, id, interface);
81 + else if (phylink_autoneg_inband(mode))
82 + err = mtk_sgmii_setup_mode_an(ss, id);
87 /* For 1000BASE-X and 2500BASE-X interface modes */
88 void mtk_sgmii_link_up(struct mtk_sgmii *ss, int id, int speed, int duplex)