@@ -471,7 +471,7 @@ static int m88e1121_config_aneg(struct phy_device *phydev)
471
471
472
472
if (phy_interface_is_rgmii (phydev )) {
473
473
err = m88e1121_config_aneg_rgmii_delays (phydev );
474
- if (err )
474
+ if (err < 0 )
475
475
return err ;
476
476
}
477
477
@@ -664,19 +664,14 @@ static int m88e1116r_config_init(struct phy_device *phydev)
664
664
665
665
static int m88e3016_config_init (struct phy_device * phydev )
666
666
{
667
- int reg ;
667
+ int ret ;
668
668
669
669
/* Enable Scrambler and Auto-Crossover */
670
- reg = phy_read (phydev , MII_88E3016_PHY_SPEC_CTRL );
671
- if (reg < 0 )
672
- return reg ;
673
-
674
- reg &= ~MII_88E3016_DISABLE_SCRAMBLER ;
675
- reg |= MII_88E3016_AUTO_MDIX_CROSSOVER ;
676
-
677
- reg = phy_write (phydev , MII_88E3016_PHY_SPEC_CTRL , reg );
678
- if (reg < 0 )
679
- return reg ;
670
+ ret = phy_modify (phydev , MII_88E3016_PHY_SPEC_CTRL ,
671
+ ~MII_88E3016_DISABLE_SCRAMBLER ,
672
+ MII_88E3016_AUTO_MDIX_CROSSOVER );
673
+ if (ret < 0 )
674
+ return ret ;
680
675
681
676
return marvell_config_init (phydev );
682
677
}
@@ -685,42 +680,34 @@ static int m88e1111_config_init_hwcfg_mode(struct phy_device *phydev,
685
680
u16 mode ,
686
681
int fibre_copper_auto )
687
682
{
688
- int temp ;
689
-
690
- temp = phy_read (phydev , MII_M1111_PHY_EXT_SR );
691
- if (temp < 0 )
692
- return temp ;
693
-
694
- temp &= ~(MII_M1111_HWCFG_MODE_MASK |
695
- MII_M1111_HWCFG_FIBER_COPPER_AUTO |
696
- MII_M1111_HWCFG_FIBER_COPPER_RES );
697
- temp |= mode ;
698
-
699
683
if (fibre_copper_auto )
700
- temp |= MII_M1111_HWCFG_FIBER_COPPER_AUTO ;
684
+ mode |= MII_M1111_HWCFG_FIBER_COPPER_AUTO ;
701
685
702
- return phy_write (phydev , MII_M1111_PHY_EXT_SR , temp );
686
+ return phy_modify (phydev , MII_M1111_PHY_EXT_SR ,
687
+ (u16 )~(MII_M1111_HWCFG_MODE_MASK |
688
+ MII_M1111_HWCFG_FIBER_COPPER_AUTO |
689
+ MII_M1111_HWCFG_FIBER_COPPER_RES ),
690
+ mode );
703
691
}
704
692
705
693
static int m88e1111_config_init_rgmii_delays (struct phy_device * phydev )
706
694
{
707
- int temp ;
708
-
709
- temp = phy_read (phydev , MII_M1111_PHY_EXT_CR );
710
- if (temp < 0 )
711
- return temp ;
695
+ int delay ;
712
696
713
697
if (phydev -> interface == PHY_INTERFACE_MODE_RGMII_ID ) {
714
- temp |= ( MII_M1111_RGMII_RX_DELAY | MII_M1111_RGMII_TX_DELAY ) ;
698
+ delay = MII_M1111_RGMII_RX_DELAY | MII_M1111_RGMII_TX_DELAY ;
715
699
} else if (phydev -> interface == PHY_INTERFACE_MODE_RGMII_RXID ) {
716
- temp &= ~MII_M1111_RGMII_TX_DELAY ;
717
- temp |= MII_M1111_RGMII_RX_DELAY ;
700
+ delay = MII_M1111_RGMII_RX_DELAY ;
718
701
} else if (phydev -> interface == PHY_INTERFACE_MODE_RGMII_TXID ) {
719
- temp &= ~MII_M1111_RGMII_RX_DELAY ;
720
- temp |= MII_M1111_RGMII_TX_DELAY ;
702
+ delay = MII_M1111_RGMII_TX_DELAY ;
703
+ } else {
704
+ delay = 0 ;
721
705
}
722
706
723
- return phy_write (phydev , MII_M1111_PHY_EXT_CR , temp );
707
+ return phy_modify (phydev , MII_M1111_PHY_EXT_CR ,
708
+ (u16 )~(MII_M1111_RGMII_RX_DELAY |
709
+ MII_M1111_RGMII_TX_DELAY ),
710
+ delay );
724
711
}
725
712
726
713
static int m88e1111_config_init_rgmii (struct phy_device * phydev )
@@ -766,7 +753,7 @@ static int m88e1111_config_init_rtbi(struct phy_device *phydev)
766
753
int err ;
767
754
768
755
err = m88e1111_config_init_rgmii_delays (phydev );
769
- if (err )
756
+ if (err < 0 )
770
757
return err ;
771
758
772
759
err = m88e1111_config_init_hwcfg_mode (
@@ -793,7 +780,7 @@ static int m88e1111_config_init(struct phy_device *phydev)
793
780
794
781
if (phy_interface_is_rgmii (phydev )) {
795
782
err = m88e1111_config_init_rgmii (phydev );
796
- if (err )
783
+ if (err < 0 )
797
784
return err ;
798
785
}
799
786
@@ -834,7 +821,6 @@ static int m88e1121_config_init(struct phy_device *phydev)
834
821
static int m88e1510_config_init (struct phy_device * phydev )
835
822
{
836
823
int err ;
837
- int temp ;
838
824
839
825
/* SGMII-to-Copper mode initialization */
840
826
if (phydev -> interface == PHY_INTERFACE_MODE_SGMII ) {
@@ -846,16 +832,15 @@ static int m88e1510_config_init(struct phy_device *phydev)
846
832
return err ;
847
833
848
834
/* In reg 20, write MODE[2:0] = 0x1 (SGMII to Copper) */
849
- temp = phy_read (phydev , MII_88E1510_GEN_CTRL_REG_1 );
850
- temp &= ~MII_88E1510_GEN_CTRL_REG_1_MODE_MASK ;
851
- temp |= MII_88E1510_GEN_CTRL_REG_1_MODE_SGMII ;
852
- err = phy_write (phydev , MII_88E1510_GEN_CTRL_REG_1 , temp );
835
+ err = phy_modify (phydev , MII_88E1510_GEN_CTRL_REG_1 ,
836
+ ~MII_88E1510_GEN_CTRL_REG_1_MODE_MASK ,
837
+ MII_88E1510_GEN_CTRL_REG_1_MODE_SGMII );
853
838
if (err < 0 )
854
839
return err ;
855
840
856
841
/* PHY reset is necessary after changing MODE[2:0] */
857
- temp |= MII_88E1510_GEN_CTRL_REG_1_RESET ;
858
- err = phy_write ( phydev , MII_88E1510_GEN_CTRL_REG_1 , temp );
842
+ err = phy_modify ( phydev , MII_88E1510_GEN_CTRL_REG_1 , 0 ,
843
+ MII_88E1510_GEN_CTRL_REG_1_RESET );
859
844
if (err < 0 )
860
845
return err ;
861
846
@@ -961,7 +946,6 @@ static int m88e1149_config_init(struct phy_device *phydev)
961
946
962
947
static int m88e1145_config_init_rgmii (struct phy_device * phydev )
963
948
{
964
- int temp ;
965
949
int err ;
966
950
967
951
err = m88e1111_config_init_rgmii_delays (phydev );
@@ -973,15 +957,9 @@ static int m88e1145_config_init_rgmii(struct phy_device *phydev)
973
957
if (err < 0 )
974
958
return err ;
975
959
976
- temp = phy_read (phydev , 0x1e );
977
- if (temp < 0 )
978
- return temp ;
979
-
980
- temp &= 0xf03f ;
981
- temp |= 2 << 9 ; /* 36 ohm */
982
- temp |= 2 << 6 ; /* 39 ohm */
983
-
984
- err = phy_write (phydev , 0x1e , temp );
960
+ err = phy_modify (phydev , 0x1e , 0xf03f ,
961
+ 2 << 9 | /* 36 ohm */
962
+ 2 << 6 ); /* 39 ohm */
985
963
if (err < 0 )
986
964
return err ;
987
965
0 commit comments