The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/device-tree/Bindings/media/mediatek,vcodec-subdev-decoder.yaml

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
    2 
    3 %YAML 1.2
    4 ---
    5 $id: "http://devicetree.org/schemas/media/mediatek,vcodec-subdev-decoder.yaml#"
    6 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
    7 
    8 title: Mediatek Video Decode Accelerator With Multi Hardware
    9 
   10 maintainers:
   11   - Yunfei Dong <yunfei.dong@mediatek.com>
   12 
   13 description: |
   14   Mediatek Video Decode is the video decode hardware present in Mediatek
   15   SoCs which supports high resolution decoding functionalities. Required
   16   parent and child device node.
   17 
   18   About the Decoder Hardware Block Diagram, please check below:
   19 
   20     +------------------------------------------------+-------------------------------------+
   21     |                                                |                                     |
   22     |  input -> lat soc HW -> lat HW -> lat buffer --|--> lat buffer -> core HW -> output  |
   23     |            ||             ||                   |                     ||              |
   24     +------------||-------------||-------------------+---------------------||--------------+
   25                  ||     lat     ||                   |               core workqueue  <parent>
   26     -------------||-------------||-------------------|---------------------||---------------
   27                  ||<------------||----------------HW index---------------->||        <child>
   28                  \/             \/                                         \/
   29                +-------------------------------------------------------------+
   30                |                          enable/disable                     |
   31                |                 clk     power    irq    iommu               |
   32                |                   (lat/lat soc/core0/core1)                 |
   33                +-------------------------------------------------------------+
   34 
   35   As above, there are parent and child devices, child mean each hardware. The child device
   36   controls the information of each hardware independent which include clk/power/irq.
   37 
   38   There are two workqueues in parent device: lat workqueue and core workqueue. They are used
   39   to lat and core hardware deocder. Lat workqueue need to get input bitstream and lat buffer,
   40   then enable lat to decode, writing the result to lat buffer, dislabe hardware when lat decode
   41   done. Core workqueue need to get lat buffer and output buffer, then enable core to decode,
   42   writing the result to output buffer, disable hardware when core decode done. These two
   43   hardwares will decode each frame cyclically.
   44 
   45   For the smi common may not the same for each hardware, can't combine all hardware in one node,
   46   or leading to iommu fault when access dram data.
   47 
   48   Lat soc is a hardware which is related with some larb(local arbiter) ports. For mt8195
   49   platform, there are some ports like RDMA, UFO in lat soc larb, need to enable its power and
   50   clock when lat start to work, don't have interrupt.
   51 
   52   mt8195: lat soc HW + lat HW + core HW
   53   mt8192: lat HW + core HW
   54 
   55 properties:
   56   compatible:
   57     enum:
   58       - mediatek,mt8192-vcodec-dec
   59       - mediatek,mt8186-vcodec-dec
   60       - mediatek,mt8195-vcodec-dec
   61 
   62   reg:
   63     maxItems: 1
   64 
   65   iommus:
   66     minItems: 1
   67     maxItems: 32
   68     description: |
   69       List of the hardware port in respective IOMMU block for current Socs.
   70       Refer to bindings/iommu/mediatek,iommu.yaml.
   71 
   72   mediatek,scp:
   73     $ref: /schemas/types.yaml#/definitions/phandle
   74     description: |
   75       The node of system control processor (SCP), using
   76       the remoteproc & rpmsg framework.
   77 
   78   dma-ranges:
   79     maxItems: 1
   80     description: |
   81       Describes the physical address space of IOMMU maps to memory.
   82 
   83   "#address-cells":
   84     const: 2
   85 
   86   "#size-cells":
   87     const: 2
   88 
   89   ranges: true
   90 
   91 # Required child node:
   92 patternProperties:
   93   '^vcodec-lat@[0-9a-f]+$':
   94     type: object
   95 
   96     properties:
   97       compatible:
   98         enum:
   99           - mediatek,mtk-vcodec-lat
  100           - mediatek,mtk-vcodec-lat-soc
  101 
  102       reg:
  103         maxItems: 1
  104 
  105       interrupts:
  106         maxItems: 1
  107 
  108       iommus:
  109         minItems: 1
  110         maxItems: 32
  111         description: |
  112           List of the hardware port in respective IOMMU block for current Socs.
  113           Refer to bindings/iommu/mediatek,iommu.yaml.
  114 
  115       clocks:
  116         maxItems: 5
  117 
  118       clock-names:
  119         items:
  120           - const: sel
  121           - const: soc-vdec
  122           - const: soc-lat
  123           - const: vdec
  124           - const: top
  125 
  126       assigned-clocks:
  127         maxItems: 1
  128 
  129       assigned-clock-parents:
  130         maxItems: 1
  131 
  132       power-domains:
  133         maxItems: 1
  134 
  135     required:
  136       - compatible
  137       - reg
  138       - iommus
  139       - clocks
  140       - clock-names
  141       - assigned-clocks
  142       - assigned-clock-parents
  143       - power-domains
  144 
  145     additionalProperties: false
  146 
  147   '^vcodec-core@[0-9a-f]+$':
  148     type: object
  149 
  150     properties:
  151       compatible:
  152         const: mediatek,mtk-vcodec-core
  153 
  154       reg:
  155         maxItems: 1
  156 
  157       interrupts:
  158         maxItems: 1
  159 
  160       iommus:
  161         minItems: 1
  162         maxItems: 32
  163         description: |
  164           List of the hardware port in respective IOMMU block for current Socs.
  165           Refer to bindings/iommu/mediatek,iommu.yaml.
  166 
  167       clocks:
  168         maxItems: 5
  169 
  170       clock-names:
  171         items:
  172           - const: sel
  173           - const: soc-vdec
  174           - const: soc-lat
  175           - const: vdec
  176           - const: top
  177 
  178       assigned-clocks:
  179         maxItems: 1
  180 
  181       assigned-clock-parents:
  182         maxItems: 1
  183 
  184       power-domains:
  185         maxItems: 1
  186 
  187     required:
  188       - compatible
  189       - reg
  190       - interrupts
  191       - iommus
  192       - clocks
  193       - clock-names
  194       - assigned-clocks
  195       - assigned-clock-parents
  196       - power-domains
  197 
  198     additionalProperties: false
  199 
  200 required:
  201   - compatible
  202   - reg
  203   - iommus
  204   - mediatek,scp
  205   - dma-ranges
  206   - ranges
  207 
  208 if:
  209   properties:
  210     compatible:
  211       contains:
  212         enum:
  213           - mediatek,mtk-vcodec-lat
  214 
  215 then:
  216   required:
  217     - interrupts
  218 
  219 additionalProperties: false
  220 
  221 examples:
  222   - |
  223     #include <dt-bindings/interrupt-controller/arm-gic.h>
  224     #include <dt-bindings/memory/mt8192-larb-port.h>
  225     #include <dt-bindings/interrupt-controller/irq.h>
  226     #include <dt-bindings/clock/mt8192-clk.h>
  227     #include <dt-bindings/power/mt8192-power.h>
  228 
  229     bus@16000000 {
  230         #address-cells = <2>;
  231         #size-cells = <2>;
  232         ranges = <0 0x16000000 0x16000000 0 0x40000>;
  233 
  234         video-codec@16000000 {
  235             compatible = "mediatek,mt8192-vcodec-dec";
  236             mediatek,scp = <&scp>;
  237             iommus = <&iommu0 M4U_PORT_L4_VDEC_MC_EXT>;
  238             dma-ranges = <0x1 0x0 0x0 0x40000000 0x0 0xfff00000>;
  239             #address-cells = <2>;
  240             #size-cells = <2>;
  241             ranges = <0 0 0 0x16000000 0 0x40000>;
  242             reg = <0 0x16000000 0 0x1000>;              /* VDEC_SYS */
  243             vcodec-lat@10000 {
  244                 compatible = "mediatek,mtk-vcodec-lat";
  245                 reg = <0 0x10000 0 0x800>;
  246                 interrupts = <GIC_SPI 426 IRQ_TYPE_LEVEL_HIGH 0>;
  247                 iommus = <&iommu0 M4U_PORT_L5_VDEC_LAT0_VLD_EXT>,
  248                     <&iommu0 M4U_PORT_L5_VDEC_LAT0_VLD2_EXT>,
  249                     <&iommu0 M4U_PORT_L5_VDEC_LAT0_AVC_MV_EXT>,
  250                     <&iommu0 M4U_PORT_L5_VDEC_LAT0_PRED_RD_EXT>,
  251                     <&iommu0 M4U_PORT_L5_VDEC_LAT0_TILE_EXT>,
  252                     <&iommu0 M4U_PORT_L5_VDEC_LAT0_WDMA_EXT>,
  253                     <&iommu0 M4U_PORT_L5_VDEC_LAT0_RG_CTRL_DMA_EXT>,
  254                     <&iommu0 M4U_PORT_L5_VDEC_UFO_ENC_EXT>;
  255                 clocks = <&topckgen CLK_TOP_VDEC_SEL>,
  256                     <&vdecsys_soc CLK_VDEC_SOC_VDEC>,
  257                     <&vdecsys_soc CLK_VDEC_SOC_LAT>,
  258                     <&vdecsys_soc CLK_VDEC_SOC_LARB1>,
  259                     <&topckgen CLK_TOP_MAINPLL_D4>;
  260                 clock-names = "sel", "soc-vdec", "soc-lat", "vdec", "top";
  261                 assigned-clocks = <&topckgen CLK_TOP_VDEC_SEL>;
  262                 assigned-clock-parents = <&topckgen CLK_TOP_MAINPLL_D4>;
  263                 power-domains = <&spm MT8192_POWER_DOMAIN_VDEC>;
  264             };
  265 
  266             vcodec-core@25000 {
  267                 compatible = "mediatek,mtk-vcodec-core";
  268                 reg = <0 0x25000 0 0x1000>;
  269                 interrupts = <GIC_SPI 425 IRQ_TYPE_LEVEL_HIGH 0>;
  270                 iommus = <&iommu0 M4U_PORT_L4_VDEC_MC_EXT>,
  271                     <&iommu0 M4U_PORT_L4_VDEC_UFO_EXT>,
  272                     <&iommu0 M4U_PORT_L4_VDEC_PP_EXT>,
  273                     <&iommu0 M4U_PORT_L4_VDEC_PRED_RD_EXT>,
  274                     <&iommu0 M4U_PORT_L4_VDEC_PRED_WR_EXT>,
  275                     <&iommu0 M4U_PORT_L4_VDEC_PPWRAP_EXT>,
  276                     <&iommu0 M4U_PORT_L4_VDEC_TILE_EXT>,
  277                     <&iommu0 M4U_PORT_L4_VDEC_VLD_EXT>,
  278                     <&iommu0 M4U_PORT_L4_VDEC_VLD2_EXT>,
  279                     <&iommu0 M4U_PORT_L4_VDEC_AVC_MV_EXT>,
  280                     <&iommu0 M4U_PORT_L4_VDEC_RG_CTRL_DMA_EXT>;
  281                 clocks = <&topckgen CLK_TOP_VDEC_SEL>,
  282                     <&vdecsys CLK_VDEC_VDEC>,
  283                     <&vdecsys CLK_VDEC_LAT>,
  284                     <&vdecsys CLK_VDEC_LARB1>,
  285                     <&topckgen CLK_TOP_MAINPLL_D4>;
  286                 clock-names = "sel", "soc-vdec", "soc-lat", "vdec", "top";
  287                 assigned-clocks = <&topckgen CLK_TOP_VDEC_SEL>;
  288                 assigned-clock-parents = <&topckgen CLK_TOP_MAINPLL_D4>;
  289                 power-domains = <&spm MT8192_POWER_DOMAIN_VDEC2>;
  290             };
  291         };
  292     };

Cache object: 53bd2c317aaa133fd94a6c8995071c50


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.