/** @file
@copyright
Copyright 2010 - 2021 Intel Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef _IIO_REGS_H_
#define _IIO_REGS_H_
#include
/**
==================================================================================================
================================== General Definitions ==================================
==================================================================================================
**/
//-----------------------------------------------------------------------------------
// PCIE port index for SKX
//------------------------------------------------------------------------------------
#define SOCKET_0_INDEX 0
#define SOCKET_1_INDEX 21
#define SOCKET_2_INDEX 42
#define SOCKET_3_INDEX 63
#define SOCKET_4_INDEX 84
#define SOCKET_5_INDEX 105
#define SOCKET_6_INDEX 126
#define SOCKET_7_INDEX 147
//-----------------------------------------------------------------------------------
// Number's ports per stack definitions for 10nm
//------------------------------------------------------------------------------------
// STACK0 for: ICX-SP
#define NUMBER_PORTS_PER_STACK0_10NM 1
// NON-STACK0 for: ICX-SP
#define NUMBER_PORTS_PER_NON_STACK0_10NM 4
#define MAX_UNCORE_STACK 2 // MAX_LOGIC_IIO_STACK - MAX_IIO_STACK
#define MaxIIO MAX_SOCKET
#define TOTAL_CB3_DEVICES 64 // IOAT_TOTAL_FUNCS * MAX_SOCKET. Note: this covers up to 8S.
#define MAX_TOTAL_PORTS (MAX_SOCKET * NUMBER_PORTS_PER_SOCKET) //NUMBER_PORTS_PER_SOCKET * MaxIIO. As now, treats setup S0-S3 = S4_S7 as optimal
#define NUM_IAX 1 //number of IAX per Socket
#define NUM_DSA 1 //number of DSA per Socket
#define NUM_CPM 1 //number of CPM per Socket
#define NUM_HQM 1 //number of HQM per Socket
#define TOTAL_IIO_STACKS 48 // MAX_SOCKET * MAX_IIO_STACK. Not reflect architecture but only sysHost structure!
#define NUMBER_NTB_PORTS_PER_SOCKET 5
#ifndef MAX_STACKS_PER_SOCKET
#define MAX_STACKS_PER_SOCKET 6
#define MAX_IIO_PORTS_PER_STACK NUMBER_PORTS_PER_NON_STACK0_10NM
#endif
#define MAX_IOU_PER_SOCKET 5 // Max IOU number per socket for all silicon generation, SKX, ICX
#define MAX_VMD_ROOTPORTS_PER_PCH 20 // Max number of rootports in PCH
#define MAX_VMD_STACKS_PER_SOCKET 6 // Max number of stacks per socket supported by VMD
#define MAX_RETIMERS_PER_STACK 2 // Max number of retimers per pcie controller (ICX-SP)
#ifndef NELEMENTS
#define NELEMENTS(Array) (sizeof(Array)/sizeof((Array)[0]))
#endif
/**
==================================================================================================
================================== IIO Root Port Definitions ====================
==================================================================================================
**/
// Max BDFs definitions
#define MAX_FUNC_NUM 8
#define MAX_DEV_NUM 32
#define MAX_BUS_NUM 256
#define PORT_0_INDEX 0
#define PORT_A_INDEX 1
#define PORT_B_INDEX 2
#define PORT_C_INDEX 3
#define PORT_D_INDEX 4
#define PORT_E_INDEX 5
#define PORT_F_INDEX 6
#define PORT_G_INDEX 7
#define PORT_H_INDEX 8
//-----------------------------------------------------------------------------------
// Port Index definition for SKX
//------------------------------------------------------------------------------------
#define PCIE_PORT_2_DEV 0x02
// IOU0
#define PORT_1A_INDEX 1
#define PORT_1B_INDEX 2
#define PORT_1C_INDEX 3
#define PORT_1D_INDEX 4
// IOU1
#define PORT_2A_INDEX 5
#define PORT_2B_INDEX 6
#define PORT_2C_INDEX 7
#define PORT_2D_INDEX 8
// IOU2
#define PORT_3A_INDEX 9
#define PORT_3B_INDEX 10
#define PORT_3C_INDEX 11
#define PORT_3D_INDEX 12
//MCP0
#define PORT_4A_INDEX 13
#define PORT_4B_INDEX 14
#define PORT_4C_INDEX 15
#define PORT_4D_INDEX 16
//MCP1
#define PORT_5A_INDEX 17
#define PORT_5B_INDEX 18
#define PORT_5C_INDEX 19
#define PORT_5D_INDEX 20
//-----------------------------------------------------------------------------------
// Port Index definition for ICX-SP
//------------------------------------------------------------------------------------
// IOU0
#define PORT_1A_INDEX_1 1
#define PORT_1B_INDEX_1 2
#define PORT_1C_INDEX_1 3
#define PORT_1D_INDEX_1 4
// IOU1
#define PORT_2A_INDEX_2 5
#define PORT_2B_INDEX_2 6
#define PORT_2C_INDEX_2 7
#define PORT_2D_INDEX_2 8
// IOU2
#define PORT_3A_INDEX_3 9
#define PORT_3B_INDEX_3 10
#define PORT_3C_INDEX_3 11
#define PORT_3D_INDEX_3 12
// IOU3
#define PORT_4A_INDEX_4 13
#define PORT_4B_INDEX_4 14
#define PORT_4C_INDEX_4 15
#define PORT_4D_INDEX_4 16
// IOU4
#define PORT_5A_INDEX_5 17
#define PORT_5B_INDEX_5 18
#define PORT_5C_INDEX_5 19
#define PORT_5D_INDEX_5 20
//
// Port Config Mode
//
#define REGULAR_PCIE_OWNERSHIP 0
#define VMD_OWNERSHIP 3
#define PCIEAIC_OCL_OWNERSHIP 4
#define NUMBER_TRACE_HUB_PER_SOCKET 1
//
// 8 stacks per each socket:
// - 6 IIO stacks (used only on 14nm systems - 10nm doesn't hide per-IP)
// - 2 uncore stacks (used only for 10nm systems - 14nm doesn't have such stacks)
//
#define NUM_DEVHIDE_REGS_PER_STACK 8 // devHide 32-bit register for each function on stack
#define NUM_DEVHIDE_UNCORE_STACKS 2 // number of uncore stacks in setup structure
#define NUM_DEVHIDE_IIO_STACKS 6 // number of IIO stacks ins etup structure
#if MaxIIO > 4
#define MAX_DEVHIDE_REGS_PER_SYSTEM 512 // MAX_DEVHIDE_REGS_PER_SOCKET * MaxIIO
#else
#define MAX_DEVHIDE_REGS_PER_SYSTEM 256 // MAX_DEVHIDE_REGS_PER_SOCKET * MaxIIO
#endif
#endif //_IIO_REGS_H_