The PLM checks permissions for any subsystem that requests a device. While creating a subsystem in the Vivado tool, you can assign a single peripheral to multiple subsystems, or to a single subsystem. This information is exported to PMC CDO, and the access for requesting a device is allowed based on this information from the CDO. By default, this permission is shared for all subsystems, that is, a single device can be requested by multiple subsystems. The exceptions are clock, reset and the power operation that are allowed only if a single subsystem has requested any of these resources.
XPm_InitFinalize()
API when they have finished
initializing all their devices and requested devices using XPm_RequestNode()
. Otherwise, the PLM does not power down any
device.The following sequence is the ideal sequence for calling using the PM API for device management is as follows:
- Call
XPm_RequestNode()
on all required devices. - Initialize devices.
- Call
XPM_InitFinalize()
to inform PLM that all required devices are requested and initialized
It is not mandatory that XPm_RequestNode()
has to be called before XPm_InitFinalize()
. If XPm_InitFinalize()
is called before XPm_RequestNode()
, the PLM powers down
that device (as initial state is ON). If XPm_RequestNode()
is called after XPm_InitFinalize()
, the PLM powers up the device.
Some device initialization is done through CDO. Therefore, if XPm_InitFinalize()
is called before XPm_RequestNode()
, it is possible that initialization is lost as device is
powered down first and then powered up again. It is recommended that you call XPm_InitFinalize()
once it has requested all required
devices. Otherwise, you need to take care of initialization again.
When you call XPm_ReleaseNode()
, be
mindful that the device powers down, and initialization configuration might be lost.