d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER START
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * The contents of this file are subject to the terms of the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Common Development and Distribution License (the "License").
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You may not use this file except in compliance with the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * or http://www.opensolaris.org/os/licensing.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * See the License for the specific language governing permissions
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * and limitations under the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * When distributing Covered Code, include this CDDL HEADER in each
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * If applicable, add the following below this CDDL HEADER, with the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * fields enclosed by brackets "[]" replaced with your own identifying
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * information: Portions Copyright [yyyy] [name of copyright owner]
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * CDDL HEADER END
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Copyright 2014 QLogic Corporation
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * The contents of this file are subject to the terms of the
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * QLogic End User License (the "License").
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You may not use this file except in compliance with the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * You can obtain a copy of the License at
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * http://www.qlogic.com/Resources/Documents/DriverDownloadHelp/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * QLogic_End_User_Software_License.txt
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * See the License for the specific language governing permissions
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * and limitations under the License.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Name: nvm_map.h
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Description: Everest NVRAM map
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Created: 05/03/2006 eilong
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * $Date: 2014/07/16 $ $Revision: #111 $
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#ifndef NVM_MAP_H
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_MAP_H
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#include "mcp_shmem.h"
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#if !defined(MFW) && !defined(VMWARE)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#include "types.h"
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#include "invm_cfg.h"
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define __FAR__ /*Need to define this as NULL, as it is defined in preboot make file*/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#include "fcb_nvm.h"
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#endif
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define CRC_MAGIC_VALUE 0xDEBB20E3
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define CRC32_POLYNOMIAL 0xEDB88320
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Boot Strap Region *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _bootstrap_region_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t magic_value; /* a pattern not likely to occur randomly */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NVM_MAGIC_VALUE 0x669955aa
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t sram_start_addr; /* where to locate boot code (byte addr) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NVM_DEFAULT_SRAM_ADDR 0x08000010
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t code_len; /* boot code length (in dwords) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t code_start_addr; /* location of code on media (media byte addr) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t crc; /* 32-bit CRC */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} bootstrap_region_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#if !defined(MFW) && !defined(VMWARE)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi NVM_ISCSI_CFG_BLOCK_V2 iscsi_cfg[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi NVM_FCB_CFG_BLOCK fcoe_cfg[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} shadow_image_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#else
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t iscsi_cfg[4][0x800];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t fcoe_cfg[4][0x400];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} shadow_image_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#endif
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Directories Region *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _code_entry_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t sram_start_addr; /* Relative to the execution CPU, see code image
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi agent in code_attribute field */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t code_attribute;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_MASK 0xf0800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Images which are stored in extended dir have bit 0 set to 1 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_IN_EXTENDED_DIR_MASK 0x00000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_BC2 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_MBA 0x10000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_NC_SI_CMN 0x20000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_MODULES_PN 0x30000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_IPMI 0x40000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_ISCSI_BOOT_CFG2 0x50000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_NC_SI_EVEREST 0x60000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_L2T 0x70000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_L2C 0x80000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_L2X 0x90000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_L2U 0xa0000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_ISCSI_BOOT_CPRG 0xb0000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_ISCSI_BOOT_CFG 0xc0000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_ISCSI_BOOT 0xd0000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_FCOE_BOOT_CFG 0x10000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_FCOE_BOOT 0x20000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_FCOE_BOOT_CFG2 0x30000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_FCOE_BOOT_CPRG_EVRST 0x40000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_NIC_PARTITION_CFG 0x50000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_FCOE_BOOT_CFG3 0x60000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_FCOE_BOOT_CFG4 0x70000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_ISCSI_BOOT_CFG3 0x80000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_ISCSI_BOOT_CFG4 0x90000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_BOOT_CFG_SHADOW 0x10800001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_VPD 0xa0000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_E3_WC 0xb0000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_E3_PCIE 0xc0000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_VNTAG_DATA 0xd0000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM1 0xe0000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM2 0xf0000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM3 0x10000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_MFW1 0x20000003 /* Replace BC1 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_MFW2 0x30000003 /* Replace BC2 + NCSI */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM4 0x40000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM5 0x50000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM6 0x60000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM7 0x70000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM8 0x80000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_MFW2_A 0x90000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_OCNVM 0xa0000003 /*ocnvm*/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_VNTAG_PROFILES_DATA 0xd0000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_NVM_CFG_EXTENDED_SHARED 0xe0000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_E3_WCV2 0xf0000003 /*wc_v2*/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_E3_PCIEV2 0x00800003 /*pcie_v2*/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_CCM 0x90800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* for shaddow SWIMs feature */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM1_B 0x10800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM2_B 0x20800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM3_B 0x30800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM4_B 0x40800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM5_B 0x50800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM6_B 0x60800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM7_B 0x70800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_SWIM8_B 0x80800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_CCM 0x90800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_HW_SET 0xa0800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_USR_BLK 0xb0000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_ISCSI_PERS 0xc0000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* next few groups of image: 0x90800003 -- 0xf0800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi 0x00800001 -- 0xf0800001*/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_EXTENDED_DIR 0xe0000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_MAX 0xf0000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_BC1 CODE_IMAGE_TYPE_MAX
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_TYPE_MASK 0x0f000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_NONE 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_HOST 0x01000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_MCP 0x02000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_TSTORM 0x03000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_CSTORM 0x04000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_XSTORM 0x05000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_USTORM 0x06000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_E3WC 0x07000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_E3PCIE 0x08000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_AGENT_HOST_BCV 0x09000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_TYPE_BDN 0xc0800003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CODE_IMAGE_LENGTH_MASK 0x007ffffc
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t nvm_start_addr;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} code_entry_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define CODE_ENTRY_MAX 16
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define CODE_ENTRY_EXTENDED_DIR_IDX 15
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MAX_IMAGES_IN_EXTENDED_DIR 64
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MAX_SPARE_NUM_LENGTH 20
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* version since which shadow feature is supported */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MFW_SHADOW_FEATURE_SUPPORTED_MAJOR 7
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MFW_SHADOW_FEATURE_SUPPORTED_MINOR 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MFW_SHADOW_FEATURE_SUPPORTED_BUILD 24
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _dir_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi code_entry_t code[CODE_ENTRY_MAX];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t unused[5]; /* Must be all zeroes */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t spare_part_num[MAX_SPARE_NUM_LENGTH];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Similar to the part number in VPD */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t crc;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} dir_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Manufacturing Information Region *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _manuf_info_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{ /* NVM Offset (size) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t length; /* 0x100 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MANUF_INFO_FORMAT_REV_ID ('A'<<24)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MANUF_INFO_FORMAT_REV_MASK 0xff000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MANUF_INFO_LENGTH_MASK 0x0000ffff
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MANUF_INFO_LENGTH 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi shared_hw_cfg_t shared_hw_config; /* 0x104 (0x128) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi port_hw_cfg_t port_hw_config[PORT_MAX]; /* 0x12c(400*2=0x320) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t crc; /* 0x44c */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} manuf_info_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * Features Information Region *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _feature_info_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi shared_feat_cfg_t shared_feature_config; /* 0x450 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi port_feat_cfg_t port_feature_config[PORT_MAX]; /* 0x454 (116*2=0xe8) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t crc; /* 0x53c */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} feature_info_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * VPD Region *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MAX_VPD_R_LENGTH 128
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MAX_VPD_W_LENGTH 128
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct media_vpd_read_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t data[MAX_VPD_R_LENGTH];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} media_vpd_read_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct media_vpd_write_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t data[MAX_VPD_W_LENGTH];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} media_vpd_write_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct media_vpd_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi media_vpd_read_t vpd_r; /* 0x540 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi media_vpd_write_t vpd_w; /* 0x5c0 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} media_vpd_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * License Region *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SHARED_SECRET_BYTE_CNT 20
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define OEM_OPAQUE_DATA_BYTE_CNT 32
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MAC_ADDRESS_ALIGNED_BYTE_CNT 8
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* Upgrade License Region */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define UPGRADE_KEY_COUNT 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _upgrade_key_info_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t key_available;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define KEY_AVAILABLE_UPGRADE_KEY_0 0x1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi license_key_t upgrade_key[UPGRADE_KEY_COUNT];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t hwkey_mac[MAC_ADDRESS_ALIGNED_BYTE_CNT]; /* Phony MAC address for HW key
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi (SVID followed by MAC addr) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t oem_opaque[OEM_OPAQUE_DATA_BYTE_CNT]; /* Used via BMAPI */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t crc;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} upgrade_key_info_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* Manufacturing License Region */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _manuf_key_info_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t revision;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define LICENSE_REV_A 'A'
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define LICENSE_REV_MASK 0x0000ffff
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define LICENSE_SIGNATURE_MASK 0xffff0000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define LICENSE_SIGNATURE 0x4c4b0000 /* LK */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t shared_secret[SHARED_SECRET_BYTE_CNT]; /* Customer dependent */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define SSECRET_ENCODED_32BIT_VALUE 0x5a5a5a5a
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define SSECRET_ENCODED_8BIT_VALUE 0x5a
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi license_key_t manuf_key;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t oem_opaque[OEM_OPAQUE_DATA_BYTE_CNT]; /* Used via BMAPI */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t crc;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} manuf_key_info_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************************************************
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi * NVRAM FULL MAP *
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ****************************************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _nvm_image_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{ /* NVM Offset (size) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi bootstrap_region_t bootstrap; /* 0x0 (0x14) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi dir_t dir; /* 0x14 (0xec) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi manuf_info_t manuf_info; /* 0x100 (0x350) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi feature_info_t feature_info; /* 0x450 (0xf0) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi media_vpd_t vpd; /* 0x540 (0x100) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi upgrade_key_info_t upgrade_key_info[PORT_MAX]; /* 0x640 (100*2=0xc8) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi manuf_key_info_t manuf_key_info[PORT_MAX]; /* 0x708 (112*2=0xe0) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} nvm_image_t; /* 0x7e8 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_OFFSET(f) ((u32_t)((int_ptr_t)(&(((nvm_image_t*)0)->f))))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* This struct defines the additional NVM configuration parameters needed for PATH 1 in E2 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _path1_nvm_image_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{ /* NVM Offset (size) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi manuf_info_t manuf_info; /* 0x7e8 (0x350) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi feature_info_t feature_info; /* 0xb38 (0xf0) */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} path1_nvm_image_t; /* 0xdd0 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define PATH1_NVM_OFFSET(f) (sizeof(nvm_image_t) + __builtin_offsetof(path1_nvm_image_t, f))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_OFFSET_PATH(field,path) \
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi ((u32_t)((path == 0) ? (NVM_OFFSET(field)) : (PATH1_NVM_OFFSET(field))))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*** NVM RETAIN section ***/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/****************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// Max nvm retain bitmap size is currently set to the size of manuf_info
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// To be to preserve manuf_info in a dword resolution, we need sizeof(manuf_info_t) >> 2
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi// To represent each dword in bit, divide by 32 ( >>5), and add 1 to round up.
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_RETAIN_BEGIN 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_RETAIN_END (PATH1_NVM_OFFSET(feature_info) + sizeof(feature_info_t))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_RETAIN_ADDR_TO_ARR_IDX(addr) ((addr) >> 7)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_RETAIN_ADDR_TO_DW_BIT(addr) (1<<(((addr) >> 2) & 0x1f))
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_RETAIN_BITMAP_SIZE (NVM_RETAIN_ADDR_TO_ARR_IDX(NVM_RETAIN_END) + 1)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/* These structs define the modules image block in NVM */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi/*******************************************************/
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SFF_VENDOR_NAME_LEN 16
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SFF_VENDOR_OUI_LEN 3
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define SFF_VENDOR_PN_LEN 16
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _module_info_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ctrl_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MODULE_INFO_FLAG_CHECK_VENDOR_NAME (1 << 0)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MODULE_INFO_FLAG_CHECK_VENDOR_OUI (1 << 1)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MODULE_INFO_FLAG_CHECK_VENDOR_PN (1 << 2)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MODULE_INFO_FLAG_CHECK_BRANDING (1 << 3)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char vendor_name[SFF_VENDOR_NAME_LEN];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t vendor_oui[SFF_VENDOR_OUI_LEN];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char vendor_pn[SFF_VENDOR_PN_LEN];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} module_info_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _module_image_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t format_version;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MODULE_IMAGE_VERSION_1 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* With branding */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MODULE_IMAGE_VERSION_2 2 /* With branding */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t no_modules;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* This array length depends on the no_modules */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi module_info_t modules[1];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} module_image_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _vpd_image_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t format_revision;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define VPD_IMAGE_VERSION 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* This array length depends on the number of VPD fields */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t vpd_data[1];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} vpd_image_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _extended_dir_image_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t no_images; /* Number of images included in
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi the extended dir image */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t total_byte_cnt; /* Total byte_cnt of all images
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi included in the extended dir */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi code_entry_t extended_dir_images[MAX_IMAGES_IN_EXTENDED_DIR];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Array of images information
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi within extended dir image */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} extended_dir_image_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define MAC_PARTITION_FORMAT_VERSION 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct macp_gbl_cfg {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* Reserved bits: 0-0 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_GBL_CFG_FORMAT_VER_MASK 0x000000FF
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_GBL_CFG_FORMAT_VER_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 gbl_cfg;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_GBL_CFG_GBL_CFG_MASK 0x0000FF00
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_GBL_CFG_GBL_CFG_SHIFT 8
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_GBL_CFG_GBL_CFG_DISABLED 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_GBL_CFG_GBL_CFG_ENABLED 0x00000100
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct macp_port_cfg {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 port_cfg;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_FLOW_CTRL_MASK 0x000000FF
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_FLOW_CTRL_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_FLOW_CTRL_AUTO 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_FLOW_CTRL_TX_ONLY 0x00000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_FLOW_CTRL_RX_ONLY 0x00000002
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_FLOW_CTRL_BOTH 0x00000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_FLOW_CTRL_NONE 0x00000004
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_PHY_LINK_SPD_MASK 0x0000FF00
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_PHY_LINK_SPD_SHIFT 8
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_PHY_LINK_SPD_1G 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_PHY_LINK_SPD_2_DOT_5G 0x00000100
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_PHY_LINK_SPD_10G 0x00000200
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_PHY_LINK_SPD_20G 0x00000400
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_NUM_PARTITIONS_MASK 0x00FF0000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_PORT_CFG_NUM_PARTITIONS_SHIFT 16
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 Reserved0[2];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct macp_func_cfg {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 func_cfg;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_FLAGS_MASK 0x0000007F
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_FLAGS_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_FLAGS_ENABLED 0x00000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_FLAGS_ETHERNET 0x00000002
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_FLAGS_ISCSI_OFFLOAD 0x00000004
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_FLAGS_FCOE_OFFLOAD 0x00000008
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* pause on host ring */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_PAUSE_ON_HOST_RING_MASK 0x00000080
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_PAUSE_ON_HOST_RING_SHIFT 7
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_PAUSE_ON_HOST_RING_DISABLED 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_PAUSE_ON_HOST_RING_ENABLED 0x00000080
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_BW_WEIGHT_MASK 0x0000FF00
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_BW_WEIGHT_SHIFT 8
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_BW_MAX_MASK 0xFFFF0000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_BW_MAX_SHIFT 16
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 net_mac_addr_upper;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 net_mac_addr_lower;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 iscsi_mac_addr_upper;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 iscsi_mac_addr_lower;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_mac_addr_upper;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_mac_addr_lower;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_node_wwn_upper;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_node_wwn_lower;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_port_wwn_upper;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_port_wwn_lower;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 pf_allocation;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* number of vfs in function, if 0 - sriov disabled */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_NUMBER_OF_VFS_MASK 0x000000FF
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MACP_FUNC_CFG_NUMBER_OF_VFS_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _nvm_nic_part_cfg_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct macp_gbl_cfg global_cfg;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct macp_port_cfg port_cfg[NVM_PATH_MAX][PORT_MAX];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct macp_func_cfg func_cfg[E1H_FUNC_MAX];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved2[72];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* NOTE: CRC will be appended by nvm_program procedure */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi}nvm_nic_part_cfg_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NIV_FORMAT_VERSION_ONE 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NIV_MAX_PROFILE_LEN 80
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NIV_NUM_PROFILES_SUPPORTED 64
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct niv_gbl_cfg { /* NVRAM OFFSET */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 gbl_cfg; /* 0x1000 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_GBL_CFG_IMAGE_VER_MASK 0x000000FF
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_GBL_CFG_IMAGE_VER_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 Reserved0[2]; /* 0x1004 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct niv_port_cfg { /* port 0: 0x100C port 1: 0x1018 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 port_cfg; /* 0x100C */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_FLOW_CTRL_MASK 0x000000FF
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_FLOW_CTRL_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_FLOW_CTRL_AUTO 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_FLOW_CTRL_TX_ONLY 0x00000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_FLOW_CTRL_RX_ONLY 0x00000002
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_FLOW_CTRL_BOTH 0x00000003
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_FLOW_CTRL_NONE 0x00000004
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_PHY_LINK_SPD_MASK 0x0000FF00
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_PHY_LINK_SPD_SHIFT 8
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_PHY_LINK_SPD_1G 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_PHY_LINK_SPD_2_DOT_5G 0x00000100
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_PHY_LINK_SPD_10G 0x00000200
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_PORT_CFG_PHY_LINK_SPD_20G 0x00000400
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct niv_func_cfg { /* port 0: 0x1024 port 1: 0x10AC */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 bw_params; /* 0x1024 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_bw_weight_MASK 0x0000FFFF
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_bw_weight_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_bw_max_MASK 0xFFFF0000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_bw_max_SHIFT 16
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 func_cfg_1; /* 0x1028 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_vif_type_MASK 0x0000007F
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_vif_type_SHIFT 0
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_vif_type_ENABLED 0x00000001
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_vif_type_ETHERNET 0x00000002
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_vif_type_ISCSI_OFFLOAD 0x00000004
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_vif_type_FCOE_OFFLOAD 0x00000008
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* pause on host ring */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_PAUSE_ON_HOST_RING_MASK 0x00000080
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_PAUSE_ON_HOST_RING_SHIFT 7
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_PAUSE_ON_HOST_RING_DISABLED 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_PAUSE_ON_HOST_RING_ENABLED 0x00000080
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_remote_boot_enabled_MASK 0x0000FF00
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_remote_boot_enabled_SHIFT 8
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_remote_boot_enabled_DISABLED 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_remote_boot_enabled_ENABLED 0x00000100
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_profile_enabled_MASK 0x00FF0000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_profile_enabled_SHIFT 16
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_profile_enabled_DISABLED 0x00000000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define NIV_FUNC_CFG_profile_enabled_ENABLED 0x00010000
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 net_mac_addr_upper; /* 0x102B */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 net_mac_addr_lower; /* 0x102F */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 iscsi_mac_addr_upper; /* 0x1034 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 iscsi_mac_addr_lower; /* 0x1038 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_mac_addr_upper; /* 0x103C */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_mac_addr_lower; /* 0x1040 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_node_wwn_upper; /* 0x1044 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_node_wwn_lower; /* 0x1048 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_port_wwn_upper; /* 0x104C */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 fcoe_port_wwn_lower; /* 0x1050 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 profile_name[80]; /* 0x1054 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 Reserved0[2]; /* 0x10A4 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _nvm_niv_cfg_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct niv_gbl_cfg global_cfg; // global config
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct niv_port_cfg port_cfg[NVM_PATH_MAX][PORT_MAX]; // per port config
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32 reserved[2];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct niv_func_cfg func_cfg[E1H_FUNC_MAX]; // per func config
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} nvm_niv_cfg_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct niv_port_profiles_cfg { /* port 0: 0x1600 port 1: 0x2A00 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8 profiles_list[64][80]; /* 0x1600 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _nvm_niv_port_profile_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct niv_port_profiles_cfg port_cfg[PORT_MAX]; // per port config
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} nvm_niv_port_profile_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _hw_set_info_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t reg_type;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define GRC_REG_TYPE 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define PHY_REG_TYPE 2
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define PCI_REG_TYPE 4
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t bank_num;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t pf_num;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t operation;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define READ_OP 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define WRITE_OP 2
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define RMW_SET_OP 3
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define RMW_CLR_OP 4
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t reg_addr;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t reg_data;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t reset_type;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define POR_RESET_TYPE (1 << 0)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define HARD_RESET_TYPE (1 << 1)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define CORE_RESET_TYPE (1 << 2)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define MCP_RESET_TYPE (1 << 3)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define PERSET_ASSERT (1 << 4)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define PERSET_DEASSERT (1 << 5)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} hw_set_info_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchitypedef struct _hw_set_image_t
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi{
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t format_version;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define HW_SET_IMAGE_VERSION 1
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t no_hw_sets;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi /* This array length depends on the no_hw_sets */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi hw_set_info_t hw_sets[1];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi} hw_set_image_t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct iscsi_flash_meta_data {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t signature;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved_a;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t version;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t block_size;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t target_size;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t target_max;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved[5];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define ISID_SIZE 6
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct iscsi_flash_session {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t version;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ctrl_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_ENTRY_ENABLE (0)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_AUTO_CONNECT (1)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_AUTO_SEND_TGT_DISABLE (2)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_DISCOVERY_SESS (3)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_ENABLE_IMM_DATA (4)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_ENABLE_INIT_R2T (5)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_DATA_SEQ_IN_ORDER (6)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_DATA_PDU_IN_ORDER (7)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_CHAP_AUTH (8)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_BIDI_CHAP (9)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_DISCOVERY_LOGOUT (10)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_CTRL_DISCOVERY_AUTH_OPT (11)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t stat_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_SESS_STAT_IS_BOOT_TARGET (0)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char portal_type[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t first_burst_len;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t def_time2wait;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t def_time2retain;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t max_outstanding_r2t;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t tsid;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t isid[ISID_SIZE]; /* ISID_SIZE = 6 */
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t erl;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t def_taskmgmt_tmo;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t max_burst_len;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char targetalias[32];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t tpgt;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t discovery_parent_idx;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t discovery_parent_type;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t chap_in_idx;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t chap_out_idx;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t reserved_a;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char username[64];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char username_in[64];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char password[64];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char password_in[64];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char targetname[256];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct iscsi_flash_connection {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ctrl_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_HEADER_DIGEST (0)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_DATA_DIGEST (1)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_SNACK_REQ (2)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_TCP_TIMESTAMP_STAT (3)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_TCP_NAGLE_DISABLE (4)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_TCP_WSF_DISABLE (5)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_TCP_TIMER_SCALE (6)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_TCP_TIMESTAMP_ENABLE (7)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_CTRL_IP_FRAG_DISABLE (8)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t stat_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi #define FLASH_CONN_STAT_IS_FW_ASSIGNED_IPV6 (0)
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t max_recv_dlength;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t max_xmit_dlength;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t keepalive_tmo;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t port;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ipaddress[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t link_local_ipv6[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t redirect_ipaddr[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t max_segment_size;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t local_port;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t ipv4_tos;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t ipv6_traffic_class;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t ipv6_flow_label;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved_a;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t tcp_xmit_wsf;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t tcp_recv_wsf;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved_b[2];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t statsn;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t exp_statsn;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved[12];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct iscsi_flash_initiator {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t ctrl_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t stat_flags;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t hwaddress[6];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved_a[2];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t initiator_ip[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t subnet_mask[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u32_t gateway[4];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u16_t vlan_id;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi u8_t reserved_b[2];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi char initiatorname[256];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct iscsi_flashnode {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct iscsi_flash_session session;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct iscsi_flash_connection connection;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct iscsi_flash_initiator initiator;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchistruct iscsi_persistent_image {
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct iscsi_flash_meta_data meta_data;
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi struct iscsi_flashnode flahsnode[16];
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi};
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#define NVM_CFG_EXTENDED_SHARED_IMAGE_MAX_SIZE 256
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi
d14abf155341d55053c76eeec58b787a456b753bRobert Mustacchi#endif //NVM_MAP_H