In a perfect world, yes. But there are simply too many broken programs out
there that rely on AFMT_S16_LE being available without properly checking for
it. (And even if they check, few have a suitable fallback.) Most of the
programs using the old SNDCTL_DSP_SAMPLESIZE call rather than SNDCTL_DSP_SETFMT
belong into this category. They push a value of 16, and rarely realise this
implies little-endianness of the data. Stuffing a conversion layer into the
driver therefore makes tons of sense, and avoids a pile of legacy problems.