1. A method comprising: in a data storage device having a multi-level cell (MLC) memory, performing: reading a representation of a codeword stored in the MLC memory by comparing cell threshold voltages in the MLC memory to hard bit thresholds to generate hard bit values and to soft bit thresholds to generate soft bit values; and providing the hard bit values and the soft bit values to a non-binary decoder that uses probabilistic decoding to obtain decoded data.