diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2009-04-29 04:07:20 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-29 20:32:32 -0400 |
commit | 0f07c4ee8c800923ae7918c231532a9256233eed (patch) | |
tree | 659322e8607f681af12a43671b17c5b65f94f4d5 /drivers/net/cxgb3/vsc8211.c | |
parent | 23c3320cb039debfb94b27e8e9bfe26dd47692c3 (diff) |
cxgb3: Use generic MDIO definitions and mdio_mii_ioctl()
Compile-tested only.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/cxgb3/vsc8211.c')
-rw-r--r-- | drivers/net/cxgb3/vsc8211.c | 70 |
1 files changed, 40 insertions, 30 deletions
diff --git a/drivers/net/cxgb3/vsc8211.c b/drivers/net/cxgb3/vsc8211.c index d07130971b8f..4f9a1c2724f4 100644 --- a/drivers/net/cxgb3/vsc8211.c +++ b/drivers/net/cxgb3/vsc8211.c | |||
@@ -91,17 +91,18 @@ enum { | |||
91 | */ | 91 | */ |
92 | static int vsc8211_reset(struct cphy *cphy, int wait) | 92 | static int vsc8211_reset(struct cphy *cphy, int wait) |
93 | { | 93 | { |
94 | return t3_phy_reset(cphy, 0, 0); | 94 | return t3_phy_reset(cphy, MDIO_DEVAD_NONE, 0); |
95 | } | 95 | } |
96 | 96 | ||
97 | static int vsc8211_intr_enable(struct cphy *cphy) | 97 | static int vsc8211_intr_enable(struct cphy *cphy) |
98 | { | 98 | { |
99 | return mdio_write(cphy, 0, VSC8211_INTR_ENABLE, INTR_MASK); | 99 | return t3_mdio_write(cphy, MDIO_DEVAD_NONE, VSC8211_INTR_ENABLE, |
100 | INTR_MASK); | ||
100 | } | 101 | } |
101 | 102 | ||
102 | static int vsc8211_intr_disable(struct cphy *cphy) | 103 | static int vsc8211_intr_disable(struct cphy *cphy) |
103 | { | 104 | { |
104 | return mdio_write(cphy, 0, VSC8211_INTR_ENABLE, 0); | 105 | return t3_mdio_write(cphy, MDIO_DEVAD_NONE, VSC8211_INTR_ENABLE, 0); |
105 | } | 106 | } |
106 | 107 | ||
107 | static int vsc8211_intr_clear(struct cphy *cphy) | 108 | static int vsc8211_intr_clear(struct cphy *cphy) |
@@ -109,18 +110,20 @@ static int vsc8211_intr_clear(struct cphy *cphy) | |||
109 | u32 val; | 110 | u32 val; |
110 | 111 | ||
111 | /* Clear PHY interrupts by reading the register. */ | 112 | /* Clear PHY interrupts by reading the register. */ |
112 | return mdio_read(cphy, 0, VSC8211_INTR_STATUS, &val); | 113 | return t3_mdio_read(cphy, MDIO_DEVAD_NONE, VSC8211_INTR_STATUS, &val); |
113 | } | 114 | } |
114 | 115 | ||
115 | static int vsc8211_autoneg_enable(struct cphy *cphy) | 116 | static int vsc8211_autoneg_enable(struct cphy *cphy) |
116 | { | 117 | { |
117 | return t3_mdio_change_bits(cphy, 0, MII_BMCR, BMCR_PDOWN | BMCR_ISOLATE, | 118 | return t3_mdio_change_bits(cphy, MDIO_DEVAD_NONE, MII_BMCR, |
119 | BMCR_PDOWN | BMCR_ISOLATE, | ||
118 | BMCR_ANENABLE | BMCR_ANRESTART); | 120 | BMCR_ANENABLE | BMCR_ANRESTART); |
119 | } | 121 | } |
120 | 122 | ||
121 | static int vsc8211_autoneg_restart(struct cphy *cphy) | 123 | static int vsc8211_autoneg_restart(struct cphy *cphy) |
122 | { | 124 | { |
123 | return t3_mdio_change_bits(cphy, 0, MII_BMCR, BMCR_PDOWN | BMCR_ISOLATE, | 125 | return t3_mdio_change_bits(cphy, MDIO_DEVAD_NONE, MII_BMCR, |
126 | BMCR_PDOWN | BMCR_ISOLATE, | ||
124 | BMCR_ANRESTART); | 127 | BMCR_ANRESTART); |
125 | } | 128 | } |
126 | 129 | ||
@@ -130,9 +133,9 @@ static int vsc8211_get_link_status(struct cphy *cphy, int *link_ok, | |||
130 | unsigned int bmcr, status, lpa, adv; | 133 | unsigned int bmcr, status, lpa, adv; |
131 | int err, sp = -1, dplx = -1, pause = 0; | 134 | int err, sp = -1, dplx = -1, pause = 0; |
132 | 135 | ||
133 | err = mdio_read(cphy, 0, MII_BMCR, &bmcr); | 136 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_BMCR, &bmcr); |
134 | if (!err) | 137 | if (!err) |
135 | err = mdio_read(cphy, 0, MII_BMSR, &status); | 138 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_BMSR, &status); |
136 | if (err) | 139 | if (err) |
137 | return err; | 140 | return err; |
138 | 141 | ||
@@ -142,7 +145,8 @@ static int vsc8211_get_link_status(struct cphy *cphy, int *link_ok, | |||
142 | * once more to get the current link state. | 145 | * once more to get the current link state. |
143 | */ | 146 | */ |
144 | if (!(status & BMSR_LSTATUS)) | 147 | if (!(status & BMSR_LSTATUS)) |
145 | err = mdio_read(cphy, 0, MII_BMSR, &status); | 148 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_BMSR, |
149 | &status); | ||
146 | if (err) | 150 | if (err) |
147 | return err; | 151 | return err; |
148 | *link_ok = (status & BMSR_LSTATUS) != 0; | 152 | *link_ok = (status & BMSR_LSTATUS) != 0; |
@@ -156,7 +160,8 @@ static int vsc8211_get_link_status(struct cphy *cphy, int *link_ok, | |||
156 | else | 160 | else |
157 | sp = SPEED_10; | 161 | sp = SPEED_10; |
158 | } else if (status & BMSR_ANEGCOMPLETE) { | 162 | } else if (status & BMSR_ANEGCOMPLETE) { |
159 | err = mdio_read(cphy, 0, VSC8211_AUX_CTRL_STAT, &status); | 163 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, VSC8211_AUX_CTRL_STAT, |
164 | &status); | ||
160 | if (err) | 165 | if (err) |
161 | return err; | 166 | return err; |
162 | 167 | ||
@@ -170,9 +175,11 @@ static int vsc8211_get_link_status(struct cphy *cphy, int *link_ok, | |||
170 | sp = SPEED_1000; | 175 | sp = SPEED_1000; |
171 | 176 | ||
172 | if (fc && dplx == DUPLEX_FULL) { | 177 | if (fc && dplx == DUPLEX_FULL) { |
173 | err = mdio_read(cphy, 0, MII_LPA, &lpa); | 178 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_LPA, |
179 | &lpa); | ||
174 | if (!err) | 180 | if (!err) |
175 | err = mdio_read(cphy, 0, MII_ADVERTISE, &adv); | 181 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, |
182 | MII_ADVERTISE, &adv); | ||
176 | if (err) | 183 | if (err) |
177 | return err; | 184 | return err; |
178 | 185 | ||
@@ -202,9 +209,9 @@ static int vsc8211_get_link_status_fiber(struct cphy *cphy, int *link_ok, | |||
202 | unsigned int bmcr, status, lpa, adv; | 209 | unsigned int bmcr, status, lpa, adv; |
203 | int err, sp = -1, dplx = -1, pause = 0; | 210 | int err, sp = -1, dplx = -1, pause = 0; |
204 | 211 | ||
205 | err = mdio_read(cphy, 0, MII_BMCR, &bmcr); | 212 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_BMCR, &bmcr); |
206 | if (!err) | 213 | if (!err) |
207 | err = mdio_read(cphy, 0, MII_BMSR, &status); | 214 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_BMSR, &status); |
208 | if (err) | 215 | if (err) |
209 | return err; | 216 | return err; |
210 | 217 | ||
@@ -214,7 +221,8 @@ static int vsc8211_get_link_status_fiber(struct cphy *cphy, int *link_ok, | |||
214 | * once more to get the current link state. | 221 | * once more to get the current link state. |
215 | */ | 222 | */ |
216 | if (!(status & BMSR_LSTATUS)) | 223 | if (!(status & BMSR_LSTATUS)) |
217 | err = mdio_read(cphy, 0, MII_BMSR, &status); | 224 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_BMSR, |
225 | &status); | ||
218 | if (err) | 226 | if (err) |
219 | return err; | 227 | return err; |
220 | *link_ok = (status & BMSR_LSTATUS) != 0; | 228 | *link_ok = (status & BMSR_LSTATUS) != 0; |
@@ -228,9 +236,10 @@ static int vsc8211_get_link_status_fiber(struct cphy *cphy, int *link_ok, | |||
228 | else | 236 | else |
229 | sp = SPEED_10; | 237 | sp = SPEED_10; |
230 | } else if (status & BMSR_ANEGCOMPLETE) { | 238 | } else if (status & BMSR_ANEGCOMPLETE) { |
231 | err = mdio_read(cphy, 0, MII_LPA, &lpa); | 239 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_LPA, &lpa); |
232 | if (!err) | 240 | if (!err) |
233 | err = mdio_read(cphy, 0, MII_ADVERTISE, &adv); | 241 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, MII_ADVERTISE, |
242 | &adv); | ||
234 | if (err) | 243 | if (err) |
235 | return err; | 244 | return err; |
236 | 245 | ||
@@ -270,23 +279,23 @@ static int vsc8211_set_automdi(struct cphy *phy, int enable) | |||
270 | { | 279 | { |
271 | int err; | 280 | int err; |
272 | 281 | ||
273 | err = mdio_write(phy, 0, VSC8211_EXT_PAGE_AXS, 0x52b5); | 282 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, VSC8211_EXT_PAGE_AXS, 0x52b5); |
274 | if (err) | 283 | if (err) |
275 | return err; | 284 | return err; |
276 | 285 | ||
277 | err = mdio_write(phy, 0, 18, 0x12); | 286 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, 18, 0x12); |
278 | if (err) | 287 | if (err) |
279 | return err; | 288 | return err; |
280 | 289 | ||
281 | err = mdio_write(phy, 0, 17, enable ? 0x2803 : 0x3003); | 290 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, 17, enable ? 0x2803 : 0x3003); |
282 | if (err) | 291 | if (err) |
283 | return err; | 292 | return err; |
284 | 293 | ||
285 | err = mdio_write(phy, 0, 16, 0x87fa); | 294 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, 16, 0x87fa); |
286 | if (err) | 295 | if (err) |
287 | return err; | 296 | return err; |
288 | 297 | ||
289 | err = mdio_write(phy, 0, VSC8211_EXT_PAGE_AXS, 0); | 298 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, VSC8211_EXT_PAGE_AXS, 0); |
290 | if (err) | 299 | if (err) |
291 | return err; | 300 | return err; |
292 | 301 | ||
@@ -315,7 +324,7 @@ static int vsc8211_intr_handler(struct cphy *cphy) | |||
315 | unsigned int cause; | 324 | unsigned int cause; |
316 | int err, cphy_cause = 0; | 325 | int err, cphy_cause = 0; |
317 | 326 | ||
318 | err = mdio_read(cphy, 0, VSC8211_INTR_STATUS, &cause); | 327 | err = t3_mdio_read(cphy, MDIO_DEVAD_NONE, VSC8211_INTR_STATUS, &cause); |
319 | if (err) | 328 | if (err) |
320 | return err; | 329 | return err; |
321 | 330 | ||
@@ -367,12 +376,13 @@ int t3_vsc8211_phy_prep(struct cphy *phy, struct adapter *adapter, | |||
367 | SUPPORTED_TP | SUPPORTED_IRQ, "10/100/1000BASE-T"); | 376 | SUPPORTED_TP | SUPPORTED_IRQ, "10/100/1000BASE-T"); |
368 | msleep(20); /* PHY needs ~10ms to start responding to MDIO */ | 377 | msleep(20); /* PHY needs ~10ms to start responding to MDIO */ |
369 | 378 | ||
370 | err = mdio_read(phy, 0, VSC8211_EXT_CTRL, &val); | 379 | err = t3_mdio_read(phy, MDIO_DEVAD_NONE, VSC8211_EXT_CTRL, &val); |
371 | if (err) | 380 | if (err) |
372 | return err; | 381 | return err; |
373 | if (val & VSC_CTRL_MEDIA_MODE_HI) { | 382 | if (val & VSC_CTRL_MEDIA_MODE_HI) { |
374 | /* copper interface, just need to configure the LEDs */ | 383 | /* copper interface, just need to configure the LEDs */ |
375 | return mdio_write(phy, 0, VSC8211_LED_CTRL, 0x100); | 384 | return t3_mdio_write(phy, MDIO_DEVAD_NONE, VSC8211_LED_CTRL, |
385 | 0x100); | ||
376 | } | 386 | } |
377 | 387 | ||
378 | phy->caps = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg | | 388 | phy->caps = SUPPORTED_1000baseT_Full | SUPPORTED_Autoneg | |
@@ -380,20 +390,20 @@ int t3_vsc8211_phy_prep(struct cphy *phy, struct adapter *adapter, | |||
380 | phy->desc = "1000BASE-X"; | 390 | phy->desc = "1000BASE-X"; |
381 | phy->ops = &vsc8211_fiber_ops; | 391 | phy->ops = &vsc8211_fiber_ops; |
382 | 392 | ||
383 | err = mdio_write(phy, 0, VSC8211_EXT_PAGE_AXS, 1); | 393 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, VSC8211_EXT_PAGE_AXS, 1); |
384 | if (err) | 394 | if (err) |
385 | return err; | 395 | return err; |
386 | 396 | ||
387 | err = mdio_write(phy, 0, VSC8211_SIGDET_CTRL, 1); | 397 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, VSC8211_SIGDET_CTRL, 1); |
388 | if (err) | 398 | if (err) |
389 | return err; | 399 | return err; |
390 | 400 | ||
391 | err = mdio_write(phy, 0, VSC8211_EXT_PAGE_AXS, 0); | 401 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, VSC8211_EXT_PAGE_AXS, 0); |
392 | if (err) | 402 | if (err) |
393 | return err; | 403 | return err; |
394 | 404 | ||
395 | err = mdio_write(phy, 0, VSC8211_EXT_CTRL, | 405 | err = t3_mdio_write(phy, MDIO_DEVAD_NONE, VSC8211_EXT_CTRL, |
396 | val | VSC_CTRL_CLAUSE37_VIEW); | 406 | val | VSC_CTRL_CLAUSE37_VIEW); |
397 | if (err) | 407 | if (err) |
398 | return err; | 408 | return err; |
399 | 409 | ||