WeX Posted at 2/9/2020 09:46:18

Kernel 5.x, LVDS, rockchipdrm problem

Hello! Has anyone tried to run the 5.x kernel with lvds panel support? I can't get lvds to work ( I have enabled lvds in DT, but when rockchipdrm module is loading I get this messages:

[   29.355853] rockchip-vop ff930000.vop: Adding to iommu group 0
[   29.362659] rockchip-vop ff940000.vop: Adding to iommu group 1
[   29.371731] rockchip-drm display-subsystem: bound ff930000.vop (ops vop_component_ops )
[   29.382206] rockchip-drm display-subsystem: bound ff940000.vop (ops vop_component_ops )
[   29.392482] rockchip-lvds ff96c000.lvds: ] *ERROR* failed to find panel and bridge node
[   29.405058] rockchip-drm display-subsystem: failed to bind ff96c000.lvds (ops rockchip_lvds_component_ops ): -517
[   29.417924] rockchip-drm display-subsystem: master bind failed: -517


DTS:
       
/ {
...
lvds_panel: lvds-panel {
                compatible = "simple-panel";
                enable-gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>;
                bus-format = <0x1009>;
                rockchip,data-mapping = "vesa";
                rockchip,data-width = <24>;
                rockchip,output = "lvds";
                status = "okay";

                display-timings {
                        native-mode = <&timing0>;

                        timing0: timing0 {
                                clock-frequency = <85000000>;
                                hactive = <1280>;
                                vactive = <480>;
                                hback-porch = <24>;
                                hfront-porch = <368>;
                                vback-porch = <9>;
                                vfront-porch = <33>;
                                hsync-len = <16>;
                                vsync-len = <3>;
                                hsync-active = <0>;
                                vsync-active = <0>;
                                de-active = <0>;
                                pixelclk-active = <0>;
                        };
                };

                ports {
                        port {
                                panel_in_lvds: endpoint {
                                        remote-endpoint = <&lvds_out_panel>;
                                };
                        };
                };
        };
...
};

&lvds {
        rockchip,output = "lvds";
        rockchip,panel = <&lvds_panel>;
        status = "okay";

        ports {
                lvds_out: port@1 {
                        reg = <1>;

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

                        lvds_out_panel: endpoint@0 {
                                reg = <0>;
                                remote-endpoint = <&panel_in_lvds>;
                        };
                };
        };
};

xhx Posted at 4/23/2021 09:20:47

可能原因:
1.dts配置节点里面compatible = "panel-simple";这个没有起到作用;
2.由于enable-gpios 配置错误或者被其他节点占用;
3.没有配置背光节点。

xhx Posted at 4/23/2021 09:27:03

举例(平台RK3326+Linux 4.4):
backlight: backlight {
                compatible = "pwm-backlight";
                pwms = <&pwm1 0 25000 0>;
                brightness-levels = <
                        0   1   2   3   4   5   6   7
                        (省略N行)
                        248 249 250 251 252 253 254 255>;
                default-brightness-level = <200>;
                enable-gpios = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
      };

panel {
                status = "okay";
                compatible = "simple-panel";
                backlight = <&backlight>;
                power-supply = <&vcc_3v0>;
                init-delay-ms = <20>;

                enable-delay-ms = <20>;
                prepare-delay-ms = <20>;
                unprepare-delay-ms = <20>;
                disable-delay-ms = <20>;
                bus-format = <MEDIA_BUS_FMT_RGB888_1X7X4_SPWG>;
                enable-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_HIGH>;
                standby-gpios = <&gpio3 RK_PB6 GPIO_ACTIVE_HIGH>;
                reset-gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
                width-mm = <217>;
                height-mm = <136>;
                rockchip,output = "lvds";

                display-timings {
                        native-mode = <&timing0>;

                        timing0: timing0 {
                              clock-frequency = <46000000>;
                              hactive = <1024>;
                              vactive = <600>;
                              hback-porch = <90>;
                              hfront-porch = <160>;
                              vback-porch = <13>;
                              vfront-porch = <12>;
                              hsync-len = <70>;
                              vsync-len = <10>;
                              hsync-active = <0>;
                              vsync-active = <0>;
                              de-active = <0>;
                              pixelclk-active = <0>;

                        };
                };

                port {
                        panel_in_lvds: endpoint {
                              remote-endpoint = <&lvds_out_panel>;
                        };
                };

      };
Page: [1]
View Full Version: Kernel 5.x, LVDS, rockchipdrm problem