@@ -74,116 +74,94 @@ static const struct mt7530_mib_desc mt7530_mib[] = {
74
74
MIB_DESC (1 , 0xb8 , "RxArlDrop" ),
75
75
};
76
76
77
- /* Since phy_device has not yet been created and
78
- * phy_{read,write}_mmd_indirect is not available, we provide our own
79
- * core_{read,write}_mmd_indirect with core_{clear,write,set} wrappers
80
- * to complete this function.
81
- */
82
- static int
83
- core_read_mmd_indirect (struct mt7530_priv * priv , int prtad , int devad )
77
+ static void
78
+ mt7530_mutex_lock (struct mt7530_priv * priv )
79
+ {
80
+ if (priv -> bus )
81
+ mutex_lock_nested (& priv -> bus -> mdio_lock , MDIO_MUTEX_NESTED );
82
+ }
83
+
84
+ static void
85
+ mt7530_mutex_unlock (struct mt7530_priv * priv )
86
+ {
87
+ if (priv -> bus )
88
+ mutex_unlock (& priv -> bus -> mdio_lock );
89
+ }
90
+
91
+ static void
92
+ core_write (struct mt7530_priv * priv , u32 reg , u32 val )
84
93
{
85
94
struct mii_bus * bus = priv -> bus ;
86
- int value , ret ;
95
+ int ret ;
96
+
97
+ mt7530_mutex_lock (priv );
87
98
88
99
/* Write the desired MMD Devad */
89
100
ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
90
- MII_MMD_CTRL , devad );
101
+ MII_MMD_CTRL , MDIO_MMD_VEND2 );
91
102
if (ret < 0 )
92
103
goto err ;
93
104
94
105
/* Write the desired MMD register address */
95
106
ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
96
- MII_MMD_DATA , prtad );
107
+ MII_MMD_DATA , reg );
97
108
if (ret < 0 )
98
109
goto err ;
99
110
100
111
/* Select the Function : DATA with no post increment */
101
112
ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
102
- MII_MMD_CTRL , devad | MII_MMD_CTRL_NOINCR );
113
+ MII_MMD_CTRL , MDIO_MMD_VEND2 | MII_MMD_CTRL_NOINCR );
103
114
if (ret < 0 )
104
115
goto err ;
105
116
106
- /* Read the content of the MMD's selected register */
107
- value = bus -> read (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
108
- MII_MMD_DATA );
109
-
110
- return value ;
117
+ /* Write the data into MMD's selected register */
118
+ ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
119
+ MII_MMD_DATA , val );
111
120
err :
112
- dev_err (& bus -> dev , "failed to read mmd register\n" );
121
+ if (ret < 0 )
122
+ dev_err (& bus -> dev , "failed to write mmd register\n" );
113
123
114
- return ret ;
124
+ mt7530_mutex_unlock ( priv ) ;
115
125
}
116
126
117
- static int
118
- core_write_mmd_indirect (struct mt7530_priv * priv , int prtad ,
119
- int devad , u32 data )
127
+ static void
128
+ core_rmw (struct mt7530_priv * priv , u32 reg , u32 mask , u32 set )
120
129
{
121
130
struct mii_bus * bus = priv -> bus ;
131
+ u32 val ;
122
132
int ret ;
123
133
134
+ mt7530_mutex_lock (priv );
135
+
124
136
/* Write the desired MMD Devad */
125
137
ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
126
- MII_MMD_CTRL , devad );
138
+ MII_MMD_CTRL , MDIO_MMD_VEND2 );
127
139
if (ret < 0 )
128
140
goto err ;
129
141
130
142
/* Write the desired MMD register address */
131
143
ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
132
- MII_MMD_DATA , prtad );
144
+ MII_MMD_DATA , reg );
133
145
if (ret < 0 )
134
146
goto err ;
135
147
136
148
/* Select the Function : DATA with no post increment */
137
149
ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
138
- MII_MMD_CTRL , devad | MII_MMD_CTRL_NOINCR );
150
+ MII_MMD_CTRL , MDIO_MMD_VEND2 | MII_MMD_CTRL_NOINCR );
139
151
if (ret < 0 )
140
152
goto err ;
141
153
154
+ /* Read the content of the MMD's selected register */
155
+ val = bus -> read (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
156
+ MII_MMD_DATA );
157
+ val &= ~mask ;
158
+ val |= set ;
142
159
/* Write the data into MMD's selected register */
143
160
ret = bus -> write (bus , MT753X_CTRL_PHY_ADDR (priv -> mdiodev -> addr ),
144
- MII_MMD_DATA , data );
161
+ MII_MMD_DATA , val );
145
162
err :
146
163
if (ret < 0 )
147
- dev_err (& bus -> dev ,
148
- "failed to write mmd register\n" );
149
- return ret ;
150
- }
151
-
152
- static void
153
- mt7530_mutex_lock (struct mt7530_priv * priv )
154
- {
155
- if (priv -> bus )
156
- mutex_lock_nested (& priv -> bus -> mdio_lock , MDIO_MUTEX_NESTED );
157
- }
158
-
159
- static void
160
- mt7530_mutex_unlock (struct mt7530_priv * priv )
161
- {
162
- if (priv -> bus )
163
- mutex_unlock (& priv -> bus -> mdio_lock );
164
- }
165
-
166
- static void
167
- core_write (struct mt7530_priv * priv , u32 reg , u32 val )
168
- {
169
- mt7530_mutex_lock (priv );
170
-
171
- core_write_mmd_indirect (priv , reg , MDIO_MMD_VEND2 , val );
172
-
173
- mt7530_mutex_unlock (priv );
174
- }
175
-
176
- static void
177
- core_rmw (struct mt7530_priv * priv , u32 reg , u32 mask , u32 set )
178
- {
179
- u32 val ;
180
-
181
- mt7530_mutex_lock (priv );
182
-
183
- val = core_read_mmd_indirect (priv , reg , MDIO_MMD_VEND2 );
184
- val &= ~mask ;
185
- val |= set ;
186
- core_write_mmd_indirect (priv , reg , MDIO_MMD_VEND2 , val );
164
+ dev_err (& bus -> dev , "failed to write mmd register\n" );
187
165
188
166
mt7530_mutex_unlock (priv );
189
167
}
0 commit comments