TT Zephyr Platforms 18.11.99
Tenstorrent Firmware
Loading...
Searching...
No Matches
pcie.c File Reference
#include "cm2dm_msg.h"
#include "init.h"
#include "irqnum.h"
#include "noc2axi.h"
#include "pcie.h"
#include "pciesd.h"
#include "reg.h"
#include "status_reg.h"
#include "timer.h"
#include <stdbool.h>
#include <tenstorrent/post_code.h>
#include <tenstorrent/sys_init_defines.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/drivers/misc/bh_fwtable.h>
#include <zephyr/init.h>
#include <zephyr/sys/util.h>

Data Structures

struct  PCIE_SII_NOC_TLB_DATA_reg_t
union  PCIE_SII_NOC_TLB_DATA_reg_u
struct  PCIE_SII_APP_PCIE_CTL_reg_t
union  PCIE_SII_APP_PCIE_CTL_reg_u
struct  PCIE_SII_LTSSM_STATE_reg_t
union  PCIE_SII_LTSSM_STATE_reg_u

Macros

#define PCIE_SERDES0_ALPHACORE_TLB   0
#define PCIE_SERDES1_ALPHACORE_TLB   1
#define PCIE_SERDES0_CTRL_TLB   2
#define PCIE_SERDES1_CTRL_TLB   3
#define PCIE_SII_REG_TLB   4
#define PCIE_TLB_CONFIG_TLB   5
#define SERDES_INST_OFFSET   0x04000000
#define PCIE_SERDES_SOC_REG_OFFSET   0x03000000
#define PCIE_TLB_CONFIG_ADDR   0x1FC00000
#define DBI_PCIE_TLB_ID   62
#define PCIE_NOC_TLB_DATA_REG_OFFSET2(ID)
#define PCIE_NOC_TLB_DATA_REG_OFFSET(ID)
#define DBI_ADDR   ((uint64_t)DBI_PCIE_TLB_ID << 58)
#define CMN_A_REG_MAP_BASE_ADDR   0xFFFFFFFFE1000000LL
#define SERDES_SS_0_A_REG_MAP_BASE_ADDR   0xFFFFFFFFE0000000LL
#define PCIE_SII_A_REG_MAP_BASE_ADDR   0xFFFFFFFFF0000000LL
#define PCIE_SII_A_NOC_TLB_DATA_62__REG_OFFSET   0x0000022C
#define PCIE_SII_A_NOC_TLB_DATA_0__REG_OFFSET   0x00000134
#define PCIE_SII_A_APP_PCIE_CTL_REG_OFFSET   0x0000005C
#define PCIE_SII_A_LTSSM_STATE_REG_OFFSET   0x00000128
#define PCIE_SII_NOC_TLB_DATA_REG_DEFAULT   (0x00000000)
#define PCIE_SII_APP_PCIE_CTL_REG_DEFAULT   (0x00000000)
#define PCIE_SII_LTSSM_STATE_REG_DEFAULT   (0x00000000)

Functions

static void WritePcieTlbConfigReg (const uint32_t addr, const uint32_t data)
static void WriteDbiRegByte (const uint32_t addr, const uint8_t data)
static void WriteSiiReg (const uint32_t addr, const uint32_t data)
static uint32_t ReadSiiReg (const uint32_t addr)
static void WriteSerdesAlphaCoreReg (const uint8_t inst, const uint32_t addr, const uint32_t data)
static uint32_t ReadSerdesAlphaCoreReg (const uint8_t inst, const uint32_t addr)
static void WriteSerdesCtrlReg (const uint8_t inst, const uint32_t addr, const uint32_t data)
static void SetupDbiAccess (void)
static void InitResetInterrupt (uint8_t pcie_inst)
static void SetupOutboundTlbs (void)
static void ConfigurePCIeTlbs (uint8_t pcie_inst)
static void SetupInboundTlbs (void)
static void SetupSii (void)
static PCIeInitStatus PCIeInitComm (uint8_t pcie_inst, uint8_t num_serdes_instance, PCIeDeviceType device_type, uint8_t max_pcie_speed)
static void TogglePerst (void)
static PCIeInitStatus PollForLinkUp (uint8_t pcie_inst)
PCIeInitStatus PCIeInit (uint8_t pcie_inst, const FwTable_PciPropertyTable *pci_prop_table)
static int pcie_init (void)
 SYS_INIT_APP (pcie_init)

Variables

static const struct device *const fwtable_dev = DEVICE_DT_GET(DT_NODELABEL(fwtable))
static const struct devicegpio3 = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(gpio3))

Macro Definition Documentation

◆ CMN_A_REG_MAP_BASE_ADDR

#define CMN_A_REG_MAP_BASE_ADDR   0xFFFFFFFFE1000000LL

◆ DBI_ADDR

#define DBI_ADDR   ((uint64_t)DBI_PCIE_TLB_ID << 58)

◆ DBI_PCIE_TLB_ID

#define DBI_PCIE_TLB_ID   62

◆ PCIE_NOC_TLB_DATA_REG_OFFSET

#define PCIE_NOC_TLB_DATA_REG_OFFSET ( ID)
Value:
#define PCIE_NOC_TLB_DATA_REG_OFFSET2(ID)
Definition pcie.c:38

◆ PCIE_NOC_TLB_DATA_REG_OFFSET2

#define PCIE_NOC_TLB_DATA_REG_OFFSET2 ( ID)
Value:
PCIE_SII_A_NOC_TLB_DATA_##ID##__REG_OFFSET

◆ PCIE_SERDES0_ALPHACORE_TLB

#define PCIE_SERDES0_ALPHACORE_TLB   0

◆ PCIE_SERDES0_CTRL_TLB

#define PCIE_SERDES0_CTRL_TLB   2

◆ PCIE_SERDES1_ALPHACORE_TLB

#define PCIE_SERDES1_ALPHACORE_TLB   1

◆ PCIE_SERDES1_CTRL_TLB

#define PCIE_SERDES1_CTRL_TLB   3

◆ PCIE_SERDES_SOC_REG_OFFSET

#define PCIE_SERDES_SOC_REG_OFFSET   0x03000000

◆ PCIE_SII_A_APP_PCIE_CTL_REG_OFFSET

#define PCIE_SII_A_APP_PCIE_CTL_REG_OFFSET   0x0000005C

◆ PCIE_SII_A_LTSSM_STATE_REG_OFFSET

#define PCIE_SII_A_LTSSM_STATE_REG_OFFSET   0x00000128

◆ PCIE_SII_A_NOC_TLB_DATA_0__REG_OFFSET

#define PCIE_SII_A_NOC_TLB_DATA_0__REG_OFFSET   0x00000134

◆ PCIE_SII_A_NOC_TLB_DATA_62__REG_OFFSET

#define PCIE_SII_A_NOC_TLB_DATA_62__REG_OFFSET   0x0000022C

◆ PCIE_SII_A_REG_MAP_BASE_ADDR

#define PCIE_SII_A_REG_MAP_BASE_ADDR   0xFFFFFFFFF0000000LL

◆ PCIE_SII_APP_PCIE_CTL_REG_DEFAULT

#define PCIE_SII_APP_PCIE_CTL_REG_DEFAULT   (0x00000000)

◆ PCIE_SII_LTSSM_STATE_REG_DEFAULT

#define PCIE_SII_LTSSM_STATE_REG_DEFAULT   (0x00000000)

◆ PCIE_SII_NOC_TLB_DATA_REG_DEFAULT

#define PCIE_SII_NOC_TLB_DATA_REG_DEFAULT   (0x00000000)

◆ PCIE_SII_REG_TLB

#define PCIE_SII_REG_TLB   4

◆ PCIE_TLB_CONFIG_ADDR

#define PCIE_TLB_CONFIG_ADDR   0x1FC00000

◆ PCIE_TLB_CONFIG_TLB

#define PCIE_TLB_CONFIG_TLB   5

◆ SERDES_INST_OFFSET

#define SERDES_INST_OFFSET   0x04000000

◆ SERDES_SS_0_A_REG_MAP_BASE_ADDR

#define SERDES_SS_0_A_REG_MAP_BASE_ADDR   0xFFFFFFFFE0000000LL

Function Documentation

◆ ConfigurePCIeTlbs()

void ConfigurePCIeTlbs ( uint8_t pcie_inst)
static

◆ InitResetInterrupt()

void InitResetInterrupt ( uint8_t pcie_inst)
static

◆ pcie_init()

int pcie_init ( void )
static

◆ PCIeInit()

PCIeInitStatus PCIeInit ( uint8_t pcie_inst,
const FwTable_PciPropertyTable * pci_prop_table )

◆ PCIeInitComm()

PCIeInitStatus PCIeInitComm ( uint8_t pcie_inst,
uint8_t num_serdes_instance,
PCIeDeviceType device_type,
uint8_t max_pcie_speed )
static

◆ PollForLinkUp()

PCIeInitStatus PollForLinkUp ( uint8_t pcie_inst)
static

◆ ReadSerdesAlphaCoreReg()

uint32_t ReadSerdesAlphaCoreReg ( const uint8_t inst,
const uint32_t addr )
inlinestatic

◆ ReadSiiReg()

uint32_t ReadSiiReg ( const uint32_t addr)
inlinestatic

◆ SetupDbiAccess()

void SetupDbiAccess ( void )
inlinestatic

◆ SetupInboundTlbs()

void SetupInboundTlbs ( void )
static

◆ SetupOutboundTlbs()

void SetupOutboundTlbs ( void )
static

◆ SetupSii()

void SetupSii ( void )
static

◆ SYS_INIT_APP()

SYS_INIT_APP ( pcie_init )

◆ TogglePerst()

void TogglePerst ( void )
static

◆ WriteDbiRegByte()

void WriteDbiRegByte ( const uint32_t addr,
const uint8_t data )
inlinestatic

◆ WritePcieTlbConfigReg()

void WritePcieTlbConfigReg ( const uint32_t addr,
const uint32_t data )
inlinestatic

◆ WriteSerdesAlphaCoreReg()

void WriteSerdesAlphaCoreReg ( const uint8_t inst,
const uint32_t addr,
const uint32_t data )
inlinestatic

◆ WriteSerdesCtrlReg()

void WriteSerdesCtrlReg ( const uint8_t inst,
const uint32_t addr,
const uint32_t data )
inlinestatic

◆ WriteSiiReg()

void WriteSiiReg ( const uint32_t addr,
const uint32_t data )
inlinestatic

Variable Documentation

◆ fwtable_dev

const struct device* const fwtable_dev = DEVICE_DT_GET(DT_NODELABEL(fwtable))
static

◆ gpio3

const struct device* gpio3 = DEVICE_DT_GET_OR_NULL(DT_NODELABEL(gpio3))
static