Go to the source code of this file.
Data Structures | |
| struct | Bootloader_CoreBootInfo | 
| Data structure containing information about a core specific to the AM64x SOC.  More... | |
Macros | |
| #define | BOOTLOADER_SCRATCH_MEM_SUPPORT | 
| #define | BOOTLOADER_DEVICE_VARIANT_SINGLE_CORE (0x00000000U) | 
| #define | BOOTLOADER_DEVICE_VARIANT_DUAL_CORE (0x00040000U) | 
| #define | BOOTLOADER_DEVICE_VARIANT_QUAD_CORE (0x000C0000U) | 
| #define | BOOTLOADER_R5FSS0 (0x00000000U) | 
| #define | BOOTLOADER_R5FSS1 (0x00010000U) | 
| #define | BOOTLOADER_ICSS_CORE_DEFAULT_FREQUENCY (200000000U) | 
| #define | BOOTLOADER_MAX_SBL_SIZE_IN_TCM_KB (80U) | 
Functions | |
| int32_t | Bootloader_socCpuRequest (uint32_t cpuId) | 
| Request for a particular CPU in the AM64x SOC.  More... | |
| int32_t | Bootloader_socCpuRelease (uint32_t cpuId) | 
| Release a particular CPU in the AM64x SOC.  More... | |
| int32_t | Bootloader_socCpuSetClock (uint32_t cpuId, uint32_t cpuHz) | 
| Set the clock of a particular CPU in the AM64x SOC.  More... | |
| uint64_t | Bootloader_socCpuGetClock (uint32_t cpuId) | 
| Get the clock of a particular CPU in the AM64x SOC.  More... | |
| uint32_t | Bootloader_socCpuGetClkDefault (uint32_t cpuId) | 
| Get the default clock of a particular CPU in the AM64x SOC.  More... | |
| int32_t | Bootloader_socCpuPowerOnReset (uint32_t cpuId, void *socCoreOpMode) | 
| Do power-on-reset of a particular CPU in the AM64x SOC.  More... | |
| int32_t | Bootloader_socCpuResetRelease (uint32_t cpuId, uintptr_t entryPoint) | 
| Release a particular CPU in the AM64x SOC from reset.  More... | |
| int32_t | Bootloader_socCpuResetReleaseSelf (void) | 
| Release self CPU in the AM64x SOC from reset.  More... | |
| int32_t | Bootloader_socCpuSetEntryPoint (uint32_t cpuId, uintptr_t entryPoint) | 
| Set entry point for self CPU in the AM64x SOC from reset.  More... | |
| uint32_t | Bootloader_socTranslateSectionAddr (uint32_t cslCoreId, uint32_t addr) | 
| Translate a CPU address to the SOC address wherever applicable.  More... | |
| uint32_t | Bootloader_socRprcToCslCoreId (uint32_t rprcCoreId) | 
| Obtain the CSL core ID of a CPU from its RPRC core ID.  More... | |
| uint32_t * | Bootloader_socGetSelfCpuList (void) | 
| Get the list of self cpus in the SOC.  More... | |
| char * | Bootloader_socGetCoreName (uint32_t cpuId) | 
| Get the name of a core.  More... | |
| int32_t | Bootloader_socMemInitCpu (uint32_t cpuId) | 
| Initialize the core memories of a specific core.  More... | |
| uint32_t | Bootloader_socGetSciclientCpuProcId (uint32_t cpuId) | 
| Obtain the Sciclient Proc Id corresponding to the CSL core ID.  More... | |
| uint32_t | Bootloader_socGetSciclientCpuDevId (uint32_t cpuId) | 
| Obtain the Sciclient Device Id corresponding to the CSL core ID.  More... | |
| int32_t | Bootloader_socSecHandover (void) | 
| API to trigger the security handover from SYSFW.  More... | |
| int32_t | Bootloader_socWaitForFWBoot (void) | 
| API to wait for boot notification from SYSFW/ROM.  More... | |
| int32_t | Bootloader_socOpenFirewalls (void) | 
| API to open required firewalls using SYSFW.  More... | |
| int32_t | Bootloader_socAuthImage (uint32_t certLoadAddr) | 
| API to authenticate (and decrypt if needed) an appimage using SYSFW.  More... | |
| uint32_t | Bootloader_socIsAuthRequired (void) | 
| API to check if authentication is required for the device. Checks the SYS_STATUS register to see if device is GP, HS-FS, HS-SE etc.  More... | |
| uint32_t | Bootloader_socIsR5FSSDual (uint32_t ssNum) | 
| API to check if an R5 cluster/subsystem has dual cores enabled or not.  More... | |
| uint32_t | Bootloader_socGetCoreVariant (void) | 
| API to check the GPN variant of the SOC - whether it's a quad core, dual core or a single core variant.  More... | |
| void | Bootloader_socResetWorkaround (void) | 
| Workaround API to prevent CPSW register lockup. Checks the reset source and does a warm reset in case of POR MCU , POR MAIN or COLD BOOT reset.  More... | |
| void | Bootloader_enableMCUPLL (void) | 
| Enable MCU PLL. The MCU PLL will be initialized by DMSC if devgrp is set to DEVGRP_ALL. If devgrp is set to DEVGRP_00 (0x01) (Main Domain), the MCU PLL will not be initialized. This API initializes MCU PLL when devgrp is set to DEVGRP_00.  More... | |
| uint32_t | Bootloader_socIsMCUResetIsoEnabled (void) | 
| Check if MCU domain is reset isolated.  More... | |
| void | Bootloader_socNotifyFirewallOpen (void) | 
| Notify other cores firewall open from SBL. Function writes a Software defined magic word to PSRAM address (software defined) to signal Firewall open to MCU cores. This function should only be called from SBL.  More... | |
| int32_t | Bootloader_socEnableICSSCores (uint32_t clkFreq) | 
| API to enable ICSS cores when applicable.  More... | |
| void | Bootloader_socGetBootSeqOid (uint8_t *boot_seq_oid) | 
| API to get boot sequence oid.  More... | |
| int32_t | Bootloader_socCpuSetAppEntryPoint (uint32_t cpuId, uintptr_t entryPoint) | 
| int32_t | Bootloader_authStart (uintptr_t startAddr, uint32_t size) | 
| API to start streaming boot authentication.  More... | |
| int32_t | Bootloader_authUpdate (uintptr_t startAddr, uint32_t size, uint8_t enc) | 
| API to update the Secure Boot Stream with a new segment.  More... | |
| int32_t | Bootloader_authFinish (void) | 
| API to finish streaming boot authentication.  More... | |
| #define BOOTLOADER_SCRATCH_MEM_SUPPORT | 
| #define BOOTLOADER_DEVICE_VARIANT_SINGLE_CORE (0x00000000U) | 
| #define BOOTLOADER_DEVICE_VARIANT_DUAL_CORE (0x00040000U) | 
| #define BOOTLOADER_DEVICE_VARIANT_QUAD_CORE (0x000C0000U) | 
| #define BOOTLOADER_R5FSS0 (0x00000000U) | 
| #define BOOTLOADER_R5FSS1 (0x00010000U) | 
| #define BOOTLOADER_ICSS_CORE_DEFAULT_FREQUENCY (200000000U) | 
| #define BOOTLOADER_MAX_SBL_SIZE_IN_TCM_KB (80U) | 
The maximum size of the SBL in TCM memory
| int32_t Bootloader_socCpuRequest | ( | uint32_t | cpuId | ) | 
Request for a particular CPU in the AM64x SOC.
This API internally makes Sciclient calls to request control of the CPU
| cpuId | [in] The CSL ID of the core | 
| int32_t Bootloader_socCpuRelease | ( | uint32_t | cpuId | ) | 
Release a particular CPU in the AM64x SOC.
This API internally makes Sciclient calls to release control of the CPU
| cpuId | [in] The CSL ID of the core | 
| int32_t Bootloader_socCpuSetClock | ( | uint32_t | cpuId, | 
| uint32_t | cpuHz | ||
| ) | 
Set the clock of a particular CPU in the AM64x SOC.
This API internally makes Sciclient calls to set CPU clock
| cpuId | [in] The CSL ID of the core | 
| cpuHz | [in] Desired clock frequency of the CPU in Hertz | 
| uint64_t Bootloader_socCpuGetClock | ( | uint32_t | cpuId | ) | 
Get the clock of a particular CPU in the AM64x SOC.
This API internally makes Sciclient calls to get the current clock frequency of CPU
| cpuId | [in] The CSL ID of the core | 
| uint32_t Bootloader_socCpuGetClkDefault | ( | uint32_t | cpuId | ) | 
Get the default clock of a particular CPU in the AM64x SOC.
This API queries and internal lookup table to fetch the default clock speed at which a particular CPU should run.
| cpuId | [in] The CSL ID of the core | 
| int32_t Bootloader_socCpuPowerOnReset | ( | uint32_t | cpuId, | 
| void * | socCoreOpMode | ||
| ) | 
Do power-on-reset of a particular CPU in the AM64x SOC.
This API is called only when booting a non-self CPU.
| cpuId | [in] The CSL ID of the core | 
| socCoreOpMode | Lockstep/Dual core mode as per setting in syscfg. | 
| int32_t Bootloader_socCpuResetRelease | ( | uint32_t | cpuId, | 
| uintptr_t | entryPoint | ||
| ) | 
Release a particular CPU in the AM64x SOC from reset.
This API is called only when booting a non-self CPU. There is a different API Bootloader_socCpuResetReleaseSelf in the case of a self CPU
| cpuId | [in] The CSL ID of the core | 
| entryPoint | [in] The entryPoint of the CPU, from where it should start execution | 
| int32_t Bootloader_socCpuResetReleaseSelf | ( | void | ) | 
Release self CPU in the AM64x SOC from reset.
| int32_t Bootloader_socCpuSetEntryPoint | ( | uint32_t | cpuId, | 
| uintptr_t | entryPoint | ||
| ) | 
Set entry point for self CPU in the AM64x SOC from reset.
This API need not be called when booting a non-self CPU. The entry point can be specified in the Bootloader_socCpuResetRelease function itself
| cpuId | [in] The CSL ID of the core | 
| entryPoint | [in] The entryPoint of the CPU, from where it should start execution | 
| uint32_t Bootloader_socTranslateSectionAddr | ( | uint32_t | cslCoreId, | 
| uint32_t | addr | ||
| ) | 
Translate a CPU address to the SOC address wherever applicable.
This API need not be called when booting a non-self CPU. The entry point can be specified in the Bootloader_socCpuResetRelease function itself
| cslCoreId | [in] The CSL ID of the core | 
| addr | [in] The CPU addr | 
| uint32_t Bootloader_socRprcToCslCoreId | ( | uint32_t | rprcCoreId | ) | 
Obtain the CSL core ID of a CPU from its RPRC core ID.
| rprcCoreId | [in] The RPRC ID of the core | 
| uint32_t* Bootloader_socGetSelfCpuList | ( | void | ) | 
Get the list of self cpus in the SOC.
| char* Bootloader_socGetCoreName | ( | uint32_t | cpuId | ) | 
Get the name of a core.
| cpuId | [in] The CSL ID of the core | 
| int32_t Bootloader_socMemInitCpu | ( | uint32_t | cpuId | ) | 
Initialize the core memories of a specific core.
| cpuId | [in] The CSL ID of the core | 
| uint32_t Bootloader_socGetSciclientCpuProcId | ( | uint32_t | cpuId | ) | 
Obtain the Sciclient Proc Id corresponding to the CSL core ID.
| cpuId | [in] The CSL ID of the core | 
| uint32_t Bootloader_socGetSciclientCpuDevId | ( | uint32_t | cpuId | ) | 
Obtain the Sciclient Device Id corresponding to the CSL core ID.
| cpuId | [in] The CSL ID of the core | 
| int32_t Bootloader_socSecHandover | ( | void | ) | 
API to trigger the security handover from SYSFW.
| int32_t Bootloader_socWaitForFWBoot | ( | void | ) | 
API to wait for boot notification from SYSFW/ROM.
| int32_t Bootloader_socOpenFirewalls | ( | void | ) | 
API to open required firewalls using SYSFW.
| int32_t Bootloader_socAuthImage | ( | uint32_t | certLoadAddr | ) | 
API to authenticate (and decrypt if needed) an appimage using SYSFW.
| certLoadAddr | [in] The SOC address pointing to the certificate+appimage | 
| uint32_t Bootloader_socIsAuthRequired | ( | void | ) | 
API to check if authentication is required for the device. Checks the SYS_STATUS register to see if device is GP, HS-FS, HS-SE etc.
| uint32_t Bootloader_socIsR5FSSDual | ( | uint32_t | ssNum | ) | 
API to check if an R5 cluster/subsystem has dual cores enabled or not.
| uint32_t Bootloader_socGetCoreVariant | ( | void | ) | 
API to check the GPN variant of the SOC - whether it's a quad core, dual core or a single core variant.
| void Bootloader_socResetWorkaround | ( | void | ) | 
Workaround API to prevent CPSW register lockup. Checks the reset source and does a warm reset in case of POR MCU , POR MAIN or COLD BOOT reset.
| void Bootloader_enableMCUPLL | ( | void | ) | 
Enable MCU PLL. The MCU PLL will be initialized by DMSC if devgrp is set to DEVGRP_ALL. If devgrp is set to DEVGRP_00 (0x01) (Main Domain), the MCU PLL will not be initialized. This API initializes MCU PLL when devgrp is set to DEVGRP_00.
| uint32_t Bootloader_socIsMCUResetIsoEnabled | ( | void | ) | 
Check if MCU domain is reset isolated.
| void Bootloader_socNotifyFirewallOpen | ( | void | ) | 
Notify other cores firewall open from SBL. Function writes a Software defined magic word to PSRAM address (software defined) to signal Firewall open to MCU cores. This function should only be called from SBL.
| int32_t Bootloader_socEnableICSSCores | ( | uint32_t | clkFreq | ) | 
API to enable ICSS cores when applicable.
| clkFreq | [in] Clock frequency of ICSS cores in Hz | 
| void Bootloader_socGetBootSeqOid | ( | uint8_t * | boot_seq_oid | ) | 
API to get boot sequence oid.
| boot_seq_oid | [in] pointer to integer array for populating boot sequence oid | 
| int32_t Bootloader_socCpuSetAppEntryPoint | ( | uint32_t | cpuId, | 
| uintptr_t | entryPoint | ||
| ) | 
dummy api call
| int32_t Bootloader_authStart | ( | uintptr_t | startAddr, | 
| uint32_t | size | ||
| ) | 
API to start streaming boot authentication.
| int32_t Bootloader_authUpdate | ( | uintptr_t | startAddr, | 
| uint32_t | size, | ||
| uint8_t | enc | ||
| ) | 
API to update the Secure Boot Stream with a new segment.
| int32_t Bootloader_authFinish | ( | void | ) | 
API to finish streaming boot authentication.