I'm trying to make an LVDS display work on an imx93 custom board. I'm struggling with this error :
imx-lcdif 4ae30000.lcd-controller: probe with driver imx-lcdif failed with error -2
After adding some traces, this comes from this line in the driver (in function lcdif_load)
lcdif->clk_axi = devm_clk_get(drm->dev, "axi");
if (IS_ERR(lcdif->clk_axi))
return PTR_ERR(lcdif->clk_axi);
So, it seems it cannot find the "axi" clock.
I'm using the device tree from the kernel, imx93.dtsi, as the base, which includes the following lines:
clock-names = "pix", "disp-axi", "disp-apb";
assigned-clocks = <&clk IMX93_CLK_VIDEO_PLL>,
<&clk IMX93_CLK_MEDIA_DISP_PIX>,
<&clk IMX93_CLK_MEDIA_AXI>,
<&clk IMX93_CLK_MEDIA_APB>;
So there's some inconsistency here between the device tree and the driver here. Problem is that i don't know if the clocks are correct, which ones i should use.
I tried to have a look to what is in the 6.18 branch, but this part (lcdif controller) has completely disappeared from the imx93.dtsi file.
Any hints?
Hello @julienblanc
Hope you are doing very well.
Are you still having the issue?
Best regards,
Salas.
Unfortunately, no.
I keep having the same error. Here's how i tried to configure things :
backlight_lvds: backlight-lvds {
compatible = "pwm-backlight";
status = "okay";
power-supply = <&display_power_12v>;
brightness-levels = < 0 5
10 15
20 25
30 35
40 45
50 55
60 65
70 75
80 85
90 95
100>;
default-brightness-level = <30>;
pwms = <&pwm_backlight 0 1000000 0>;
};
pwm_backlight: pwm_gpio {
compatible = "pwm-gpio";
#pwm-cells = <3>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_clko4_gpio>;
gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>; // gpio controller &gpio4, pin 29
status = "okay";
};
panel {
compatible = "panel-lvds";
width-mm = <224>;
height-mm = <126>;
backlight = <&backlight_lvds>;
status = "okay";
port {
panel_in: endpoint {
remote-endpoint = <&lvds_ldb_out>;
};
};
panel-timing {
clock-frequency = <72400000>;
hactive = <1280>;
vactive = <800>;
hfront-porch = <72>;
hback-porch = <88>;
hsync-len = <20>;
vfront-porch = <15>;
vback-porch = <23>;
vsync-len = <10>;
de-active = <1>;
pixelclk-active = <1>;
};
};
&ldb {
status = "okay";
lvds-channel@0 {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
port@1 {
reg = <1>;
lvds_ldb_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
&ldb_phy {
status = "okay";
};
display_power is a gpio-hog on an exander :
display_power_12v: gpio_regulator {
gpio-hog;
gpios = <12 GPIO_ACTIVE_HIGH>;
output-high;
label = "DISPLAY12V";
};This is mostly taken from some examples in the device-trees. I can't get what's wrong, or why it won't bring the display up, even not the backlight. I know i should use a TPM instead of a software gpio, but that need a hardware fix, currently i have to deal with it and i don't think that's the problem.
Thanks for your support,
Regards,
Julien