The Video Processing Unit (VPU) is a multi-standard video codec (encoder/decoder) capable of simultaneously handling multiple streams by time multiplexing.

The VPU software can be divided into two parts: the kernel driver and the user-space library.

Kernel configuration

You can manage the VPU driver support through the kernel configuration option:

  • MXC VPU (Video Processing Unit) support (CONFIG_MXC_VPU)

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

Kernel driver

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

File Description


Header file defining IOCTLs and memory structures


Device management and file operation interface implementation

Device tree bindings and customization

The i.MX6 VPU device tree binding is documented at Documentation/devicetree/bindings/media/coda.txt.

The VPU is defined in the i.MX6 CPU device tree file.

Definition of the VPU interface

Common ConnectCore 6 Plus device tree
vpu_fsl: vpu_fsl@2040000 {
	compatible = "fsl,imx6-vpu";
	reg = <0x02040000 0x3c000>;
	reg-names = "vpu_regs";
	interrupts = <0 3 IRQ_TYPE_EDGE_RISING>,
	             <0 12 IRQ_TYPE_LEVEL_HIGH>;
	interrupt-names = "vpu_jpu_irq", "vpu_ipi_irq";
	clocks = <&clks IMX6QDL_CLK_VPU_AXI>,
	         <&clks IMX6QDL_CLK_MMDC_CH0_AXI>,
	         <&clks IMX6QDL_CLK_OCRAM>;
	clock-names = "vpu_clk", "mmdc_ch0_axi", "ocram";
	iramsize = <0x21000>;
	iram = <&ocram>;
	resets = <&src 1>;
	power-domains = <&gpc 1>;