[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CALHNRZ-Z1u9jMOAvgvSvdLde+O6G3TVrTPxVjG56QvbUK6QYEw@mail.gmail.com>
Date: Fri, 9 May 2025 12:07:23 -0500
From: Aaron Kling <webgeek1234@...il.com>
To: Rob Herring <robh@...nel.org>
Cc: Krzysztof Kozlowski <krzk@...nel.org>, Thierry Reding <thierry.reding@...il.com>,
Jonathan Hunter <jonathanh@...dia.com>, Conor Dooley <conor+dt@...nel.org>,
Krzysztof Kozlowski <krzk+dt@...nel.org>, linux-kernel@...r.kernel.org,
linux-tegra@...r.kernel.org, devicetree@...r.kernel.org
Subject: Re: [PATCH v2 1/4] dt-bindings: memory-controllers: Describe Tegra210
EMC Tables
On Fri, May 9, 2025 at 8:42 AM Rob Herring <robh@...nel.org> wrote:
>
> On Thu, May 08, 2025 at 01:07:38AM -0500, Aaron Kling wrote:
> > Add device tree bindings for Tegra210 EMC tables as used by the Nvidia
> > Android bootloader.
> >
> > Signed-off-by: Aaron Kling <webgeek1234@...il.com>
> > ---
> > .../nvidia,tegra21-emc-table.yaml | 1692 ++++++++++++++++++++
> > .../memory-controllers/nvidia,tegra210-emc.yaml | 38 +
> > 2 files changed, 1730 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra21-emc-table.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra21-emc-table.yaml
> > new file mode 100644
> > index 0000000000000000000000000000000000000000..df371c835b95ad75deb74ad1d8711ed40a9b2361
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra21-emc-table.yaml
> > @@ -0,0 +1,1692 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra21-emc-table.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: NVIDIA Tegra210 SoC EMC Table
> > +
> > +maintainers:
> > + - Thierry Reding <thierry.reding@...il.com>
> > + - Jon Hunter <jonathanh@...dia.com>
> > +
> > +description: |
>
> Don't need '|' if no formatting to preserve.
>
> > + EMC training data used by the emc driver to do periodic training
> > +
> > +properties:
> > + compatible:
> > + items:
> > + - enum:
> > + - nvidia,tegra21-emc-table
> > + - nvidia,tegra21-emc-table-derated
> > +
> > + reg:
> > + maxItems: 1
> > + description:
> > + Clock rate for this table
>
> ?? Drop
>
> > +
> > + clock-frequency:
> > + $ref: /schemas/types.yaml#/definitions/uint32
>
> Already has a type defined. Drop.
>
> > + description:
> > + external memory clock rate in KHz
> > + minimum: 40800
> > + maximum: 1600000
> > +
> > + nvidia,revision:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + The revision of this table
> > +
> > + nvidia,dvfs-version:
> > + $ref: /schemas/types.yaml#/definitions/string
> > + description:
> > + The dvfs version of this table
>
> Constraints on the string?
>
> > +
> > + nvidia,emc-min-mv:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + The minimum emc voltage allowed for this table
>
> Use standard unit suffixes.
>
> > +
> > + nvidia,gk20a-min-mv:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + The minimum gpu voltage allowed for this table
> > +
> > + nvidia,source:
> > + $ref: /schemas/types.yaml#/definitions/string
> > + description:
> > + The clock source for this table
> > +
> > + nvidia,src-sel-reg:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the source selection register
> > +
> > + nvidia,needs-training:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + If this table needs training
>
> Sounds like a boolean?
>
> > +
> > + nvidia,training_pattern:
>
> Don't use '_' in names.
>
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Which training pattern to use for this table
> > +
> > + nvidia,trained:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + If this table has been trained
>
> Isn't that just !nvidia,needs-training?
>
> > +
> > + nvidia,periodic_training:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + If this table should be periodically trained
> > +
> > + nvidia,trained_dram_clktree_c0d0u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c0d0u0 in the dram clock tree
> > +
> > + nvidia,trained_dram_clktree_c0d0u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c0d0u1 in the dram clock tree
> > +
> > + nvidia,trained_dram_clktree_c0d1u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c0d1u0 in the dram clock tree
> > +
> > + nvidia,trained_dram_clktree_c0d1u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c0d1u1 in the dram clock tree
> > +
> > + nvidia,trained_dram_clktree_c1d0u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c1d0u0 in the dram clock tree
> > +
> > + nvidia,trained_dram_clktree_c1d0u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c1d0u1 in the dram clock tree
> > +
> > + nvidia,trained_dram_clktree_c1d1u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c1d1u0 in the dram clock tree
> > +
> > + nvidia,trained_dram_clktree_c1d1u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Trained value of c1d1u1 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c0d0u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c0d0u0 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c0d0u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c0d0u1 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c0d1u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c0d1u0 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c0d1u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c0d1u1 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c1d0u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c1d0u0 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c1d0u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c1d0u1 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c1d1u0:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c1d1u0 in the dram clock tree
> > +
> > + nvidia,current_dram_clktree_c1d1u1:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Current value of c1d1u1 in the dram clock tree
>
> Could all of these just be an array?
>
> > +
> > + nvidia,run_clocks:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Clocks to run
> > +
> > + nvidia,tree_margin:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Tree margin
> > +
> > + nvidia,burst-regs-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of burst registers
> > +
> > + nvidia,burst-regs-per-ch-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of burst registers per channel
> > +
> > + nvidia,trim-regs-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of trim registers
> > +
> > + nvidia,trim-regs-per-ch-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of trim registers per channel
> > +
> > + nvidia,burst-mc-regs-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of burst mc registers
> > +
> > + nvidia,la-scale-regs-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of la scale registers
> > +
> > + nvidia,vref-regs-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of voltage reference registers
> > +
> > + nvidia,training-mod-regs-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of training mod registers
> > +
> > + nvidia,dram-timing-regs-num:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Number of dram timing registers
> > +
> > + nvidia,min-mrs-wait:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the MIN_MRS_WAIT register
> > +
> > + nvidia,emc-mrw:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_MRW register
> > +
> > + nvidia,emc-mrw2:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_MRW2 register
> > +
> > + nvidia,emc-mrw3:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_MRW3 register
> > +
> > + nvidia,emc-mrw4:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_MRW4 register
> > +
> > + nvidia,emc-mrw9:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_MRW9 register
> > +
> > + nvidia,emc-mrs:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_MRS register
> > +
> > + nvidia,emc-emrs:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_EMRS register
> > +
> > + nvidia,emc-emrs2:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_EMRS2 register
> > +
> > + nvidia,emc-auto-cal-config:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG register
> > +
> > + nvidia,emc-auto-cal-config2:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG2 register
> > +
> > + nvidia,emc-auto-cal-config3:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG3 register
> > +
> > + nvidia,emc-auto-cal-config4:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG4 register
> > +
> > + nvidia,emc-auto-cal-config5:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG5 register
> > +
> > + nvidia,emc-auto-cal-config6:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG6 register
> > +
> > + nvidia,emc-auto-cal-config7:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG7 register
> > +
> > + nvidia,emc-auto-cal-config8:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_AUTO_CAL_CONFIG8 register
> > +
> > + nvidia,emc-cfg-2:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_CFG_2 register
> > +
> > + nvidia,emc-sel-dpd-ctrl:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_SEL_DPD_CTRL register
> > +
> > + nvidia,emc-fdpd-ctrl-cmd-no-ramp:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Value of the EMC_FDPD_SEL_DPD_CTRL_NO_RAMP register
> > +
> > + nvidia,dll-clk-src:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + VALUE of the DLL_CLK_SRC register
> > +
> > + nvidia,clk-out-enb-x-0-clk-enb-emc-dll:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + If the dll clock should be enabled for this table
> > +
> > + nvidia,emc-clock-latency-change:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + Clock latency change
> > +
> > + nvidia,ptfv:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Ptfv list values
> > +
> > + nvidia,emc-registers:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Burst register values, size is determined by
> > + nvidia,burst-regs-num
> > +
> > + nvidia,emc-burst-regs-per-ch:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Per channel EMC burst register values, size is determined by
> > + nvidia,burst-regs-per-ch-num
> > +
> > + nvidia,emc-shadow-regs-ca-train:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Shadow registers ca train, size is determined by
> > + nvidia,burst-regs-num
> > +
> > + nvidia,emc-shadow-regs-quse-train:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Shadow registers quse train, size is determined by
> > + nvidia,burst-regs-num
> > +
> > + nvidia,emc-shadow-regs-rdwr-train:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Shadow registers rdwr train, size is determined by
> > + nvidia,burst-regs-num
> > +
> > + nvidia,emc-trim-regs:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Trim register values, size is determined by
> > + nvidia,trim-regs-num
> > +
> > + nvidia,emc-trim-regs-per-ch:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Per channel trim register values, size is determined by
> > + nvidia,trim-regs-per-channel-num
> > +
> > + nvidia,emc-vref-regs:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Voltage reference register values, size is determined by
> > + nvidia,vref-regs-num
> > +
> > + nvidia,emc-dram-timing-regs:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Dram timing register values, size is determined by
> > + nvidia,dram-timing-regs-num
> > +
> > + nvidia,emc-training-mod-regs:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Training mod register values, size is determined by
> > + nvidia,training-mod-regs-num
> > +
> > + nvidia,emc-save-restore-mod-regs:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Save restore mod register values
> > +
> > + nvidia,emc-burst-mc-regs:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + Burst mc register values, size is determined by
> > + nvidia,burst-mc-regs-num
> > +
> > + nvidia,emc-la-scale-regs:
> > + $ref: /schemas/types.yaml#/definitions/uint32-array
> > + description:
> > + La scale register values, size is determined by
> > + nvidia,burst-mc-regs-num
>
> That's a ton of properties... And somehow completely different than
> other Tegra stuff.
>
> > +
> > +required:
> > + - compatible
> > + - clock-frequency
>
> Seems like a few more should be required. Or there's some dependencies
> between properties?
>
>
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + #include <dt-bindings/clock/tegra210-car.h>
> > + #include <dt-bindings/interrupt-controller/arm-gic.h>
> > +
> > + external-memory-controller@...1b000 {
>
> This node needs a compatible.
>
> > + reg = <0x7001b000 0x1000>,
> > + <0x7001e000 0x1000>,
> > + <0x7001f000 0x1000>;
> > + clocks = <&tegra_car TEGRA210_CLK_EMC>;
> > + clock-names = "emc";
> > + interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
> > + nvidia,memory-controller = <&mc>;
> > + nvidia,use-ram-code;
> > +
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + emc-table@0 {
> > + reg = <0>;
> > + nvidia,ram-code = <0x0>;
> > +
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + emc-table@...00 {
> > + reg = <40800>;
> > + compatible = "nvidia,tegra21-emc-table";
> > + nvidia,revision = <0x07>;
> > + nvidia,dvfs-version = "04_40800_03_V9.8.7_V1.6";
> > + clock-frequency = <40800>;
> > + nvidia,emc-min-mv = <800>;
> > + nvidia,gk20a-min-mv = <1100>;
> > + nvidia,source = "pllp_out0";
> > + nvidia,src-sel-reg = <0x40188012>;
> > + nvidia,needs-training = <0x00000000>;
> > + nvidia,training_pattern = <0x00000000>;
> > + nvidia,trained = <0x00000000>;
> > + nvidia,periodic_training = <0x00000000>;
> > + nvidia,trained_dram_clktree_c0d0u0 = <0x00000000>;
> > + nvidia,trained_dram_clktree_c0d0u1 = <0x00000000>;
> > + nvidia,trained_dram_clktree_c0d1u0 = <0x00000000>;
> > + nvidia,trained_dram_clktree_c0d1u1 = <0x00000000>;
> > + nvidia,trained_dram_clktree_c1d0u0 = <0x00000000>;
> > + nvidia,trained_dram_clktree_c1d0u1 = <0x00000000>;
> > + nvidia,trained_dram_clktree_c1d1u0 = <0x00000000>;
> > + nvidia,trained_dram_clktree_c1d1u1 = <0x00000000>;
> > + nvidia,current_dram_clktree_c0d0u0 = <0x00000000>;
> > + nvidia,current_dram_clktree_c0d0u1 = <0x00000000>;
> > + nvidia,current_dram_clktree_c0d1u0 = <0x00000000>;
> > + nvidia,current_dram_clktree_c0d1u1 = <0x00000000>;
> > + nvidia,current_dram_clktree_c1d0u0 = <0x00000000>;
> > + nvidia,current_dram_clktree_c1d0u1 = <0x00000000>;
> > + nvidia,current_dram_clktree_c1d1u0 = <0x00000000>;
> > + nvidia,current_dram_clktree_c1d1u1 = <0x00000000>;
> > + nvidia,run_clocks = <0x00000003>;
> > + nvidia,tree_margin = <0x00000001>;
> > + nvidia,burst-regs-num = <221>;
> > + nvidia,burst-regs-per-ch-num = <8>;
> > + nvidia,trim-regs-num = <138>;
> > + nvidia,trim-regs-per-ch-num = <10>;
> > + nvidia,burst-mc-regs-num = <33>;
> > + nvidia,la-scale-regs-num = <24>;
> > + nvidia,vref-regs-num = <4>;
> > + nvidia,training-mod-regs-num = <20>;
> > + nvidia,dram-timing-regs-num = <5>;
> > + nvidia,min-mrs-wait = <0x00000015>;
> > + nvidia,emc-mrw = <0x08010004>;
> > + nvidia,emc-mrw2 = <0x08020000>;
> > + nvidia,emc-mrw3 = <0x080d0000>;
> > + nvidia,emc-mrw4 = <0xc0000000>;
> > + nvidia,emc-mrw9 = <0x0c0e7272>;
> > + nvidia,emc-mrs = <0x00000000>;
> > + nvidia,emc-emrs = <0x00000000>;
> > + nvidia,emc-emrs2 = <0x00000000>;
> > + nvidia,emc-auto-cal-config = <0xa01a51d8>;
> > + nvidia,emc-auto-cal-config2 = <0x05500000>;
> > + nvidia,emc-auto-cal-config3 = <0x00770000>;
> > + nvidia,emc-auto-cal-config4 = <0x00770000>;
> > + nvidia,emc-auto-cal-config5 = <0x00770000>;
> > + nvidia,emc-auto-cal-config6 = <0x00770000>;
> > + nvidia,emc-auto-cal-config7 = <0x00770000>;
> > + nvidia,emc-auto-cal-config8 = <0x00770000>;
> > + nvidia,emc-cfg-2 = <0x00110805>;
> > + nvidia,emc-sel-dpd-ctrl = <0x00040008>;
> > + nvidia,emc-fdpd-ctrl-cmd-no-ramp = <0x00000001>;
> > + nvidia,dll-clk-src = <0x40188012>;
> > + nvidia,clk-out-enb-x-0-clk-enb-emc-dll = <0x00000001>;
> > + nvidia,emc-clock-latency-change = <0x00005172>;
> > + nvidia,ptfv = <
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x0000000a
> > + 0x0000000a
> > + 0x0000000a
> > + 0x00000001
> > + >;
> > + nvidia,emc-registers = <
> > + 0x0000000c
> > + 0x00000008
> > + 0x00000004
> > + 0x00000000
> > + 0x00000000
> > + 0x00000008
> > + 0x00000004
> > + 0x0000000a
> > + 0x0000000d
> > + 0x00000008
> > + 0x0000000b
> > + 0x00000000
> > + 0x00000004
> > + 0x00000020
> > + 0x00000006
> > + 0x00000006
> > + 0x00000006
> > + 0x00000003
> > + 0x00000000
> > + 0x00000006
> > + 0x00000004
> > + 0x00000002
> > + 0x00000000
> > + 0x00000004
> > + 0x00000008
> > + 0x0000000d
> > + 0x00000005
> > + 0x00000005
> > + 0x00000000
> > + 0x00000000
> > + 0x00000004
> > + 0x08037171
> > + 0x0000000a
> > + 0x00000000
> > + 0x0000000a
> > + 0x00010001
> > + 0x00000011
> > + 0x00000013
> > + 0x00000015
> > + 0x00000011
> > + 0x00000013
> > + 0x0000009a
> > + 0x00000000
> > + 0x00000026
> > + 0x00000008
> > + 0x00000008
> > + 0x00000003
> > + 0x00000003
> > + 0x00000003
> > + 0x00000014
> > + 0x00000005
> > + 0x00000002
> > + 0x0000000d
> > + 0x00000008
> > + 0x00000008
> > + 0x00000005
> > + 0x00000005
> > + 0x00000004
> > + 0x00000008
> > + 0x00000004
> > + 0x00000004
> > + 0x00000009
> > + 0x48037171
> > + 0x000000a0
> > + 0x00000000
> > + 0x9160a00d
> > + 0x00003bbf
> > + 0x002c00a0
> > + 0x00008000
> > + 0x000000be
> > + 0x0fff0fff
> > + 0x0fff0fff
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x080b0000
> > + 0x00120010
> > + 0x00120011
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00100010
> > + 0x00120012
> > + 0x00110011
> > + 0x00120012
> > + 0x00000010
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x8020221f
> > + 0x0220f40f
> > + 0x00000012
> > + 0x00064000
> > + 0x00090029
> > + 0x00290015
> > + 0x000b000a
> > + 0xc1e00302
> > + 0x1f13412f
> > + 0x00010014
> > + 0x00000804
> > + 0x00000550
> > + 0xf3200000
> > + 0x0fff0fff
> > + 0x0000023a
> > + 0x00000009
> > + 0x00000000
> > + 0x00000000
> > + 0x00000012
> > + 0x00000012
> > + 0x00020000
> > + 0x00050037
> > + 0x00000000
> > + 0x00000010
> > + 0x00003000
> > + 0x0a000000
> > + 0x02000111
> > + 0x00000008
> > + 0x00030808
> > + 0x00015c00
> > + 0x00100404
> > + 0x00001600
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000034
> > + 0x00000040
> > + 0x10000000
> > + 0x08000000
> > + 0x10000000
> > + 0x08000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000020
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0xefffefff
> > + 0xc0c0c0c0
> > + 0xc0c0c0c0
> > + 0xdcdcdcdc
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0118600b
> > + 0x00000000
> > + 0x00000000
> > + 0x00000013
> > + 0x00000009
> > + 0x00000015
> > + 0x08161414
> > + 0x00000011
> > + 0x00010001
> > + 0x00009080
> > + 0x07070404
> > + 0x00040014
> > + 0x0513801f
> > + 0x1f101100
> > + 0x00000014
> > + 0x00107240
> > + 0x01124000
> > + 0x01125b6a
> > + 0x0f081000
> > + 0x00105800
> > + 0x1110fc00
> > + 0x0f081300
> > + 0x00105800
> > + 0x1114fc00
> > + 0x07000300
> > + 0x00107240
> > + 0x55553c5a
> > + 0x48161414
> > + >;
> > + nvidia,emc-burst-regs-per-ch = <
> > + 0x880c7272
> > + 0x880c7272
> > + 0x480c7272
> > + 0x480c7272
> > + 0x8c0e7272
> > + 0x8c0e7272
> > + 0x4c0e7272
> > + 0x4c0e7272
> > + >;
> > + nvidia,emc-shadow-regs-ca-train = <
> > + 0x0000000c
> > + 0x00000008
> > + 0x00000004
> > + 0x00000000
> > + 0x00000000
> > + 0x00000008
> > + 0x00000004
> > + 0x0000000a
> > + 0x0000000d
> > + 0x00000008
> > + 0x0000000b
> > + 0x00000000
> > + 0x00000004
> > + 0x00000020
> > + 0x00000006
> > + 0x00000006
> > + 0x00000006
> > + 0x00000003
> > + 0x00000000
> > + 0x00000006
> > + 0x00000004
> > + 0x00000002
> > + 0x00000000
> > + 0x00000004
> > + 0x00000008
> > + 0x0000000d
> > + 0x00000005
> > + 0x00000005
> > + 0x00000000
> > + 0x00000000
> > + 0x00000004
> > + 0x08037171
> > + 0x0000000a
> > + 0x00000000
> > + 0x0000000a
> > + 0x00010001
> > + 0x00000011
> > + 0x00000013
> > + 0x00000015
> > + 0x00000011
> > + 0x00000013
> > + 0x0000009a
> > + 0x00000000
> > + 0x00000026
> > + 0x00000008
> > + 0x00000008
> > + 0x00000003
> > + 0x00000003
> > + 0x00000003
> > + 0x00000014
> > + 0x00000005
> > + 0x00000002
> > + 0x0000000d
> > + 0x00000008
> > + 0x00000008
> > + 0x00000005
> > + 0x00000005
> > + 0x00000004
> > + 0x00000008
> > + 0x00000004
> > + 0x00000004
> > + 0x00000009
> > + 0x48037171
> > + 0x000000a0
> > + 0x00000000
> > + 0x9960a00d
> > + 0x00003bbf
> > + 0x002c00a0
> > + 0x00008000
> > + 0x00000055
> > + 0x0fff0fff
> > + 0x0fff0fff
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x080b0000
> > + 0x00120010
> > + 0x00120011
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00100010
> > + 0x00120012
> > + 0x00110011
> > + 0x00120012
> > + 0x00000010
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x8020221f
> > + 0x0220f40f
> > + 0x00000012
> > + 0x00064000
> > + 0x00090029
> > + 0x00290015
> > + 0x000b000a
> > + 0xc1e00302
> > + 0x1f13412f
> > + 0x00010014
> > + 0x00000804
> > + 0x00000550
> > + 0xf3200000
> > + 0x0fff0fff
> > + 0x0000023a
> > + 0x00000009
> > + 0x00000000
> > + 0x00000000
> > + 0x00000012
> > + 0x00000012
> > + 0x00020000
> > + 0x05058033
> > + 0x05050000
> > + 0x00000000
> > + 0x00003000
> > + 0x0a000000
> > + 0x02000111
> > + 0x00000008
> > + 0x00030808
> > + 0x00015c00
> > + 0x00100404
> > + 0x00001600
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000034
> > + 0x00000040
> > + 0x10000000
> > + 0x08000000
> > + 0x10000000
> > + 0x08000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000020
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0xefffefff
> > + 0xc0c0c0c0
> > + 0xc0c0c0c0
> > + 0xdcdcdcdc
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0118600b
> > + 0x00000001
> > + 0x0000001f
> > + 0x00000013
> > + 0x00000003
> > + 0x00000015
> > + 0x08161414
> > + 0x0000000b
> > + 0x00010001
> > + 0x00019080
> > + 0x07070404
> > + 0x00040014
> > + 0x0513801f
> > + 0x1f101100
> > + 0x00000014
> > + 0x00107240
> > + 0x01124000
> > + 0x01125b6a
> > + 0x0f081000
> > + 0x00105800
> > + 0x1110fc00
> > + 0x0f081300
> > + 0x00105800
> > + 0x1114fc00
> > + 0x07000300
> > + 0x00107240
> > + 0x55553c5a
> > + 0x48161414
> > + >;
> > + nvidia,emc-shadow-regs-quse-train = <
> > + 0x0000000c
> > + 0x00000008
> > + 0x00000004
> > + 0x00000000
> > + 0x00000000
> > + 0x00000008
> > + 0x00000004
> > + 0x00000009
> > + 0x0000000d
> > + 0x00000008
> > + 0x0000000b
> > + 0x00000000
> > + 0x00000004
> > + 0x00000020
> > + 0x00000006
> > + 0x00000006
> > + 0x00000006
> > + 0x00000003
> > + 0x00000000
> > + 0x00000006
> > + 0x00000004
> > + 0x00000002
> > + 0x00000000
> > + 0x00000004
> > + 0x00000008
> > + 0x0000000d
> > + 0x00000002
> > + 0x00000002
> > + 0x00000000
> > + 0x00000000
> > + 0x00000005
> > + 0x08037171
> > + 0x00000008
> > + 0x00000001
> > + 0x80000000
> > + 0x00010002
> > + 0x00000011
> > + 0x00000013
> > + 0x00000015
> > + 0x00000011
> > + 0x00000013
> > + 0x0000009a
> > + 0x00000000
> > + 0x00000026
> > + 0x00000008
> > + 0x00000008
> > + 0x00000003
> > + 0x00000003
> > + 0x00000003
> > + 0x00000014
> > + 0x00000005
> > + 0x00000002
> > + 0x0000000d
> > + 0x00000008
> > + 0x00000008
> > + 0x00000005
> > + 0x00000005
> > + 0x00000004
> > + 0x00000008
> > + 0x00000004
> > + 0x00000004
> > + 0x00000009
> > + 0x48037171
> > + 0x000000a0
> > + 0x00000000
> > + 0x9160400d
> > + 0x00003bbf
> > + 0x002c00a0
> > + 0x00008000
> > + 0x000000be
> > + 0x0fff0fff
> > + 0x0fff0fff
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x080b0000
> > + 0x00120010
> > + 0x00120011
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00100010
> > + 0x00120012
> > + 0x00110011
> > + 0x00120012
> > + 0x00000010
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x8020221f
> > + 0x0220f40f
> > + 0x00000012
> > + 0x00064000
> > + 0x00090029
> > + 0x00290015
> > + 0x000b000a
> > + 0xc1e00302
> > + 0x1f13412f
> > + 0x00010014
> > + 0x00000804
> > + 0x00000550
> > + 0xf3200000
> > + 0x0fff0fff
> > + 0x0000023a
> > + 0x00000009
> > + 0x00000000
> > + 0x00000000
> > + 0x00000012
> > + 0x00000012
> > + 0x30020000
> > + 0x00058037
> > + 0x00000000
> > + 0x00000010
> > + 0x00003000
> > + 0x0a000000
> > + 0x02000111
> > + 0x00000008
> > + 0x00030808
> > + 0x00015c00
> > + 0x00100404
> > + 0x00001600
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000034
> > + 0x00000040
> > + 0x10000000
> > + 0x08000000
> > + 0x10000000
> > + 0x08000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000020
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0xefffefff
> > + 0xc0c0c0c0
> > + 0xc0c0c0c0
> > + 0xdcdcdcdc
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0118600b
> > + 0x00000001
> > + 0x0000001f
> > + 0x0000001d
> > + 0x00000013
> > + 0x0000001f
> > + 0x08161414
> > + 0x0000001b
> > + 0x00010002
> > + 0x00009080
> > + 0x07070404
> > + 0x00040014
> > + 0x0513801f
> > + 0x1f101100
> > + 0x00000014
> > + 0x00107240
> > + 0x01124000
> > + 0x01125b6a
> > + 0x0f081000
> > + 0x00105800
> > + 0x1110fc00
> > + 0x0f081300
> > + 0x00105800
> > + 0x1114fc00
> > + 0x07000300
> > + 0x00107240
> > + 0x55553c5a
> > + 0x48161414
> > + >;
> > + nvidia,emc-shadow-regs-rdwr-train = <
> > + 0x0000000c
> > + 0x00000008
> > + 0x00000004
> > + 0x00000000
> > + 0x00000000
> > + 0x00000008
> > + 0x00000004
> > + 0x0000000d
> > + 0x0000000d
> > + 0x00000008
> > + 0x0000000b
> > + 0x00000000
> > + 0x00000004
> > + 0x00000020
> > + 0x00000006
> > + 0x00000006
> > + 0x00000006
> > + 0x00000003
> > + 0x00000013
> > + 0x00000006
> > + 0x00000004
> > + 0x00000002
> > + 0x00000000
> > + 0x00000004
> > + 0x00000008
> > + 0x0000000d
> > + 0x00000005
> > + 0x00000005
> > + 0x00000000
> > + 0x30000002
> > + 0x00000004
> > + 0x08037171
> > + 0x0000000a
> > + 0x00000000
> > + 0x0000000a
> > + 0x00010001
> > + 0x00000011
> > + 0x00000013
> > + 0x00000015
> > + 0x00000011
> > + 0x00000013
> > + 0x0000009a
> > + 0x00000000
> > + 0x00000026
> > + 0x00000008
> > + 0x00000008
> > + 0x00000003
> > + 0x00000003
> > + 0x00000003
> > + 0x00000014
> > + 0x00000005
> > + 0x00000002
> > + 0x0000000d
> > + 0x00000008
> > + 0x00000008
> > + 0x00000005
> > + 0x00000005
> > + 0x00000004
> > + 0x00000008
> > + 0x00000004
> > + 0x00000004
> > + 0x00000009
> > + 0x48037171
> > + 0x000000a0
> > + 0x00000000
> > + 0x9160a00d
> > + 0x00003bbf
> > + 0x002c00a0
> > + 0x00008000
> > + 0x000000be
> > + 0x0fff0fff
> > + 0x0fff0fff
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x080b0000
> > + 0x00120010
> > + 0x00120011
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00280027
> > + 0x0025002a
> > + 0x002a002a
> > + 0x00260026
> > + 0x00000000
> > + 0x00000000
> > + 0x00100010
> > + 0x00120012
> > + 0x00110011
> > + 0x00120012
> > + 0x00000010
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x8020221f
> > + 0x0220f40f
> > + 0x00000012
> > + 0x00064000
> > + 0x00090029
> > + 0x00290015
> > + 0x000b000a
> > + 0xc1e00302
> > + 0x1f13412f
> > + 0x00010014
> > + 0x00000804
> > + 0x00000550
> > + 0xf3200000
> > + 0x0fff0fff
> > + 0x0000023a
> > + 0x00000009
> > + 0x00000000
> > + 0x00000000
> > + 0x00000012
> > + 0x00000012
> > + 0x00020000
> > + 0x00050037
> > + 0x00000000
> > + 0x00000010
> > + 0x00003000
> > + 0x0a000000
> > + 0x02000111
> > + 0x00000008
> > + 0x00030808
> > + 0x00015c00
> > + 0x00100404
> > + 0x00001600
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000034
> > + 0x00000040
> > + 0x10000000
> > + 0x08000000
> > + 0x10000000
> > + 0x08000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000020
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0xefffefff
> > + 0xc0c0c0c0
> > + 0xc0c0c0c0
> > + 0xdcdcdcdc
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0a0a0a0a
> > + 0x0118600b
> > + 0x00000001
> > + 0x00000000
> > + 0x00000013
> > + 0x00000009
> > + 0x00000015
> > + 0x08161414
> > + 0x00000011
> > + 0x00010001
> > + 0x0000b080
> > + 0x07070404
> > + 0x00040014
> > + 0x0513801f
> > + 0x1f101100
> > + 0x00000014
> > + 0x00107240
> > + 0x01124000
> > + 0x01125b6a
> > + 0x0f081000
> > + 0x00105800
> > + 0x1110fc00
> > + 0x0f081300
> > + 0x00105800
> > + 0x1114fc00
> > + 0x07000300
> > + 0x00107240
> > + 0x55553c5a
> > + 0x48161414
> > + >;
> > + nvidia,emc-trim-regs = <
> > + 0x00280028
> > + 0x00280028
> > + 0x00280028
> > + 0x00280028
> > + 0x00280028
> > + 0x00280028
> > + 0x00280028
> > + 0x00280028
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x11111111
> > + 0x11111111
> > + 0x28282828
> > + 0x28282828
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00120010
> > + 0x00120011
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + >;
> > + nvidia,emc-trim-regs-per-ch = <
> > + 0x00000000
> > + 0x00000000
> > + 0x00249249
> > + 0x00249249
> > + 0x00249249
> > + 0x00249249
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + >;
> > + nvidia,emc-vref-regs = <
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + >;
> > + nvidia,emc-dram-timing-regs = <
> > + 0x00000049
> > + 0x00000104
> > + 0x000000b4
> > + 0x0000007a
> > + 0x00000006
> > + >;
> > + nvidia,emc-training-mod-regs = <
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + >;
> > + nvidia,emc-save-restore-mod-regs = <
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + 0x00000000
> > + >;
> > + nvidia,emc-burst-mc-regs = <
> > + 0x40020001
> > + 0x80000013
> > + 0x000a1020
> > + 0x80001028
> > + 0x00000001
> > + 0x00000000
> > + 0x00000002
> > + 0x00000000
> > + 0x00000001
> > + 0x00000001
> > + 0x00000002
> > + 0x00000005
> > + 0x00000002
> > + 0x00000001
> > + 0x00000004
> > + 0x00000008
> > + 0x00000005
> > + 0x00000000
> > + 0x02020001
> > + 0x00030201
> > + 0x72c30303
> > + 0x70000f0f
> > + 0x00000000
> > + 0x001f0000
> > + 0x0080001a
> > + 0x0080001a
> > + 0x0080001a
> > + 0x0080001a
> > + 0x0080001a
> > + 0x0080001a
> > + 0x0080001a
> > + 0x0080001a
> > + 0x0080001a
> > + >;
> > + nvidia,emc-la-scale-regs = <
> > + 0x00000006
> > + 0x0080001a
> > + 0x00000076
> > + 0x00ff00ff
> > + 0x00ff00ff
> > + 0x00ff00ff
> > + 0x00ff00ff
> > + 0x00ff003d
> > + 0x00ff00ff
> > + 0x00ff003d
> > + 0x00ff0049
> > + 0x00ff0080
> > + 0x00ff0004
> > + 0x000800ff
> > + 0x000000ff
> > + 0x00ff0004
> > + 0x00ff00ff
> > + 0x00ff00ff
> > + 0x00ff00ff
> > + 0x00ff00ff
> > + 0x00ff00ff
> > + 0x000000ff
> > + 0x000000ff
> > + 0x00ff00ff
> > + >;
> > + };
> > + };
> > + };
> > diff --git a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra210-emc.yaml b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra210-emc.yaml
> > index bc8477e7ab193b7880bb681037985f3fccebf02f..78e3417d273a329b77bf2f61de41b29017be56d3 100644
> > --- a/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra210-emc.yaml
> > +++ b/Documentation/devicetree/bindings/memory-controllers/nvidia,tegra210-emc.yaml
> > @@ -44,6 +44,44 @@ properties:
> > description:
> > phandle of the memory controller node
> >
> > + nvidia,use-ram-code:
> > + description:
> > + If set, timings are split per ram code and expected to be in
> > + subnodes per ram-code
> > +
> > + "#address-cells":
> > + const: 1
> > +
> > + "#size-cells":
> > + const: 0
> > +
> > +patternProperties:
> > + "^emc-table@[0-9]+$":
> > + type: object
> > + additionalProperties: true
> > + properties:
> > + reg:
> > + maxItems: 1
> > + description:
> > + Ram code for this timing set
> > +
> > + nvidia,ram-code:
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + description:
> > + value of the RAM_CODE field in the PMC_STRAPPING_OPT_A register that
> > + this timing set is used for
> > +
> > + "#address-cells":
> > + const: 1
> > +
> > + "#size-cells":
> > + const: 0
> > +
> > + required:
> > + - reg
> > + - nvidia,ram-code
> > +
> > +
> > required:
> > - compatible
> > - reg
> >
> > --
> > 2.48.1
> >
Thierry mentioned on the cover [0] that he is trying to get the
bootloader I'm targetting updated to use the reserved memory tables
already supported by mainline. If that gets done, this series becomes
unnecesary. So I'd like to put it on hold for a little while to give a
chance for that discussion to happen internally. If the response is
negative or there's no response after a while, I'll pick it back up.
To give a bit of context that answers several of the review comments
though, these dt node names and types are hardcoded in the bootloader
and thus cannot be changed. Like the sub-nodes are named
emc-table@...mcode and emc-table@...eq, which then triggers errors on
the schema example if reg is not defined. And if I have a reg in the
example, then I have to put it in the schema. Etc, etc.
Sincerely,
Aaron
Powered by blists - more mailing lists