The aim of this section is to properly configure the LVDS settings.
...
Some devices are used in the overlays and those devices are pre-enabled by default in the source.
Below is the reference table for the pre-enabled Device Tree Overlay.
Boards familyFamily | Peripherals | Device Tree Overlay |
---|---|---|
i.MX6 | UART, LVDS, RGB, Audio, HDMI, Touch, GPIO, Pin header selection, etc. |
|
i.MX8 | HDMI, Display Port, LVDS , Camera, hdmiin, lcdif, Modem, eDP, GPIO,CAN, RTC,PCIe, SPI, DCSS, WiFi/BT, etc. |
|
...
The MIPI DSI support on i.MX8-based boards is enabled via the device trees located in the Kernel source at arch/arm64/boot/dts/seco. MIPI-DSI on i.MX8 with IPU is supported with Synopsys hardware while i.MX8 uses the Mixel and the Advantec panels.
SECO boards with i.MX8 SoC support the following MIPI-DSI interfaces:
...
display modes from a display driver (used for kernel mode settings (KMS) e.g. from
panel-simple.c
, e.g., i.MX8 DRM driver);display modes from a specific devicetree overlay (support available only from BSP 9 onwards);
KMS interface (Kernel Mode Setting, part of the Direct Rendering Manager (DRM) interface, kernel argument, through Xorg/RandR using modesetting driver).
Adding Custom LVDS support in panel-simple.c for i.MX8
...
The connected panel is represented in the device tree in its own node. That node references the used LDB/LVDS channel through its node 'port' (RIFORMULARE). Both panel-simple and panel-lvds driver can be used, as described below. NON CAPISCO SE QUI DOVREBBE ESSERCI UN SECONDO PUNTO ELENCO, MI SEMBRA CHE LE OPZIONI DA SPIEGARE SIANO 2.
Panel Simple
Set the compatible property to an existing or newly added panel from the panel-simple driver.
...
There are the following statements in the drivers/gpu/drm/panel/panel-simple.c file (NON HO CAPITO)
Code Block |
---|
static const struct display_timing auo_p215hca_high_timing = { .pixelclock = { 139000000, 160000000, 165000000 }, .hactive = { 1920, 1920, 1920 }, .hfront_porch = { 1, 85, 90 }, .hsync_len = { 1, 10, 45 }, .hback_porch = { 1, 85, 150 }, .vactive = { 1080, 1080, 1080 }, .vfront_porch = { 3, 20, 50 }, .vsync_len = { 6, 10,60 }, .vback_porch = { 11, 20, 37 }, .flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW | DISPLAY_FLAGS_DE_LOW | DISPLAY_FLAGS_PIXDATA_NEGEDGE, }; static const struct panel_desc auo_p215hca_high = { .timings = &auo_p215hca_high_timing, .num_timings = 1, .bpc = 8, .size = { .width = 68, .height = 121, }, .delay = { /* * The panel spec recommends one second delay * to the below items. However, it's a bit too * long in pratical. Based on tests, it turns * out 100 milliseconds is fine. */ .prepare = 100, .enable = 100, .unprepare = 100, .disable = 100, }, .bus_format = MEDIA_BUS_FMT_RGB888_1X24,//MEDIA_BUS_FMT_RGB888_1X7X4_SPWG, }; static const struct of_device_id platform_of_match[] = { { }, { .compatible = "auo,p215hca-high", .data = &auo_p215hca_high, }, { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, platform_of_match); |
...
After the timing parameter need to call the device tree file with compatible device on the panel. (NON HO CAPITO)
Please refer the respective SECO boards device tree (.dts)file. PER FARE COSA? QUELLO CHE è SCRITTO SOPRA?
E.g.: seco-imx8mm-c72.dts
...
lvds,datamap: can be configured as jeida or spwg, other configurations are not supported.
lvds,dual-channel:if inserted, it enables bridge dual channel output. The DSI video signal is splitted in LVDS channel A and LVDS channel B,
refer tosn65dsi84 datasheetfor more informations.lvds,preserve-dsi-timings:this parameter is useful when the LVDS display timing is synchronized with Data Enable, while it should be removed if the panel is not DE sync. LVDS panels that are not synchronized with Data Enable must be configured without
lvds
,preserve-dsi-timing parameter
andclocks = <&si5351a 0>
should be commented out to ensure timing sync. QUI COSA VA IN CORSIVO/CODICE?
Note |
---|
The above configurations can be useless in some cases and prevent the panel from turning on. |
...