i.MX6 screen rotation


Andy Pont
 

Hello,

I’m not sure whether this is a hardware issue, Linux kernel issue or a Yocto issue but as some of the finest minds are on the mailing lists I figured it was a good place to start! Enough flattery? :-)

We are using a Boundary Devices Nitrogen6X Lite (i.MX6S) board as a demo platform for a project using the linux-boundary 4.14.98 kernel.   The Boundary Devices kernel is more-or-less the same as the Freescale kernel imx_4.14.x_2.0.0_ga.

I am trying to get framebuffer rotation to work so that I can rotate the framebuffer console (on fb0) through 90 degrees.  I have the kernel configuration option CONFIG_FRAMEBUFFER_CONSOLE_ROTATION enabled and am trying to run some tests by setting values through /sys/class/graphics/fb0/rotate and /sys/class/graphics/fbcon/rotate.

I have used fb-test to display an image onto the screen and if I write “1” to /sys/class/graphics/fb0/rotate then the display flips and looks great when viewed in a mirror.  No amount of trying to set other values will rotate the screen through 90 or 270 degrees.

Is there an issue with rotation on the i.MX6 or is there a configuration setting that I am missing somewhere?

-Andy.


Bert <bert.boehne@...>
 

Hi Andy,

this sounds like you have to check your hardware and your framebuffer driver. How is the display connected to the display controller? This is may not set correctly in your framebuffer driver.

I had the same issues with a SSD1305 display conrtoller. (https://www.adafruit.com/images/product-files/2720/2719%20data.pdf) If you look at "10.1.26  Set COM Pins Hardware Configuration (DAh)" in this datasheet you will understand what I mean.

Kind regards,

Bert


Andy Pont
 

Bert wrote...

this sounds like you have to check your hardware and your framebuffer driver. How is the display connected to the display controller? This is may not set correctly in your framebuffer driver.
The LCD is a 640x480 pixel TFT which has the NewVision NV3052C controller embedded within it into which we drive the 24bits of RGB colour data along with VSYNC, HSYNC, PIXCLK from the DISP0_DAT pins of the i.MX6.

The framebuffer device is provided by what look like Freescale additions to the kernel in drivers/video/fbdev/mxc on top of which we are using the Vivante drivers to provide OpenGL/EGL support.

The target application uses the i.MX6 Framebuffer API[1] and OpenGL ES to render on the screen.  If it isn’t possible to rotate the framebuffer itself but can get the Vivante drivers and the GPU to rotate everything then I think that may work.

-Andy.