aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorAmit S. Kale <amitkale@netxen.com>2007-02-05 10:35:26 -0500
committerJeff Garzik <jeff@garzik.org>2007-02-06 19:08:03 -0500
commit1fcca1a5fc81689d191b7132318970c969b4b635 (patch)
tree1145d6760e25c3a94532608d6115c41667921dc6 /drivers/net
parent8d5ca6ec4e5c7208fe90aaecab9544bf8c08f0dc (diff)
NetXen: Firmware crb init changes.
NetXen: firmware crb init changes. Signed-off-by: Amit S. Kale <amitkale@netxen.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/netxen/netxen_nic_init.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index 973af96337a9..00d0524fef13 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -110,6 +110,7 @@ static void crb_addr_transform_setup(void)
110 crb_addr_transform(CAM); 110 crb_addr_transform(CAM);
111 crb_addr_transform(C2C1); 111 crb_addr_transform(C2C1);
112 crb_addr_transform(C2C0); 112 crb_addr_transform(C2C0);
113 crb_addr_transform(SMB);
113} 114}
114 115
115int netxen_init_firmware(struct netxen_adapter *adapter) 116int netxen_init_firmware(struct netxen_adapter *adapter)
@@ -543,9 +544,13 @@ int netxen_pinit_from_rom(struct netxen_adapter *adapter, int verbose)
543 } 544 }
544 for (i = 0; i < n; i++) { 545 for (i = 0; i < n; i++) {
545 546
546 off = 547 off = netxen_decode_crb_addr((unsigned long)buf[i].addr);
547 netxen_decode_crb_addr((unsigned long)buf[i].addr) + 548 if (off == NETXEN_ADDR_ERROR) {
548 NETXEN_PCI_CRBSPACE; 549 printk(KERN_ERR"CRB init value out of range %lx\n",
550 buf[i].addr);
551 continue;
552 }
553 off += NETXEN_PCI_CRBSPACE;
549 /* skipping cold reboot MAGIC */ 554 /* skipping cold reboot MAGIC */
550 if (off == NETXEN_CAM_RAM(0x1fc)) 555 if (off == NETXEN_CAM_RAM(0x1fc))
551 continue; 556 continue;
@@ -662,6 +667,7 @@ void netxen_phantom_init(struct netxen_adapter *adapter, int pegtune_val)
662 int loops = 0; 667 int loops = 0;
663 668
664 if (!pegtune_val) { 669 if (!pegtune_val) {
670 val = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
665 while (val != PHAN_INITIALIZE_COMPLETE && loops < 200000) { 671 while (val != PHAN_INITIALIZE_COMPLETE && loops < 200000) {
666 udelay(100); 672 udelay(100);
667 schedule(); 673 schedule();