BUG, i.MX: broken LVDS display
Sascha Hauer
s.hauer at pengutronix.de
Mon Sep 21 11:13:38 PDT 2015
On Mon, Sep 21, 2015 at 08:46:27AM +0200, Holger Schurig wrote:
> Hi,
>
> on my i.MX6Q device barebox 2015-08.0 worked and I had an output on the splash screen, both in Barebox and later in Linux (there with CONFIG_STAGING, CONFIG_DRM_IMX,
> DRM_IMX_FB_HELPER, DRM_IMX_LDB, DRM_IMX_IPUV3).
>
> This stopped with 2015-09.0. I even get a null-pointer exception:
>
>
> Barebox: version 2015.09.0, DLoG 2015-09.1-9-g498cf3a
> unable to handle NULL pointer dereference at address 0x00000008
> pc : [<4fe1072a>] lr : [<4fe10719>]
> sp : 4ffffa18 ip : 4ffffa68 fp : 4ffffd80
> r10: 3032678c r9 : 00000000 r8 : 00000000
> r7 : 30343904 r6 : 303438b8 r5 : 00000000 r4 : 303438b8
> r3 : 00000000 r2 : 4fe31c78 r1 : 00000000 r0 : 00000006
> Flags: nzcv IRQs off FIQs off Mode SVC_32
> [<4fe1072a>] (ipu_crtc_mode_set+0x2a/0x1cc) from [<4fe108f5>] (ipufb_enable_controller+0x29/0x44)
> [<4fe108f5>] (ipufb_enable_controller+0x29/0x44) from [<4fe0e8e5>] (fb_enable_set+0x15/0x18)
> [<4fe0e8e5>] (fb_enable_set+0x15/0x18) from [<4fe1bd6d>] (param_int_set+0x33/0x44)
> [<4fe1bd6d>] (param_int_set+0x33/0x44) from [<4fe1bfab>] (dev_set_param+0x43/0x50)
> [<4fe1bfab>] (dev_set_param+0x43/0x50) from [<4fe03257>] (setenv+0x37/0xac)
> [<4fe03257>] (setenv+0x37/0xac) from [<4fe056cb>] (set_local_var.isra.3+0x37/0x4c)
> [<4fe056cb>] (set_local_var.isra.3+0x37/0x4c) from [<4fe0622d>] (run_list_real+0x2ed/0x628)
> [<4fe0622d>] (run_list_real+0x2ed/0x628) from [<4fe061c5>] (run_list_real+0x285/0x628)
>
> [<4fe2d7cd>] (unwind_backtrace+0x1/0x74) from [<4fe00d65>] (panic+0x1d/0x2c)
> [<4fe00d65>] (panic+0x1d/0x2c) from [<4fe2dca1>] (do_exception+0xd/0x10)
> [<4fe2dca1>] (do_exception+0xd/0x10) from [<4fe2dd09>] (do_data_abort+0x21/0x2c)
> [<4fe2dd09>] (do_data_abort+0x21/0x2c) from [<4fe2d9d4>] (do_abort_6+0x48/0x54)
>
>
>
>
>
> I think (!) this is because of commit "video: ipuv3: Replace ipu_output with VPL".
Without trying it I think that aswell ;)
>
>
> My current device tree looks like this:
>
> &ldb {
> status = "okay";
>
> lvds-channel at 0 {
> status = "okay";
> crtc = "ipu1-di0";
> fsl,data-mapping = "spwg";
> fsl,data-width = <18>;
> primary;
>
> display-timings {
> native-mode = <&timing0>;
> timing0: AM-800600K1TMQW-01H-B {
> // dot clock: 40 - 50 MHz
> clock-frequency = <39701664>; // 72 Hz
> hactive = <800>;
> vactive = <600>;
> hsync-len = <3>; // 1 - 40
> hback-porch = <46>; // 46
> hfront-porch = <18>; // 16 - 354
> vsync-len = <10>; // 1 - 29
> vback-porch = <23>; // 23
> vfront-porch = <3>; // 1 - 77
> hsync-active = <1>;
> };
> };
> };
> }
>
>
> I experimented with barebox 2015.09.0 with several things, but so far haven't been successfull.
>
>
>
> Any hint on how the device tree is now supposed to look like?
Should be like:
panel: panel {
compatible = "ampire,am800480r3tmqwa1h", "simple-panel";
enable-gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
backlight = <&backlight>;
port {
panel_in: endpoint {
remote-endpoint = <&lvds0_out>;
};
};
};
&ldb {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lvds0>;
status = "okay";
lvds-channel at 0 {
status = "okay";
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
port at 1 {
reg = <1>;
lvds0_out: endpoint {
remote-endpoint = <&panel_in>;
};
};
};
};
Copied from arch/arm/dts/imx53-guf-vincell.dts.
Anyway, I don't think it's necessary to break the old binding and for
sure we should not segfault. I'll have a look into this.
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