MSC8156AMC SRIO issue

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

MSC8156AMC SRIO issue

814 Views
MBharath
Contributor I

Hi,

 

We have taken rio_dma demo project from the demos folder of msc815x. When we are trying to run the demo on msc5186AMC target, control is not comming out of srioInitialize funcion call. We are not able to know why it is not able to initialize the SRIO driver using the srioInitialize function call. As srioInitialize is a driver call we were not able to debug the same. Please let us know if there are any specific configurations to be made on the target for running rio_dma demo.

 

       When we made  NUM_RIO_PORTS as 1 instead of 2 srioInitialize is working fine that is, it is working for srio_port0 only. In this case also the transfer of data is not happening as it should happen. Please let us know the issue with this.

 

        Our ultimate aim is to configure SRIO for inter DSP communication in MSC8156AMC. We don’t have a demo project for this and we are trying to analyze the rio_dma demo.

 

        we found a parameter in 8144 srio_dma_transfer_config_t structure srio_dma_write_type which is not present in 8156AMC structure. How can I specify to write or read i.e. to use NREAD, SWRITE calls in 8156AMC?

 

Thanks and Regards,

M Bharath.

0 Kudos
4 Replies

487 Views
AndrewinApps
Contributor IV

There is a more fundimental problem here: The MSC8156 SRIO controller has only 1 SRIO ID for both SRIO ports.

This means that when you do SRIO Init, and SDOS tries to enumerate the switch, it will try to enumerate each port.

 

When the SDOS of the master goes to enumerate the port of device x (any 8156), and the device has 2 ports enabled, the master will first initialize port 0.

So it reads that port 0's ID is currently 0xFF, and so is the SRIO ID on device X - at this point the master's SDOS will update the SRIO ID of the MSC8156 via port 0, and the port ID on the switch to some non-0xFF number (say... 0x3).

 

Next, the master's SDOS will go to the next SRIO port (which happens to be SRIO port 1 of 8156 device X).

SDOS sees that this switch port's ID is 0xFF, so it knows we can enumerate this, so it starts to enumerate, but it finds that the device attached to the srio port (device X, SRIO port 1) already has an SRIO ID of 0x3... which is what we already used for port 0. The SRIO switch is not allowed to have 2 ports with the same ID, so SDOS can't update the ports this way... -  so this causes SRIO init failure.

 

 

0 Kudos

487 Views
MBharath
Contributor I

Hi,

 

    My problem of initialization persistes even when i configure for only one port also. I have made the following changes to app_config.h file of rio_dma project.

 

#define NUM_RIO_PORTS 1                    /* Set to 1 or 2 */

#define SRIO_PORT_TO_TEST 0             /* Set to 0 or 1 Ignored if NUM_RIO_PORTS equals 2 */

 

     We have 2 8156AMC boards. When ran the demo code in one target board with the above changes it is initializing srio0 port properly but not able to transfer data. Where as in the other target board it is not coming out of srio initialize function.

 

#define NUM_RIO_PORTS 1                    /* Set to 1 or 2 */

#define SRIO_PORT_TO_TEST 1             /* Set to 0 or 1 Ignored if NUM_RIO_PORTS equals 2 */

     With the above changes i.e. enabling one srio port i.e SRIO port1, it is not coming out of srioinitialize function in both the traget boards.

 

     Please let us know what may be reason for this. We are not able to figure out what the problem is.

 

Thanks and Regards,

M Bharath

0 Kudos

487 Views
AndrewinApps
Contributor IV

The configuration of number of ports for SRIO is done by configuring the Reset Configuration Word for the parts, which is done via dip switches or configuring the on board I2C EPROM.

 

This must be updated to ensure 1 SRIO port is enabled.

0 Kudos

487 Views
Jim95
Contributor III

Hi,

 

The freescale demo works with a internal loopback, but I don't no why all the SRIO demos with this loopback don't work.

You have to change the internal loopback parameter in disable loopback, to use the SRIO switch, and initialize this switch and it will works.

 

Regards

 

Jimmy

0 Kudos