We are working on a new product based on the i.mx8 processor which will run Android 10 and we are facing the challenge of making a driver for the display we have chosen for our new product. Actually, we are currently working with a development kit from Variscite and we want to validate the display before going on with the design of our hardware. This is the very first time we work we AOSP images. So far we have been able to compile the whole project (u-boot, kernel, device-tree, Android) and make some little changes to it like add a new apk to the image. But now, we want to change the display driver to use our own display and the thing is I am quite lost about where I should start and I would like to get some help or guidance. I know I have to modify the device tree to "declare" the new hardware but
The display we have to test is a TFT MIPI 4 lanes and the controller is the HX8394-A01. Also, I have to make my own touch screen driver.
已解决! 转到解答。
Hi,
The driver is at:
drveirs/video/fbdev/mxc/mipi_dsi.c MIPI DSI IP Frame buffer driver source file
drivers/video/fbdev/mxc/mipi_dsi.h MIPI DSI IP Frame bufferdriver header file
drivers/video/fbdev/mxc/mxcfb_hx8369_wvga.c MIPI DSI Frame bufferDisplay Panel driver source file
drivers/video/fbdev/mxc/mipi_dsi_samsung.c MIPI DSI Frame buffer Samsung source file
drivers/video/fbdev/mxc/mipi_dsi_northwest.c MIPI DSI Frame buffer Northwest source file
Regards
Hello electronic15,
Your driver is not included in the current driver list of display supported, you will have to create you own driver, and modified your own device tree, we can see something on display sometimes in the following settings.
static const struct drm_display_mode default_mode = {
.clock = 63000,
.vrefresh = 30,
.hdisplay = 720,
.hsync_start = 720 + 10,
.hsync_end = 720 + 10 + 2,
.htotal = 720 + 10 + 2 + 86,
.vdisplay = 1280,
.vsync_start = 1280 + 8,
.vsync_end = 1280 + 8 + 2,
.vtotal = 1280 + 8 + 2 + 14,
};
NXP doesn't use the DCS to communicate commands to MIPI-DSI bridge IC on DRM drivers. It uses i2c instead. So you need to make changes in i2c. Also you have to modify the clock something like:
clk_byte_freq >= dpi_pclk_freq * DPI_pixel_size / ( 8 * (cfg_num_lanes + 1))
(more info see i.MX8M Reference Manual Rev0 page 5361)
After that you will ave to compile all android and see if your driver work.
Regards
Dear Bio_TICFSL,
About your comment that the Display Command Set (DCS) is nor supported by the NXP drivers and that must be resolve by i2c.
- Does it mean that the i.mx8 mini hardware does not support DCS or it is just a matter of drivers?
As I said before, the display we have chosen has an HX8394-A01 controller which does not have i2c interface, it has just MIPI-DSI 4 lanes interface.
- Is there any way to communicate with this kind of controller directly?
- or Should I use some MIPI-DSI to MIPI-DSI bridge to achieve this?
I would like to understand this as well as possible because in case I have to choose another display.
Best regards,
Gonzalo.
Dear Bio_TICFSL,
Thank you for your help. Where can I consult which are the currently supported display? Maybe I can try a different approach and try to select a new display based on the availability of its driver.
Regards,
Gonzalo.
Hi,
The driver is at:
drveirs/video/fbdev/mxc/mipi_dsi.c MIPI DSI IP Frame buffer driver source file
drivers/video/fbdev/mxc/mipi_dsi.h MIPI DSI IP Frame bufferdriver header file
drivers/video/fbdev/mxc/mxcfb_hx8369_wvga.c MIPI DSI Frame bufferDisplay Panel driver source file
drivers/video/fbdev/mxc/mipi_dsi_samsung.c MIPI DSI Frame buffer Samsung source file
drivers/video/fbdev/mxc/mipi_dsi_northwest.c MIPI DSI Frame buffer Northwest source file
Regards