Ilitek ILI9881C MIPI controller

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

Ilitek ILI9881C MIPI controller

Jump to solution
3,248 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
3,009 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
10 Replies
389 Views
vivek5676
Contributor I

Hello,

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

Regards,

VK

0 Kudos
393 Views
vivek5676
Contributor I

Hi, can you give the model number of MIPI display

0 Kudos
1,379 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
1,330 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
3,010 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
1,944 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
3,110 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

3,207 Views
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @robertosartori 

Can you share the kernel log about this issue?

0 Kudos
3,198 Views
robertosartori
Contributor III

Hi @Zhiming_Liu, attached the full dmesg log.

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

0 Kudos
389 Views
vivek5676
Contributor I

Hello,

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

Regards,

VK

0 Kudos