We have two C6455 DSP's and a processor connected via PCI Local bus interface
Where one DSP is the master/host and other DSP & processor will be the peripherals.
AD31 is used for DSP2 and AD30 is used for the processor as IDSEL
Following are the settings done at the master side.
1) "BUS_MS" bit is set in the PCICSR register
2) Configuration read as below
unsigned int pci_read_config (int addr, int busno, int devno, int funcno)
{
unsigned int bno_bit = (busno << 16);
unsigned int dno_bit = (devno << 11);
unsigned int fno_bit = (funcno << 8);
unsigned int adr_bit = (addr & 0xfc);
/* Check READY bit */
while(1)
{
if(*PCIMCFGCMD & 0x80000000)
break;
}
*PCIMCFGADR = 0x80000000 | bno_bit | dno_bit | fno_bit | adr_bit;
*PCIMCFGCMD = 0x00000001;
/* Check READY bit */
while(1)
{
if(*PCIMCFGCMD & 0x80000000)
break;
}
return *PCIMCFGDAT;
}
Following are the observation/issues.
1) while performing configuration read (Type 1) , for any device number from 0x0 to 0x1F DSP 2 is responding
2) If unplug the DSP2 from the backplane , then PCIMCFGCMD register's READY bit will never set to one in the first loop itself
Please suggest if any setting needs to be done at the master and slave side.
Regards,
Mithun
