AM2432: LTSSM Link is not succeeded in the case of Gen 1 and Lane=1

Part Number: AM2432
Other Parts Discussed in Thread: SYSCONFIG

Tool/software:

Hi,

 

The customer is now evaluating PCIe on AM243x. They’ve configured PCIe as Gen1 and Lane1 on SysConfig, and they were able to read the ID set by Pcie_getVendorId() after calling Pcie_cfgEP()

However, the result of Pcie_isLinkUp() was not able to be SUCCESS, and cannot verify the link of LTSSM.

When they tried to debug Pcie_isLinkUp(), they found that 0x2 is read as ltssmState.

 

Based on this situation, they would like to ask you two questions below.

1.  PERST# on the pin 11 of PCIe connector on AM243x EVM is Open. Do they need any signal input to this pin ?

     According to the PCIe specification, it is better to input the signal, but they assume that the system will operate even without this signal.

2.  Could you please tell them the data specification of ltssmState gotten by Pcie_isLinkUp() ?

     In the function, as written in red below, it is compared with "PCIe_LTSSM_L0-1", so is it a -1 relationship with enum PCIe_LTSSMState ?

     https://software-dl.ti.com/mcu-plus-sdk/esd/AM243X/10_00_00_20/exports/docs/api_guide_am243x/group__DRV__PCIE__MODULE.html

 

int32_t Pcie_isLinkUp(Pcie_Handle handle)
{
    int32_t status = SystemP_SUCCESS;
    Pcie_Registers getRegs;

    memset (&getRegs, 0, sizeof(getRegs));

    Pcie_TiConfDeviceCmdReg   ltssmStateReg;
    getRegs.tiConfDeviceCmd = &ltssmStateReg;

    memset (&ltssmStateReg,  0, sizeof(ltssmStateReg));

    uint8_t ltssmState = 0xFFu;

    status = Pcie_readRegs (handle, PCIE_LOCATION_LOCAL, &getRegs);

    if (status != SystemP_SUCCESS)
        return status;

    ltssmState = ltssmStateReg.ltssmState;

    if (ltssmState == PCIE_LTSSM_L0-1)
        return SystemP_SUCCESS;
    else
        return SystemP_TIMEOUT;

    return status;
}

Thanks and regards,

Hideaki