|
@@ -268,6 +268,12 @@ static int intel_reset ( struct intel_nic *intel ) {
|
268
|
268
|
uint32_t pba;
|
269
|
269
|
uint32_t ctrl;
|
270
|
270
|
uint32_t status;
|
|
271
|
+ uint32_t orig_ctrl;
|
|
272
|
+ uint32_t orig_status;
|
|
273
|
+
|
|
274
|
+ /* Record initial control and status register values */
|
|
275
|
+ orig_ctrl = ctrl = readl ( intel->regs + INTEL_CTRL );
|
|
276
|
+ orig_status = readl ( intel->regs + INTEL_STATUS );
|
271
|
277
|
|
272
|
278
|
/* Force RX and TX packet buffer allocation, to work around an
|
273
|
279
|
* errata in ICH devices.
|
|
@@ -285,7 +291,6 @@ static int intel_reset ( struct intel_nic *intel ) {
|
285
|
291
|
}
|
286
|
292
|
|
287
|
293
|
/* Always reset MAC. Required to reset the TX and RX rings. */
|
288
|
|
- ctrl = readl ( intel->regs + INTEL_CTRL );
|
289
|
294
|
writel ( ( ctrl | INTEL_CTRL_RST ), intel->regs + INTEL_CTRL );
|
290
|
295
|
mdelay ( INTEL_RESET_DELAY_MS );
|
291
|
296
|
|
|
@@ -309,9 +314,10 @@ static int intel_reset ( struct intel_nic *intel ) {
|
309
|
314
|
status = readl ( intel->regs + INTEL_STATUS );
|
310
|
315
|
if ( ( intel->flags & INTEL_NO_PHY_RST ) ||
|
311
|
316
|
( status & INTEL_STATUS_LU ) ) {
|
312
|
|
- DBGC ( intel, "INTEL %p %sMAC reset (ctrl %08x)\n", intel,
|
|
317
|
+ DBGC ( intel, "INTEL %p %sMAC reset (%08x/%08x was "
|
|
318
|
+ "%08x/%08x)\n", intel,
|
313
|
319
|
( ( intel->flags & INTEL_NO_PHY_RST ) ? "forced " : "" ),
|
314
|
|
- ctrl );
|
|
320
|
+ ctrl, status, orig_ctrl, orig_status );
|
315
|
321
|
return 0;
|
316
|
322
|
}
|
317
|
323
|
|
|
@@ -323,8 +329,10 @@ static int intel_reset ( struct intel_nic *intel ) {
|
323
|
329
|
/* PHY reset is not self-clearing on all models */
|
324
|
330
|
writel ( ctrl, intel->regs + INTEL_CTRL );
|
325
|
331
|
mdelay ( INTEL_RESET_DELAY_MS );
|
|
332
|
+ status = readl ( intel->regs + INTEL_STATUS );
|
326
|
333
|
|
327
|
|
- DBGC ( intel, "INTEL %p MAC+PHY reset (ctrl %08x)\n", intel, ctrl );
|
|
334
|
+ DBGC ( intel, "INTEL %p MAC+PHY reset (%08x/%08x was %08x/%08x)\n",
|
|
335
|
+ intel, ctrl, status, orig_ctrl, orig_status );
|
328
|
336
|
return 0;
|
329
|
337
|
}
|
330
|
338
|
|