From: Rob Herring <robh@kernel.org>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-tegra@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Jon Hunter <jonathanh@nvidia.com>
Subject: Re: [PATCH 03/13] dt-bindings: memory: Add Tegra186 memory subsystem
Date: Wed, 8 Jan 2020 10:19:41 -0600 [thread overview]
Message-ID: <20200108161941.GA10276@bogus> (raw)
In-Reply-To: <20191222141035.1649937-4-thierry.reding@gmail.com>
On Sun, Dec 22, 2019 at 03:10:25PM +0100, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> The NVIDIA Tegra186 SoC contains a memory subsystem composed of the
> memory controller and the external memory controller. The memory
> controller provides interfaces for the memory clients to access the
> memory. Accesses can be either bounced through the SMMU for IOVA
> translation or directly to the EMC.
>
> The bulk of the programming of the external memory controller happens
> through interfaces exposed by the BPMP. Describe this relationship by
> adding a phandle reference to the BPMP to the EMC node.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> .../nvidia,tegra186-mc.yaml | 130 ++++++++++++++++++
> 1 file changed, 130 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>
> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> new file mode 100644
> index 000000000000..b98a1d03410b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> @@ -0,0 +1,130 @@
> +# SPDX-License-Identifier: (GPL-2.0)
Dual license new bindings:
(GPL-2.0-only OR BSD-2-Clause)
Though maybe this is a copy-n-paste of the other Tegra MC bindings?
With that sorted,
Reviewed-by: Rob Herring <robh@kernel.org>
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra186-mc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NVIDIA Tegra186 (and later) SoC Memory Controller
> +
> +maintainers:
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Thierry Reding <thierry.reding@gmail.com>
> +
> +description: |
> + The NVIDIA Tegra186 SoC features a 128 bit memory controller that is split
> + into four 32 bit channels to support LPDDR4 with x16 subpartitions. The MC
> + handles memory requests for 40-bit virtual addresses from internal clients
> + and arbitrates among them to allocate memory bandwidth.
> +
> + Up to 15 GiB of physical memory can be supported. Security features such as
> + encryption of traffic to and from DRAM via general security apertures are
> + available for video and other secure applications, as well as DRAM ECC for
> + automotive safety applications (single bit error correction and double bit
> + error detection).
> +
> +properties:
> + $nodename:
> + pattern: "^memory-controller@[0-9a-f]+$"
> +
> + compatible:
> + items:
> + - enum:
> + - nvidia,tegra186-mc
> + - nvidia,tegra194-mc
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + "#address-cells":
> + const: 2
> +
> + "#size-cells":
> + const: 2
> +
> + ranges: true
> +
> + dma-ranges: true
> +
> +patternProperties:
> + "^external-memory-controller@[0-9a-f]+$":
> + description:
> + The bulk of the work involved in controlling the external memory
> + controller on NVIDIA Tegra186 and later is performed on the BPMP. This
> + coprocessor exposes the EMC clock that is used to set the frequency at
> + which the external memory is clocked and a remote procedure call that
> + can be used to obtain the set of available frequencies.
> + type: object
> + properties:
> + compatible:
> + items:
> + - enum:
> + - nvidia,tegra186-emc
> + - nvidia,tegra194-emc
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: external memory clock
> +
> + clock-names:
> + items:
> + - const: emc
> +
> + nvidia,bpmp:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description:
> + phandle of the node representing the BPMP
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - "#address-cells"
> + - "#size-cells"
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/tegra186-clock.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> + memory-controller@2c00000 {
> + compatible = "nvidia,tegra186-mc";
> + reg = <0x0 0x02c00000 0x0 0xb0000>;
> + interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
> +
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + ranges = <0x0 0x02c00000 0x02c00000 0x0 0xb0000>;
> +
> + /*
> + * Memory clients have access to all 40 bits that the memory
> + * controller can address.
> + */
> + dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
> +
> + external-memory-controller@2c60000 {
> + compatible = "nvidia,tegra186-emc";
> + reg = <0x0 0x02c60000 0x0 0x50000>;
> + interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&bpmp TEGRA186_CLK_EMC>;
> + clock-names = "emc";
> +
> + nvidia,bpmp = <&bpmp>;
> + };
> + };
> +
> + bpmp: bpmp {
> + compatible = "nvidia,tegra186-bpmp";
> + #clock-cells = <1>;
> + };
> --
> 2.24.1
>
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh@kernel.org>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: linux-tegra@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Jon Hunter <jonathanh@nvidia.com>
Subject: Re: [PATCH 03/13] dt-bindings: memory: Add Tegra186 memory subsystem
Date: Wed, 8 Jan 2020 10:19:41 -0600 [thread overview]
Message-ID: <20200108161941.GA10276@bogus> (raw)
In-Reply-To: <20191222141035.1649937-4-thierry.reding@gmail.com>
On Sun, Dec 22, 2019 at 03:10:25PM +0100, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> The NVIDIA Tegra186 SoC contains a memory subsystem composed of the
> memory controller and the external memory controller. The memory
> controller provides interfaces for the memory clients to access the
> memory. Accesses can be either bounced through the SMMU for IOVA
> translation or directly to the EMC.
>
> The bulk of the programming of the external memory controller happens
> through interfaces exposed by the BPMP. Describe this relationship by
> adding a phandle reference to the BPMP to the EMC node.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> .../nvidia,tegra186-mc.yaml | 130 ++++++++++++++++++
> 1 file changed, 130 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>
> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> new file mode 100644
> index 000000000000..b98a1d03410b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> @@ -0,0 +1,130 @@
> +# SPDX-License-Identifier: (GPL-2.0)
Dual license new bindings:
(GPL-2.0-only OR BSD-2-Clause)
Though maybe this is a copy-n-paste of the other Tegra MC bindings?
With that sorted,
Reviewed-by: Rob Herring <robh@kernel.org>
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra186-mc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NVIDIA Tegra186 (and later) SoC Memory Controller
> +
> +maintainers:
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Thierry Reding <thierry.reding@gmail.com>
> +
> +description: |
> + The NVIDIA Tegra186 SoC features a 128 bit memory controller that is split
> + into four 32 bit channels to support LPDDR4 with x16 subpartitions. The MC
> + handles memory requests for 40-bit virtual addresses from internal clients
> + and arbitrates among them to allocate memory bandwidth.
> +
> + Up to 15 GiB of physical memory can be supported. Security features such as
> + encryption of traffic to and from DRAM via general security apertures are
> + available for video and other secure applications, as well as DRAM ECC for
> + automotive safety applications (single bit error correction and double bit
> + error detection).
> +
> +properties:
> + $nodename:
> + pattern: "^memory-controller@[0-9a-f]+$"
> +
> + compatible:
> + items:
> + - enum:
> + - nvidia,tegra186-mc
> + - nvidia,tegra194-mc
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + "#address-cells":
> + const: 2
> +
> + "#size-cells":
> + const: 2
> +
> + ranges: true
> +
> + dma-ranges: true
> +
> +patternProperties:
> + "^external-memory-controller@[0-9a-f]+$":
> + description:
> + The bulk of the work involved in controlling the external memory
> + controller on NVIDIA Tegra186 and later is performed on the BPMP. This
> + coprocessor exposes the EMC clock that is used to set the frequency at
> + which the external memory is clocked and a remote procedure call that
> + can be used to obtain the set of available frequencies.
> + type: object
> + properties:
> + compatible:
> + items:
> + - enum:
> + - nvidia,tegra186-emc
> + - nvidia,tegra194-emc
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: external memory clock
> +
> + clock-names:
> + items:
> + - const: emc
> +
> + nvidia,bpmp:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description:
> + phandle of the node representing the BPMP
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - "#address-cells"
> + - "#size-cells"
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/tegra186-clock.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> + memory-controller@2c00000 {
> + compatible = "nvidia,tegra186-mc";
> + reg = <0x0 0x02c00000 0x0 0xb0000>;
> + interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
> +
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + ranges = <0x0 0x02c00000 0x02c00000 0x0 0xb0000>;
> +
> + /*
> + * Memory clients have access to all 40 bits that the memory
> + * controller can address.
> + */
> + dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
> +
> + external-memory-controller@2c60000 {
> + compatible = "nvidia,tegra186-emc";
> + reg = <0x0 0x02c60000 0x0 0x50000>;
> + interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&bpmp TEGRA186_CLK_EMC>;
> + clock-names = "emc";
> +
> + nvidia,bpmp = <&bpmp>;
> + };
> + };
> +
> + bpmp: bpmp {
> + compatible = "nvidia,tegra186-bpmp";
> + #clock-cells = <1>;
> + };
> --
> 2.24.1
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Rob Herring <robh@kernel.org>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Jon Hunter <jonathanh@nvidia.com>,
linux-tegra@vger.kernel.org, devicetree@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 03/13] dt-bindings: memory: Add Tegra186 memory subsystem
Date: Wed, 8 Jan 2020 10:19:41 -0600 [thread overview]
Message-ID: <20200108161941.GA10276@bogus> (raw)
In-Reply-To: <20191222141035.1649937-4-thierry.reding@gmail.com>
On Sun, Dec 22, 2019 at 03:10:25PM +0100, Thierry Reding wrote:
> From: Thierry Reding <treding@nvidia.com>
>
> The NVIDIA Tegra186 SoC contains a memory subsystem composed of the
> memory controller and the external memory controller. The memory
> controller provides interfaces for the memory clients to access the
> memory. Accesses can be either bounced through the SMMU for IOVA
> translation or directly to the EMC.
>
> The bulk of the programming of the external memory controller happens
> through interfaces exposed by the BPMP. Describe this relationship by
> adding a phandle reference to the BPMP to the EMC node.
>
> Signed-off-by: Thierry Reding <treding@nvidia.com>
> ---
> .../nvidia,tegra186-mc.yaml | 130 ++++++++++++++++++
> 1 file changed, 130 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
>
> diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> new file mode 100644
> index 000000000000..b98a1d03410b
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra186-mc.yaml
> @@ -0,0 +1,130 @@
> +# SPDX-License-Identifier: (GPL-2.0)
Dual license new bindings:
(GPL-2.0-only OR BSD-2-Clause)
Though maybe this is a copy-n-paste of the other Tegra MC bindings?
With that sorted,
Reviewed-by: Rob Herring <robh@kernel.org>
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra186-mc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: NVIDIA Tegra186 (and later) SoC Memory Controller
> +
> +maintainers:
> + - Jon Hunter <jonathanh@nvidia.com>
> + - Thierry Reding <thierry.reding@gmail.com>
> +
> +description: |
> + The NVIDIA Tegra186 SoC features a 128 bit memory controller that is split
> + into four 32 bit channels to support LPDDR4 with x16 subpartitions. The MC
> + handles memory requests for 40-bit virtual addresses from internal clients
> + and arbitrates among them to allocate memory bandwidth.
> +
> + Up to 15 GiB of physical memory can be supported. Security features such as
> + encryption of traffic to and from DRAM via general security apertures are
> + available for video and other secure applications, as well as DRAM ECC for
> + automotive safety applications (single bit error correction and double bit
> + error detection).
> +
> +properties:
> + $nodename:
> + pattern: "^memory-controller@[0-9a-f]+$"
> +
> + compatible:
> + items:
> + - enum:
> + - nvidia,tegra186-mc
> + - nvidia,tegra194-mc
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + "#address-cells":
> + const: 2
> +
> + "#size-cells":
> + const: 2
> +
> + ranges: true
> +
> + dma-ranges: true
> +
> +patternProperties:
> + "^external-memory-controller@[0-9a-f]+$":
> + description:
> + The bulk of the work involved in controlling the external memory
> + controller on NVIDIA Tegra186 and later is performed on the BPMP. This
> + coprocessor exposes the EMC clock that is used to set the frequency at
> + which the external memory is clocked and a remote procedure call that
> + can be used to obtain the set of available frequencies.
> + type: object
> + properties:
> + compatible:
> + items:
> + - enum:
> + - nvidia,tegra186-emc
> + - nvidia,tegra194-emc
> +
> + reg:
> + maxItems: 1
> +
> + interrupts:
> + maxItems: 1
> +
> + clocks:
> + items:
> + - description: external memory clock
> +
> + clock-names:
> + items:
> + - const: emc
> +
> + nvidia,bpmp:
> + $ref: /schemas/types.yaml#/definitions/phandle
> + description:
> + phandle of the node representing the BPMP
> +
> +required:
> + - compatible
> + - reg
> + - interrupts
> + - "#address-cells"
> + - "#size-cells"
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/tegra186-clock.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> +
> + memory-controller@2c00000 {
> + compatible = "nvidia,tegra186-mc";
> + reg = <0x0 0x02c00000 0x0 0xb0000>;
> + interrupts = <GIC_SPI 223 IRQ_TYPE_LEVEL_HIGH>;
> +
> + #address-cells = <2>;
> + #size-cells = <2>;
> +
> + ranges = <0x0 0x02c00000 0x02c00000 0x0 0xb0000>;
> +
> + /*
> + * Memory clients have access to all 40 bits that the memory
> + * controller can address.
> + */
> + dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>;
> +
> + external-memory-controller@2c60000 {
> + compatible = "nvidia,tegra186-emc";
> + reg = <0x0 0x02c60000 0x0 0x50000>;
> + interrupts = <GIC_SPI 224 IRQ_TYPE_LEVEL_HIGH>;
> + clocks = <&bpmp TEGRA186_CLK_EMC>;
> + clock-names = "emc";
> +
> + nvidia,bpmp = <&bpmp>;
> + };
> + };
> +
> + bpmp: bpmp {
> + compatible = "nvidia,tegra186-bpmp";
> + #clock-cells = <1>;
> + };
> --
> 2.24.1
>
next prev parent reply other threads:[~2020-01-08 16:19 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-22 14:10 [PATCH 00/13] memory: tegra: Add Tegra186/Tegra194 support Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 01/13] dt-bindings: memory: Add Tegra186 memory client IDs Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2020-01-08 16:14 ` Rob Herring
2020-01-08 16:14 ` Rob Herring
2020-01-08 16:14 ` Rob Herring
2019-12-22 14:10 ` [PATCH 02/13] dt-bindings: memory: Add Tegra194 memory controller header Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2020-01-08 16:15 ` Rob Herring
2020-01-08 16:15 ` Rob Herring
2020-01-08 16:15 ` Rob Herring
2019-12-22 14:10 ` [PATCH 03/13] dt-bindings: memory: Add Tegra186 memory subsystem Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2020-01-08 16:19 ` Rob Herring [this message]
2020-01-08 16:19 ` Rob Herring
2020-01-08 16:19 ` Rob Herring
2019-12-22 14:10 ` [PATCH 04/13] memory: tegra: Rename tegra_mc to tegra186_mc on Tegra186 Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 05/13] memory: tegra: Add per-SoC data for Tegra186 Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 06/13] memory: tegra: Extract memory client SID programming Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 07/13] memory: tegra: Add system sleep support Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 08/13] memory: tegra: Support DVFS on Tegra186 and later Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 09/13] memory: tegra: Only include support for enabled SoCs Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 10/13] memory: tegra: Add support for the Tegra194 memory controller Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 11/13] arm64: tegra: Add interrupt for memory controller on Tegra186 Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 12/13] arm64: tegra: Add external " Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` [PATCH 13/13] arm64: tegra: Add the memory subsystem on Tegra194 Thierry Reding
2019-12-22 14:10 ` Thierry Reding
2019-12-22 14:10 ` Thierry Reding
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=20200108161941.GA10276@bogus \
--to=robh@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=jonathanh@nvidia.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-tegra@vger.kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.