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

* Qualcomm Venus video encoder/decoder accelerators

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: Value should contain one of:
		- "qcom,msm8916-venus"
		- "qcom,msm8996-venus"
		- "qcom,sdm845-venus"
- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: Register base address and length of the register map.
- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: Should contain interrupt line number.
- clocks:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A List of phandle and clock specifier pairs as listed
		    in clock-names property.
- clock-names:
	Usage: required for msm8916
	Value type: <stringlist>
	Definition: Should contain the following entries:
		- "core"	Core video accelerator clock
		- "iface"	Video accelerator AHB clock
		- "bus"		Video accelerator AXI clock
- clock-names:
	Usage: required for msm8996
	Value type: <stringlist>
	Definition: Should contain the following entries:
		- "core"	Core video accelerator clock
		- "iface"	Video accelerator AHB clock
		- "bus"		Video accelerator AXI clock
		- "mbus"	Video MAXI clock
- power-domains:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A phandle and power domain specifier pairs to the
		    power domain which is responsible for collapsing
		    and restoring power to the peripheral.
- iommus:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A list of phandle and IOMMU specifier pairs.
- memory-region:
	Usage: required
	Value type: <phandle>
	Definition: reference to the reserved-memory for the firmware
		    memory region.

* Subnodes
The Venus video-codec node must contain two subnodes representing
video-decoder and video-encoder, and one optional firmware subnode.
Firmware subnode is needed when the platform does not have TrustZone.

Every of video-encoder or video-decoder subnode should have:

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: Value should contain "venus-decoder" or "venus-encoder"
- clocks:
	Usage: required for msm8996
	Value type: <prop-encoded-array>
	Definition: A List of phandle and clock specifier pairs as listed
		    in clock-names property.
- clock-names:
	Usage: required for msm8996
	Value type: <stringlist>
	Definition: Should contain the following entries:
		- "core"	Subcore video accelerator clock

- power-domains:
	Usage: required for msm8996
	Value type: <prop-encoded-array>
	Definition: A phandle and power domain specifier pairs to the
		    power domain which is responsible for collapsing
		    and restoring power to the subcore.

The firmware subnode must have:

- iommus:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: A list of phandle and IOMMU specifier pairs.

* An Example
	video-codec@1d00000 {
		compatible = "qcom,msm8916-venus";
		reg = <0x01d00000 0xff000>;
		interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
		clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
			 <&gcc GCC_VENUS0_AHB_CLK>,
			 <&gcc GCC_VENUS0_AXI_CLK>;
		clock-names = "core", "iface", "bus";
		power-domains = <&gcc VENUS_GDSC>;
		iommus = <&apps_iommu 5>;
		memory-region = <&venus_mem>;

		video-decoder {
			compatible = "venus-decoder";
			clocks = <&mmcc VIDEO_SUBCORE0_CLK>;
			clock-names = "core";
			power-domains = <&mmcc VENUS_CORE0_GDSC>;
		};

		video-encoder {
			compatible = "venus-encoder";
			clocks = <&mmcc VIDEO_SUBCORE1_CLK>;
			clock-names = "core";
			power-domains = <&mmcc VENUS_CORE1_GDSC>;
		};

		video-firmware {
			iommus = <&apps_iommu 0x10b2 0x0>;
		};
	};