IMX8MM: assign panel to mipi_dsi in a device tree

Patrick Boettcher patrick.boettcher at posteo.de
Sun Mar 5 15:22:48 UTC 2023


Hi list,

After several days of trying I realize my too small/old brain is unable
to map around how to assign/connect a panel to the mipi_dsi-node in a
device.

We are using a 'tdo,tl070wsh30' panel connected to the
mipi-dsi-interface of a imx8mm.

Of all the references I found on the in public repositories none of
them is using this exact panel. Well.

Looking at other device trees I came up with the following dts-node add
to the mipi_dsi-node:

&mipi_dsi {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	port at 0 {
		reg = <0>;
		mipi_dsi_panel0_out: endpoint {
			remote-endpoint = <&panel0_in>;
			attach-bridge;
		};
	};

	panel at 0 {
		compatible = "tdo,tl070wsh30";
		reg = <0>;

		pinctrl-0 = <&pinctrl_mipi_dsi>;
		pinctrl-names = "default";
		reset-gpios = <&gpio4 4 GPIO_ACTIVE_LOW>;
		enable-gpios = <&gpio4 6 GPIO_ACTIVE_LOW>;

		backlight = <&panel_gpio_backlight>;
		power-supply = <&panel_gpio_regulator>;

		dsi-lanes = <4>;

		video-mode = <0>; 

		panel-width-mm = <157>;
		panel-height-mm = <86>;

		status = "okay";

		port {
			panel0_in: endpoint {
				remote-endpoint =<&mipi_dsi_panel0_out>;
 			};
		};
	};
};


You'll see that I used the attach-bridge-option, which is maybe not
necessary. I found this during a debug-print-session in the
drm-bridge-driver, it wasn't attaching a bridge. But maybe I don't need
a bridge as the panel-driver contains everything to control the
controllers of the panel. I don't really know.

However, with this I have the following messages:

[    0.393985] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc at 0/bus at 32c00000/mipi_dsi at 32e10000 to encoder DSI-34: -19
[    0.405626] imx_sec_dsim_drv 32e10000.mipi_dsi: Failed to attach bridge: 32e10000.mipi_dsi
[    0.413974] imx_sec_dsim_drv 32e10000.mipi_dsi: failed to bind sec dsim bridge: -517

The panel driver is never instantiated.

I'm using 5.15.51 (-imx). mipi_dsi and the panel-driver are built into
the kernel.

I have to say that I'm basically trying to imitate the
device-tree-implementation based on example rather than understanding
the exact details of how to correctly work with mipi_dsi and the panel.

I'd appreciate any help and pointers which lead me into the right
direction.

Thanks in advance.

--
Patrick.








More information about the dri-devel mailing list