Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/display/tegra/nvidia,tegra186-display.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: NVIDIA Tegra186 (and later) Display Hub
0008 
0009 maintainers:
0010   - Thierry Reding <thierry.reding@gmail.com>
0011   - Jon Hunter <jonathanh@nvidia.com>
0012 
0013 properties:
0014   $nodename:
0015     pattern: "^display-hub@[0-9a-f]+$"
0016 
0017   compatible:
0018     enum:
0019       - nvidia,tegra186-display
0020       - nvidia,tegra194-display
0021 
0022   '#address-cells':
0023     const: 1
0024 
0025   '#size-cells':
0026     const: 1
0027 
0028   reg:
0029     maxItems: 1
0030 
0031   interrupts:
0032     maxItems: 1
0033 
0034   clocks:
0035     minItems: 2
0036     maxItems: 3
0037 
0038   clock-names:
0039     minItems: 2
0040     maxItems: 3
0041 
0042   resets:
0043     items:
0044       - description: display hub reset
0045       - description: window group 0 reset
0046       - description: window group 1 reset
0047       - description: window group 2 reset
0048       - description: window group 3 reset
0049       - description: window group 4 reset
0050       - description: window group 5 reset
0051 
0052   reset-names:
0053     items:
0054       - const: misc
0055       - const: wgrp0
0056       - const: wgrp1
0057       - const: wgrp2
0058       - const: wgrp3
0059       - const: wgrp4
0060       - const: wgrp5
0061 
0062   power-domains:
0063     maxItems: 1
0064 
0065   ranges:
0066     maxItems: 1
0067 
0068 patternProperties:
0069   "^display@[0-9a-f]+$":
0070     type: object
0071 
0072 allOf:
0073   - if:
0074       properties:
0075         compatible:
0076           contains:
0077             const: nvidia,tegra186-display
0078     then:
0079       properties:
0080         clocks:
0081           items:
0082             - description: display core clock
0083             - description: display stream compression clock
0084             - description: display hub clock
0085 
0086         clock-names:
0087           items:
0088             - const: disp
0089             - const: dsc
0090             - const: hub
0091     else:
0092       properties:
0093         clocks:
0094           items:
0095             - description: display core clock
0096             - description: display hub clock
0097 
0098         clock-names:
0099           items:
0100             - const: disp
0101             - const: hub
0102 
0103 additionalProperties: false
0104 
0105 required:
0106   - compatible
0107   - reg
0108   - clocks
0109   - clock-names
0110   - resets
0111   - reset-names
0112   - power-domains
0113   - "#address-cells"
0114   - "#size-cells"
0115   - ranges
0116 
0117 examples:
0118   - |
0119     #include <dt-bindings/clock/tegra186-clock.h>
0120     #include <dt-bindings/interrupt-controller/arm-gic.h>
0121     #include <dt-bindings/memory/tegra186-mc.h>
0122     #include <dt-bindings/power/tegra186-powergate.h>
0123     #include <dt-bindings/reset/tegra186-reset.h>
0124 
0125     display-hub@15200000 {
0126         compatible = "nvidia,tegra186-display";
0127         reg = <0x15200000 0x00040000>;
0128         resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_MISC>,
0129                  <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP0>,
0130                  <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP1>,
0131                  <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP2>,
0132                  <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP3>,
0133                  <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP4>,
0134                  <&bpmp TEGRA186_RESET_NVDISPLAY0_WGRP5>;
0135         reset-names = "misc", "wgrp0", "wgrp1", "wgrp2",
0136                       "wgrp3", "wgrp4", "wgrp5";
0137         clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_DISP>,
0138                  <&bpmp TEGRA186_CLK_NVDISPLAY_DSC>,
0139                  <&bpmp TEGRA186_CLK_NVDISPLAYHUB>;
0140         clock-names = "disp", "dsc", "hub";
0141         status = "disabled";
0142 
0143         power-domains = <&bpmp TEGRA186_POWER_DOMAIN_DISP>;
0144 
0145         #address-cells = <1>;
0146         #size-cells = <1>;
0147 
0148         ranges = <0x15200000 0x15200000 0x40000>;
0149 
0150         display@15200000 {
0151             compatible = "nvidia,tegra186-dc";
0152             reg = <0x15200000 0x10000>;
0153             interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
0154             clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P0>;
0155             clock-names = "dc";
0156             resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_HEAD0>;
0157             reset-names = "dc";
0158 
0159             power-domains = <&bpmp TEGRA186_POWER_DOMAIN_DISP>;
0160             interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVDISPLAYR &emc>,
0161                             <&mc TEGRA186_MEMORY_CLIENT_NVDISPLAYR1 &emc>;
0162             interconnect-names = "dma-mem", "read-1";
0163             iommus = <&smmu TEGRA186_SID_NVDISPLAY>;
0164 
0165             nvidia,outputs = <&dsia &dsib &sor0 &sor1>;
0166             nvidia,head = <0>;
0167         };
0168 
0169         display@15210000 {
0170             compatible = "nvidia,tegra186-dc";
0171             reg = <0x15210000 0x10000>;
0172             interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
0173             clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P1>;
0174             clock-names = "dc";
0175             resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_HEAD1>;
0176             reset-names = "dc";
0177 
0178             power-domains = <&bpmp TEGRA186_POWER_DOMAIN_DISPB>;
0179             interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVDISPLAYR &emc>,
0180                             <&mc TEGRA186_MEMORY_CLIENT_NVDISPLAYR1 &emc>;
0181             interconnect-names = "dma-mem", "read-1";
0182             iommus = <&smmu TEGRA186_SID_NVDISPLAY>;
0183 
0184             nvidia,outputs = <&dsia &dsib &sor0 &sor1>;
0185             nvidia,head = <1>;
0186         };
0187 
0188         display@15220000 {
0189             compatible = "nvidia,tegra186-dc";
0190             reg = <0x15220000 0x10000>;
0191             interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
0192             clocks = <&bpmp TEGRA186_CLK_NVDISPLAY_P2>;
0193             clock-names = "dc";
0194             resets = <&bpmp TEGRA186_RESET_NVDISPLAY0_HEAD2>;
0195             reset-names = "dc";
0196 
0197             power-domains = <&bpmp TEGRA186_POWER_DOMAIN_DISPC>;
0198             interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVDISPLAYR &emc>,
0199                             <&mc TEGRA186_MEMORY_CLIENT_NVDISPLAYR1 &emc>;
0200             interconnect-names = "dma-mem", "read-1";
0201             iommus = <&smmu TEGRA186_SID_NVDISPLAY>;
0202 
0203             nvidia,outputs = <&sor0 &sor1>;
0204             nvidia,head = <2>;
0205         };
0206     };
0207 
0208   - |
0209     #include <dt-bindings/clock/tegra194-clock.h>
0210     #include <dt-bindings/interrupt-controller/arm-gic.h>
0211     #include <dt-bindings/memory/tegra194-mc.h>
0212     #include <dt-bindings/power/tegra194-powergate.h>
0213     #include <dt-bindings/reset/tegra194-reset.h>
0214 
0215     display-hub@15200000 {
0216         compatible = "nvidia,tegra194-display";
0217         reg = <0x15200000 0x00040000>;
0218         resets = <&bpmp TEGRA194_RESET_NVDISPLAY0_MISC>,
0219                  <&bpmp TEGRA194_RESET_NVDISPLAY0_WGRP0>,
0220                  <&bpmp TEGRA194_RESET_NVDISPLAY0_WGRP1>,
0221                  <&bpmp TEGRA194_RESET_NVDISPLAY0_WGRP2>,
0222                  <&bpmp TEGRA194_RESET_NVDISPLAY0_WGRP3>,
0223                  <&bpmp TEGRA194_RESET_NVDISPLAY0_WGRP4>,
0224                  <&bpmp TEGRA194_RESET_NVDISPLAY0_WGRP5>;
0225         reset-names = "misc", "wgrp0", "wgrp1", "wgrp2",
0226                       "wgrp3", "wgrp4", "wgrp5";
0227         clocks = <&bpmp TEGRA194_CLK_NVDISPLAY_DISP>,
0228                  <&bpmp TEGRA194_CLK_NVDISPLAYHUB>;
0229         clock-names = "disp", "hub";
0230         status = "disabled";
0231 
0232         power-domains = <&bpmp TEGRA194_POWER_DOMAIN_DISP>;
0233 
0234         #address-cells = <1>;
0235         #size-cells = <1>;
0236 
0237         ranges = <0x15200000 0x15200000 0x40000>;
0238 
0239         display@15200000 {
0240             compatible = "nvidia,tegra194-dc";
0241             reg = <0x15200000 0x10000>;
0242             interrupts = <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>;
0243             clocks = <&bpmp TEGRA194_CLK_NVDISPLAY_P0>;
0244             clock-names = "dc";
0245             resets = <&bpmp TEGRA194_RESET_NVDISPLAY0_HEAD0>;
0246             reset-names = "dc";
0247 
0248             power-domains = <&bpmp TEGRA194_POWER_DOMAIN_DISP>;
0249             interconnects = <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR &emc>,
0250                             <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR1 &emc>;
0251             interconnect-names = "dma-mem", "read-1";
0252 
0253             nvidia,outputs = <&sor0 &sor1 &sor2 &sor3>;
0254             nvidia,head = <0>;
0255         };
0256 
0257         display@15210000 {
0258             compatible = "nvidia,tegra194-dc";
0259             reg = <0x15210000 0x10000>;
0260             interrupts = <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
0261             clocks = <&bpmp TEGRA194_CLK_NVDISPLAY_P1>;
0262             clock-names = "dc";
0263             resets = <&bpmp TEGRA194_RESET_NVDISPLAY0_HEAD1>;
0264             reset-names = "dc";
0265 
0266             power-domains = <&bpmp TEGRA194_POWER_DOMAIN_DISPB>;
0267             interconnects = <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR &emc>,
0268                             <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR1 &emc>;
0269             interconnect-names = "dma-mem", "read-1";
0270 
0271             nvidia,outputs = <&sor0 &sor1 &sor2 &sor3>;
0272             nvidia,head = <1>;
0273         };
0274 
0275         display@15220000 {
0276             compatible = "nvidia,tegra194-dc";
0277             reg = <0x15220000 0x10000>;
0278             interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>;
0279             clocks = <&bpmp TEGRA194_CLK_NVDISPLAY_P2>;
0280             clock-names = "dc";
0281             resets = <&bpmp TEGRA194_RESET_NVDISPLAY0_HEAD2>;
0282             reset-names = "dc";
0283 
0284             power-domains = <&bpmp TEGRA194_POWER_DOMAIN_DISPC>;
0285             interconnects = <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR &emc>,
0286                             <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR1 &emc>;
0287             interconnect-names = "dma-mem", "read-1";
0288 
0289             nvidia,outputs = <&sor0 &sor1 &sor2 &sor3>;
0290             nvidia,head = <2>;
0291         };
0292 
0293         display@15230000 {
0294             compatible = "nvidia,tegra194-dc";
0295             reg = <0x15230000 0x10000>;
0296             interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
0297             clocks = <&bpmp TEGRA194_CLK_NVDISPLAY_P3>;
0298             clock-names = "dc";
0299             resets = <&bpmp TEGRA194_RESET_NVDISPLAY0_HEAD3>;
0300             reset-names = "dc";
0301 
0302             power-domains = <&bpmp TEGRA194_POWER_DOMAIN_DISPC>;
0303             interconnects = <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR &emc>,
0304                             <&mc TEGRA194_MEMORY_CLIENT_NVDISPLAYR1 &emc>;
0305             interconnect-names = "dma-mem", "read-1";
0306 
0307             nvidia,outputs = <&sor0 &sor1 &sor2 &sor3>;
0308             nvidia,head = <3>;
0309         };
0310     };