162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci%YAML 1.2 462306a36Sopenharmony_ci--- 562306a36Sopenharmony_ci$id: http://devicetree.org/schemas/media/amphion,vpu.yaml# 662306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 762306a36Sopenharmony_ci 862306a36Sopenharmony_cititle: Amphion VPU codec IP 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cimaintainers: 1162306a36Sopenharmony_ci - Ming Qian <ming.qian@nxp.com> 1262306a36Sopenharmony_ci - Shijie Qin <shijie.qin@nxp.com> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cidescription: |- 1562306a36Sopenharmony_ci The Amphion MXC video encoder(Windsor) and decoder(Malone) accelerators present 1662306a36Sopenharmony_ci on NXP i.MX8Q SoCs. 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ciproperties: 1962306a36Sopenharmony_ci $nodename: 2062306a36Sopenharmony_ci pattern: "^vpu@[0-9a-f]+$" 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci compatible: 2362306a36Sopenharmony_ci items: 2462306a36Sopenharmony_ci - enum: 2562306a36Sopenharmony_ci - nxp,imx8qm-vpu 2662306a36Sopenharmony_ci - nxp,imx8qxp-vpu 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci reg: 2962306a36Sopenharmony_ci maxItems: 1 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci power-domains: 3262306a36Sopenharmony_ci maxItems: 1 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci "#address-cells": 3562306a36Sopenharmony_ci const: 1 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci "#size-cells": 3862306a36Sopenharmony_ci const: 1 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci ranges: true 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cipatternProperties: 4362306a36Sopenharmony_ci "^mailbox@[0-9a-f]+$": 4462306a36Sopenharmony_ci description: 4562306a36Sopenharmony_ci Each vpu encoder or decoder correspond a MU, which used for communication 4662306a36Sopenharmony_ci between driver and firmware. Implement via mailbox on driver. 4762306a36Sopenharmony_ci $ref: ../mailbox/fsl,mu.yaml# 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci "^vpu-core@[0-9a-f]+$": 5162306a36Sopenharmony_ci description: 5262306a36Sopenharmony_ci Each core correspond a decoder or encoder, need to configure them 5362306a36Sopenharmony_ci separately. NXP i.MX8QM SoC has one decoder and two encoder, i.MX8QXP SoC 5462306a36Sopenharmony_ci has one decoder and one encoder. 5562306a36Sopenharmony_ci type: object 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci properties: 5862306a36Sopenharmony_ci compatible: 5962306a36Sopenharmony_ci items: 6062306a36Sopenharmony_ci - enum: 6162306a36Sopenharmony_ci - nxp,imx8q-vpu-decoder 6262306a36Sopenharmony_ci - nxp,imx8q-vpu-encoder 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci reg: 6562306a36Sopenharmony_ci maxItems: 1 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci power-domains: 6862306a36Sopenharmony_ci maxItems: 1 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci mbox-names: 7162306a36Sopenharmony_ci items: 7262306a36Sopenharmony_ci - const: tx0 7362306a36Sopenharmony_ci - const: tx1 7462306a36Sopenharmony_ci - const: rx 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci mboxes: 7762306a36Sopenharmony_ci description: 7862306a36Sopenharmony_ci List of phandle of 2 MU channels for tx, 1 MU channel for rx. 7962306a36Sopenharmony_ci maxItems: 3 8062306a36Sopenharmony_ci 8162306a36Sopenharmony_ci memory-region: 8262306a36Sopenharmony_ci description: 8362306a36Sopenharmony_ci Phandle to the reserved memory nodes to be associated with the 8462306a36Sopenharmony_ci remoteproc device. The reserved memory nodes should be carveout nodes, 8562306a36Sopenharmony_ci and should be defined as per the bindings in 8662306a36Sopenharmony_ci Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt 8762306a36Sopenharmony_ci items: 8862306a36Sopenharmony_ci - description: region reserved for firmware image sections. 8962306a36Sopenharmony_ci - description: region used for RPC shared memory between firmware and 9062306a36Sopenharmony_ci driver. 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ci required: 9362306a36Sopenharmony_ci - compatible 9462306a36Sopenharmony_ci - reg 9562306a36Sopenharmony_ci - power-domains 9662306a36Sopenharmony_ci - mbox-names 9762306a36Sopenharmony_ci - mboxes 9862306a36Sopenharmony_ci - memory-region 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ci additionalProperties: false 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_cirequired: 10362306a36Sopenharmony_ci - compatible 10462306a36Sopenharmony_ci - reg 10562306a36Sopenharmony_ci - power-domains 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciadditionalProperties: false 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ciexamples: 11062306a36Sopenharmony_ci # Device node example for i.MX8QM platform: 11162306a36Sopenharmony_ci - | 11262306a36Sopenharmony_ci #include <dt-bindings/firmware/imx/rsrc.h> 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_ci vpu: vpu@2c000000 { 11562306a36Sopenharmony_ci compatible = "nxp,imx8qm-vpu"; 11662306a36Sopenharmony_ci ranges = <0x2c000000 0x2c000000 0x2000000>; 11762306a36Sopenharmony_ci reg = <0x2c000000 0x1000000>; 11862306a36Sopenharmony_ci #address-cells = <1>; 11962306a36Sopenharmony_ci #size-cells = <1>; 12062306a36Sopenharmony_ci power-domains = <&pd IMX_SC_R_VPU>; 12162306a36Sopenharmony_ci 12262306a36Sopenharmony_ci mu_m0: mailbox@2d000000 { 12362306a36Sopenharmony_ci compatible = "fsl,imx6sx-mu"; 12462306a36Sopenharmony_ci reg = <0x2d000000 0x20000>; 12562306a36Sopenharmony_ci interrupts = <0 472 4>; 12662306a36Sopenharmony_ci #mbox-cells = <2>; 12762306a36Sopenharmony_ci power-domains = <&pd IMX_SC_R_VPU_MU_0>; 12862306a36Sopenharmony_ci }; 12962306a36Sopenharmony_ci 13062306a36Sopenharmony_ci mu1_m0: mailbox@2d020000 { 13162306a36Sopenharmony_ci compatible = "fsl,imx6sx-mu"; 13262306a36Sopenharmony_ci reg = <0x2d020000 0x20000>; 13362306a36Sopenharmony_ci interrupts = <0 473 4>; 13462306a36Sopenharmony_ci #mbox-cells = <2>; 13562306a36Sopenharmony_ci power-domains = <&pd IMX_SC_R_VPU_MU_1>; 13662306a36Sopenharmony_ci }; 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci mu2_m0: mailbox@2d040000 { 13962306a36Sopenharmony_ci compatible = "fsl,imx6sx-mu"; 14062306a36Sopenharmony_ci reg = <0x2d040000 0x20000>; 14162306a36Sopenharmony_ci interrupts = <0 474 4>; 14262306a36Sopenharmony_ci #mbox-cells = <2>; 14362306a36Sopenharmony_ci power-domains = <&pd IMX_SC_R_VPU_MU_2>; 14462306a36Sopenharmony_ci }; 14562306a36Sopenharmony_ci 14662306a36Sopenharmony_ci vpu_core0: vpu-core@2d080000 { 14762306a36Sopenharmony_ci compatible = "nxp,imx8q-vpu-decoder"; 14862306a36Sopenharmony_ci reg = <0x2d080000 0x10000>; 14962306a36Sopenharmony_ci power-domains = <&pd IMX_SC_R_VPU_DEC_0>; 15062306a36Sopenharmony_ci mbox-names = "tx0", "tx1", "rx"; 15162306a36Sopenharmony_ci mboxes = <&mu_m0 0 0>, 15262306a36Sopenharmony_ci <&mu_m0 0 1>, 15362306a36Sopenharmony_ci <&mu_m0 1 0>; 15462306a36Sopenharmony_ci memory-region = <&decoder_boot>, <&decoder_rpc>; 15562306a36Sopenharmony_ci }; 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci vpu_core1: vpu-core@2d090000 { 15862306a36Sopenharmony_ci compatible = "nxp,imx8q-vpu-encoder"; 15962306a36Sopenharmony_ci reg = <0x2d090000 0x10000>; 16062306a36Sopenharmony_ci power-domains = <&pd IMX_SC_R_VPU_ENC_0>; 16162306a36Sopenharmony_ci mbox-names = "tx0", "tx1", "rx"; 16262306a36Sopenharmony_ci mboxes = <&mu1_m0 0 0>, 16362306a36Sopenharmony_ci <&mu1_m0 0 1>, 16462306a36Sopenharmony_ci <&mu1_m0 1 0>; 16562306a36Sopenharmony_ci memory-region = <&encoder1_boot>, <&encoder1_rpc>; 16662306a36Sopenharmony_ci }; 16762306a36Sopenharmony_ci 16862306a36Sopenharmony_ci vpu_core2: vpu-core@2d0a0000 { 16962306a36Sopenharmony_ci reg = <0x2d0a0000 0x10000>; 17062306a36Sopenharmony_ci compatible = "nxp,imx8q-vpu-encoder"; 17162306a36Sopenharmony_ci power-domains = <&pd IMX_SC_R_VPU_ENC_1>; 17262306a36Sopenharmony_ci mbox-names = "tx0", "tx1", "rx"; 17362306a36Sopenharmony_ci mboxes = <&mu2_m0 0 0>, 17462306a36Sopenharmony_ci <&mu2_m0 0 1>, 17562306a36Sopenharmony_ci <&mu2_m0 1 0>; 17662306a36Sopenharmony_ci memory-region = <&encoder2_boot>, <&encoder2_rpc>; 17762306a36Sopenharmony_ci }; 17862306a36Sopenharmony_ci }; 17962306a36Sopenharmony_ci 18062306a36Sopenharmony_ci... 181