Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0-only
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/display/tegra/nvidia,tegra20-host1x.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: NVIDIA Tegra host1x controller
0008 
0009 maintainers:
0010   - Thierry Reding <thierry.reding@gmail.com>
0011   - Jon Hunter <jonathanh@nvidia.com>
0012 
0013 description: The host1x top-level node defines a number of children, each
0014   representing one of the host1x client modules defined in this binding.
0015 
0016 properties:
0017   compatible:
0018     oneOf:
0019       - enum:
0020           - nvidia,tegra20-host1x
0021           - nvidia,tegra30-host1x
0022           - nvidia,tegra114-host1x
0023           - nvidia,tegra124-host1x
0024           - nvidia,tegra210-host1x
0025           - nvidia,tegra186-host1x
0026           - nvidia,tegra194-host1x
0027           - nvidia,tegra234-host1x
0028 
0029       - items:
0030           - const: nvidia,tegra132-host1x
0031           - const: nvidia,tegra124-host1x
0032 
0033   reg:
0034     minItems: 1
0035     maxItems: 3
0036 
0037   reg-names:
0038     minItems: 1
0039     maxItems: 3
0040 
0041   interrupts:
0042     minItems: 1
0043     maxItems: 9
0044 
0045   interrupt-names:
0046     minItems: 1
0047     maxItems: 9
0048 
0049   '#address-cells':
0050     description: The number of cells used to represent physical base addresses
0051       in the host1x address space.
0052     enum: [1, 2]
0053 
0054   '#size-cells':
0055     description: The number of cells used to represent the size of an address
0056       range in the host1x address space.
0057     enum: [1, 2]
0058 
0059   ranges:
0060     maxItems: 1
0061 
0062   clocks:
0063     description: Must contain one entry, for the module clock. See
0064       ../clocks/clock-bindings.txt for details.
0065 
0066   clock-names:
0067     items:
0068       - const: host1x
0069 
0070   resets:
0071     minItems: 1 # MC reset is optional on Tegra186 and later
0072     items:
0073       - description: module reset
0074       - description: memory client hotflush reset
0075 
0076   reset-names:
0077     minItems: 1 # MC reset is optional on Tegra186 and later
0078     items:
0079       - const: host1x
0080       - const: mc
0081 
0082   iommus:
0083     maxItems: 1
0084 
0085   interconnects:
0086     items:
0087       - description: memory read client for host1x
0088 
0089   interconnect-names:
0090     items:
0091       - const: dma-mem # read
0092 
0093   operating-points-v2:
0094     $ref: "/schemas/types.yaml#/definitions/phandle"
0095 
0096   power-domains:
0097     items:
0098       - description: phandle to the HEG or core power domain
0099 
0100 required:
0101   - compatible
0102   - interrupts
0103   - interrupt-names
0104   - '#address-cells'
0105   - '#size-cells'
0106   - ranges
0107   - reg
0108   - clocks
0109   - clock-names
0110 
0111 unevaluatedProperties:
0112   type: object
0113 
0114 allOf:
0115   - if:
0116       properties:
0117         compatible:
0118           contains:
0119             enum:
0120               - nvidia,tegra20-host1x
0121               - nvidia,tegra30-host1x
0122               - nvidia,tegra114-host1x
0123               - nvidia,tegra124-host1x
0124               - nvidia,tegra210-host1x
0125     then:
0126       properties:
0127         interrupts:
0128           items:
0129             - description: host1x syncpoint interrupt
0130             - description: host1x general interrupt
0131 
0132         interrupt-names:
0133           items:
0134             - const: syncpt
0135             - const: host1x
0136       required:
0137         - resets
0138         - reset-names
0139   - if:
0140       properties:
0141         compatible:
0142           contains:
0143             enum:
0144               - nvidia,tegra186-host1x
0145               - nvidia,tegra194-host1x
0146     then:
0147       properties:
0148         reg-names:
0149           items:
0150             - const: hypervisor
0151             - const: vm
0152 
0153         reg:
0154           items:
0155             - description: region used by the hypervisor
0156             - description: region assigned to the virtual machine
0157 
0158         resets:
0159           maxItems: 1
0160 
0161         reset-names:
0162           maxItems: 1
0163 
0164         interrupts:
0165           items:
0166             - description: host1x syncpoint interrupt
0167             - description: host1x general interrupt
0168 
0169         interrupt-names:
0170           items:
0171             - const: syncpt
0172             - const: host1x
0173 
0174         iommu-map:
0175           description: Specification of stream IDs available for memory context device
0176             use. Should be a mapping of IDs 0..n to IOMMU entries corresponding to
0177             usable stream IDs.
0178 
0179       required:
0180         - reg-names
0181   - if:
0182       properties:
0183         compatible:
0184           contains:
0185             enum:
0186               - nvidia,tegra234-host1x
0187     then:
0188       properties:
0189         reg-names:
0190           items:
0191             - const: common
0192             - const: hypervisor
0193             - const: vm
0194 
0195         reg:
0196           items:
0197             - description: region used by host1x server
0198             - description: region used by the hypervisor
0199             - description: region assigned to the virtual machine
0200 
0201         interrupts:
0202           items:
0203             - description: host1x syncpoint interrupt 0
0204             - description: host1x syncpoint interrupt 1
0205             - description: host1x syncpoint interrupt 2
0206             - description: host1x syncpoint interrupt 3
0207             - description: host1x syncpoint interrupt 4
0208             - description: host1x syncpoint interrupt 5
0209             - description: host1x syncpoint interrupt 6
0210             - description: host1x syncpoint interrupt 7
0211             - description: host1x general interrupt
0212 
0213         interrupt-names:
0214           items:
0215             - const: syncpt0
0216             - const: syncpt1
0217             - const: syncpt2
0218             - const: syncpt3
0219             - const: syncpt4
0220             - const: syncpt5
0221             - const: syncpt6
0222             - const: syncpt7
0223             - const: host1x
0224 
0225         iommu-map:
0226           description: Specification of stream IDs available for memory context device
0227             use. Should be a mapping of IDs 0..n to IOMMU entries corresponding to
0228             usable stream IDs.
0229 
0230       required:
0231         - reg-names
0232 
0233 examples:
0234   - |
0235     #include <dt-bindings/clock/tegra20-car.h>
0236     #include <dt-bindings/gpio/tegra-gpio.h>
0237     #include <dt-bindings/memory/tegra20-mc.h>
0238 
0239     host1x@50000000 {
0240         compatible = "nvidia,tegra20-host1x";
0241         reg = <0x50000000 0x00024000>;
0242         interrupts = <0 65 0x04>, /* mpcore syncpt */
0243                      <0 67 0x04>; /* mpcore general */
0244         interrupt-names = "syncpt", "host1x";
0245         clocks = <&tegra_car TEGRA20_CLK_HOST1X>;
0246         clock-names = "host1x";
0247         resets = <&tegra_car 28>, <&mc TEGRA20_MC_RESET_HC>;
0248         reset-names = "host1x", "mc";
0249 
0250         #address-cells = <1>;
0251         #size-cells = <1>;
0252 
0253         ranges = <0x54000000 0x54000000 0x04000000>;
0254 
0255         mpe@54040000 {
0256             compatible = "nvidia,tegra20-mpe";
0257             reg = <0x54040000 0x00040000>;
0258             interrupts = <0 68 0x04>;
0259             clocks = <&tegra_car TEGRA20_CLK_MPE>;
0260             resets = <&tegra_car 60>;
0261             reset-names = "mpe";
0262         };
0263 
0264         vi@54080000 {
0265             compatible = "nvidia,tegra20-vi";
0266             reg = <0x54080000 0x00040000>;
0267             interrupts = <0 69 0x04>;
0268             clocks = <&tegra_car TEGRA20_CLK_VI>;
0269             resets = <&tegra_car 100>;
0270             reset-names = "vi";
0271         };
0272 
0273         epp@540c0000 {
0274             compatible = "nvidia,tegra20-epp";
0275             reg = <0x540c0000 0x00040000>;
0276             interrupts = <0 70 0x04>;
0277             clocks = <&tegra_car TEGRA20_CLK_EPP>;
0278             resets = <&tegra_car 19>;
0279             reset-names = "epp";
0280         };
0281 
0282         isp@54100000 {
0283             compatible = "nvidia,tegra20-isp";
0284             reg = <0x54100000 0x00040000>;
0285             interrupts = <0 71 0x04>;
0286             clocks = <&tegra_car TEGRA20_CLK_ISP>;
0287             resets = <&tegra_car 23>;
0288             reset-names = "isp";
0289         };
0290 
0291         gr2d@54140000 {
0292             compatible = "nvidia,tegra20-gr2d";
0293             reg = <0x54140000 0x00040000>;
0294             interrupts = <0 72 0x04>;
0295             clocks = <&tegra_car TEGRA20_CLK_GR2D>;
0296             resets = <&tegra_car 21>, <&mc TEGRA20_MC_RESET_2D>;
0297             reset-names = "2d", "mc";
0298         };
0299 
0300         gr3d@54180000 {
0301             compatible = "nvidia,tegra20-gr3d";
0302             reg = <0x54180000 0x00040000>;
0303             clocks = <&tegra_car TEGRA20_CLK_GR3D>;
0304             resets = <&tegra_car 24>, <&mc TEGRA20_MC_RESET_3D>;
0305             reset-names = "3d", "mc";
0306         };
0307 
0308         dc@54200000 {
0309             compatible = "nvidia,tegra20-dc";
0310             reg = <0x54200000 0x00040000>;
0311             interrupts = <0 73 0x04>;
0312             clocks = <&tegra_car TEGRA20_CLK_DISP1>;
0313             clock-names = "dc";
0314             resets = <&tegra_car 27>;
0315             reset-names = "dc";
0316 
0317             rgb {
0318             };
0319         };
0320 
0321         dc@54240000 {
0322             compatible = "nvidia,tegra20-dc";
0323             reg = <0x54240000 0x00040000>;
0324             interrupts = <0 74 0x04>;
0325             clocks = <&tegra_car TEGRA20_CLK_DISP2>;
0326             clock-names = "dc";
0327             resets = <&tegra_car 26>;
0328             reset-names = "dc";
0329 
0330             rgb {
0331             };
0332         };
0333 
0334         hdmi@54280000 {
0335             compatible = "nvidia,tegra20-hdmi";
0336             reg = <0x54280000 0x00040000>;
0337             interrupts = <0 75 0x04>;
0338             clocks = <&tegra_car TEGRA20_CLK_HDMI>,
0339                      <&tegra_car TEGRA20_CLK_PLL_D_OUT0>;
0340             clock-names = "hdmi", "parent";
0341             resets = <&tegra_car 51>;
0342             reset-names = "hdmi";
0343 
0344             hdmi-supply = <&vdd_5v0_hdmi>;
0345             pll-supply = <&vdd_hdmi_pll>;
0346             vdd-supply = <&vdd_3v3_hdmi>;
0347 
0348             nvidia,ddc-i2c-bus = <&hdmi_ddc>;
0349             nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>;
0350         };
0351 
0352         tvo@542c0000 {
0353             compatible = "nvidia,tegra20-tvo";
0354             reg = <0x542c0000 0x00040000>;
0355             interrupts = <0 76 0x04>;
0356             clocks = <&tegra_car TEGRA20_CLK_TVO>;
0357         };
0358 
0359         dsi@54300000 {
0360             compatible = "nvidia,tegra20-dsi";
0361             reg = <0x54300000 0x00040000>;
0362             clocks = <&tegra_car TEGRA20_CLK_DSI>,
0363                      <&tegra_car TEGRA20_CLK_PLL_D_OUT0>;
0364             clock-names = "dsi", "parent";
0365             resets = <&tegra_car 48>;
0366             reset-names = "dsi";
0367         };
0368     };
0369 
0370   - |
0371     #include <dt-bindings/clock/tegra210-car.h>
0372     #include <dt-bindings/interrupt-controller/arm-gic.h>
0373     #include <dt-bindings/memory/tegra210-mc.h>
0374 
0375     host1x@50000000 {
0376         compatible = "nvidia,tegra210-host1x";
0377         reg = <0x50000000 0x00024000>;
0378         interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>, /* mpcore syncpt */
0379                      <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; /* mpcore general */
0380         interrupt-names = "syncpt", "host1x";
0381         clocks = <&tegra_car TEGRA210_CLK_HOST1X>;
0382         clock-names = "host1x";
0383         resets = <&tegra_car 28>;
0384         reset-names = "host1x";
0385 
0386         #address-cells = <1>;
0387         #size-cells = <1>;
0388 
0389         ranges = <0x54000000 0x54000000 0x01000000>;
0390         iommus = <&mc TEGRA_SWGROUP_HC>;
0391 
0392         vi@54080000 {
0393             compatible = "nvidia,tegra210-vi";
0394             reg = <0x54080000 0x00000700>;
0395             interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
0396             assigned-clocks = <&tegra_car TEGRA210_CLK_VI>;
0397             assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>;
0398 
0399             clocks = <&tegra_car TEGRA210_CLK_VI>;
0400             power-domains = <&pd_venc>;
0401 
0402             #address-cells = <1>;
0403             #size-cells = <1>;
0404 
0405             ranges = <0x0 0x54080000 0x2000>;
0406 
0407             csi@838 {
0408                 compatible = "nvidia,tegra210-csi";
0409                 reg = <0x838 0x1300>;
0410                 assigned-clocks = <&tegra_car TEGRA210_CLK_CILAB>,
0411                                   <&tegra_car TEGRA210_CLK_CILCD>,
0412                                   <&tegra_car TEGRA210_CLK_CILE>,
0413                                   <&tegra_car TEGRA210_CLK_CSI_TPG>;
0414                 assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_P>,
0415                                          <&tegra_car TEGRA210_CLK_PLL_P>,
0416                                          <&tegra_car TEGRA210_CLK_PLL_P>;
0417                 assigned-clock-rates = <102000000>,
0418                                        <102000000>,
0419                                        <102000000>,
0420                                        <972000000>;
0421 
0422                 clocks = <&tegra_car TEGRA210_CLK_CSI>,
0423                          <&tegra_car TEGRA210_CLK_CILAB>,
0424                          <&tegra_car TEGRA210_CLK_CILCD>,
0425                          <&tegra_car TEGRA210_CLK_CILE>,
0426                          <&tegra_car TEGRA210_CLK_CSI_TPG>;
0427                 clock-names = "csi", "cilab", "cilcd", "cile", "csi_tpg";
0428                 power-domains = <&pd_sor>;
0429             };
0430         };
0431     };