I'm trying to make sn65dsi84 dsi2lvds bridge working with Linux kernel 6.6.52 (Yocto scartgap).
After fixing problems with attaching mipi-dsi to SN65DSI83 driver: IMX8MM-sn65dsi83-yocto-scarthgap-mipi-dsi-is-not-initialized
and correcting LVDS timing parameters in DT: Error-Cannot-find-any-crtc-or-sizes -
facing another problem: seems that MIPI-DSI is not sending data:
SN65DSI83driver cannot lock PLL because it has DSI source clock.
[ 2.946302] sn65dsi83 0-002c: failed to lock PLL, ret=-110
my devicetree is:
/dts-v1/;
#include "imx8mm.dtsi"
/ {
panel: panel10inch {
width-mm = <210>;
height-mm = <157>;
compatible = "panel-lvds";
backlight = <&bl_lcd>;
data-mapping = "vesa-24";
status = "okay";
enable-gpios = <&gpio1 14 GPIO_ACTIVE_HIGH>;
panel-timing {
clock-frequency = <65000000>;
hactive = <1024>;
vactive = <768>;
/* */
hfront-porch = <40>;
hsync-len = <60>;
hback-porch = <220>;
/* */
vfront-porch = <7>;
vsync-len = <10>;
vback-porch = <21>;
/* */
vsync-active = <0>;
hsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
panel_in: endpoint {
remote-endpoint = <&bridge_out>;
};
};
};
};
};
&i2c1 {
dsi_lvds_bridge: sn65dsi84@2c {
compatible = "ti,sn65dsi83";
reg = <0x2c>;
enable-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_dsi_bridge>;
vcc-supply = <®_1V8>;
status = "okay";
of-depends-on = <&panel>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
bridge_in: endpoint {
remote-endpoint = <&mipi_dsi_out>;
data-lanes = <1 2 3 4>;
};
};
port@2 {
reg = <2>;
bridge_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
};
&lcdif {
status = "okay";
};
&mipi_dsi {
status = "okay";
port@1 {
mipi_dsi_out: endpoint {
remote-endpoint = <&bridge_in>;
data-lanes = <1 2 3 4>;
/*lane-polarities = <1 0 0 0 0>;*/
attach-bridge;
};
};
};
bootlog is attached.
已解决! 转到解答。
Found strange thing:
[ 2.946302] sn65dsi83 0-002c: failed to lock PLL, ret=-110
[ 2.948106] imx_sec_dsim_drv 32e10000.mipi_dsi: imx_sec_dsim_encoder_atomic_enable: Enter
[ 2.951027] sn65dsi83 0-002c: sn65dsi83_atomic_enable: Enter
[ 2.956980] sn65dsi83 0-002c: Unexpected link status 0x01
The sn65dsi83 probe function pries to lock PLL from MIPI-DSI before imx_sec_dsim_encoder_atomic_enable() function ensbles it.
Moved piece of code that sets PLL to sn65dsi83_atomic_enable() function.
Works now!
Found strange thing:
[ 2.946302] sn65dsi83 0-002c: failed to lock PLL, ret=-110
[ 2.948106] imx_sec_dsim_drv 32e10000.mipi_dsi: imx_sec_dsim_encoder_atomic_enable: Enter
[ 2.951027] sn65dsi83 0-002c: sn65dsi83_atomic_enable: Enter
[ 2.956980] sn65dsi83 0-002c: Unexpected link status 0x01
The sn65dsi83 probe function pries to lock PLL from MIPI-DSI before imx_sec_dsim_encoder_atomic_enable() function ensbles it.
Moved piece of code that sets PLL to sn65dsi83_atomic_enable() function.
Works now!