Okay, I think I'm done updating my first answer, so, to recap, in chronological order:
Boot: 16bpp, rota 0 (but for us, holding the device, it's a CCW landscape). Probably matches the touch panel, at least on my device.
Pickel: 16bpp, rota 2 (for us, CW landscape)
Nickel: 32bpp, rota 1 (for us, UR portait, yay!)
NOTE: I may be getting my CW/CCW mixed up. This shit breaks my brain ;D.
EDIT: Hey, progress re: my second answer.
After running pickel, I can get back to the Nickel mode & rota by doing:
Code:
fbset -geometry 1080 1440 1088 1536 32
(xres/yres/xres_virt/yres_virt/bpp, run fbset with no args to get the proper syntax of the current mode).
After which I'm in...
Code:
[FBInk] Variable fb info: 1440x1080, 32bpp @ rotation: 0 (Upright, 0°)
Then...
Code:
echo 1 > /sys/class/graphics/fb0/rotate
After which I'm in...
Code:
[FBInk] Variable fb info: 1080x1440, 32bpp @ rotation: 3 (Counter Clockwise, 270°)
(Yeah, WTH?!)
But, finally...
Code:
echo 3 > /sys/class/graphics/fb0/rotate
leads to the expected
Code:
[FBInk] Variable fb info: 1080x1440, 32bpp @ rotation: 1 (Clockwise, 90°)
And Nickel is happy again

.
EDITē:
A single
echo 3 >| /sys/class/graphics/fb0/rotate does the job

.
All of this should be reproducible in C with a single (hopefully) FBIOPUT_VSCREENINFO ioctl, and that rotation quirk will hopefully make more sense there without having to devise the rota to set via a shenanigan like 1^2 == 3 (which suspiciously matches target ^ current in my example...) ...