SPRUIL1D May 2019 – December 2024 DRA829J , DRA829J-Q1 , DRA829V , DRA829V-Q1 , TDA4VM , TDA4VM-Q1
The engine goes through the entire error-location process and results can be read. Table 12-373 and Table 12-374 describe the processing completion for continuous and page modes, respectively.
| Step | Register/Bit Field/Programming Model | Value |
|---|---|---|
| Wait until process is complete for syndrome polynomial i: Wait until the ELM0_ELM_POROCPSINTERRUPT_LVL_0 interrupt is generated, or poll the status register. | ||
| Read for which i the error-location process is complete. | ELM_IRQSTATUS[i] LOC_VALID_i | 0x1 |
| IF the process fails (too many errors): | ELM_LOCATION_STATUS_i[8] ECC_CORRECTABLE | 0x0 |
| It is software dependant. | ||
| ELSE (process successful, the engine completes): | ELM_LOCATION_STATUS_i[8] ECC_CORRECTABLE | 0x1 |
| Read the number of errors. | ELM_LOCATION_STATUS_i[4-0] ECC_NB_ERRORS | |
| Read the error-location bit addresses for syndrome polynomial i of the ECC_NB_ERRORS first registers. Software must correct errors in the data buffer. | ELM_ERROR_LOCATION_0_i[12-0] ECC_ERROR_LOCATION | |
| ELM_ERROR_LOCATION_1_i[12-0] ECC_ERROR_LOCATION | ||
| ... | ||
| ELM_ERROR_LOCATION_15_i[12-0] ECC_ERROR_LOCATION | ||
| ENDIF | ||
| Clear the corresponding i interrupt. | ELM_IRQSTATUS[i] LOC_VALID_i | 0x1 |
A new syndrome polynomial can be processed after the end of processing (ELM_SYNDROME_FRAGMENT_6_i[16] SYNDROME_VALID = 0x0) and after the exit status register check (ELM_LOCATION_STATUS_i).
| Step | Register/Bit Field/Programming Model | Value |
|---|---|---|
| Wait until process is complete for syndrome polynomial i: Wait until the ELM0_ELM_POROCPSINTERRUPT_LVL_0 interrupt is generated, or poll the status register. | ||
| Wait for page completed interrupt: All error locations are valid. | ELM_IRQSTATUS[8] PAGE_VALID | 0x1 |
| Repeat the following actions the necessary number of times. That is, once for each valid defined block in the page. | ||
| Read the process exit status. | ELM_LOCATION_STATUS_i[8] ECC_CORRECTABLE | |
| IF the process fails (too many errors): | ELM_LOCATION_STATUS_i[8] ECC_CORRECTABLE | 0x0 |
| It is software dependent. | ||
| ELSE (process successful, the engine completes): | ELM_LOCATION_STATUS_i[8] ECC_CORRECTABLE | 0x1 |
| Read the number of errors. | ELM_LOCATION_STATUS_i[4-0] ECC_NB_ERRORS | |
| Read the error-location bit addresses for syndrome polynomial i of the ECC_NB_ERRORS first registers. | ELM_ERROR_LOCATION_0_i[12-0] ECC_ERROR_LOCATION | |
| ELM_ERROR_LOCATION_1_i[12-0] ECC_ERROR_LOCATION | ||
| ... | ||
| ELM_ERROR_LOCATION_15_i[12-0] ECC_ERROR_LOCATION | ||
| ENDIF | ||
| End Repeat | ||
| Clear the ELM_IRQSTATUS register. | ELM_IRQSTATUS | 0x1FF |
Next page can be correctly processed after a page is fully processed, when all tagged polynomials have been processed (ELM_IRQSTATUS[i] LOC_VALID_i = 0x1 for all syndrome polynomials i used in the page).