framebuffer mini tutorial
All of the eink kindles (so far) use a 4-bit framebuffer at the hardware level. That means that you can only display pixels in 16 different shades of gray. To display more than 16 colors, you need to use dithering, which mixes those 16-colors spatially to give up to 256 different AVERAGE brightness levels.
In the case of kindles with 8-bit framebuffers, the bottom and top 4-bits must be identical, or unpredictable (hardware dependent) side-effects will result (according to comments in the eink driver GPL source code).
But for smooth animation, you can really only use 2-bit (black and white) and you need to dither only those two colors to get full grayscale. There is some sample C code showing how to do this dithering, in the "newtrix" demo (both 2-bit and 4-bit dithering).