Help configuring i.MX6 IPUv3 with a parrallel display
Philippe Leduc
ledphilippe at gmail.com
Wed Feb 24 00:22:40 PST 2016
Hi,
Since I do not manage to get a splashscreen with the simple-panel
driver, I tried the other way: adding a driver for
imx-parrallel-display that exposes the display-timings. So far I
managed to add a video mode to my framebuffer:
devinfo fb0
Resources:
num: 0
start: 0x2005a000
size: 0x0007f800
Available modes:
rk043fn07h: 480x272 at 0
Parameters:
enable: 0
mode_name: rk043fn07h
shadowfb: 1
But there is no refresh rate? Don't know if it is a problem, but my
framebuffer still doesn't want to work (however it is more or less
better than before):
fb0.enable=1
imx-ipuv3-crtc imx-ipuv3-crtc0: ipu_crtc_mode_set: mode->xres: 480
imx-ipuv3-crtc imx-ipuv3-crtc0: ipu_crtc_mode_set: mode->yres: 272
imx-ipuv3-crtc imx-ipuv3-crtc0: initializing display controller failed with -22
So far so good I'll continue to dig up, but if you have some advices,
it would be helpful!
Best regards,
--
Philippe LEDUC
ledphilippe at gmail.com
2016-02-23 12:47 GMT+01:00 Philippe Leduc <ledphilippe at gmail.com>:
>> Parallel display support for IPUv3 is not yet implemented.
> I could have searched a long time ^^' (Fortunately there is the mailing list!)
>
> I tried to add the simple panel but I do not get any framebuffer?
>
> Here is the output of devinfo panel.13:
> Driver: simple-panel
> Bus: platform
> Device node: /panel
> panel {
> compatible = "simple-panel";
> status = "okay";
> display-timings {
> clock-frequency = <0x895440 0xe4e1c0>;
> hactive = <0x1e0>;
> vactive = <0x110>;
> hfront-porch = <0x2 0x2 0x52>;
> hback-porch = <0x2 0x2 0x29>;
> hsync-len = <0x2 0x29 0x29>;
> vback-porch = <0x1 0x2 0xb>;
> vfront-porch = <0x1 0x2 0xe3>;
> vsync-len = <0x1 0xa 0xb>;
> pixelclk-active = <0x1>;
> hsync-active = <0x0>;
> vsync-active = <0x0>;
> de-active = <0x1>;
> };
> port {
> enpoint {
> remote-endpoint = <0x3d>;
> linux,phandle = <0x2b>;
> phandle = <0x2b>;
> };
> };
> };
>
> So it seems that the driver is loaded, but there is no entry point for
> the 'userspace'.
>
>
>> 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.
> OK, good to know.
>
>
> Philippe LEDUC
> ledphilippe at gmail.com
>
>
> 2016-02-23 9:32 GMT+01:00 Sascha Hauer <s.hauer at pengutronix.de>:
>> 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