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.

[FAQ] TDA4VM: Resolve conflict in resource access between remote core firmware and Linux

Part Number: TDA4VM

I am running a custom application on R5F and Linux on A72. When I boot the board, Linux complains that it is not able to initiate some devices.

Below is the error I see when booting:

How can I resolve this?

  • Hi,

    The error shows that while trying to power on the device ID 197 and then 92 the error occurred. (see http://software-dl.ti.com/tisci/esd/latest/5_soc_doc/j721e/devices.html for device IDs)

    Device ID Device name
    197 J721E_DEV_WKUP_I2C0
    92 J721E_DEV_MMCSD1

    Most likely the R5F firmware which is running alongside Linux is also initializing these resources and hence SPL running on A72 is failing to get these devices.

    If a resource is requested for exclusive access from one core then any other core trying to request for the same resource will fail. As the resources like I2C, MMCSD etc. are not managed by any central SW entity hence the system integrator must do a pen-paper analysis before integrating. The analysis should result in what resources are used by which core.

    Now in this case if R5F is using a Board_init() call during initialization then there is a high probability that a lot of peripherals requested by the R5F core are not actually being used. Reason for this is that Board_init() calls are blanket calls which initialize a large number of peripherals (not all necessarily being used by the firmware). Now to change the list of peripherals being accessed by R5F, the board library needs to be modified.

    Please refer the FAQ https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1003416/faq-tda4vm-how-to-change-peripheral-initialization-from-remote-core-firmware-using-board-library to modify the board library to initialize custom set of peripherals.

    Now removing TISCI_DEV_WKUP_I2C0 and TISCI_DEV_MMCSD1 will resolve your current issue.

    Regards,

    Karan