Hi All,
I'm working on a custom board based on IMX8MM.
I'm trying to integrate a MIPI DSI to eDP bridge module which is SN65DSI86.
I'm getting this error:
# dmesg | grep drm
[ 0.894170] imx-drm soc@0:bus@32c00000:display-subsystem: no available port
[ 4.229399] [drm:ti_sn_bridge_probe [ti_sn65dsi86]] *ERROR* could not find any panel node
[ 4.270746] [drm:ti_sn_bridge_probe [ti_sn65dsi86]] *ERROR* could not find any panel node
[ 4.353747] [drm:ti_sn_bridge_probe [ti_sn65dsi86]] *ERROR* could not find any panel node
[ 4.432826] [drm:ti_sn_bridge_probe [ti_sn65dsi86]] *ERROR* could not find any panel node
[ 4.673391] [drm:ti_sn_bridge_probe [ti_sn65dsi86]] *ERROR* could not find any panel node
[ 4.682721] [drm:ti_sn_bridge_probe [ti_sn65dsi86]] *ERROR* could not find any panel node
I already integrated the module flags into the Kernel defconfig via a Yocto cfg file:
CONFIG_DRM_TI_SN65DSI86=m
CONFIG_FB_MXC_DISP_FRAMEWORK=m
CONFIG_MXC_GPU_VIV=y
I activated a patch for the sn65dsi86.c driver based on this official kernel patch: here
Our module is connected to I2C_1 bus, here is the node inside the i2c node:
/* 0x2d is from the datasheet */
sn65_bridge: sn65dsi86@2d {
#address-cells = <1>;
#size-cells = <0>;
compatible = "ti,sn65dsi86";
reg = <0x2d>;
ti,dsi-lanes = <4>;
max,dsi-channel = <1>;
ti,dp-lanes = <2>;
status = "okay";
enable-gpios = <&gpio1 9 GPIO_ACTIVE_HIGH>;
interrupts-extended = <&gpio1 10 IRQ_TYPE_EDGE_FALLING>;
vccio-supply = <&ldo6_reg>; //1.8V
vcca-supply = <&buck1_reg>; //1.2V
vpll-supply = <&ldo6_reg>; //1.8V
vcc-supply = <&buck1_reg>; //1.2V
clock-names = "refclk";
clocks = <&clk IMX8MM_CLK_DSI_CORE>,
<&clk IMX8MM_CLK_DSI_PHY_REF>;
panel@0 {
reg = <0>;
pinctrl-0 = <&pinctrl_mipi_dsi_en>;
enable-gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>;
panel-width-mm = <68>;
panel-height-mm = <130>;
port {
panel1_in: endpoint {
remote-endpoint = <&sn65_out>;
};
};
};
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
sn65_in: endpoint {
remote-endpoint = <&dsim_to_sn65>;
};
};
port@1 {
reg = <1>;
sn65_out: endpoint {
data-lanes = <0 1 2 3>;
lane-polarities = <0 1 0 1>;
remote-endpoint = <&panel1_in>;
};
};
};
};
And here is the mipi_dsi node:
&mipi_dsi {
status = "okay";
port@1 {
dsim_to_sn65: endpoint {
remote-endpoint = <&sn65_in>;
attach-bridge;
};
};
};
I used the same kernel DTS for Uboot DTS also.
NOTE1: I didn't add this to Uboot "video=mxcfb0:dev=mipi_dsi,TRULY-WVGA,if=RGB24" because I do not actually where to add it, should it be in the bootargs variable inside the uboot machine header file?
NOTE2: I didn't add the CONFIG_VIDEO and the VIDEO defines in the uboot defconfig and header file because I get an error "undefined reference to "display"".
Besides, when I boot the image and try to detect the module with i2cdetect I cannot find it on i2c1:
# i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- UU -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Only the pmic is shown because it is on the same I2C.
We checked the power of the MIPI DSI module and it is correctly powered.
We are so blocked now, we need some help.
- Is there a problem with the driver?
- How to configure Uboot for the VIDEO support?
- Is the kernel DTS file is correct? [The Kernel DTS file is attached]
- How can we solve this?
Help us please.
Thanks, Talel