IMX8MM DTS ENABLE LVDS DUAL CHANNEL

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

IMX8MM DTS ENABLE LVDS DUAL CHANNEL

367 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
3 Replies

335 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

330 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

313 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