Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Comment on lines +417 to +421

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


**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";

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check once if "bootph-all" property is also needed to be documented.

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 <https://git.ti.com/cgit/ti-u-boot/ti-u-boot/tree/configs/am62x_evm_prune_splashscreen.config?h=ti-u-boot-2025.01>`__ fragment while building u-boot with corresponding a53 defconfig.