Video Processing Unit (VPU)
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 default ConnectCore 6 SBC kernel configuration file.
Platform driver mapping
The VPU drivers for the i.MX6 are located at:
File | Description |
---|---|
include/linux/mxc_vpu.h | Header file defining IOCTLs and memory structures |
drivers/mxc/vpu/mxc_vpu.c | 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 i.MX6 device tree
vpu: vpu@02040000 { 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>; };
The VPU interface is enabled by default.
IOMUX configuration
The VPU is a CPU-internal subsystem. No IOMUX configuration is necessary.