IMX8MM DTS ENABLE LVDS DUAL CHANNEL

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

IMX8MM DTS ENABLE LVDS DUAL CHANNEL

1,296 Views
massa
Contributor I

Hi

How can I enable dual channel in DTS in split-mode?
 
 
&panel_lvds {
compatible = "panel-lvds";
data-mapping = "jeida-24";
width-mm = <154>;
height-mm = <87>;
backlight = <&backlight>;
 
panel-timing {
clock-frequency = <75000000>;
hactive = <1024>;
vactive = <768>;
hback-porch = <40>;
hfront-porch = <40>;
vback-porch = <29>;
vfront-porch = <13>;
hsync-len = <48>;
vsync-len = <3>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
...
...
 
i2c@30a20000 {
compatible = "fsl,imx8mm-i2c\0fsl,imx21-i2c";
#address-cells = <0x01>;
#size-cells = <0x00>;
reg = <0x30a20000 0x10000>;
interrupts = <0x00 0x23 0x04>;
clocks = <0x02 0xa4>;
status = "okay";
clock-frequency = <0x186a0>;
pinctrl-names = "default\0gpio";
pinctrl-0 = <0x2a>;
pinctrl-1 = <0x2b>;
scl-gpios = <0x2c 0x0e 0x00>;
sda-gpios = <0x2c 0x0f 0x00>;
 
sn65dsi84@2c {
compatible = "ti,sn65dsi84";
reg = <0x2c>;
enable-gpios = <0x22 0x0b 0x00>;
pinctrl-names = "default";
pinctrl-0 = <0x2d>;
ti,dsi-lanes = <0x04>;
ti,lvds-format = <0x03>;
ti,lvds-bpp = <0x18>;
status = "okay";
 
ports {
#address-cells = <0x01>;
#size-cells = <0x00>;
 
 
 
port@2 {
reg = <0x02>;
 
endpoint {
remote-endpoint = <0x2e>;
data-lanes = <0x01 0x02 0x03 0x04>;
phandle = <0x5b>;
};
};
};
};
 
0 Kudos
Reply
4 Replies

808 Views
Stefano_Radaelli
Contributor I

Hi,

did you solve this topic?
I have the same problem.

Thank you,

Stefano

0 Kudos
Reply

1,264 Views
AldoG
NXP TechSupport
NXP TechSupport

Hello,

For the configuration of that you may refer to the bindings documentation:
https://github.com/nxp-imx/linux-imx/blob/lf-6.6.y/Documentation/devicetree/bindings/display/bridge/...

Best regards/Saludos,
Aldo.

0 Kudos
Reply

1,259 Views
massa
Contributor I
Hi Aldo,

First of all, thank you for responding. I'm new to Yocto on the i.MX8MM systems. I'm using the module provided by Variscite with the Kirkstone kernel (kernel 5.15.60), and in its DTS, the following configuration is present:

arduino
Copy code
&panel_lvds {
compatible = "panel-lvds";
data-mapping = "jeida-24";
width-mm = <154>;
height-mm = <87>;

panel-timing {
clock-frequency = <39000000>;
hactive = <800>;
vactive = <480>;
hback-porch = <40>;
hfront-porch = <40>;
vback-porch = <29>;
vfront-porch = <13>;
hsync-len = <48>;
vsync-len = <3>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};

...

panel_lvds: panel-lvds {
compatible = "panel-lvds";

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
dual-lvds-odd-pixels;
panel_in_bridge: endpoint {
remote-endpoint = <&bridge_out_panel>;
};
};

port@1 {
reg = <1>;
dual-lvds-even-pixels;
panel_in2_bridge: endpoint {
remote-endpoint = <&bridge_out2_panel>;
};
};
};
};

...

&i2c1 {
clock-frequency = <100000>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <&pinctrl_i2c1>;
pinctrl-1 = <&pinctrl_i2c1_gpio>;
scl-gpios = <&gpio5 14 GPIO_ACTIVE_HIGH>;
sda-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>;
status = "okay";

dsi_lvds_bridge: sn65dsi84@2c {
compatible = "ti,sn65dsi84";
reg = <0x2c>;
enable-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds>;
status = "okay";

ports {
#address-cells = <1>;
#size-cells = <0>;

port@0 {
reg = <0>;
bridge_in_dsi: endpoint {
remote-endpoint = <&mipi_dsi_out>;
data-lanes = <1 2 3 4>;
};
};

port@2 {
reg = <2>;
dual-lvds-odd-pixels;
bridge_out_panel: endpoint {
remote-endpoint = <&panel_in_bridge>;
};
};
};
};
};
This is what came out, and I modified some parameters, but unfortunately, it doesn't work. Some time ago, I used an older kernel, Hardknott (kernel 5.10.72), and the DTS configuration was different:

lua
Copy code
dsi_lvds_bridge: sn65dsi84@2c {
compatible = "ti,sn65dsi83";
reg = <0x2c>;
ti,dsi-lanes = <1>;
ti,lvds-format = <1>;
ti,lvds-bpp = <24>;
ti,width-mm = <154>;
ti,height-mm = <87>;
enable-gpios = <&gpio2 11 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds>;
status = "okay";

display-timings {
lvds {
clock-frequency = <33000000>;
hactive = <800>;
vactive = <480>;
hback-porch = <40>;
hfront-porch = <40>;
vback-porch = <29>;
vfront-porch = <13>;
hsync-len = <48>;
vsync-len = <3>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
...
};
Where I just had to add double the frequency, ti,lvds-channels = <2>, and split-mode to use my LVDS panel with dual-channel.

This is the display I'm using: "P280IVN01.1 28.0" – 1920x360 – LVDS.

Please help me, I don't know what to do.
0 Kudos
Reply

1,242 Views
AldoG
NXP TechSupport
NXP TechSupport

Hello,

Please note that the device tree bindings tend to change between kernel versions, this is why I recommend to take a look to the correct binding configuration in the documentation.

This should be enough on what should be changed to work correctly.

Best regards/Saludos,
Aldo.

0 Kudos
Reply