Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

Amlogic Video Decoder
================================

The video decoding IP lies within the DOS memory region,
except for the hardware bitstream parser that makes use of an undocumented
region.

It makes use of the following blocks:

- ESPARSER is a bitstream parser that outputs to a VIFIFO. Further VDEC blocks
then feed from this VIFIFO.
- VDEC_1 can decode MPEG-1, MPEG-2, MPEG-4 part 2, MJPEG, H.263, H.264, VC-1.
- VDEC_HEVC can decode HEVC and VP9.

Both VDEC_1 and VDEC_HEVC share the "vdec" IRQ and as such cannot run
concurrently.

Device Tree Bindings:
---------------------

VDEC: Video Decoder
--------------------------

Required properties:
- compatible: value should be different for each SoC family as :
	- GXBB (S905) : "amlogic,gxbb-vdec"
	- GXL (S905X, S905D) : "amlogic,gxl-vdec"
	- GXM (S912) : "amlogic,gxm-vdec"
	followed by the common "amlogic,gx-vdec"
- reg: base address and size of he following memory-mapped regions :
	- dos
	- esparser
- reg-names: should contain the names of the previous memory regions
- interrupts: should contain the following IRQs:
	- vdec
	- esparser
- interrupt-names: should contain the names of the previous interrupts
- amlogic,ao-sysctrl: should point to the AOBUS sysctrl node
- amlogic,canvas: should point to a canvas provider node
- clocks: should contain the following clocks :
	- dos_parser
	- dos
	- vdec_1
	- vdec_hevc
- clock-names: should contain the names of the previous clocks
- resets: should contain the parser reset
- reset-names: should be "esparser"

Example:

vdec: video-codec@c8820000 {
	compatible = "amlogic,gxbb-vdec", "amlogic,gx-vdec";
	reg = <0x0 0xc8820000 0x0 0x10000>,
	      <0x0 0xc110a580 0x0 0xe4>;
	reg-names = "dos", "esparser";

	interrupts = <GIC_SPI 44 IRQ_TYPE_EDGE_RISING>,
		     <GIC_SPI 32 IRQ_TYPE_EDGE_RISING>;
	interrupt-names = "vdec", "esparser";

	amlogic,ao-sysctrl = <&sysctrl_AO>;
	amlogic,canvas = <&canvas>;

	clocks = <&clkc CLKID_DOS_PARSER>,
		 <&clkc CLKID_DOS>,
		 <&clkc CLKID_VDEC_1>,
		 <&clkc CLKID_VDEC_HEVC>;
	clock-names = "dos_parser", "dos", "vdec_1", "vdec_hevc";

	resets = <&reset RESET_PARSER>;
	reset-names = "esparser";
};