HDMI audio

The High Definition Multimedia Interface (HDMI) driver supports the on-chip DesignWare HDMI hardware module, which provides the capability to transfer uncompressed video, audio, and data using a single cable. HDMI audio is only supported when using supported CEA-861-E video modes. If you are using non-CEA video modes, the HDMI audio clock will not be set up correctly and you cannot use HDMI audio. This is a limitation of the i.MX6-integrated HDMI transmitter. The ConnectCore 6 Plus SBC has an HDMI transmitter port connected to I2C3.

Kernel configuration

You can manage the HDMI audio driver support through the kernel configuration option:

This option is enabled as built-in on the default ConnectCore 6 Plus kernel configuration file.

Platform driver mapping

The HDMI drivers for the i.MX6 are located at:

File Description
drivers/mfd/mxc-hdmi-core.c HDMI core driver
sound/soc/fsl/fsl_hdmi.c HDMI Audio SoC DAI driver
sound/soc/fsl/imx-hdmi-dma.c HDMI Audio SoC platform DMA driver
sound/soc/fsl/imx_hdmi.c HDMI Audio SoC machine driver

Device tree bindings and customization

There are no device tree bindings for HDMI audio.

The HDMI audio interface is defined in the CPU and SBC device tree files.

Define the HDMI interface

hdmi_core: hdmi_core@00120000 {
        compatible = "fsl,imx6q-hdmi-core";
        reg = <0x00120000 0x9000>;
        clocks = <&clks IMX6QDL_CLK_HDMI_ISFR>,
                        <&clks IMX6QDL_CLK_HDMI_IAHB>,
                        <&clks IMX6QDL_CLK_HSI_TX>;
        clock-names = "hdmi_isfr", "hdmi_iahb", "mipi_core";
        status = "disabled";
};
 
hdmi_audio: hdmi_audio@00120000 {
        compatible = "fsl,imx6q-hdmi-audio";
        clocks = <&clks IMX6QDL_CLK_HDMI_ISFR>,
                        <&clks IMX6QDL_CLK_HDMI_IAHB>,
                        <&clks IMX6QDL_CLK_HSI_TX>;
        clock-names = "hdmi_isfr", "hdmi_iahb", "mipi_core";
        dmas = <&sdma 2 25 0>;
        dma-names = "tx";
        status = "disabled";
};

Configure IOMUX

The HDMI uses dedicated pins. No IOMUX configuration is necessary.

Enable HDMI audio

ConnectCore 6 Plus SBC device tree
        sound_hdmi: sound-hdmi {
                compatible = "fsl,imx6q-audio-hdmi",
                             "fsl,imx-audio-hdmi";
                model = "imx-audio-hdmi";
                hdmi-controller = <&hdmi_audio>;
        };
 
[...]
 
&hdmi_audio {
        status = "okay";
};
&hdmi_core {
        ipu_id = <1>;
        disp_id = <1>;
        status = "okay";
};

HDMI transmitter port on I2C3

ConnectCore 6 Plus SBC device tree
&i2c3 {
        hdmi: edid@50 {
                compatible = "fsl,imx6-hdmi-i2c";
                reg = <0x50>;
        };
 
        [...]
};

Note This section covers HDMI audio. For HDMI video interface documentation, see HDMI video.