Is there any documentation or hints on how to actually get output on the Display Port?
Please refer to section "7.2.19 LCD and display transmitter controller" in LSDK 20.04 user manual which could be downloaded from Layerscape SDK | NXP .
This guide is hard to follow.
When I run `flex-builder -c dp_firmware_cadence` as described, the `‘build/firmware/dp_firmware_cadence/dp/` does not get created and the `ls1028a-dp-fw.bin` is nowhere to be found.
After some more experiments, I think I got thefirmware loaded with `hdp load`.
The run sd_hdploadcmd does not work tough.
But the boot stops after these messages:
[ 2.602646] [drm] Started firmware![ 2.606148] [drm] CDN_API_CheckAlive returned ret = 0[ 2.611224] [drm] Firmware version: 23029, Lib version: 20691[ 2.617013] [drm] CDN_API_MainControl_blocking (ret = 0 resp = 1)[ 2.623165] [drm] CDN_API_General_Test_Echo_Ext_blocking (ret = 0 echo_resp = echo test)[ 2.631296] [drm] CDN_API_General_Write_Register_blockin ... setting LANES_CONFIG[ 2.638868] [drm] pixel engine reset[ 2.642460] [drm] CDN_*_Write_Register_blocking ... setting LANES_CONFIG 4e[ 2.651229] [drm] AFE_init[ 2.653951] [drm] deasserted reset[ 2.657448] Wait for A2 ACK[ 2.681809] [drm] AFE_power exit[ 2.685050] [drm] CDN_API_DPTX_SetVideo_blocking (ret = 0)[ 2.690642] mali-dp f080000.display: bound f1f0000.phy (ops imx_hdp_imx_ops)[ 2.697828] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).[ 2.704470] [drm] No driver support for vblank timestamp query.
Please configure Linux Kernel as the following to Enable IPUv3 Core, LCD controller driver, DRM driver,Display Transmitter Controller driver, and Display pixel clock driver.
Device Drivers ---> Graphics support ---> <M> IPUv3 core support <M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> Arm devices ---> [M] Arm Mali Display Processor [M] DRM Support for Freescale i.mx [M] IMX8 HD Display ControllerCommon Clock Framework---> [*] Clock driver for LS1028A Display output
Loading the below display related modules when system boot up is done.
# insmod drm_panel_orientation_quirks.ko# insmod drm.ko# insmod drm_kms_helper.ko# insmod imx_hdp_common.ko# insmod mali-dp.ko# insmod imx-hdptx.ko
For anyone who is wondering, you can build a kernel with your own configuration using this command:
flex-builder -c linux:custom -a arm64
There is no option for ''IPUv3 core support''
And when I built the kernel, how do I get onto the device?
I am trying to flash the sd card using this command: flex-installer -b bootpartition_LS_arm64_lts_5.4.tgz -r build/images/rootfs_lsdk2004_ubuntu_main_arm64_202007291456.tgz -f firmware_ls1028ardb_uboot_sdboot.img -d /dev/sda
but it fails with:
lsblk: /dev/sda2: not a block device
you have to first run lex-installer -i auto -m ls1046ardb -d /dev/sda then it works
now the system boots again, but:
root@localhost:~# vim /etc/systemd/network/20-wired.networkvim: error while loading shared libraries: /usr/lib/aarch64-linux-gnu/libgpm.so.2: file too shortFunnily enough, this system comes with networking disabled, so I need vim to enable the network. But I can't, because libc is broken. And I can't fix libc because the network is not enabled.I do not understand why you are not shipping a standard image with network and video enabeld.
I used Image and fsl-ls1028a-rdb.dtb from the pre-built bootpartition package.
Under u-boot execute the following command
=> tftp 0xa0000000 nxa22585/ls1028ardb/ls1028a-dp-fw.bin=> hdp load 0xa0000000 0x2000Loading hdp firmware from 0x00000000a0000000 offset 0x0000000000002000Loading hdp firmware Complete=>
I got Linux Kernel boot up log as the following.
[ 2.532299] [drm] found ARM Mali-DP500 version r1p2[ 2.537331] [drm] Resolution 3840x2160@60 is enabled[ 2.542315] [drm] Resolution 1920x1080@60 is enabled[ 2.547300] [drm] Resolution 1280x720@60 is enabled[ 2.552195] [drm] Resolution 720x480@60 is enabled[ 2.557006] i.mx8-hdp f200000.hdp: lane_mapping 0x4e[ 2.561988] i.mx8-hdp f200000.hdp: edp_link_rate 0x06[ 2.567059] i.mx8-hdp f200000.hdp: dp_num_lanes 0x04[ 2.572106] [drm] Started firmware![ 2.575600] [drm] CDN_API_CheckAlive returned ret = 0[ 2.580672] [drm] Firmware version: 32955, Lib version: 20691[ 2.586461] [drm] CDN_API_MainControl_blocking (ret = 0 resp = 1)[ 2.592609] [drm] CDN_API_General_Test_Echo_Ext_blocking (ret = 0 echo_resp = echo test)[ 2.600739] [drm] CDN_API_General_Write_Register_blockin ... setting LANES_CONFIG[ 2.608308] [drm] pixel engine reset[ 2.611903] [drm] CDN_*_Write_Register_blocking ... setting LANES_CONFIG 4e[ 2.620851] [drm] AFE_init[ 2.623570] [drm] deasserted reset[ 2.627076] Wait for A2 ACK[ 2.651655] [drm] AFE_power exit[ 2.654892] [drm] CDN_API_DPTX_SetVideo_blocking (ret = 0)[ 2.660479] mali-dp f080000.malidp: bound f200000.hdp (ops imx_hdp_imx_ops)[ 2.667592] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).[ 2.674233] [drm] No driver support for vblank timestamp query.[ 2.680232] [drm] Cannot find any crtc or sizes[ 2.685041] [drm] Initialized mali-dp 1.0.0 20160106 for f080000.malidp on minor 0[ 2.696315] brd: module loaded
I already loaded ls1028a-dp-fw.bin with hdp load.
My problem is that I can not build the custom kernel I need as described here: LCD and display transmitter controller
I am using `flex-builder -c linux:custom -a arm64` to build the kernel. When I try to configure all the options, I am missing the following fields:
the following fields:
* <M> IPUv3 core support * [M] IMX8 HD Display Controller* [*] Clock driver for LS1028A Display output
* <M> IPUv3 core support
* [M] IMX8 HD Display Controller
* [*] Clock driver for LS1028A Display output
They are nowhere to be found in the config tree and I can therefore not change them.
Also, I do not know what to do after I built the kernel. I followed the steps outlined here: Configuring and building The image I built that way actually booted, but all the .so files were broken.
The Kernel configuration mentioned in LSDK user manual is suitable for Linux Kernel 4.19 release.
Video feature has already been enabled in the default Linux Kernel configuration, please use the default Linux Kernel configuration file provided in LSDK 20.04 release, no need to do the customization.
You keep giving me contradictory and incomplete instructions, that are inconsistent with the documentation and reality.
Here is where I am at:
I followed this guide to get an SD card with a bootable Linux image: Getting Started with LS1028ARDB | NXP
Then, I built `ls1028a-dp-fw.bin` using flex-builder -c dp_firmware_cadence.
flex-builder -c dp_firmware_cadence.
Then with ext4load usb 0:1 ls1028a-dp-fw.bin and hdp load 0x98000000 0x20000 I loaded the firmware.Then I run boot.The boot stops again at:[ 2.702767] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).[ 2.709410] [drm] No driver support for vblank timestamp query.
Please answer the following questions:* When I use hdp load, where is the firmware actually loaded to and does it persist there? Is it on the sd card, the internal flash, the spi storage?* Can I use the image provided by the Getting Started guide I linked above or do I have to build my own?* If I have to build my own, how can I do that and how can I then flash it to an sdcard.Some of these things I already found in the documentation, but very often the things that are in the documentation do not actually work or are described in a way that is missing important context, making it hard to follow.Currently, I am not able to boot the system anymore, not even with the image that worked before. I got into this situation following your documentation.
You should use command "ext4load usb 0:1 0x98000000 ls1028a-dp-fw.bin"
1. You could load the firmware in any storage device.
2. No need to build Image by your own, you could download the pre-built image with the following command.
$ flex-installer -i download -m ls1028ardb
Retrieving data ...