LVDS trouble (5.15, rk3288)
Rob Kramer
rob at teegee.cloud
Fri Dec 16 03:05:38 PST 2022
Hi all,
I have a RK3288 board from a Chinese display vendor that came with the
usual giant Rockchip tarball that they patched here and there to make
the board work. It seems to be based on a rk3288-evb (+rk808), since
that is what they patched in the kernel. The kernel is a 4.4 kernel with
Android stuff in it (i.e. fiq-debugger) and a large amount of Rockchip
patches.
The board connects to an anonymous panel via LVDS. When I try to
replicate this dts setup in my 5.15 tree (with Armbian paches), I can't
get the panel to probe/register no matter what I try. The
rockchip_lvds_bind call keeps failing with -517 (EPROBE_DEFER), because
drm_of_find_panel_or_bridge() can't find the panel -- because it never
registered with the drm-panel global panel-list.
[ 0.108667] platform rob-panel: Fixing up cyclic dependency with
ff96c000.lvds
[ 1.331742] rockchip-lvds ff96c000.lvds: [drm:rockchip_lvds_bind]
*ERROR* failed to find panel and bridge node: -517
Since the vendor setup is so old and uses Rockchip patches that were
never upstreamed, the device tree structure will be quite different as
well. Does something like the example at
http://rockchip.wikidot.com/lvds still apply at all for 5.15?
I've appended the relevant part of my dts. The compatible string is a
random 1920x1080 LVDS panel that I picked, just to see if I can get any
kind of panel to register in the kernel (I can't). The commented out
compatible string is another attempt, using 'panel-lvds'. It doesn't
work, and I don't know what I'm doing :)
Would a panel in the dts just silently fail because some property is
wrong? What could I do to debug the reason that my panel is completely
ignored? Do I have to define the panel in panel-simple.c, or can it be
defined in the DT only?
When I look in the FDT, all the connections to other phandles look fine,
btw.
Cheers!
Rob
lvds_panel: rob-panel {
status = "okay";
compatible = "auo,g133han01";
// compatible = "topdisp,dummy", "panel-lvds";
backlight = <&backlight>;
enable-gpios = <&gpio7 RK_PB7 GPIO_ACTIVE_HIGH>;
unprepare-delay-ms = <2>;
enable-delay-ms = <20>;
init-delay-ms = <3>;
power-supply = <&vcc_lcd>;
rockchip,data-mapping = "vesa";
rockchip,data-width = <24>;
rockchip,output = "duallvds";
port {
panel_in_lvds: endpoint {
remote-endpoint = <&lvds_out_panel>;
};
};
display-timings {
native-mode = <&timing0>;
timing0: timing0 {
clock-frequency = <148000000>;
..snip..
};
};
};
&lvds {
status = "okay";
dual-channel;
ports {
port at 1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
lvds_out_panel: endpoint at 1 {
reg = <1>;
remote-endpoint = <&panel_in_lvds>;
};
};
};
};
More information about the Linux-rockchip
mailing list