AnsweredAssumed Answered

Device Tree display-subsystem and Frame Buffer Creation

Question asked by Ashwin Sira on Oct 31, 2016
Latest reply on Nov 1, 2016 by Ashwin Sira

Hi everyone,


I had some technical questions about how the display system gets defined using the device tree. I have a parallel interface LCD available through /dev/fb0. I'm trying to figure out where fb0 comes from in the device tree so I can adjust timings and so on with a display-timings block.


So, in imx6q.dtsi there's this code:


ipu2_di1: port@3 {
            #address-cells = <1>;
            #size-cells = <0>;
            reg = <3>;

            ipu2_di1_hdmi: endpoint@1 {
                remote-endpoint = <&hdmi_mux_3>;

            ipu2_di1_mipi: endpoint@2 {

            ipu2_di1_lvds0: endpoint@3 {
                remote-endpoint = <&lvds0_mux_3>;

            ipu2_di1_lvds1: endpoint@4 {
                remote-endpoint = <&lvds1_mux_3>;

display-subsystem {
    compatible = "fsl,imx-display-subsystem";
    ports = <&ipu1_di0>, <&ipu1_di1>, <&ipu2_di0>, <&ipu2_di1>;

ipu1 is defined in imx6qdl.dtsi. The display-subsystem section is of particular interest to me. When I run dmesg get this:


debian@arm:~$ sudo dmesg | grep fb0
[ 3.888801] imx-drm display-subsystem: fb0: frame buffer device

The complete set of messages is this:

[ 3.758204] imx-ipuv3 2400000.ipu: IPUv3H probed
[ 3.764282] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 3.770951] [drm] No driver support for vblank timestamp query.
[ 3.777006] imx-drm display-subsystem: bound imx-ipuv3-crtc.0 (ops ipu_crtc_ops)
[ 3.784480] imx-drm display-subsystem: bound imx-ipuv3-crtc.1 (ops ipu_crtc_ops)
[ 3.791986] imx-drm display-subsystem: bound imx-ipuv3-crtc.4 (ops ipu_crtc_ops)
[ 3.799492] imx-drm display-subsystem: bound imx-ipuv3-crtc.5 (ops ipu_crtc_ops)
[ 3.807121] dwhdmi-imx 120000.hdmi: Detected HDMI controller 0x13:0xa:0xa0:0xc1
[ 3.814641] [drm] forcing HDMI-A-1 connector ON
[ 3.819228] imx-drm display-subsystem: bound 120000.hdmi (ops dw_hdmi_imx_ops)
[ 3.877144] Console: switching to colour frame buffer device 128x48
[ 3.888801] imx-drm display-subsystem: fb0: frame buffer device
[ 3.894835] imx-drm display-subsystem: registered panic notifier
[ 3.954779] [drm] Initialized imx-drm 1.0.0 20120507 on minor 0
[ 3.961116] imx-ipuv3 2800000.ipu: IPUv3H probed

So, I'm wondering where does /dev/fb0 come from in the device tree using the default configuration? There's no fb statement like what's shown here as an example. I need to adjust the clock polarity and other timing stuff for the display. How can I go about doing that properly?