Help configuring i.MX6 IPUv3 with a parrallel display
Sascha Hauer
s.hauer at pengutronix.de
Tue Feb 23 00:32:36 PST 2016
On Mon, Feb 22, 2016 at 05:41:01PM +0100, Philippe Leduc wrote:
> Hello,
>
> I would like to use the barebox framebuffer on a iMX6S chip. My goal
> is to display a splashscreen. However, I can't manage to use the
> framebuffer for now...
>
> Here is the output of "devinfo fb0":
> Resources:
> num: 0
> start: 0x00000000
> size: 0x00000000
> Available modes:
> Parameters:
> enable: 0
> mode_name: invalid:0
> shadowfb: 1
>
> Is this a correct behavior that there is NO availables modes? I do not
> manage to add one through the DTS.
>
> If I try to enable the framebuffer (fb0.enable=1), barebox hangs:
> fb0.enable=1
> unable to handle NULL pointer dereference at address 0x0000001d
> pc : [<2ff1ab1c>] lr : [<2ff17f41>]
> sp : 2ffffa3c ip : 2ff1a3fa fp : 2ffffa78
> r10: 20212d0c r9 : 00000000 r8 : 00000000
> r7 : 20024210 r6 : f57fffff r5 : 0c000000 r4 : 0000001d
> r3 : 2ff1a1e5 r2 : 0c000000 r1 : 0000005c r0 : 00000022
> Flags: nzcv IRQs off FIQs off Mode SVC_32
> [<2ff1ab1c>] (clk_is_enabled+0x34/0x38) from [<7f8d1fc0>] (0x7f8d1fc0)
>
> [<2ff389d9>] (unwind_backtrace+0x1/0x58) from [<2ff00d19>] (panic+0x1d/0x34)
> [<2ff00d19>] (panic+0x1d/0x34) from [<2ff38e7d>] (do_exception+0xd/0x10)
> [<2ff38e7d>] (do_exception+0xd/0x10) from [<2ff38edd>] (do_data_abort+0x21/0x2c)
> [<2ff38edd>] (do_data_abort+0x21/0x2c) from [<2ff38bd4>] (do_abort_6+0x48/0x54)
> Switch to console [serial0]
>
> Here is what I put in the DTS to enable the display:
>
> display0: display at di0 {
> compatible = "fsl,imx-parallel-display";
> // crtcs = <&ipu1 0>;
> interface-pix-fmt = "rgb24";
> pinctrl-names = "default";
> pinctrl-0 = <&pinctrl_ipu_disp>;
> status = "okay";
>
> display-timings {
> rk043fn07h {
> native-mode;
> clock-frequency = <9000000 15000000>;
> hactive = <480>;
> vactive = <272>;
> hfront-porch = <2 2 82>;
> hback-porch = <2 2 41>;
> hsync-len = <2 41 41>;
> vback-porch = <1 2 11>;
> vfront-porch = <1 2 227>;
> vsync-len = <1 10 11>;
> pixelclk-active = <1>;
> hsync-active = <0>;
> vsync-active = <0>;
> de-active = <1>;
> };
> };
>
> port {
> display0_in: endpoint {
> remote-endpoint = <&ipu1_di0_disp0>;
> };
> };
>
>
> &ipu1_di0_disp0 {
> remote-endpoint = <&display0_in>;
> };
Parallel display support for IPUv3 is not yet implemented. What's
missing is a driver that matches to "fsl,imx-parallel-display", calls
vpl_register on its own node and returns the display timings parsed from
device tree in the VPL_GET_VIDEOMODES callback.
You could try the following binding instead. It doesn't use the
"fsl,imx-parallel-display" compatible but the "simple-panel" binding
instead. Since IPU parallel display support is a no-op anyway this
should work. Note that this binding is not compatible with the kernel
since the maintainer refuses to let display timings into the device tree
for simple panels.
panel {
compatible = "simple-panel";
display-timings {
/* your timings here */
};
port {
display0_in: enpoint {
remote-endpoint = <&ipu1_di0_disp0>;
};
};
};
&ipu1_di0_disp0 {
interface-pix-fmt = "rgb24";
remote-endpoint = <&display0_in>;
};
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list