Patent ID: 8611033

Claim:
A method for data processing, the method comprising: receiving a data input; performing a data detection on the data input and a decoder output to yield a detected output; generating two or more preliminary inputs based at least in part on the detected output and an iteration count of the data decode, wherein generating two or more preliminary inputs includes: comparing the number of unsatisfied decoder check equations with a threshold value to yield a first comparator output; selecting one of an interim detected output and the detected output less the decoder output as a selected output based at least in part on the first comparator output; comparing the number of unsatisfied decoder check equations with a second threshold value to yield a second comparator output; selecting one of the interim detected output and a reconstructed output as the interim detected output based at least in part on the second comparator output; calculating the iteration count mod N to yield a remainder output; and wherein selecting one of the interim detected output and the detected output less the decoder output as the selected output includes selecting the interim detected output when the remainder output is equal to zero and the number of unsatisfied decoder check equations is less than the threshold value; selecting one of the two or more preliminary inputs as a decoder input based at least in part on a number of unsatisfied decoder check equations; and performing a data decode on the decoder input to yield the decoder output and the number of unsatisfied decoder check equations.