Hi everyone!
I am currently struggling with a LVDS display (Ampire model that I already use on IMX6 with success!).
My BSP (buildroot 2025.02 + NXP kernel 6) has been successfully tested with an HDMI display; 2D and 3D acceleration work fine with weston. I have therefore decided to switch to LVDS display and the main problem is that I am stuck on this error
"imx-drm display-subsystem: [drm] Cannot find any crtc or sizes"
that I can't resolve.
I attach my DTS snippet. pls take note that LVDS DRM display support is compiled built-in inside kernel.
reg_lvds_en: regulator_lvds_en {
compatible = "regulator-fixed";
regulator-name = "lvds_enable";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds_enable>;
gpio = <&gpio1 6 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-always-on;
status = "okay";
};
reg_vccbkl_en: regulator_vccbkl_en {
compatible = "regulator-fixed";
regulator-name = "vddbkl_enable";
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_vccbkl_enable>;
gpio = <&gpio1 8 GPIO_ACTIVE_HIGH>;
enable-active-high;
regulator-always-on;
status = "okay";
};
lvds_backlight: lvds_backlight {
compatible = "pwm-backlight";
pwms = <&pwm1 0 100000 0>;
power-supply = <®_vccbkl_en>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_bkl_enable>;
enable-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
brightness-levels = < 0 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
100>;
default-brightness-level = <80>;
status = "okay";
};
panel_lvds: panel_lvds {
compatible = "panel-lvds";
power-supply = <®_lvds_en>;
backlight = <&lvds_backlight>;
width-mm = <153>;
height-mm = <90>;
label = "am1024600";
data-mapping = "jeida-18";
status = "okay";
panel-timing {
clock-frequency = <51200000>;
hactive = <1024>;
vactive = <600>;
hback-porch = <128>;
hfront-porch = <128>;
vback-porch = <15>;
vfront-porch = <30>;
hsync-len = <10>;
vsync-len = <2>;
de-active = <1>;
};
port {
panel_in: endpoint {
remote-endpoint = <&lvds_out>; // lvds_out
};
};
};
&lcdif1 {
status = "okay";
};
&lcdif2 {
status = "disabled";
};
&lcdif3 {
status = "disabled";
};
&ldb {
status = "okay";
phys = <&ldb_phy1>;
phy-names = "ldb-phy";
ports {
port@0 {
lvds_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
&ldb_phy {
#phy-cells = <0>;
status = "okay";
};
Hello,
The error message "imx-drm display-subsystem: [drm] Cannot find any crtc or sizes" indicated that something is wrong with the device tree, or driverloading or panel incompatibility.
imx6x_lvds_overlay.dtbo
) needs to be correctly applied and configured for your specific display hardware. Specifically, check for errors related to:
ddc-i2c-bus
property is correctly set in the device tree. imx-drm
driver might not be loading properly or is encountering errors. Check kernel logs for related messages and ensure the driver is enabled in your kernel configuration.
dmesg
to view kernel logs for any related error messages from the imx-drm
driver or other display-related modules.
modetest
: modetest
tool (from libdrm-tests
) can be used to check the current display configuration and verify if the system recognizes the display.