aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/phy
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/phy')
-rw-r--r--drivers/net/phy/mdio-gpio.c10
-rw-r--r--drivers/net/phy/mscc.c14
2 files changed, 10 insertions, 14 deletions
diff --git a/drivers/net/phy/mdio-gpio.c b/drivers/net/phy/mdio-gpio.c
index 33265747bf39..0fbcedcdf6e2 100644
--- a/drivers/net/phy/mdio-gpio.c
+++ b/drivers/net/phy/mdio-gpio.c
@@ -63,7 +63,7 @@ static void mdio_dir(struct mdiobb_ctrl *ctrl, int dir)
63 * assume the pin serves as pull-up. If direction is 63 * assume the pin serves as pull-up. If direction is
64 * output, the default value is high. 64 * output, the default value is high.
65 */ 65 */
66 gpiod_set_value(bitbang->mdo, 1); 66 gpiod_set_value_cansleep(bitbang->mdo, 1);
67 return; 67 return;
68 } 68 }
69 69
@@ -78,7 +78,7 @@ static int mdio_get(struct mdiobb_ctrl *ctrl)
78 struct mdio_gpio_info *bitbang = 78 struct mdio_gpio_info *bitbang =
79 container_of(ctrl, struct mdio_gpio_info, ctrl); 79 container_of(ctrl, struct mdio_gpio_info, ctrl);
80 80
81 return gpiod_get_value(bitbang->mdio); 81 return gpiod_get_value_cansleep(bitbang->mdio);
82} 82}
83 83
84static void mdio_set(struct mdiobb_ctrl *ctrl, int what) 84static void mdio_set(struct mdiobb_ctrl *ctrl, int what)
@@ -87,9 +87,9 @@ static void mdio_set(struct mdiobb_ctrl *ctrl, int what)
87 container_of(ctrl, struct mdio_gpio_info, ctrl); 87 container_of(ctrl, struct mdio_gpio_info, ctrl);
88 88
89 if (bitbang->mdo) 89 if (bitbang->mdo)
90 gpiod_set_value(bitbang->mdo, what); 90 gpiod_set_value_cansleep(bitbang->mdo, what);
91 else 91 else
92 gpiod_set_value(bitbang->mdio, what); 92 gpiod_set_value_cansleep(bitbang->mdio, what);
93} 93}
94 94
95static void mdc_set(struct mdiobb_ctrl *ctrl, int what) 95static void mdc_set(struct mdiobb_ctrl *ctrl, int what)
@@ -97,7 +97,7 @@ static void mdc_set(struct mdiobb_ctrl *ctrl, int what)
97 struct mdio_gpio_info *bitbang = 97 struct mdio_gpio_info *bitbang =
98 container_of(ctrl, struct mdio_gpio_info, ctrl); 98 container_of(ctrl, struct mdio_gpio_info, ctrl);
99 99
100 gpiod_set_value(bitbang->mdc, what); 100 gpiod_set_value_cansleep(bitbang->mdc, what);
101} 101}
102 102
103static const struct mdiobb_ops mdio_gpio_ops = { 103static const struct mdiobb_ops mdio_gpio_ops = {
diff --git a/drivers/net/phy/mscc.c b/drivers/net/phy/mscc.c
index a2e59f4f6f01..7cae17517744 100644
--- a/drivers/net/phy/mscc.c
+++ b/drivers/net/phy/mscc.c
@@ -810,17 +810,13 @@ static int vsc85xx_default_config(struct phy_device *phydev)
810 810
811 phydev->mdix_ctrl = ETH_TP_MDI_AUTO; 811 phydev->mdix_ctrl = ETH_TP_MDI_AUTO;
812 mutex_lock(&phydev->lock); 812 mutex_lock(&phydev->lock);
813 rc = phy_select_page(phydev, MSCC_PHY_PAGE_EXTENDED_2);
814 if (rc < 0)
815 goto out_unlock;
816 813
817 reg_val = phy_read(phydev, MSCC_PHY_RGMII_CNTL); 814 reg_val = RGMII_RX_CLK_DELAY_1_1_NS << RGMII_RX_CLK_DELAY_POS;
818 reg_val &= ~(RGMII_RX_CLK_DELAY_MASK); 815
819 reg_val |= (RGMII_RX_CLK_DELAY_1_1_NS << RGMII_RX_CLK_DELAY_POS); 816 rc = phy_modify_paged(phydev, MSCC_PHY_PAGE_EXTENDED_2,
820 phy_write(phydev, MSCC_PHY_RGMII_CNTL, reg_val); 817 MSCC_PHY_RGMII_CNTL, RGMII_RX_CLK_DELAY_MASK,
818 reg_val);
821 819
822out_unlock:
823 rc = phy_restore_page(phydev, rc, rc > 0 ? 0 : rc);
824 mutex_unlock(&phydev->lock); 820 mutex_unlock(&phydev->lock);
825 821
826 return rc; 822 return rc;