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.yaml
.
The VPU is defined in the i.MX6 CPU device tree file.
Definition of the VPU interface
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>;
};