Also, keep in mind that I despise the 16bpp modes with every fiber of my being, so that's *NOT* what I'm most concerned about in FBInk, while it *is* for KSM (and, to a much lesser extent now that it does hw rotation on its own, Plato), because, for historical reasons, it expects/emulates the state the device is put in by pickel during the boot progress animation.
I, thankfully, was more concerned about the state *nickel* puts the device in, and once the move to 32bpp was finalized, that turned out to be a boon, because everything was by then slightly less insane.
(That basically explains why the Plato and FBInk links I quoted above might in fact be referring to slightly different things as the "native" orientation

).
If you want more details about your specific device, dropping a couple FBInk calls at key points in the boot process should make everything clearer (current FBInk versions can log to the syslog). Basically, you want one before on-animator.sh runs for the actual, true, "boot" rotation, which may or may not match the touch orientation, then you want one *during* (as in, after its first iteration, but before nickel kills it) on-animator.sh to see how pickel modifies that, as that's what KSM probably wants to match.
And you want one once nickel has fully initialized to check how it decides to sanitize that to a Portrait orientation.