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.

TMDS64EVM: Linux boot from custom SBL_OSPI fails on interrupt controller initialization

Part Number: TMDS64EVM

Tool/software:

Hello,

i try to boot linux (on a53) and a bare metal application (on r5 ) in parallel from a custom ospi bootloader.

The custom bootloader is based on SBL_OSPI and was extended with parts from SBL_OSPI_LINUX for the linux boot.

I have a linux app image in ospi flash which boots a linux on sd card. Direct boot of the linux from the sd card ( set boot jumper to SDCARD boot) succeeds.

When started from ospi bootloader, the linux boot fails on the initialization of the interrupt controller and ennded up in a loop initializing am65-cpsw-nuss ethernet:

[    0.914500] ti-sci 44043000.system-controller: ABI: 4.0 (firmware rev 0x000a '10.1.7--v10.01.07 (Fiery Fox)')
[    1.026931] pca953x 0-0038: supply vcc not found, using dummy regulator
[    1.034036] pca953x 0-0038: using no AI
[    1.061276] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
[    1.069359] pca953x 1-0022: supply vcc not found, using dummy regulator
[    1.076421] pca953x 1-0022: using AI
[    1.101798] omap_i2c 20010000.i2c: bus 1 rev0.12 at 400 kHz
[    1.108001] ti-sci-intr 4210000.interrupt-controller: Destination irq resource allocation failed
[    1.117032] ti-sci-intr: probe of 4210000.interrupt-controller failed with error -22
[    1.125841] ti-sci-intr bus@f4000:interrupt-controller@a00000: Destination irq resource allocation failed
[    1.135668] ti-sci-intr: probe of bus@f4000:interrupt-controller@a00000 failed with error -22
[    1.144875] ti-sci-inta 48000000.interrupt-controller: VINT resource allocation failed
[    1.153008] ti-sci-inta: probe of 48000000.interrupt-controller failed with error -22
[    1.161685] ti-udma 485c0100.dma-controller: Number of rings: 68
[    1.168524] ti-udma 485c0000.dma-controller: Number of rings: 288
[    1.176488] printk: console [ttyS2] disabled
[    1.181376] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 30, base_baud = 3000000) is a 8250
[    1.190222] printk: console [ttyS2] enabled
[    1.190222] printk: console [ttyS2] enabled
[    1.198718] printk: bootconsole [ns16550a0] disabled
[    1.198718] printk: bootconsole [ns16550a0] disabled
[    1.217052] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    1.260362] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.270834] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[    1.279026] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000002
[    1.291964] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
[    1.299102] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    1.309081] mmc0: CQHCI version 5.10
[    1.310061] ti-udma 485c0100.dma-controller: Number of rings: 68
[    1.320436] ti-udma 485c0000.dma-controller: Number of rings: 288
[    1.330444] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    1.359045] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
[    1.376350] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.386817] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[    1.395031] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000002
[    1.407984] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
[    1.415159] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    1.424061] ti-udma 485c0100.dma-controller: Number of rings: 68
[    1.430611] mmc1: CQHCI version 5.10
[    1.431261] ti-udma 485c0000.dma-controller: Number of rings: 288
[    1.444397] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    1.477581] mmc0: Command Queue Engine enabled
[    1.482104] mmc0: new HS200 MMC card at address 0001
[    1.482174] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
[    1.488037] mmcblk0: mmc0:0001 S0J56X 14.8 GiB
[    1.496397] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.507313]  mmcblk0: p1 p2 p3 p4 < p5 >
[    1.510118] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[    1.512711] mmcblk0boot0: mmc0:0001 S0J56X 31.5 MiB
[    1.519527] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000002

To make sure that the initialization of the bare metal app is not the problem, i added a empty application which does nothing. So i assume that the problem is the custom bootloader. 

I am not sure how the SBL Bootloader could prevent linux from initializing the interupt controller.

I am grateful for any ideas.

Alex

I would be 

  • Please ignore the last "I would be",  since there is no edit button i cannot correct it 

  • Hi Alex,

    It looks you would have to necessarily use the Linux board configuration blob, because of the RM configuration differences, in your SBL for booting Linux. Have you already tried the following change & still see the issue?

    --- ./examples/drivers/boot/sbl_ospi/am64x-evm/r5fss0-0_nortos/ti-arm-clang/makefile	2024-12-04 13:07:12.639416480 +0530
    +++ ./examples/drivers/boot/sbl_ospi_linux/am64x-evm/r5fss0-0_nortos/ti-arm-clang/makefile	2024-09-19 15:32:14.737729016 +0530
    ...
    @@ -255,7 +255,7 @@
     SYSFW_PATH=$(MCU_PLUS_SDK_PATH)/source/drivers/sciclient/soc/am64x_am243x
     SYSFW_LOAD_ADDR=0x44000
     BOARDCFG_LOAD_ADDR=0x7B000
    -BOARDCFG_BLOB=$(MCU_PLUS_SDK_PATH)/source/drivers/sciclient/sciclient_default_boardcfg/am64x/boardcfg_blob.bin
    +BOARDCFG_BLOB=$(MCU_PLUS_SDK_PATH)/source/drivers/sciclient/sciclient_default_boardcfg/am64x/boardcfg_blob_linux.bin
     
     
     SBL_RUN_ADDRESS=0x70000000
    ...

    Regards,

    Prashant