Go to the source code of this file.
Data Structures | |
struct | Bootloader_CoreBootInfo |
Data structure containing information about a core specific to the SOC. More... | |
struct | Bootloader_socCoreOpModeConfig |
Data structure containing information about the operating mode specific to the SOC. More... | |
Macros | |
#define | BOOTLOADER_APP_SEGMENT_CANBE_ENCRYPTED (0xA5U) |
#define | BOOTLOADER_APP_SEGMENT_CANNOTBE_ENCRYPTED (0x5AU) |
#define | BOOTLOADER_SOC_APP_CERT_SIZE (0x1000) |
Device Types | |
#define | BOOTLOADER_DEVTYPE_HSSE (0x0AU) |
device type HSSE More... | |
#define | BOOTLOADER_DEVTYPE_HSFS (0xAAU) |
device type HSFS More... | |
#define | BOOTLOADER_DEVTYPE_GP (0x03U) |
device type GP More... | |
#define | BOOTLOADER_CLIENT_ID (0x02) |
hsmclient ID for bootloader More... | |
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... | |
int32_t | Bootloader_socSecHandover (void) |
API to trigger the security handover from SYSFW. More... | |
void | Bootloader_socConfigurePll (void) |
API to configure Core and Per PLLS. More... | |
void | Bootloader_socInitL2MailBoxMemory (void) |
API to Init L2,L3 Banks and Mailbox Memory. 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... | |
void | Bootloader_socGetBootSeqOid (uint8_t *boot_seq_oid) |
API to get boot sequence oid. More... | |
void | Bootloader_socLoadHsmRtFw (HsmClient_t *gHSMClient, const uint8_t *HsmRtFw, uint32_t hsmRTSize) |
API to load hsm runtime firmware. More... | |
void | Bootloader_socLoadHsmRtFwNonBlocking (HsmClient_t *gHSMClient, const uint8_t *HsmRtFw, uint32_t hsmRTSize) |
Non blocking API to load hsm runtime firmware. More... | |
void | Bootloader_socSetAutoClock () |
API to set CPU clock to 200 MHz or 400 MHz on the basis of eFUSE bits configuration. 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_APP_SEGMENT_CANBE_ENCRYPTED (0xA5U) |
This application segment can be encrypted.
#define BOOTLOADER_APP_SEGMENT_CANNOTBE_ENCRYPTED (0x5AU) |
This application segment can never be encrypted.
#define BOOTLOADER_SOC_APP_CERT_SIZE (0x1000) |
Maximum supported size of the application certificate
#define BOOTLOADER_DEVTYPE_HSSE (0x0AU) |
device type HSSE
#define BOOTLOADER_DEVTYPE_HSFS (0xAAU) |
device type HSFS
#define BOOTLOADER_DEVTYPE_GP (0x03U) |
device type GP
#define BOOTLOADER_CLIENT_ID (0x02) |
hsmclient ID for bootloader
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 |
int32_t Bootloader_socSecHandover | ( | void | ) |
API to trigger the security handover from SYSFW.
void Bootloader_socConfigurePll | ( | void | ) |
API to configure Core and Per PLLS.
void Bootloader_socInitL2MailBoxMemory | ( | void | ) |
API to Init L2,L3 Banks and Mailbox Memory.
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.
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 |
void Bootloader_socLoadHsmRtFw | ( | HsmClient_t * | gHSMClient, |
const uint8_t * | HsmRtFw, | ||
uint32_t | hsmRTSize | ||
) |
API to load hsm runtime firmware.
void Bootloader_socLoadHsmRtFwNonBlocking | ( | HsmClient_t * | gHSMClient, |
const uint8_t * | HsmRtFw, | ||
uint32_t | hsmRTSize | ||
) |
Non blocking API to load hsm runtime firmware.
void Bootloader_socSetAutoClock | ( | ) |
API to set CPU clock to 200 MHz or 400 MHz on the basis of eFUSE bits configuration.
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.