There are 32 PMU->PL General Purpose Outputs (GPOs) provided for general purpose usage. These are like EMIOs, but they can only be accessed and controlled by PMU. These GPOs can be re-purposed to be used as resets, clock-gates, sleep controls or power mode switches for PL IPs.
Here is a screen shot on enabling these GPOs in Vivado PCW wizard:
Here is a screen shot of a design which uses GPO[0] as a sleep control signal for BRAM:
PMUFW provides EEMI reset control APIs to change the state of these GPOs. The node IDs for these GPOs are provided below:
PM_RESET_GPO3_PL_0 |
1081 |
PM_RESET_GPO3_PL_1 |
1082 |
PM_RESET_GPO3_PL_2 |
1083 |
PM_RESET_GPO3_PL_3 |
1084 |
PM_RESET_GPO3_PL_4 |
1085 |
PM_RESET_GPO3_PL_5 |
1086 |
PM_RESET_GPO3_PL_6 |
1087 |
PM_RESET_GPO3_PL_7 |
1088 |
PM_RESET_GPO3_PL_8 |
1089 |
PM_RESET_GPO3_PL_9 |
1090 |
PM_RESET_GPO3_PL_10 |
1091 |
PM_RESET_GPO3_PL_11 |
1092 |
PM_RESET_GPO3_PL_12 |
1093 |
PM_RESET_GPO3_PL_13 |
1094 |
PM_RESET_GPO3_PL_14 |
1095 |
PM_RESET_GPO3_PL_15 |
1096 |
PM_RESET_GPO3_PL_16 |
1097 |
PM_RESET_GPO3_PL_17 |
1098 |
PM_RESET_GPO3_PL_18 |
1099 |
PM_RESET_GPO3_PL_19 |
1100 |
PM_RESET_GPO3_PL_20 |
1101 |
PM_RESET_GPO3_PL_21 |
1102 |
PM_RESET_GPO3_PL_22 |
1103 |
PM_RESET_GPO3_PL_23 |
1104 |
PM_RESET_GPO3_PL_24 |
1105 |
PM_RESET_GPO3_PL_25 |
1106 |
PM_RESET_GPO3_PL_26 |
1107 |
PM_RESET_GPO3_PL_27 |
1108 |
PM_RESET_GPO3_PL_28 |
1109 |
PM_RESET_GPO3_PL_29 |
1110 |
PM_RESET_GPO3_PL_30 |
1111 |
PM_RESET_GPO3_PL_31 |
1112 |
Here is a debugfs example of these APIs which can control the PMU->PL GPOs:
# Control PMU->PL GPO[0]- set to 1
echo pm_reset_assert 1081 1 >/sys/kernel/debug/zynqmp-firmware/pm