A subsystem sends the XPm_InitFinalize(void)
requests the PLM firmware to finalize the subsystem configuration and power down unused
nodes to maintain optimum power consumption.
For bare-metal application, an application developer needs to call XPm_InitFinalize(void)
from the application.
For Linux applications, the platform management driver calls XPm_InitFinalize()
.
A subsystem that is incapable of PM never sends this request. Therefore, its platform management devices remain powered up at all times, or until the PM subsystem itself is powered down.
If XPm_InitFinalize()
is not called, the PLM
firmware does not power down any device. The objective of XPm_InitFinalize()
is to make the firmware aware that the caller subsystem
of XPm_InitFinalize()
is platform management capable
(uses platform management APIs if it needs any device). XPm_RequestNode()
will power up devices even if XPm_InitFinalize()
is not invoked. Nodes will also be released through
XPm_ReleaseNode()
even if XPmInitFinalize()
is not
invoked XPm_ReleaseNode()
also passes. However in this
case, only the use count is decremented, and no power down operation is performed.
Reason Why PLM Firmware Does Not Power Down Device When XPm_InitFinalize Not Called
Consider a APU subsystem that is PM capable (uses PM APIs), and a RPU subsystem that is PM incapable (does not use PM API). Assume that both subsystems use TCM.
As the APU subsystem is PM-capable, it calls both XPm_RequestNode(TCM)
and XPm_InitFinalize()
. The PLM firmware then knows that the APU subsystem
is PM capable, and calls XPm_RequestNode()
when it
requires a device.
In contrast, because the RPU is PM unaware, applications might be using
devices without requesting the PM API, as Xilinx
allows applications to run without using the XilPM library. The PLM firmware is
aware that the RPU subsystem is running, but remains unaware about the devices that
are used by the RPU. Therefore, the PLM firmware does not power down any device
until each subsystem has called XPm_InitFinalize()
.
Call XPm_InitFinalize()
for proper power
management and to obtain desired power values. The PLM firmware power downs all
unused nodes when you call XPm_InitFinalize()
from
each subsystem. The PLM firmware also allows you to power down any device when you
call the XPm_ReleaseNode()
API.
A PM-capable subsystem sends an XPm_InitFinalize()
request after initializing
the sub-system. The PLM firmware then begins to power down the PM devices in this
subsystem whenever they are not being used.