diff options
| -rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 37 | ||||
| -rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 3 |
2 files changed, 22 insertions, 18 deletions
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index bdb143d2b5c7..055bb61d6e77 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
| @@ -944,28 +944,31 @@ int netxen_phantom_init(struct netxen_adapter *adapter, int pegtune_val) | |||
| 944 | u32 val = 0; | 944 | u32 val = 0; |
| 945 | int retries = 60; | 945 | int retries = 60; |
| 946 | 946 | ||
| 947 | if (!pegtune_val) { | 947 | if (pegtune_val) |
| 948 | do { | 948 | return 0; |
| 949 | val = NXRD32(adapter, CRB_CMDPEG_STATE); | ||
| 950 | 949 | ||
| 951 | if (val == PHAN_INITIALIZE_COMPLETE || | 950 | do { |
| 952 | val == PHAN_INITIALIZE_ACK) | 951 | val = NXRD32(adapter, CRB_CMDPEG_STATE); |
| 953 | return 0; | ||
| 954 | 952 | ||
| 955 | msleep(500); | 953 | switch (val) { |
| 954 | case PHAN_INITIALIZE_COMPLETE: | ||
| 955 | case PHAN_INITIALIZE_ACK: | ||
| 956 | return 0; | ||
| 957 | case PHAN_INITIALIZE_FAILED: | ||
| 958 | goto out_err; | ||
| 959 | default: | ||
| 960 | break; | ||
| 961 | } | ||
| 956 | 962 | ||
| 957 | } while (--retries); | 963 | msleep(500); |
| 958 | 964 | ||
| 959 | if (!retries) { | 965 | } while (--retries); |
| 960 | pegtune_val = NXRD32(adapter, | ||
| 961 | NETXEN_ROMUSB_GLB_PEGTUNE_DONE); | ||
| 962 | printk(KERN_WARNING "netxen_phantom_init: init failed, " | ||
| 963 | "pegtune_val=%x\n", pegtune_val); | ||
| 964 | return -1; | ||
| 965 | } | ||
| 966 | } | ||
| 967 | 966 | ||
| 968 | return 0; | 967 | NXWR32(adapter, CRB_CMDPEG_STATE, PHAN_INITIALIZE_FAILED); |
| 968 | |||
| 969 | out_err: | ||
| 970 | dev_warn(&adapter->pdev->dev, "firmware init failed\n"); | ||
| 971 | return -EIO; | ||
| 969 | } | 972 | } |
| 970 | 973 | ||
| 971 | static int | 974 | static int |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 43ac333898bf..2919a2d12bf4 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
| @@ -705,7 +705,7 @@ netxen_start_firmware(struct netxen_adapter *adapter, int request_fw) | |||
| 705 | first_driver = (adapter->ahw.pci_func == 0); | 705 | first_driver = (adapter->ahw.pci_func == 0); |
| 706 | 706 | ||
| 707 | if (!first_driver) | 707 | if (!first_driver) |
| 708 | return 0; | 708 | goto wait_init; |
| 709 | 709 | ||
| 710 | first_boot = NXRD32(adapter, NETXEN_CAM_RAM(0x1fc)); | 710 | first_boot = NXRD32(adapter, NETXEN_CAM_RAM(0x1fc)); |
| 711 | 711 | ||
| @@ -752,6 +752,7 @@ netxen_start_firmware(struct netxen_adapter *adapter, int request_fw) | |||
| 752 | | (_NETXEN_NIC_LINUX_SUBVERSION); | 752 | | (_NETXEN_NIC_LINUX_SUBVERSION); |
| 753 | NXWR32(adapter, CRB_DRIVER_VERSION, val); | 753 | NXWR32(adapter, CRB_DRIVER_VERSION, val); |
| 754 | 754 | ||
| 755 | wait_init: | ||
| 755 | /* Handshake with the card before we register the devices. */ | 756 | /* Handshake with the card before we register the devices. */ |
| 756 | err = netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE); | 757 | err = netxen_phantom_init(adapter, NETXEN_NIC_PEG_TUNE); |
| 757 | if (err) { | 758 | if (err) { |
