| * Qualcomm MSM VIDC |
| |
| Required properties: |
| - compatible : one of: |
| - "qcom,msm-vidc" |
| - qcom,hfi : supported Host-Firmware Interface, one of: |
| - "venus" |
| - "q6" |
| - qcom,max-hw-load: The maximum load the hardware can support expressed in units |
| of macroblocks per second. |
| |
| Optional properties: |
| - reg : offset and length of the register set for the device. |
| - interrupts : should contain the vidc interrupt. |
| - vdd-supply : regulator to supply venus. |
| - qcom,vidc-cp-map : start and size of device virtual address range for |
| secure buffers. Video hardware uses this address range to identify if |
| the buffers are secure or non-secure. |
| - qcom,vidc-ns-map : start and size of device virtual address range for |
| non-secure buffers. Video hardware uses this address range to identify |
| if the buffers are secure or non-secure. |
| - qcom,load-freq-tbl : load (in macroblocks/sec) and corresponding vcodec |
| clock required for optimal performance in descending order. |
| - qcom,reg-presets : list of offset-value pairs for registers to be written. |
| The offsets are from the base offset specified in 'reg'. This is mainly |
| used for QoS, vbif, etc. presets for video. |
| - qcom,bus-ports : number of bus ports supported by venus to access |
| ddr/ocmem. |
| - qcom,enc-ocmem-ab-ib : list of bus vectors (ab, ib pair) for ocmem |
| bandwidth request by different video encoder usecases. |
| - qcom,dec-ocmem-ab-ib : list of bus vectors(ab, ib pair) for ocmem |
| bandwidth request by different video decoder usecases. |
| - qcom,enc-ddr-ab-ib : list of bus vectors(ab,ib pair) for ddr bandwidth |
| request by different video encoder usecases. |
| - qcom,dec-ddr-ab-ib : list of bus vectors(ab, ib pair) for ddr bandwidth |
| request by different video decoder usecases. |
| - qcom,buffer-type-tz-usage-table : a key-value pair, mapping a buffer type |
| (enum hal_buffer) to its corresponding TZ usage. The TZ usages are defined |
| as "enum cp_mem_usage" in include/linux/msm_ion.h |
| - qcom,has-ocmem: indicate the target has ocmem if this property exists |
| - qcom,vidc-iommu-domains: node containing individual domain nodes, each with: |
| - a unique domain name for the domain node (e.g vidc,domain-ns) |
| - qcom,vidc-domain-phandle: phandle for the domain as defined in |
| <target>-iommu-domains.dtsi (e.g msm8974-v1-iommu-domains.dtsi) |
| - qcom,vidc-partition-buffer-types: bitmap of buffer types that can |
| be mapped into each IOMMU domain partition. There must be exactly |
| one buffer bitmap per partition in the domain, with order of the |
| bitmaps to be the same as the order of the respective partitions. |
| - Buffer types are defined as the following: |
| input = 0x1 |
| output = 0x2 |
| output2 = 0x4 |
| extradata input = 0x8 |
| extradata output = 0x10 |
| extradata output2 = 0x20 |
| internal scratch = 0x40 |
| internal scratch1 = 0x80 |
| internal scratch2 = 0x100 |
| internal persist = 0x200 |
| internal persist1 = 0x400 |
| internal cmd queue = 0x800 |
| |
| Example: |
| |
| |
| qcom,vidc@fdc00000 { |
| compatible = "qcom,msm-vidc"; |
| reg = <0xfdc00000 0xff000>; |
| interrupts = <0 44 0>; |
| vdd-supply = <&gdsc_venus>; |
| qcom,vidc-cp-map = <0x1000000 0x40000000>; |
| qcom,vidc-ns-map = <0x40000000 0x40000000>; |
| qcom,load-freq-tbl = <979200 410000000>, |
| <560145 266670000>, |
| <421161 200000000>, |
| <243000 133330000>, |
| <108000 100000000>, |
| <36000 50000000>; |
| qcom,has-ocmem; |
| qcom,hfi = "venus"; |
| qcom,reg-presets = <0x80004 0x1>, |
| <0x80178 0x00001FFF>; |
| qcom,bus-ports = <1>; |
| qcom,enc-ocmem-ab-ib = <0 0>, |
| <138200 1222000>; |
| qcom,dec-ocmem-ab-ib = <0 0>, |
| <176900 1556640>; |
| qcom,enc-ddr-ab-ib = <0 0>, |
| <60000 664950>; |
| qcom,dec-ddr-ab-ib = <0 0>, |
| <110000 909000>; |
| qcom,buffer-type-tz-usage-table = <0x1 0x1>, |
| <0x1fe 0x2>; |
| qcom,max-hw-load = <1224450>; /* 4k @ 30 + 1080p @ 30*/ |
| qcom,vidc-iommu-domains { |
| qcom,domain-ns { |
| qcom,vidc-domain-phandle = <&venus_domain_ns>; |
| qcom,vidc-partition-buffer-types = <0x7ff>, |
| <0x800>; |
| }; |
| |
| qcom,domain-cp { |
| qcom,vidc-domain-phandle = <&venus_domain_cp>; |
| qcom,vidc-partition-buffer-types = <0x6>, |
| <0x7c1>; |
| }; |
| }; |
| }; |