Hi,
I have been trying to enable the lvds interface on our verdin module so we can use it on a custom board. I am using a custom Yocto B2QT image. I created an overlay that I apply at boot time, however there is no picture on our display.
&main_pmx0 {
pinctrl_oldi: main-oldi0-pins-default {
pinctrl-single,pins = <
AM62X_IOPAD(0x0260, PIN_OUTPUT, 0) /* (AA5) OLDI0_A0N */
AM62X_IOPAD(0x025c, PIN_OUTPUT, 0) /* (Y6) OLDI0_A0P */
AM62X_IOPAD(0x0268, PIN_OUTPUT, 0) /* (AD3) OLDI0_A1N */
AM62X_IOPAD(0x0264, PIN_OUTPUT, 0) /* (AB4) OLDI0_A1P */
AM62X_IOPAD(0x0270, PIN_OUTPUT, 0) /* (Y8) OLDI0_A2N */
AM62X_IOPAD(0x026c, PIN_OUTPUT, 0) /* (AA8) OLDI0_A2P */
AM62X_IOPAD(0x0278, PIN_OUTPUT, 0) /* (AB6) OLDI0_A3N */
AM62X_IOPAD(0x0274, PIN_OUTPUT, 0) /* (AA7) OLDI0_A3P */
AM62X_IOPAD(0x0280, PIN_OUTPUT, 0) /* (AC6) OLDI0_A4N */
AM62X_IOPAD(0x027c, PIN_OUTPUT, 0) /* (AC5) OLDI0_A4P */
AM62X_IOPAD(0x0288, PIN_OUTPUT, 0) /* (AE5) OLDI0_A5N */
AM62X_IOPAD(0x0284, PIN_OUTPUT, 0) /* (AD6) OLDI0_A5P */
AM62X_IOPAD(0x0290, PIN_OUTPUT, 0) /* (AE6) OLDI0_A6N */
AM62X_IOPAD(0x028c, PIN_OUTPUT, 0) /* (AD7) OLDI0_A6P */
AM62X_IOPAD(0x0298, PIN_OUTPUT, 0) /* (AD8) OLDI0_A7N */
AM62X_IOPAD(0x0294, PIN_OUTPUT, 0) /* (AE7) OLDI0_A7P */
AM62X_IOPAD(0x02a0, PIN_OUTPUT, 0) /* (AD4) OLDI0_CLK0N */
AM62X_IOPAD(0x029c, PIN_OUTPUT, 0) /* (AE3) OLDI0_CLK0P */
AM62X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (AE4) OLDI0_CLK1N */
AM62X_IOPAD(0x02a4, PIN_OUTPUT, 0) /* (AD5) OLDI0_CLK1P */
>;
};
};
This is how I try to enable the pins, then I configure the dss ports and dss likewise:
&dss {
status = "okay";
pinctrl-0 = <&pinctrl_oldi>;
};
&dss_ports {
#address-cells = <1>;
#size-cells = <0>;
/* VP1: LVDS Output (OLDI TX 0) */
port@0 {
reg = <0>;
oldi_out0: endpoint {
remote-endpoint = <&lvds_in0>;
};
};
/* VP1: LVDS Output (OLDI TX 1) */
port@2 {
reg = <2>;
oldi_out1: endpoint {
remote-endpoint = <&lvds_in1>;
};
};
};
Also the panel timings
backlight_custom: backlight-custom {
compatible = "pwm-backlight";
brightness-levels = <0x00 0x2d 0x3f 0x58 0x77 0x9e 0xcb 0xff>;
default-brightness-level = <0x04>;
};
custom_panel: panel-lvds-custom {
#address-cells = <0x01>;
#size-cells = <0x00>;
compatible = "panel-lvds";
backlight = <&backlight_custom>;
data-mapping = "vesa-24";
height-mm = <0x35>;
width-mm = <0x46>;
panel-timing {
clock-frequency = <0x30d4000>;
hactive = <0x140>;
vactive = <0xf0>;
hback-porch = <0x27>;
vfront-porch = <0x08>;
hfront-porch = <0x08>;
vback-porch = <0x08>;
vsync-len = <0x04>;
hsync-len = <0x04>;
de-active = <0x00>;
hsync-active = <0x01>;
vsync-active = <0x00>;
pixelclk-active = <0x00>;
};
port@0 {
reg = <0x00>;
lvds_in0: endpoint {
remote-endpoint = <&oldi_out0>;
};
};
port@1 {
reg = <0x01>;
lvds_in1: endpoint {
remote-endpoint = <&oldi_out1>;
};
};
};
I have based a lot of the overlay on the mezzanine_panel-lvds-dual-channel overlay. We have measured the OLDI signals and all the data signals are there, however the CLK signals are not. Is there something that needs to be enabled for the OLDI_CLK0 and OLDI_CLK1? I have tried disabling other things in my overlay, like the dsi_bridge, but the result was the same. I have tried different panel timings, and different panels from the panel-simple.c file as suggested on some TI forums, which also produced no results. I have also added some debugging tools like kmstest to my image so I can test if the timings are applied, which confirmed the correct timings of the panel. I can also see in the dmesg logs that the panel has been added successfuly.