Hello ,
I wanted to perform a configuration read of a register in a Brigde relied to a C6678 by PCI Express , is this code is correct :
pcieRet_e ReadFromRemote(Pcie_Handle handle)
{
pcieCfgTransReg_t trans_Config;
pcieVndDevIdReg_t devid;
pcieRegisters_t getRegs;
pcieRegisters_t setRegs;
pcieRet_e retVal;
memset (&trans_Config, 0, sizeof(trans_Config));
memset (&devid, 0, sizeof(devid));
memset (&getRegs, 0, sizeof(getRegs));
memset (&setRegs, 0, sizeof(setRegs));
getRegs.cfgTrans= &trans_Config;
if ((retVal = Pcie_readRegs (handle,pcie_LOCATION_LOCAL,&getRegs)) != pcie_RET_OK)
{
System_printf ("Read pcieVndDevIdReg_t register failed!\n");
return retVal;
}
trans_Config.func=1;
trans_Config.device=16;
trans_Config.bus=1;
trans_Config.type=0;
setRegs.cfgTrans= &trans_Config;
if ((retVal = Pcie_writeRegs (handle, pcie_LOCATION_LOCAL, &setRegs)) != pcie_RET_OK)
{
System_printf ("SET CMD STATUS register failed!\n");
return retVal;
}
memset (&getRegs, 0, sizeof(getRegs));
getRegs.vndDevId=&devid;
if ((retVal = Pcie_readRegs (handle, pcie_LOCATION_REMOTE, &getRegs)) != pcie_RET_OK)
{
System_printf ("SET CMD STATUS register failed!\n");
return retVal;
}
printf("0x%x",getRegs.vndDevId->devId);
return pcie_RET_OK;
}