Ilitek ILI9881C MIPI controller

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Ilitek ILI9881C MIPI controller

跳至解决方案
4,476 次查看
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

标记 (2)
1 解答
4,237 次查看
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 项奖励
回复
10 回复数
1,617 次查看
vivek5676
Contributor II

Hello,

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

Regards,

VK

0 项奖励
回复
1,621 次查看
vivek5676
Contributor II

Hi, can you give the model number of MIPI display

0 项奖励
回复
2,607 次查看
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 项奖励
回复
2,558 次查看
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 项奖励
回复
4,238 次查看
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 项奖励
回复
3,172 次查看
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 项奖励
回复
4,338 次查看
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

4,435 次查看
Zhiming_Liu
NXP TechSupport
NXP TechSupport

Hi @robertosartori 

Can you share the kernel log about this issue?

0 项奖励
回复
4,426 次查看
robertosartori
Contributor III

Hi @Zhiming_Liu, attached the full dmesg log.

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

0 项奖励
回复
1,617 次查看
vivek5676
Contributor II

Hello,

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

Regards,

VK

0 项奖励
回复