This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCIe CSL Device ID and Vendor ID are not rightly decoded

Other Parts Discussed in Thread: SYSBIOS

Hello,

I'm using the C6678 PCIe module with pdk_C6678_1_1_2_6.

I noticed something : in the CSL there is an error about the device_vendor_id register.

It is not rightly decoded.

TI vendor id is 0x104C

However in the file cslr_pcie_cfg_endpoint.h there is :

#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_VENDOR_ID_MASK (0xFFFF0000u)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_VENDOR_ID_SHIFT (0x00000010u)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_VENDOR_ID_RESETVAL (0x00008888u)

#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_DEVICE_ID_MASK (0x0000FFFFu)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_DEVICE_ID_SHIFT (0x00000000u)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_DEVICE_ID_RESETVAL (0x0000104Cu)

#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_RESETVAL (0x8888104Cu)

As you can see the reset value of the DEVICE ID is 0x104C which is in fact the Vendor id...


Also when I use the LLD to read the vendor id and device id on the Root Complex with the following code :

memset (&idReg,   0, sizeof(idReg));
memset (&getRegs,   0, sizeof(getRegs));
getRegs.vndDevId = &idReg;
if ((retVal = Pcie_readRegs (handle, pcie_LOCATION_LOCAL, &getRegs)) != pcie_RET_OK)
{
	printf("Read vndDevId LOCAL register failed!\n");
}

/* First the RC reads its own Vendor ID and Device ID	 */
printf("RC Vendor id 0x%x, Device id 0x%x \n", idReg.vndId, idReg.devId);

Here's what I get :

RC Vendor id 0xb005, Device id 0x104c

Which confirms the error in the CSL.
Here's what the raw value of the idReg is : 0xB005104C

The CSL should be corrected with :

#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_VENDOR_ID_MASK (0x0000FFFFu)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_VENDOR_ID_SHIFT (0x00000000u)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_VENDOR_ID_RESETVAL (0x0000104Cu)

#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_DEVICE_ID_MASK (0xFFFF0000u)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_DEVICE_ID_SHIFT (0x00000010u)
#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_DEVICE_ID_RESETVAL (0x00008888u)

#define CSL_PCIE_CFG_SPACE_ENDPOINT_VENDOR_DEVICE_ID_RESETVAL (0x8888104Cu)

TI engineers, can you confirm the issue ?

Regards,
Clement

  • Hi Clement,

    Please have a look at the below thread.

    http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/p/321624/1119146.aspx

    Thank you.

  • Hi.

    Ok I see that it is a bug reported in february and we are in November 2014...
    Given that vendor ids are used for PCIe enumeration I think it really needs to be corrected.

    Is there a sort of errata document for these bugs in MCSDK known by TI and not yet corrected ?

    Why is there frequent release for products like SYSBIOS, XDC, UIA, IPC with bug fixes but never for the PDK ?

    Regards,

    Clement

  • Hi,

    Correct VENDOR_ID is 0x104C and DEVICE_ID is 0xB005.

    DEVICE_ID field is updated in IBL source code but not updated in PDK source. I think this update will be reflected on next PDK release.

    PATH: C:\ti\mcsdk_2_01_02_06\tools\boot_loader\ibl\src\device\c66x\c66xinit.c:
    DEVICE_REG32_W ((PCIE_BASE_ADDR + PCIE_VENDER_DEVICE_ID), 0xb005104c); /* Vendor and Device ID */

    In earlier version of IBL, it was programed to 0x8888. Later IBL programed it to 0xB005.

    Thanks,

  • Hi,

    Do you have any timeframe for the next PDK release ?
    1st quarter 2015 ? Later ?

    Thanks.

    Clement

  • Hi Clement,

    The PDK is part of MCSDK2.x however we do not have informaiton on MCSDK maintenance release.  We will check with factory team for timeline.

    Please help us to close this thread.