AM64x MCU+ SDK  08.02.00

Introduction

This file contains the definition of all the message IDs, message formats to be able to interact with the System Controller firmware for power management.

Go to the source code of this file.

Functions

int32_t Sciclient_pmSetModuleState (uint32_t moduleId, uint32_t state, uint32_t reqFlag, uint32_t timeout)
 Message to set the hardware block/module state This is used to request or release a device. For example: When the device is requested for operation, state is set to MSG_DEVICE_SW_STATE_ON. When the usage of the device is complete and released, the same request with state set as MSG_DEVICE_SW_STATE_AUTO_OFF is invoked. Based on exclusive access request, multiple processing entities can share a specific hardware block, however, this must be carefully used keeping the full system view in mind. More...
 
int32_t Sciclient_pmGetModuleState (uint32_t moduleId, uint32_t *moduleState, uint32_t *resetState, uint32_t *contextLossState, uint32_t timeout)
 Message to get the hardware block/Module state. This request does not require the processing entity to have control of the device via a set device state request. More...
 
int32_t Sciclient_pmSetModuleRst (uint32_t moduleId, uint32_t resetBit, uint32_t timeout)
 Set the device reset state. This is used to set or release various resets of the hardware block/module. More...
 
int32_t Sciclient_pmSetModuleRst_flags (uint32_t moduleId, uint32_t resetBit, uint32_t reqFlag, uint32_t timeout)
 Set the device reset state, allowing for user to set reqFlags This is used to set or release various resets of the hardware block/module. More...
 
int32_t Sciclient_pmModuleClkRequest (uint32_t moduleId, uint32_t clockId, uint32_t state, uint32_t additionalFlag, uint32_t timeout)
 Message to set the clock state: This requests for finer control of hardware device's clocks. This allows for configuration for hardware blocks that require customization of the specific input clocks. NOTE: each of the clock IDs are relative to the hardware block. More...
 
int32_t Sciclient_pmModuleGetClkStatus (uint32_t moduleId, uint32_t clockId, uint32_t *state, uint32_t timeout)
 Message to get the clock state to or from a hardware block. More...
 
int32_t Sciclient_pmSetModuleClkParent (uint32_t moduleId, uint32_t clockId, uint32_t parent, uint32_t timeout)
 Message to Set Clock Parent: This message allows SoC specific customization for setting up a specific clock parent ID for the various clock input options for a hardware block's clock. This is rarely used customization that may be required based on the usecase of the system where the reset input clock option may not suffice for the usecase attempted. More...
 
int32_t Sciclient_pmGetModuleClkParent (uint32_t moduleId, uint32_t clockId, uint32_t *parent, uint32_t timeout)
 Message to Get Clock Parent: Query the clock parent currently configured for a specific clock source of a hardware block This is typically used to confirm the current clock parent to ensure that the requisite usecase for the hardware block can be satisfied. More...
 
int32_t Sciclient_pmGetModuleClkNumParent (uint32_t moduleId, uint32_t clockId, uint32_t *numParent, uint32_t timeout)
 Message to get the number of clock parents for a given module. This is typically used to get the max number of clock parent options available for a specific hardware block's clock. More...
 
int32_t Sciclient_pmSetModuleClkFreq (uint32_t moduleId, uint32_t clockId, uint64_t freqHz, uint32_t additionalFlag, uint32_t timeout)
 Message to set the clock frequency. This is typically desired when the default frequency of the hardware block's clock is not appropriate for the usecase desired. NOTE: Normally clock frequency management is automatically done by TISCI entity. In case of specific requests, TISCI evaluates capability to achieve requested range and responds with success/failure message. This sets the desired frequency for a clock within an allowable range. This message will fail on an enabled clock unless MSG_FLAG_CLOCK_ALLOW_FREQ_CHANGE is set for the clock. Additionally, if other clocks have their frequency modified due to this message, they also must have the MSG_FLAG_CLOCK_ALLOW_FREQ_CHANGE or be disabled. More...
 
int32_t Sciclient_pmSetModuleClkFreqRange (uint32_t moduleId, uint32_t clockId, uint64_t freqHz, uint64_t minFreqHz, uint64_t maxFreqHz, uint32_t additionalFlag, uint32_t timeout)
 Message to set the clock frequency. This is typically desired when the default frequency of the hardware block's clock is not appropriate for the usecase desired. NOTE: Normally clock frequency management is automatically done by TISCI entity. In case of specific requests, TISCI evaluates capability to achieve requested range and responds with success/failure message. This sets the desired frequency for a clock within an allowable range. This message will fail on an enabled clock unless MSG_FLAG_CLOCK_ALLOW_FREQ_CHANGE is set for the clock. Additionally, if other clocks have their frequency modified due to this message, they also must have the MSG_FLAG_CLOCK_ALLOW_FREQ_CHANGE or be disabled. More...
 
int32_t Sciclient_pmQueryModuleClkFreq (uint32_t moduleId, uint32_t clockId, uint64_t reqFreqHz, uint64_t *respFreqHz, uint32_t timeout)
 Message to query the best clock frequency in the given range. This message does no real operation, instead, it requests the system control entity to respond with the best frequency that can match a frequency range provided. NOTE: This is a snapshot view. In a multi processing system, it is very well possible that another processing entity might change the configuration after one entity has queried for best match capability. Only a SET_CLOCK_FREQ will guarantee the frequency is configured. More...
 
int32_t Sciclient_pmQueryModuleClkFreqRange (uint32_t moduleId, uint32_t clockId, uint64_t reqFreqHz, uint64_t minFreqHz, uint64_t maxFreqHz, uint64_t *respFreqHz, uint32_t timeout)
 Message to query the best clock frequency in the given range. This message does no real operation, instead, it requests the system control entity to respond with the best frequency that can match a frequency range provided. NOTE: This is a snapshot view. In a multi processing system, it is very well possible that another processing entity might change the configuration after one entity has queried for best match capability. Only a SET_CLOCK_FREQ will guarantee the frequency is configured. More...
 
int32_t Sciclient_pmGetModuleClkFreq (uint32_t moduleId, uint32_t clockId, uint64_t *freqHz, uint32_t timeout)
 Message to Get Clock Frequency This is most used functionality and is meant for usage when the driver controlling the hardware block requires to know the input clock frequency for configuring internal dividers / multipliers as required. More...
 
int32_t Sciclient_pmEnableWdt (uint32_t timeout)
 Enables the WDT controllers within the DMSC. More...
 
int32_t Sciclient_pmDisableWakeup (uint32_t timeout)
 This message is part of the CPU Off sequence. The sequence is: More...
 
int32_t Sciclient_pmGetWakeupReason (uint8_t mode[32], uint8_t reason[32], uint32_t *time_ms, uint32_t timeout)
 Request wakeup reason After a wakeup, the host can request the deepest sleep/idle mode reached and the reason for the wakeup. The API also returns the time spent in idle state. More...
 
int32_t Sciclient_pmDevicePowerOff (uint32_t timeout)
 Some processors have a special sequence for powering off the core that provides notification to the PMMC when that sequence has completed. For processors without such a sequence, the goodbye message exists. The exact sequence involved in the goodbye message depends on the SoC. More...
 
int32_t Sciclient_pmDeviceReset (uint32_t timeout)
 Objective: Trigger a SoC level reset Usage: Used to trigger a system level reset. NOTE: Depending on permissions configured for the SoC, not all processing entities may be permitted to request a SoC reset. When permitted, the request once processed will not return back to caller. More...
 
int32_t Sciclient_pmIsModuleValid (uint32_t modId)
 This API would check if the given module Id is valid for the device. More...