Ilitek ILI9881C MIPI controller

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Ilitek ILI9881C MIPI controller

Jump to solution
6,019 Views
robertosartori
Contributor III

Hi,

I'm adding support for a MIPI Display with an ili9881c controller on a custom iMX8MP board. I'm on kernel 5.4 and Android 10.

Following the vendor specification, only 3 commands are needed to initialize this display:
- Tearing Effect On
- Sleep Out
(sleep 120ms)
- Display On

This sequence is already present in most drivers, including the ili9881c and the raydium rm67191 drivers.

So, I removed the 'extra commands' from the ili9881c driver and I left only the needed sequence, but I was getting errors on the dsi communication in the kernel log. The display was also completely black (backlight is working).

I then found some reports online that mention some issues with the ili9881 driver. For example, the ilitek driver is using the 'mipi_dsi_dcs_write_buffer' function, which apparently causes issues: using the 'mipi_dsi_generic_write' instead solves part of them.

Example of such reports:
https://community.nxp.com/t5/i-MX-Processors/iMX8MM-Connect-Display-with-ili9881c-driver-ic-via-MIPI...

I also found out that the even if the ‘mipi_dsi_dcs_set_tear_on(dsi, MIPI_DSI_DCS_TEAR_MODE_VBLANK)’ command is sent correctly, after this I cannot send any more messages on the DSI bus (I get errors if I send messages after the ‘mipi_dsi_dcs_set_tear_on' is called)

I bypassed this issue using the ‘mipi_dsi_generic_write(dsi,(u8[]){ 0x35, 0x00 }, 2)’ function instead. I think that this happens because ‘mipi_dsi_dcs_set_tear_on actually uses the 'mipi_dsi_dcs_write_buffer' function, which as mentioned above is not always working as expected.
Now, I don’t get any errors in the logs but the display stays completely black. Only the backlight is working.

I then switched to the rm67191 driver as suggested in the community: https://community.nxp.com/t5/i-MX-Processors/IMX8MM-enabling-MIPI-panel-driver-for-ILI9881C/m-p/1351...

But I have the same results: the display stays black, no lines on colors are shown.

Any suggestions here? Does someone have experience with the Ilitek controller on the 8MP platform?

Thanks!

Roberto

Tags (2)
1 Solution
5,780 Views
robertosartori
Contributor III

Hi all,

An updated on this: it turned out to be an hardware issue.

We now have the display working correctly.

We can close this.

Thanks!

Roberto

View solution in original post

0 Kudos
Reply
10 Replies
3,160 Views
vivek5676
Contributor II

Hello,

Can you give name list of driver IC for MIPI DSI display which will support i.mx93.

Regards,

VK

0 Kudos
Reply
3,164 Views
vivek5676
Contributor II

Hi, can you give the model number of MIPI display

0 Kudos
Reply
4,150 Views
Arvin8002
Contributor I

I have also added the ili9881C screen on IMX8MQ platform, but I have encountered some problems, the screen has not been lit up, may I ask what else I need to do besides sending the initialization sequence at rm67198 and configuring the information in the device tree?

0 Kudos
Reply
4,101 Views
brunocrga
Contributor I

Hi @Arvin8002,

In my case, the vendor of the display that uses the ili9889C panel helped us by updating the commands from the initialization sequence. This solved the issue on our end.
You may want to contact your vendor to ask for their help.

Best regards,
Bruno

0 Kudos
Reply
5,781 Views
robertosartori
Contributor III

Hi all,

An updated on this: it turned out to be an hardware issue.

We now have the display working correctly.

We can close this.

Thanks!

Roberto

0 Kudos
Reply
4,715 Views
brunocrga
Contributor I

Hello @robertosartori 

I am having a similar issue with a display that has the ILI9881C IC controller.

I was wondering if you could kindly share some information about the hardware issue that was causing the errors or how you were able to fix this.
Any help would be appreciated.

Thanks and best regards,
Bruno

0 Kudos
Reply
5,881 Views
robertosartori
Contributor III

Hi,

An update: I'm now trying to read registers from the Ilitek controller to validate the MIPI communication. It is my understanding that I just need to toggle the RESET PIN (high->low->high) to enable the MIPI communication and be able to read registers from the controller.

I'm using this to read the registers:

 

mipi_dsi_generic_read(ctx->dsi, &cmd, sizeof(cmd), &data, sizeof(data));

 

cmd is the register address (e.g. 0x09). However, the read operation always timeouts. This happens both from the Ilitek driver and from the Raydium driver.

The error is:

 

imx_sec_dsim_drv 32e60000.mipi_dsi: wait rx done time out

 

I found numerous reports of the same issues, for example:

https://community.nxp.com/t5/i-MX-Processors/iMX8MP-MIPI-DSI-Bring-up-wait-payload-tx-done-time-out/...

https://community.nxp.com/t5/i-MX-Processors/Driver-of-ST7703-under-Linux-5-4-3/m-p/1267260/highligh...

The read do not work in the probe (and I expected it since dsi it still not fully enabled) nor in the enable callback when all the writes are performed apparently succesfully.

I see the same: even if write operations are apparently successful, I cannot read any register.

So now the question is: how can I validate the read operations? Are they suppose to work on the prepare or enable methods of the Ilitek or Raydium drivers?

Thank you,

Roberto

5,978 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @robertosartori 

Can you share the kernel log about this issue?

0 Kudos
Reply
5,969 Views
robertosartori
Contributor III

Hi @Zhiming_Liu, attached the full dmesg log.

I don't see particular issues reported in the log.

0 Kudos
Reply
3,160 Views
vivek5676
Contributor II

Hello,

Can you give name list of driver IC for MIPI DSI display which will support i.mx93.

Regards,

VK

0 Kudos
Reply