File diff 95e39e5412bd → bd21c8aa7237
vmkdrivers/src_9/drivers/net/nx_nic/unm_nic_hw.c
Show inline comments
 
/*
 
 * Copyright (C) 2003 - 2009 NetXen, Inc.
 
 * Copyright (C) 2009 - QLogic Corporation.
 
 * All rights reserved.
 
 * 
 
 * This program is free software; you can redistribute it and/or
 
 * modify it under the terms of the GNU General Public License
 
 * as published by the Free Software Foundation; either version 2
 
 * of the License, or (at your option) any later version.
 
 * 
 
 * This program is distributed in the hope that it will be useful, but
 
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
 * GNU General Public License for more details.
 
 * 
 
 * You should have received a copy of the GNU General Public License
 
 * along with this program; if not, write to the Free Software
 
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 
 * MA 02111-1307, USA.
 
 * 
 
 * The full GNU General Public License is included in this distribution
 
 * in the file called LICENSE.
 
 * 
 
 */
 
/*
 
 * Source file for NIC routines to access the Phantom hardware
 
 *
 
 * $Id: //depot/vmkdrivers/vsphere-2015/src_9/drivers/net/nx_nic/unm_nic_hw.c#1 $
 
 * $Id: //depot/vmkdrivers/vsphere60p01/src_9/drivers/net/nx_nic/unm_nic_hw.c#1 $
 
 *
 
 */
 
#include <linux/delay.h>
 
#include <linux/netdevice.h>
 
#include <linux/ethtool.h>
 
#include <linux/version.h>
 
#include <linux/pci.h>
 
#include "unm_nic.h"
 
#include "unm_nic_hw.h"
 
#include "nic_cmn.h"
 
#include "unm_version.h"
 
#include "unm_brdcfg.h"
 
#include "nxhal_nic_interface.h"
 
#include "nxhal_nic_api.h"
 
#include "nxhal.h"
 

	
 
#define MASK(n)			((1ULL<<(n))-1)
 
#define MN_WIN(addr) (((addr & 0x1fc0000) >> 1) | ((addr >> 25) & 0x3ff))
 
//#define OCM_WIN(addr) MN_WIN(addr)
 
#define OCM_WIN(addr) (((addr & 0x1ff0000) >> 1) | ((addr >> 25) & 0x3ff))  // 64K?
 
#define MS_WIN(addr) (addr & 0x0ffc0000)
 
#define UNM_PCI_MN_2M   (0)
 
#define UNM_PCI_MS_2M   (0x80000)
 
#define UNM_PCI_OCM0_2M (0xc0000)
 
#define VALID_OCM_ADDR(addr) (((addr) & 0x3f800) != 0x3f800)
 
#define GET_MEM_OFFS_2M(addr) (addr & MASK(18))
 

	
 
#define CRB_BLK(off)	((off >> 20) & 0x3f)
 
#define CRB_SUBBLK(off)	((off >> 16) & 0xf)
 
#define CRB_WINDOW_2M	(0x130060)
 
#define UNM_PCI_CAMQM_2M_END	(0x04800800UL)
 
#define CRB_HI(off)	((crb_hub_agt[CRB_BLK(off)] << 20) | ((off) & 0xf0000))
 
#define UNM_PCI_CAMQM_2M_BASE	(0x000ff800UL)
 
#define CRB_INDIRECT_2M	(0x1e0000UL)
 

	
 

	
 
crb_128M_2M_block_map_t crb_128M_2M_map[64] = {
 
    {{{0, 0,         0,         0}}},		/* 0: PCI */
 
    {{{1, 0x0100000, 0x0102000, 0x120000},	/* 1: PCIE */
 
	  {1, 0x0110000, 0x0120000, 0x130000},
 
	  {1, 0x0120000, 0x0122000, 0x124000},
 
	  {1, 0x0130000, 0x0132000, 0x126000},
 
	  {1, 0x0140000, 0x0142000, 0x128000},
 
	  {1, 0x0150000, 0x0152000, 0x12a000},
 
	  {1, 0x0160000, 0x0170000, 0x110000},
 
	  {1, 0x0170000, 0x0172000, 0x12e000},
 
	  {0, 0x0000000, 0x0000000, 0x000000},
 
	  {0, 0x0000000, 0x0000000, 0x000000},