netxen: add 2MB PCI memory support

New revision of netxen chip has 2MB PCI memory. Older chips
had 128MB addressable PCI memory. To retain compatibility,
this patch adds function pointers based on pci bar0 size.

Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c
index dfde5908..7323cd7 100644
--- a/drivers/net/netxen/netxen_nic_init.c
+++ b/drivers/net/netxen/netxen_nic_init.c
@@ -124,7 +124,7 @@
 	u32 state = 0, loops = 0, err = 0;
 
 	/* Window 1 call */
-	state = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+	state = adapter->pci_read_normalize(adapter, CRB_CMDPEG_STATE);
 
 	if (state == PHAN_INITIALIZE_ACK)
 		return 0;
@@ -132,7 +132,7 @@
 	while (state != PHAN_INITIALIZE_COMPLETE && loops < 2000) {
 		udelay(100);
 		/* Window 1 call */
-		state = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+		state = adapter->pci_read_normalize(adapter, CRB_CMDPEG_STATE);
 
 		loops++;
 	}
@@ -143,14 +143,14 @@
 		return err;
 	}
 	/* Window 1 call */
-	writel(INTR_SCHEME_PERPORT,
-	       NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_CAPABILITIES_HOST));
-	writel(MSI_MODE_MULTIFUNC,
-	       NETXEN_CRB_NORMALIZE(adapter, CRB_NIC_MSI_MODE_HOST));
-	writel(MPORT_MULTI_FUNCTION_MODE,
-	       NETXEN_CRB_NORMALIZE(adapter, CRB_MPORT_MODE));
-	writel(PHAN_INITIALIZE_ACK,
-	       NETXEN_CRB_NORMALIZE(adapter, CRB_CMDPEG_STATE));
+	adapter->pci_write_normalize(adapter,
+			CRB_NIC_CAPABILITIES_HOST, INTR_SCHEME_PERPORT);
+	adapter->pci_write_normalize(adapter,
+			CRB_NIC_MSI_MODE_HOST, MSI_MODE_MULTIFUNC);
+	adapter->pci_write_normalize(adapter,
+			CRB_MPORT_MODE, MPORT_MULTI_FUNCTION_MODE);
+	adapter->pci_write_normalize(adapter,
+			CRB_CMDPEG_STATE, PHAN_INITIALIZE_ACK);
 
 	return err;
 }
@@ -811,7 +811,7 @@
 				buf[i].data = NETXEN_NIC_XDMA_RESET;
 			}
 
-			netxen_nic_hw_write_wx(adapter, off, &buf[i].data, 4);
+			adapter->hw_write_wx(adapter, off, &buf[i].data, 4);
 
 			if (init_delay == 1) {
 				msleep(1000);
@@ -824,7 +824,7 @@
 		/* disable_peg_cache_all */
 
 		/* unreset_net_cache */
-		netxen_nic_hw_read_wx(adapter, NETXEN_ROMUSB_GLB_SW_RESET, &val,
+		adapter->hw_read_wx(adapter, NETXEN_ROMUSB_GLB_SW_RESET, &val,
 				      4);
 		netxen_crb_writelit_adapter(adapter, NETXEN_ROMUSB_GLB_SW_RESET,
 					    (val & 0xffffff0f));
@@ -884,8 +884,8 @@
 	hi = (addr >> 32) & 0xffffffff;
 	lo = addr & 0xffffffff;
 
-	writel(hi, NETXEN_CRB_NORMALIZE(adapter, CRB_HOST_DUMMY_BUF_ADDR_HI));
-	writel(lo, NETXEN_CRB_NORMALIZE(adapter, CRB_HOST_DUMMY_BUF_ADDR_LO));
+	adapter->pci_write_normalize(adapter, CRB_HOST_DUMMY_BUF_ADDR_HI, hi);
+	adapter->pci_write_normalize(adapter, CRB_HOST_DUMMY_BUF_ADDR_LO, lo);
 
 	return 0;
 }
@@ -924,10 +924,10 @@
 
 	if (!pegtune_val) {
 		do {
-			val = readl(NETXEN_CRB_NORMALIZE
-				  (adapter, CRB_CMDPEG_STATE));
-			pegtune_val = readl(NETXEN_CRB_NORMALIZE
-				  (adapter, NETXEN_ROMUSB_GLB_PEGTUNE_DONE));
+			val = adapter->pci_read_normalize(adapter,
+					CRB_CMDPEG_STATE);
+			pegtune_val = adapter->pci_read_normalize(adapter,
+					NETXEN_ROMUSB_GLB_PEGTUNE_DONE);
 
 			if (val == PHAN_INITIALIZE_COMPLETE ||
 				val == PHAN_INITIALIZE_ACK)
@@ -951,7 +951,7 @@
 	uint32_t temp, temp_state, temp_val;
 	int rv = 0;
 
-	temp = readl(NETXEN_CRB_NORMALIZE(adapter, CRB_TEMP_STATE));
+	temp = adapter->pci_read_normalize(adapter, CRB_TEMP_STATE);
 
 	temp_state = nx_get_temp_state(temp);
 	temp_val = nx_get_temp_val(temp);
@@ -1119,8 +1119,8 @@
 		recv_ctx->status_rx_consumer = consumer;
 
 		/* Window = 1 */
-		writel(consumer, NETXEN_CRB_NORMALIZE(adapter,
-					recv_ctx->crb_sts_consumer));
+		adapter->pci_write_normalize(adapter,
+				recv_ctx->crb_sts_consumer, consumer);
 	}
 
 	return count;
@@ -1264,9 +1264,9 @@
 		rcv_desc->begin_alloc = index;
 		rcv_desc->producer = producer;
 			/* Window = 1 */
-		writel((producer - 1) & (rcv_desc->max_rx_desc_count - 1),
-		       NETXEN_CRB_NORMALIZE(adapter,
-			       rcv_desc->crb_rcv_producer));
+		adapter->pci_write_normalize(adapter,
+				rcv_desc->crb_rcv_producer,
+				(producer-1) & (rcv_desc->max_rx_desc_count-1));
 			/*
 			 * Write a doorbell msg to tell phanmon of change in
 			 * receive ring producer
@@ -1344,9 +1344,9 @@
 		rcv_desc->begin_alloc = index;
 		rcv_desc->producer = producer;
 			/* Window = 1 */
-		writel((producer - 1) & (rcv_desc->max_rx_desc_count - 1),
-		       NETXEN_CRB_NORMALIZE(adapter,
-			       rcv_desc->crb_rcv_producer));
+		adapter->pci_write_normalize(adapter,
+			rcv_desc->crb_rcv_producer,
+				(producer-1) & (rcv_desc->max_rx_desc_count-1));
 			wmb();
 	}
 }