From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dhananjay Phadke Subject: [PATCH NEXT 5/7] netxen: onchip memory access change Date: Thu, 15 Oct 2009 23:09:11 -0700 Message-ID: <1255673353-31797-6-git-send-email-dhananjay@netxen.com> References: <1255673353-31797-1-git-send-email-dhananjay@netxen.com> Cc: netdev@vger.kernel.org, Amit Kumar Salecha To: davem@davemloft.net Return-path: Received: from mvnat01.qlogic.com ([198.186.3.73]:45978 "HELO unm84.unmin.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with SMTP id S1754551AbZJPGKb (ORCPT ); Fri, 16 Oct 2009 02:10:31 -0400 In-Reply-To: <1255673353-31797-1-git-send-email-dhananjay@netxen.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Amit Kumar Salecha Add support for different windowing scheme for on chip memory in future chip revisions. This is required by diagnostic tools. Signed-off-by: Amit Kumar Salecha Signed-off-by: Dhananjay Phadke --- drivers/net/netxen/netxen_nic_hdr.h | 3 +++ drivers/net/netxen/netxen_nic_hw.c | 21 ++++++++++++++------- drivers/net/netxen/netxen_nic_main.c | 6 +++++- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/drivers/net/netxen/netxen_nic_hdr.h b/drivers/net/netxen/netxen_nic_hdr.h index d40fe33..7386a7c 100644 --- a/drivers/net/netxen/netxen_nic_hdr.h +++ b/drivers/net/netxen/netxen_nic_hdr.h @@ -867,6 +867,9 @@ enum { (PCIX_SN_WINDOW_F0 + (0x20 * (func))) :\ (PCIX_SN_WINDOW_F4 + (0x10 * ((func)-4)))) +#define PCIX_OCM_WINDOW (0x10800) +#define PCIX_OCM_WINDOW_REG(func) (PCIX_OCM_WINDOW + 0x20 * (func)) + #define PCIX_TARGET_STATUS (0x10118) #define PCIX_TARGET_STATUS_F1 (0x10160) #define PCIX_TARGET_STATUS_F2 (0x10164) diff --git a/drivers/net/netxen/netxen_nic_hw.c b/drivers/net/netxen/netxen_nic_hw.c index 52a2f2d..ce07d13 100644 --- a/drivers/net/netxen/netxen_nic_hw.c +++ b/drivers/net/netxen/netxen_nic_hw.c @@ -31,6 +31,7 @@ #define MASK(n) ((1ULL<<(n))-1) #define MN_WIN(addr) (((addr & 0x1fc0000) >> 1) | ((addr >> 25) & 0x3ff)) #define OCM_WIN(addr) (((addr & 0x1ff0000) >> 1) | ((addr >> 25) & 0x3ff)) +#define OCM_WIN_P3P(addr) (addr & 0xffc0000) #define MS_WIN(addr) (addr & 0x0ffc0000) #define GET_MEM_OFFS_2M(addr) (addr & MASK(18)) @@ -1347,13 +1348,19 @@ netxen_nic_pci_set_window_2M(struct netxen_adapter *adapter, return -EIO; } - window = OCM_WIN(addr); - writel(window, adapter->ahw.ocm_win_crb); - win_read = readl(adapter->ahw.ocm_win_crb); - if ((win_read >> 7) != window) { - if (printk_ratelimit()) - dev_warn(&pdev->dev, "failed to set OCM window\n"); - return -EIO; + if (NX_IS_REVISION_P3P(adapter->ahw.revision_id)) { + window = OCM_WIN_P3P(addr); + writel(window, adapter->ahw.ocm_win_crb); + } else { + window = OCM_WIN(addr); + writel(window, adapter->ahw.ocm_win_crb); + win_read = readl(adapter->ahw.ocm_win_crb); + if ((win_read >> 7) != window) { + if (printk_ratelimit()) + dev_warn(&pdev->dev, + "failed to set OCM window\n"); + return -EIO; + } } adapter->ahw.ocm_win = window; diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 2d772dd..30d9afe 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c @@ -649,7 +649,11 @@ netxen_setup_pci_map(struct netxen_adapter *adapter) adapter->ahw.pci_base1 = mem_ptr1; adapter->ahw.pci_base2 = mem_ptr2; - if (!NX_IS_REVISION_P2(adapter->ahw.revision_id)) { + if (NX_IS_REVISION_P3P(adapter->ahw.revision_id)) { + adapter->ahw.ocm_win_crb = netxen_get_ioaddr(adapter, + NETXEN_PCIX_PS_REG(PCIX_OCM_WINDOW_REG(pci_func))); + + } else if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) { adapter->ahw.ocm_win_crb = netxen_get_ioaddr(adapter, NETXEN_PCIX_PS_REG(PCIE_MN_WINDOW_REG(pci_func))); } -- 1.6.0.2