PMU Firmware in general can be used as-is for most use-cases. This is because all of the initialization is expected to be done by the FSBL.
However, for some specific cases it might be necessary to add custom code during the initialization, particularly where the PMUFW executes before the FSBL.
Here is a flow chart showing PMUFW Initialization at a high level:
Per the above flow, any user code that needs to be executed at startup needs to be added in the UserStartUp stage.
In the source code, it is contained in the Xpfw_UserStartUp() function in xpfw_user_startup.c
Here is an example diff of the changes that need to be made:
Diff for xpfw_user_startup.c
Note: All of the init code in XPfw_UserStartUp will be executed while the interrupts are disabled, to ensure that the init sequence executes uninterrupted.