diff options
| -rw-r--r-- | drivers/net/s2io-regs.h | 1 | ||||
| -rw-r--r-- | drivers/net/s2io.c | 16 |
2 files changed, 16 insertions, 1 deletions
diff --git a/drivers/net/s2io-regs.h b/drivers/net/s2io-regs.h index 01f08d726ace..f25264f2638e 100644 --- a/drivers/net/s2io-regs.h +++ b/drivers/net/s2io-regs.h | |||
| @@ -66,6 +66,7 @@ struct XENA_dev_config { | |||
| 66 | #define ADAPTER_STATUS_RC_PRC_QUIESCENT vBIT(0xFF,16,8) | 66 | #define ADAPTER_STATUS_RC_PRC_QUIESCENT vBIT(0xFF,16,8) |
| 67 | #define ADAPTER_STATUS_MC_DRAM_READY s2BIT(24) | 67 | #define ADAPTER_STATUS_MC_DRAM_READY s2BIT(24) |
| 68 | #define ADAPTER_STATUS_MC_QUEUES_READY s2BIT(25) | 68 | #define ADAPTER_STATUS_MC_QUEUES_READY s2BIT(25) |
| 69 | #define ADAPTER_STATUS_RIC_RUNNING s2BIT(26) | ||
| 69 | #define ADAPTER_STATUS_M_PLL_LOCK s2BIT(30) | 70 | #define ADAPTER_STATUS_M_PLL_LOCK s2BIT(30) |
| 70 | #define ADAPTER_STATUS_P_PLL_LOCK s2BIT(31) | 71 | #define ADAPTER_STATUS_P_PLL_LOCK s2BIT(31) |
| 71 | 72 | ||
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index d5113dd712c2..121cb100f93a 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
| @@ -84,7 +84,7 @@ | |||
| 84 | #include "s2io.h" | 84 | #include "s2io.h" |
| 85 | #include "s2io-regs.h" | 85 | #include "s2io-regs.h" |
| 86 | 86 | ||
| 87 | #define DRV_VERSION "2.0.26.6" | 87 | #define DRV_VERSION "2.0.26.10" |
| 88 | 88 | ||
| 89 | /* S2io Driver name & version. */ | 89 | /* S2io Driver name & version. */ |
| 90 | static char s2io_driver_name[] = "Neterion"; | 90 | static char s2io_driver_name[] = "Neterion"; |
| @@ -1100,6 +1100,20 @@ static int init_nic(struct s2io_nic *nic) | |||
| 1100 | msleep(500); | 1100 | msleep(500); |
| 1101 | val64 = readq(&bar0->sw_reset); | 1101 | val64 = readq(&bar0->sw_reset); |
| 1102 | 1102 | ||
| 1103 | /* Ensure that it's safe to access registers by checking | ||
| 1104 | * RIC_RUNNING bit is reset. Check is valid only for XframeII. | ||
| 1105 | */ | ||
| 1106 | if (nic->device_type == XFRAME_II_DEVICE) { | ||
| 1107 | for (i = 0; i < 50; i++) { | ||
| 1108 | val64 = readq(&bar0->adapter_status); | ||
| 1109 | if (!(val64 & ADAPTER_STATUS_RIC_RUNNING)) | ||
| 1110 | break; | ||
| 1111 | msleep(10); | ||
| 1112 | } | ||
| 1113 | if (i == 50) | ||
| 1114 | return -ENODEV; | ||
| 1115 | } | ||
| 1116 | |||
| 1103 | /* Enable Receiving broadcasts */ | 1117 | /* Enable Receiving broadcasts */ |
| 1104 | add = &bar0->mac_cfg; | 1118 | add = &bar0->mac_cfg; |
| 1105 | val64 = readq(&bar0->mac_cfg); | 1119 | val64 = readq(&bar0->mac_cfg); |
