From: Rob Herring <robh@kernel.org>
To: Mikko Perttunen <mperttunen@nvidia.com>
Cc: thierry.reding@gmail.com, jonathanh@nvidia.com, airlied@linux.ie,
daniel@ffwll.ch, dri-devel@lists.freedesktop.org,
linux-tegra@vger.kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH 1/3] dt-bindings: Add YAML bindings for Host1x and NVDEC
Date: Wed, 17 Feb 2021 15:49:35 -0600 [thread overview]
Message-ID: <20210217214935.GA2804400@robh.at.kernel.org> (raw)
In-Reply-To: <20210213101512.3275069-2-mperttunen@nvidia.com>
On Sat, Feb 13, 2021 at 12:15:10PM +0200, Mikko Perttunen wrote:
> Convert the original Host1x bindings to YAML and add new bindings for
> NVDEC, now in a more appropriate location. The old text bindings
> for Host1x and engines are still kept at display/tegra/ since they
> encompass a lot more engines that haven't been converted over yet.
>
> Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
> ---
> .../gpu/host1x/nvidia,tegra20-host1x.yaml | 129 ++++++++++++++++++
> .../gpu/host1x/nvidia,tegra210-nvdec.yaml | 90 ++++++++++++
> MAINTAINERS | 1 +
> 3 files changed, 220 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra20-host1x.yaml
> create mode 100644 Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvdec.yaml
>
> diff --git a/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra20-host1x.yaml b/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra20-host1x.yaml
> new file mode 100644
> index 000000000000..613c6601f0f1
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra20-host1x.yaml
> @@ -0,0 +1,129 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/gpu/host1x/nvidia,tegra20-host1x.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Device tree binding for NVIDIA Host1x
> +
> +maintainers:
> + - Thierry Reding <treding@gmail.com>
> + - Mikko Perttunen <mperttunen@nvidia.com>
> +
> +properties:
> + $nodename:
> + pattern: "^host1x@[0-9a-f]*$"
> +
> + compatible:
> + oneOf:
> + - const: nvidia,tegra20-host1x
> + - const: nvidia,tegra30-host1x
> + - const: nvidia,tegra114-host1x
> + - const: nvidia,tegra124-host1x
> + - items:
> + - const: nvidia,tegra132-host1x
> + - const: nvidia,tegra124-host1x
> + - const: nvidia,tegra210-host1x
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + items:
> + - description: Syncpoint threshold interrupt
> + - description: General interrupt
> +
> + interrupt-names:
> + items:
> + - const: syncpt
> + - const: host1x
> +
> + clocks:
> + maxItems: 1
> +
> + clock-names:
> + items:
> + - const: host1x
> +
> + resets:
> + maxItems: 1
> +
> + reset-names:
> + items:
> + - const: host1x
> +
> + iommus:
> + maxItems: 1
> +
> + interconnects:
> + maxItems: 1
> +
> + interconnect-names:
> + items:
> + - const: dma-mem
> +
> + '#address-cells':
> + const: 1
> +
> + '#size-cells':
> + const: 1
> +
> + ranges: true
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - interrupt-names
> + - clocks
> + - clock-names
> + - resets
> + - reset-names
> + - '#address-cells'
> + - '#size-cells'
> + - ranges
> +
> +additionalProperties:
> + type: object
> +
> +if:
> + properties:
> + compatible:
> + contains:
> + anyOf:
> + - const: nvidia,tegra186-host1x
> + - const: nvidia,tegra194-host1x
Just use 'enum' instead of 'anyOf' and 'const'.
> +then:
> + properties:
> + reg:
> + items:
> + - description: Hypervisor-accessible register area
> + - description: VM-accessible register area
If you test this, it will fail due to the 'maxItems: 1' above. The main
section has to pass for all conditions and then if/them schema add
constraints.
> + reg-names:
> + items:
> + - const: hypervisor
> + - const: vm
> + required:
> + - reg-names
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/tegra20-car.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> + host1x@50000000 {
> + compatible = "nvidia,tegra20-host1x";
> + reg = <0x50000000 0x00024000>;
> + interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>, /* syncpt */
> + <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; /* general */
> + interrupt-names = "syncpt", "host1x";
> + clocks = <&tegra_car TEGRA20_CLK_HOST1X>;
> + clock-names = "host1x";
> + resets = <&tegra_car 28>;
> + reset-names = "host1x";
> +
> + #address-cells = <1>;
> + #size-cells = <1>;
> +
> + ranges = <0x54000000 0x54000000 0x04000000>;
> + };
> diff --git a/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvdec.yaml b/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvdec.yaml
> new file mode 100644
> index 000000000000..9a6334d930c8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvdec.yaml
> @@ -0,0 +1,90 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/gpu/host1x/nvidia,tegra210-nvdec.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Device tree binding for NVIDIA Tegra VIC
I'm left wondering what NVDEC and VIC are?
> +
> +maintainers:
> + - Thierry Reding <treding@gmail.com>
> + - Mikko Perttunen <mperttunen@nvidia.com>
> +
> +properties:
> + $nodename:
> + pattern: "^nvdec@[0-9a-f]*$"
> +
> + compatible:
> + enum:
> + - nvidia,tegra210-nvdec
> + - nvidia,tegra186-nvdec
> + - nvidia,tegra194-nvdec
> +
> + reg:
> + maxItems: 1
> +
> + clocks:
> + maxItems: 1
> +
> + clock-names:
> + items:
> + - const: nvdec
> +
> + resets:
> + maxItems: 1
> +
> + reset-names:
> + items:
> + - const: nvdec
> +
> + power-domains:
> + maxItems: 1
> +
> + iommus:
> + maxItems: 1
> +
> + interconnects:
> + items:
> + - description: DMA read memory client
> + - description: DMA write memory client
> +
> + interconnect-names:
> + items:
> + - const: dma-mem
> + - const: write
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - resets
> + - reset-names
> + - power-domains
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/tegra186-clock.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/memory/tegra186-mc.h>
> + #include <dt-bindings/power/tegra186-powergate.h>
> + #include <dt-bindings/reset/tegra186-reset.h>
> +
> + nvdec@15480000 {
> + compatible = "nvidia,tegra186-nvdec";
> + reg = <0x15480000 0x40000>;
> + clocks = <&bpmp TEGRA186_CLK_NVDEC>;
> + clock-names = "nvdec";
> + resets = <&bpmp TEGRA186_RESET_NVDEC>;
> + reset-names = "nvdec";
> +
> + power-domains = <&bpmp TEGRA186_POWER_DOMAIN_NVDEC>;
> + interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVDECSRD &emc>,
> + <&mc TEGRA186_MEMORY_CLIENT_NVDECSWR &emc>;
> + interconnect-names = "dma-mem", "write";
> + iommus = <&smmu TEGRA186_SID_NVDEC>;
> + };
> +
> +
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 8170b40d6236..b892419c6564 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -5950,6 +5950,7 @@ L: linux-tegra@vger.kernel.org
> S: Supported
> T: git git://anongit.freedesktop.org/tegra/linux.git
> F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
> +F: Documentation/devicetree/bindings/gpu/host1x/
> F: drivers/gpu/drm/tegra/
> F: drivers/gpu/host1x/
> F: include/linux/host1x.h
> --
> 2.30.0
>
next prev parent reply other threads:[~2021-02-17 21:50 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-02-13 10:15 [PATCH 0/3] NVIDIA Tegra NVDEC support Mikko Perttunen
2021-02-13 10:15 ` [PATCH 1/3] dt-bindings: Add YAML bindings for Host1x and NVDEC Mikko Perttunen
2021-02-17 20:24 ` Rob Herring
2021-02-17 21:49 ` Rob Herring [this message]
2021-02-18 11:04 ` Mikko Perttunen
2021-02-18 16:45 ` Rob Herring
2021-02-13 10:15 ` [PATCH 2/3] arm64: tegra: Add NVDEC to Tegra186 device tree Mikko Perttunen
2021-02-13 10:15 ` [PATCH 3/3] drm/tegra: Add NVDEC driver Mikko Perttunen
2021-02-13 12:40 ` kernel test robot
2021-02-16 15:16 ` Jon Hunter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210217214935.GA2804400@robh.at.kernel.org \
--to=robh@kernel.org \
--cc=airlied@linux.ie \
--cc=daniel@ffwll.ch \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=jonathanh@nvidia.com \
--cc=linux-tegra@vger.kernel.org \
--cc=mperttunen@nvidia.com \
--cc=thierry.reding@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).