diff --git a/source/linux/Foundational_Components/U-Boot/UG-Splash-Screen.rst b/source/linux/Foundational_Components/U-Boot/UG-Splash-Screen.rst index 9c56cdf19..67ab4db72 100644 --- a/source/linux/Foundational_Components/U-Boot/UG-Splash-Screen.rst +++ b/source/linux/Foundational_Components/U-Boot/UG-Splash-Screen.rst @@ -414,6 +414,99 @@ If the user wants to keep the boot animation alive until the display server star The above option is enabled by default in the SDK, The user will need to disable it manually if they desire a persistent splash screen and they are not using the DRM fbdev emulation feature. +.. ifconfig:: CONFIG_part_variant in ('AM62X', 'AM62PX', 'AM62LX') + + Enabling DPI splash + ------------------- + The DPI display path should be enabled and recognized during U-Boot's display pipeline detection. + + **Enabling DPI output in tidss_drv.c** + + U-Boot's ``tidss`` driver detects and initializes display pipelines in + ``tidss_enable_pipeline_components()`` (:file:`drivers/video/tidss/tidss_drv.c`) by + matching the device-tree node name of each port's remote endpoint against known + patterns: ``"oldi"`` and ``"dsi"``/``"dsi_host"``. A DPI panel connected + directly to the DSS video port does not match any of these patterns, so add a ``"dpi"`` branch alongside the + existing interfaces: + + .. code-block:: c + + } else if (strstr(ofnode_get_name(remote_port), "dpi")) { + priv->bridge_dev = NULL; + priv->active_hw_vps[active_pipelines++] = hw_videoport; + break; + } + + .. note:: + + The match is performed against the node name of the remote port's parent + (``ofnode_get_name(remote_port)``), not against the panel's ``compatible`` + property. The panel node in the device tree must include ``dpi`` in its + node name/label for this branch to trigger. + + **Adding a DPI panel node in the device tree** + + Add a panel node whose name contains ``dpi`` and connect it to the DSS video port + endpoint via ``remote-endpoint``, providing the panel's ``panel-timing`` properties. + Below is an example device-tree snippet for adding a DPI panel node: + + .. code-block:: dts + + / { + panel_dpi0: panel-dpi { + compatible = "simple-panel"; + status = "okay"; + + port { + panel_dpi0_in: endpoint { + remote-endpoint = <&dss_vp0_endpoint>; + }; + }; + + panel-timing { + clock-frequency = <9200000>; + hactive = <800>; + vactive = <480>; + hfront-porch = <8>; + hback-porch = <4>; + hsync-len = <41>; + vfront-porch = <4>; + vback-porch = <2>; + vsync-len = <10>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <1>; + pixelclk-active = <1>; + }; + }; + }; + + &dss0 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + dss_vp0_endpoint: endpoint { + remote-endpoint = <&panel_dpi0_in>; + }; + }; + }; + }; + + The ``panel-timing`` values must match the panel's datasheet, and should be kept + consistent with the ``panel-timing`` values used in the Linux kernel device tree for + the same panel so that U-Boot and Linux drive the panel with identical timings across + the splash-to-kernel handoff. + + Once the pipeline detection and device-tree changes above are in place, the rest of + the splash screen flow, enabling the required Kconfig options, setting the splash + environment variables, and the flicker-free bloblist-based handoff, is identical to + the flow described in the sections above. + Disabling splash screen ----------------------- To disable splash screen use `configs/am62x_evm_prune_splashscreen.config `__ fragment while building u-boot with corresponding a53 defconfig.