I.MX6 HDMI support in v4.2
Krzysztof Hałasa
khalasa at piap.pl
Mon Sep 7 03:55:54 PDT 2015
Hi,
I'd like to ask if the HDMI output on I.MX6-based boards is possible.
I'm unable to get it to work. What I'm trying to do is getting
a) DRM HDMI output, b) X.org output using etnaviv, libdrm-armada and
xf86-video-armada, c) GLX and Xvideo. Basically, latest versions.
I'm working with Gateworks Ventana GW54xx boards and with Sabre-lite,
using newly built imx6q-gw54xx.dtb and imx6q-sabrelite.dtb. In both
cases, required kernel modules are inserted and (somehow) initialized,
but the HDMI device isn't created.
The first problem seems to be this:
- dw_hdmi_imx_probe() is called (and does component_add()), but
- dw_hdmi_imx_bind() is never called.
Now if I enable LVDS (CONFIG_DRM_IMX_LDB - I don't have any LVDS
hardware connected), the HDMI device is created (as well as LVDS).
This used to detect the monitor as "unknown" but now it's "connected"
most of the time - not sure what have changed. EDID is empty and I get
the following entries in /sys/devices/soc0/display-subsystem/drm/card0:
dev 226:0
card0-HDMI-A-1/edid (empty)
card0-HDMI-A-1/dpms On
card0-HDMI-A-1/modes
card0-HDMI-A-1/power/control auto
card0-HDMI-A-1/power/runtime_active_time 0
card0-HDMI-A-1/power/autosuspend_delay_ms (Input/output error)
card0-HDMI-A-1/power/runtime_status unsupported
card0-HDMI-A-1/power/runtime_suspended_time 0
card0-HDMI-A-1/enabled enabled
card0-HDMI-A-1/status used to be "unknown", now: "connected"
card0-HDMI-A-1/uevent power/control auto
power/runtime_active_time 0
power/autosuspend_delay_ms (Input/output error)
power/runtime_status unsupported
power/runtime_suspended_time 0
card0-LVDS-1/edid
card0-LVDS-1/dpms On
card0-LVDS-1/modes
card0-LVDS-1/power/control auto
card0-LVDS-1/power/runtime_active_time 0
card0-LVDS-1/power/autosuspend_delay_ms (Input/output error)
card0-LVDS-1/power/runtime_status unsupported
card0-LVDS-1/power/runtime_suspended_time 0
card0-LVDS-1/enabled disabled
card0-LVDS-1/status unknown
card0-LVDS-1/uevent
uevent MAJOR=226
MINOR=0
DEVNAME=dri/card0
DEVTYPE=drm_minor
Have to "touch /etc/xorg.conf" (otherwise the X server segfaults).
Now, somehow the X.org server sets the resolution to 1024x768, though
nothing is displayed on the monitor (it's in stand-by). Files in
/sys/.../card0-HDMI-A/ now have the actual EDID, mode list etc.
# xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 4096 x 4096
HDMI-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 531mm x 299mm
1920x1080 60.00 +
1680x1050 59.88
1280x1024 75.02 60.02
1440x900 74.98 59.90
1280x720 60.00
1024x768 75.08 60.00*
800x600 75.00 60.32
640x480 75.00 72.81 66.67 60.00
720x400 70.08
LVDS-0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.00*+
This also causes:
imx-ipuv3 2400000.ipu: DC stop timeout after 50 ms
imx-ipuv3 2400000.ipu: Timeout waiting for DMFC FIFOs to clear
What am I doing wrong?
- kernel command line? video=mxcfb0:dev=hdmi,1920x1080M at 60,if=RGB24
- wrong SDMA firmware? MD5 is:
5d4584134cc4cba62e1be2f382cd6f3a /lib/firmware/imx/sdma/sdma-imx6q.bin
- wrong X.org stuff?
CPU identified as i.MX6Q, silicon rev 1.2
imx_ipuv3_crtc 20480 0
ahci_imx 16384 0
libahci_platform 16384 1 ahci_imx
libahci 28672 2 ahci_imx,libahci_platform
imx_ipu_v3 49152 1 imx_ipuv3_crtc
fec 45056 0
dw_hdmi_imx 16384 0
dw_hdmi 20480 1 dw_hdmi_imx
imx_ldb 16384 0
imxdrm 16384 3 dw_hdmi_imx,imx_ipuv3_crtc,imx_ldb
drm_kms_helper 90112 4 dw_hdmi,imxdrm,imx_ipuv3_crtc,imx_ldb
syscopyarea 16384 1 drm_kms_helper
sysfillrect 16384 1 drm_kms_helper
coda 45056 0
videobuf2_vmalloc 16384 1 coda
videobuf2_dma_contig 20480 1 coda
flexcan 20480 0
videobuf2_memops 16384 2 videobuf2_vmalloc,videobuf2_dma_contig
v4l2_mem2mem 16384 1 coda
videobuf2_core 40960 2 coda,v4l2_mem2mem
sysimgblt 16384 1 drm_kms_helper
sky2 57344 0
gpmi_nand 28672 0
drm 249856 7 dw_hdmi,drm_kms_helper,dw_hdmi_imx,imxdrm,imx_ipuv3_crtc,imx_ldb
CONFIG_SOC_IMX6=y
CONFIG_SOC_IMX6Q=y
CONFIG_I2C_IMX=y
CONFIG_SPI_IMX=y
CONFIG_PINCTRL_IMX=y
CONFIG_PINCTRL_IMX6Q=y
CONFIG_GPIO_MXC=y
CONFIG_DRM_IMX=m
# CONFIG_DRM_IMX_FB_HELPER is not set
# CONFIG_DRM_IMX_PARALLEL_DISPLAY is not set
# CONFIG_DRM_IMX_TVE is not set
# CONFIG_DRM_IMX_LDB is not set
CONFIG_DRM_IMX_IPUV3=m
CONFIG_DRM_IMX_HDMI=m
CONFIG_MX3_IPU=y
CONFIG_MX3_IPU_IRQS=4
CONFIG_IMX_SDMA=y
# CONFIG_IMX_DMA is not set
CONFIG_MXS_DMA=y
CONFIG_CLKSRC_IMX_GPT=y
Machine model: Gateworks Ventana i.MX6 Dual/Quad GW54XX
Kernel command line: console=ttymxc1,115200 video=mxcfb0:dev=hdmi,1920x1080M at 60,if=RGB24 earlyprintk
--
Krzysztof Halasa
Industrial Research Institute for Automation and Measurements PIAP
Al. Jerozolimskie 202, 02-486 Warsaw, Poland
More information about the linux-arm-kernel
mailing list