Verdin 8MM DSI LVDS display rotation

I’m trying to configure the DSI to LVDS adapter on an 8MM Verdin module with the Toradex 10.1" display.

The display works as is but I would like to reconfigure it for portrait mode. I’ve found the documentation on how to do this for Weston, but this still leaves it looking clunky as the boot display is still incorrectly oriented.

I tried playing with the devicetree config but because it is connected using a DSI bridge, there doesn’t seem to be a “panel” instance that can take a rotation parameter (as opposed to e.g. the mezzanine LVDS on the 8MP).

What is the correct way to rotate the display in the devicetree or kernel command line for this bridge? I also tried “video=LVDS-1:panel_orientation:left_side_up” in the kernel command line (as well as DSI-1 for the output name)

Hi @bw908,

From what I understand from your question, you need to rotate the splash screen during the boot process of your device, am I correct?

For that, you could simply add a custom splash screen from a PNG file that is rotated and will fit your needs. Please, take a look at this article on how to deploy an image with the custom splash screen: Splash Screen on TorizonCore | Toradex Developer Center

Let me know if you need any help with that.

Best Regards,
Hiago

That sort-of works but isn’t really suitable as the spinner is then in a strange place. While it’s possible to reconfigure and customize the entire plymouth theme to fix this, (and I’ll do that if I have to) that’s not my first choice as a solution.

For whatever reason the weston ini change also doesn’t take, the container refuses to start after specifying the orientation.

I am wondering if the DSI to LVDS bridge simply does not support this.

Hi @bw908,

I’m taking a look at your issue here with the team to see if they have something to help you.
Meanwhile, could you send us a picture of the boot splash screen? Just for us to see where the spinner is.

Could you share your westo.ini and the error logs that you’re seeing?

Best regards,
Hiago.

Hi there!
I pasted the example section directly from the developer article and adapted it slightly as follows:

[output]
name=LVDS-1
transform=rotate-270

That did not change the orientation at all, so I used the weston-info tool to check and saw the output was actually named “DSI-1”. Changing the name in the INI file caused the container to stop launching, and the output of docker logs torizon_weston_1 was empty.

My issue with the spinner is that it would, instead of being horizontally centered and about 2/3 of the way down the screen, then be positioned at the vertical center and 2/3 of the way to the right of the screen. (Related but something I don’t expect you to support is that I’ve actually customized the splash screen theme beyond just the single image so it has more elements and a custom spinner. - so I can obviously adjust the theme further if necessary to account for this rotation, - I’m just hopeful for a “hardware” solution rather than a software one.

(The rotation is apparently possible with the Verdin Mezzanine board together with the Mini Plus, as it has native LVDS instead of a DSI interface. We have ordered a Mezzanine to experiment with this as an option (as well as asking our panel provider if they are able to offer one that is native portrait mode.)

If you wish I can still provide a picture of the screen but I will need to do that tomorrow as I would need to remove certain branding that I cannot post publicly at this time.

Hi @bw908,

Searching in NXP community, I’ve found this question:

Apparently, this guy is having the same problem as yours, and NXP replied him:

Unfortunately, is impossible with the weston.ini file, since this process 
is not initialized at that level. For that, you will need to create a patch
for the u-boot and for the kernel that could change the display orientation 
at that level.

So in order to properly rotate the splash screen without using the TorizonCore Builder, a custom kernel patch is needed.

Regarding the Weston problem, how are you running this container? Could you share your docker run command?

A picture would be great for us.

Best regards,
Hiago.

Hi @bw908,

I remembered something that might help: weston.ini file will not work if you leave blank spaces in the file. For instance, if you have [output] <- blank space after ] instead of [ouput] the configuration can fail.
Could you please check if you have any blank space in your weston.ini file?

Best regards,
Hiago.

Thank you, I will check this when I next have a moment. I apologize for not providing the screenshot yet, I’ve been asked to put this task on the back burner for a few days while I work on something higher priority.

1 Like

OK, I think I have found why I cannot do what I want to. Even with “native” (non DSI) LVDS I am unable to rotate the panel during early boot (splash screen). This appears to be due to the kernel configuration, namely CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set. Would it be possible to have this feature enabled officially?

Specifiyng the rotation parameter in the dts for the LVDS panel still seems to have no effect for me either, but I am not currently sure if that’s just a result of the lack of support in the kernel itself too.

(Found via drivers - Display not rotated with framebuffer console - Ask Ubuntu)

Hi @bw908,

Have you tried with this configuration enabled and it worked?

If you haven’t tested it yet, I can create a TorizonCore image for you with this feature enabled for testing purposes, then if it works I can talk to the TorizonCore team to check if they can enable it for you. Would that be ok for you?

Best Regards,
Hiago.

That is actually my plan today to confirm this is the case - I’ve built a custom image before where I changed the kernel config to test something so I should be able to get the image myself, but I’ll be sure to reach out if I encounter any issues.

Thanks!

Hi @bw908,

Great! Feel free to reach me if you need any assistance with that. Let me know if this configuration works as well.

Best Regards,
Hiago.

Unfortunately no luck. While I am able to rotate the final application using the weston configuration I really would like to get hardware rotation during early boot working as well.

It looks like Plymouth (the splash manager) doesn’t use fbcon which is why the previous change hasn’t had an effect, unfortunately.

There is some discussion here on the topic - apparently it can work if the panel is defined as rotated, or it requires some kernel patches to a 5.6 kernel to accept new command line syntax. In this case it’s not quite the same as we are looking to unify the config (have the kernel see the panel as rotated) but I can’t get that working properly at a low level. I’ve seen this work first hand on other yocto builds so I am not sure why it isn’t working for us with the Toradex config.

Specifically, have tried setting rotation=<90> in the dts for the display panel but this has had no effect, as well as video=LVDS1:1280x800@60,rotate=90 and neither of these made a difference.

According to the devicetree specification, the rotation property should be supported:

(and not hampered by the presence of a DSI bridge now that we have native LVDS from the imx8-mp)

Do you have any additional thoughts we can try besides resorting to somewhat fiddly customization of the plymouth theme and initramfs?

Hi @bw908,

I found some tickets internally from our R&D team that they already know about this limitation and they’re already working on a solution. Unfortunately, there is nothing that I can say right now that will fix your issue.

The only method I know at the moment is using TorizonCore Builder to swap the splash screen with an image that has the right orientation. The spinner icon itself you need to customize this in Yocto at the moment to get that oriented.
Then finally you need to use Weston to rotate the actual application.

Not the best answer here for now, but I will let you know when the ticket gets updated so you can test it on your side.

Also found that the driver support is not that good for now: Property: panel orientation - DRM database

Best Regards,
Hiago.

Thanks for the update, I’m glad to hear it is known and being worked on.

Technical question - Does any aspect of Torizon currently use the advanced features of the Plymouth splash system such as messages, progress bars/firmware update and text entry? Trying to determine whether I need to adjust these items as well or if just relocating e.g. the spinner and artwork assets is sufficient.

Thanks!

Hi @bw908,

Looking at the Plymouth recipe, it appears that we don’t have this advanced features enabled. So I believe we don’t have this kind of support, unfortunately.

I would like to correct myself on previous messages:

The tickets exist but they’re current in the backlog, planned to be fixed in the future, not “currently” being fixed.

Best Regards,
Hiago.

That’s fine, it makes my task easier since I only need to worry about some of the assets and minimal .theme configuration.
For anyone else looking to follow this path, It’s fairly easy to do as one can modify the plymouth theme almost in-place. To deploy it you don’t need to rebuild the entire image, it is sufficient to adapt the existing plymouth customization script used by the builder to create a new initramfs with a fully custom Plymouth theme instead - and this initramfs can then be placed in a torizoncore builder “custom overlay” directory

Having low-level hardware rotation is of course the superior option, but of course if you have to do the intermediate workaround anyway it doesn’t matter whther it’s for a few months or for longer. :slight_smile:

1 Like

Hi @bw908,

Thanks for sharing this information :slight_smile:

For now, I will mark your reply as “solution” and I’ll update here once we have something ready.

Best Regards,
Hiago.

1 Like

Just following up - it would appear that rotation=<90> works as expected in TorizonCore 6.2.x, at least for the splash screen - the display is rotated into portrait mode as expected.

1 Like

Hi @bw908,

Thanks for the follow-up. Good to know it’s working now.

Best Regards,
Hiago.