SLVUCR8A September 2023 – March 2024 TPS25751
Description | The 'PBMc' Task ends the patch loading sequence. Send this Task after all patch data has been transferred. This Task will initiate the CRC check on the binary patch data that has been transferred, and if the CRC is successful, the patch_init function contained within the patch will be executed. | |||
---|---|---|---|---|
INPUT DATAX | None | |||
OUTPUT DATAX | Bit | Name | Description | |
319:288 | acCalculatedCRC | The CRC calculated in FW for the configuration data. | ||
287:256 | acTransferredCRC | The CRC transferred along with the configuration data | ||
255:240 | Reserved | reads as 0 | ||
239:224 | acIndicatedDataSize | The indicated DataSize in the transferred configuration data. | ||
223:216 | acHeaderVersion | The indicated header version in the transferred configuration data. | ||
215:208 | acFailCode | An error code indicating why the app config data failed to apply, if it failed to apply | ||
0x00 | AC_FAIL_NONE: No failure | |||
0x01 | AC_FAIL_WRONG_HEADER_VERSION: The header version is expected to be 1 and was not | |||
0x02 | AC_FAIL_TOO_MUCH_DATA: The DataSize field indicates that you are trying to load more configuration data that there is allocated SRAM for | |||
0x03 | AC_FAIL_CRC_CHECK_FAIL: The CRC comparison failed | |||
207:200 | acState | The current internal state of the AppConfig state machine | ||
0x00 | AC_NODATA: No configuration data found yet, because we haven't started looking | |||
0x01 | AC_LOADING_DEFAULT: Attempting to load configuration data from a factory default | |||
0x02 | AC_LOADING_SRAM: Attempting to load configuration data from SRAM | |||
0x03 | AC_LOADING_FLASH: Attempting to load configuration data from Flash | |||
0x04 | AC_LOADING_I2C: Attempting to load configuration data from I2C | |||
0x05 | AC_LOADING_DONE: Done loading configuration data, we found valid data | |||
0x06 | AC_ERROR: A generic error state | |||
0x07 | AC_DONE_SUCCESS: Completely done with the app customization process and the records were applied successfully. | |||
0x08 | AC_DONE_FAIL: Completely done with the app customization process and the records were not applied | |||
199:192 | configBundleGood | 1 if the top-level state machine found a valid configuration bundle, otherwise 0. | ||
191:160 | rpRomVersionExpected | The romVersionExpected in the transferred bundle's patch header | ||
159:144 | rpBundleTotalSize | The bundleTotalSize in the transferred bundle's patch header | ||
143:128 | rpBundleFlags | The bundleFlags in the transferred bundle's patch header | ||
127:96 | rpPatchBodyCrc | The patchBodyCrc in the transferred bundle's patch header | ||
95:64 | rpPatchHeaderCrc | The patchHeaderCrc in the transferred bundle's patch header | ||
OUTPUT DATAX | Bit | Name | Description | |
55:48 | rpBundleSignature | The bundleSignature in the transferred bundle's patch header | ||
47:40 | rpState | The current internal state of the RomPatch state machine. | ||
0x00 | RP_NOPATCH: No patch has been loaded | |||
0x01 | RP_LOADING: In the process of loading patch data | |||
0x02 | RP_LOADINGDONE: All patch data has been received | |||
0x03 | RP_RUNNING: A patch has been loaded and is running. Could also indicate that a NULL patch is active. | |||
0x04 | RP_EARLYLOAD_SKIPPED: Indicates that the early boot process does not need to wait for a patch over I2C | |||
0x05 | RP_UARTBOOTED: Checking for a patch in RAM | |||
0x06 | RP_ERROR: A generic error state | |||
39:32 | patchBundleGood | 0x01 if the top-level state machine found a good ROM patch, otherwise 0x00. | ||
31:24 | AppConfigPatchCompleteStatus | 0x00 | ||
0x40 | Warning | |||
0x80 | Failure | |||
23:16 | DevicePatchCompleteStatus | A return code indicating whether the RomPatch state machine executed successfully. This value is always valid, and reflective of the internal state of the RomPatch mechanism, but must only be considered if the bundle transferred did in fact include patch data. | ||
0x00 | Success | |||
0x20 | Not ready | |||
0x40 | Not a patch | |||
0x41 | Patch header checksum mismatch | |||
0x42 | Patch not compatible with this version of ROM | |||
0x43 | Patch code checksum mismatch | |||
0x44 | Null patch received | |||
0x45 | Error patch received | |||
15:8 | cpReturn | Always returns success, there is no way for it to fail. | ||
Byte 1: Return Code | ||||
7:4 | rpReturnIndicator | The most significant nibble of the rpReturn value. | ||
0x0 | Success | |||
0x2 | Informational | |||
0x4 | Warning | |||
0x8 | Error | |||
3:0 | acReturnIndicator | The most significant nibble of the acReturn value. | ||
0x0 | Success | |||
0x2 | Informational | |||
0x4 | Warning | |||
0x8 | Error | |||
Task Completion | The 'PBMc' Task completes as output has a valid DevicePatchCompleteStatus and AppConfigPatchCompleteStatus. This Task is rejected if the DATAX input does not contain the total patch size. If MODE register (0x03) is equal to 'APP ', then this Task will be rejected. | |||
Side Effects | Before this Task completes it will change the I2C target address from the patch address back to the normal value. Upon successful completion of this Task the PD controller will change the MODE register (0x03) to 'APP ' and move to the application mode. | |||
Additional Information | When the CMD1 register goes to 0 check the Output DATAX register for status. If the MODE register is 'APP ' indicating that the PD controller is in the APP mode, then it will reject the 'PBMc' Task. |