| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- # SPDX-License-Identifier: (GPL-2.0)
- %YAML 1.2
- ---
- $id: http://devicetree.org/schemas/memory-controllers/nvidia,tegra30-emc.yaml#
- $schema: http://devicetree.org/meta-schemas/core.yaml#
- title: NVIDIA Tegra30 SoC External Memory Controller
- maintainers:
- - Dmitry Osipenko <digetx@gmail.com>
- - Jon Hunter <jonathanh@nvidia.com>
- - Thierry Reding <thierry.reding@gmail.com>
- description: |
- The EMC interfaces with the off-chip SDRAM to service the request stream
- sent from Memory Controller. The EMC also has various performance-affecting
- settings beyond the obvious SDRAM configuration parameters and initialization
- settings. Tegra30 EMC supports multiple JEDEC standard protocols: LPDDR2,
- LPDDR3, and DDR3.
- properties:
- compatible:
- const: nvidia,tegra30-emc
- reg:
- maxItems: 1
- clocks:
- maxItems: 1
- interrupts:
- maxItems: 1
- "#interconnect-cells":
- const: 0
- nvidia,memory-controller:
- $ref: /schemas/types.yaml#/definitions/phandle
- description:
- Phandle of the Memory Controller node.
- power-domains:
- maxItems: 1
- description:
- Phandle of the SoC "core" power domain.
- operating-points-v2:
- description:
- Should contain freqs and voltages and opp-supported-hw property, which
- is a bitfield indicating SoC speedo ID mask.
- patternProperties:
- "^emc-timings-[0-9]+$":
- type: object
- properties:
- nvidia,ram-code:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- Value of RAM_CODE this timing set is used for.
- patternProperties:
- "^timing-[0-9]+$":
- type: object
- properties:
- clock-frequency:
- description:
- Memory clock rate in Hz.
- minimum: 1000000
- maximum: 900000000
- nvidia,emc-auto-cal-interval:
- description:
- Pad calibration interval in microseconds.
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 2097151
- nvidia,emc-mode-1:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- Mode Register 1.
- nvidia,emc-mode-2:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- Mode Register 2.
- nvidia,emc-mode-reset:
- $ref: /schemas/types.yaml#/definitions/uint32
- description:
- Mode Register 0.
- nvidia,emc-zcal-cnt-long:
- description:
- Number of EMC clocks to wait before issuing any commands after
- sending ZCAL_MRW_CMD.
- $ref: /schemas/types.yaml#/definitions/uint32
- minimum: 0
- maximum: 1023
- nvidia,emc-cfg-dyn-self-ref:
- type: boolean
- description:
- Dynamic self-refresh enabled.
- nvidia,emc-cfg-periodic-qrst:
- type: boolean
- description:
- FBIO "read" FIFO periodic resetting enabled.
- nvidia,emc-configuration:
- description:
- EMC timing characterization data. These are the registers
- (see section "18.13.2 EMC Registers" in the TRM) whose values
- need to be specified, according to the board documentation.
- $ref: /schemas/types.yaml#/definitions/uint32-array
- items:
- - description: EMC_RC
- - description: EMC_RFC
- - description: EMC_RAS
- - description: EMC_RP
- - description: EMC_R2W
- - description: EMC_W2R
- - description: EMC_R2P
- - description: EMC_W2P
- - description: EMC_RD_RCD
- - description: EMC_WR_RCD
- - description: EMC_RRD
- - description: EMC_REXT
- - description: EMC_WEXT
- - description: EMC_WDV
- - description: EMC_QUSE
- - description: EMC_QRST
- - description: EMC_QSAFE
- - description: EMC_RDV
- - description: EMC_REFRESH
- - description: EMC_BURST_REFRESH_NUM
- - description: EMC_PRE_REFRESH_REQ_CNT
- - description: EMC_PDEX2WR
- - description: EMC_PDEX2RD
- - description: EMC_PCHG2PDEN
- - description: EMC_ACT2PDEN
- - description: EMC_AR2PDEN
- - description: EMC_RW2PDEN
- - description: EMC_TXSR
- - description: EMC_TXSRDLL
- - description: EMC_TCKE
- - description: EMC_TFAW
- - description: EMC_TRPAB
- - description: EMC_TCLKSTABLE
- - description: EMC_TCLKSTOP
- - description: EMC_TREFBW
- - description: EMC_QUSE_EXTRA
- - description: EMC_FBIO_CFG6
- - description: EMC_ODT_WRITE
- - description: EMC_ODT_READ
- - description: EMC_FBIO_CFG5
- - description: EMC_CFG_DIG_DLL
- - description: EMC_CFG_DIG_DLL_PERIOD
- - description: EMC_DLL_XFORM_DQS0
- - description: EMC_DLL_XFORM_DQS1
- - description: EMC_DLL_XFORM_DQS2
- - description: EMC_DLL_XFORM_DQS3
- - description: EMC_DLL_XFORM_DQS4
- - description: EMC_DLL_XFORM_DQS5
- - description: EMC_DLL_XFORM_DQS6
- - description: EMC_DLL_XFORM_DQS7
- - description: EMC_DLL_XFORM_QUSE0
- - description: EMC_DLL_XFORM_QUSE1
- - description: EMC_DLL_XFORM_QUSE2
- - description: EMC_DLL_XFORM_QUSE3
- - description: EMC_DLL_XFORM_QUSE4
- - description: EMC_DLL_XFORM_QUSE5
- - description: EMC_DLL_XFORM_QUSE6
- - description: EMC_DLL_XFORM_QUSE7
- - description: EMC_DLI_TRIM_TXDQS0
- - description: EMC_DLI_TRIM_TXDQS1
- - description: EMC_DLI_TRIM_TXDQS2
- - description: EMC_DLI_TRIM_TXDQS3
- - description: EMC_DLI_TRIM_TXDQS4
- - description: EMC_DLI_TRIM_TXDQS5
- - description: EMC_DLI_TRIM_TXDQS6
- - description: EMC_DLI_TRIM_TXDQS7
- - description: EMC_DLL_XFORM_DQ0
- - description: EMC_DLL_XFORM_DQ1
- - description: EMC_DLL_XFORM_DQ2
- - description: EMC_DLL_XFORM_DQ3
- - description: EMC_XM2CMDPADCTRL
- - description: EMC_XM2DQSPADCTRL2
- - description: EMC_XM2DQPADCTRL2
- - description: EMC_XM2CLKPADCTRL
- - description: EMC_XM2COMPPADCTRL
- - description: EMC_XM2VTTGENPADCTRL
- - description: EMC_XM2VTTGENPADCTRL2
- - description: EMC_XM2QUSEPADCTRL
- - description: EMC_XM2DQSPADCTRL3
- - description: EMC_CTT_TERM_CTRL
- - description: EMC_ZCAL_INTERVAL
- - description: EMC_ZCAL_WAIT_CNT
- - description: EMC_MRS_WAIT_CNT
- - description: EMC_AUTO_CAL_CONFIG
- - description: EMC_CTT
- - description: EMC_CTT_DURATION
- - description: EMC_DYN_SELF_REF_CONTROL
- - description: EMC_FBIO_SPARE
- - description: EMC_CFG_RSV
- required:
- - clock-frequency
- - nvidia,emc-auto-cal-interval
- - nvidia,emc-mode-1
- - nvidia,emc-mode-2
- - nvidia,emc-mode-reset
- - nvidia,emc-zcal-cnt-long
- - nvidia,emc-configuration
- additionalProperties: false
- required:
- - nvidia,ram-code
- additionalProperties: false
- required:
- - compatible
- - reg
- - interrupts
- - clocks
- - nvidia,memory-controller
- - "#interconnect-cells"
- - operating-points-v2
- additionalProperties: false
- examples:
- - |
- external-memory-controller@7000f400 {
- compatible = "nvidia,tegra30-emc";
- reg = <0x7000f400 0x400>;
- interrupts = <0 78 4>;
- clocks = <&tegra_car 57>;
- nvidia,memory-controller = <&mc>;
- operating-points-v2 = <&dvfs_opp_table>;
- power-domains = <&domain>;
- #interconnect-cells = <0>;
- emc-timings-1 {
- nvidia,ram-code = <1>;
- timing-667000000 {
- clock-frequency = <667000000>;
- nvidia,emc-auto-cal-interval = <0x001fffff>;
- nvidia,emc-mode-1 = <0x80100002>;
- nvidia,emc-mode-2 = <0x80200018>;
- nvidia,emc-mode-reset = <0x80000b71>;
- nvidia,emc-zcal-cnt-long = <0x00000040>;
- nvidia,emc-cfg-periodic-qrst;
- nvidia,emc-configuration = <
- 0x00000020 /* EMC_RC */
- 0x0000006a /* EMC_RFC */
- 0x00000017 /* EMC_RAS */
- 0x00000007 /* EMC_RP */
- 0x00000005 /* EMC_R2W */
- 0x0000000c /* EMC_W2R */
- 0x00000003 /* EMC_R2P */
- 0x00000011 /* EMC_W2P */
- 0x00000007 /* EMC_RD_RCD */
- 0x00000007 /* EMC_WR_RCD */
- 0x00000002 /* EMC_RRD */
- 0x00000001 /* EMC_REXT */
- 0x00000000 /* EMC_WEXT */
- 0x00000007 /* EMC_WDV */
- 0x0000000a /* EMC_QUSE */
- 0x00000009 /* EMC_QRST */
- 0x0000000b /* EMC_QSAFE */
- 0x00000011 /* EMC_RDV */
- 0x00001412 /* EMC_REFRESH */
- 0x00000000 /* EMC_BURST_REFRESH_NUM */
- 0x00000504 /* EMC_PRE_REFRESH_REQ_CNT */
- 0x00000002 /* EMC_PDEX2WR */
- 0x0000000e /* EMC_PDEX2RD */
- 0x00000001 /* EMC_PCHG2PDEN */
- 0x00000000 /* EMC_ACT2PDEN */
- 0x0000000c /* EMC_AR2PDEN */
- 0x00000016 /* EMC_RW2PDEN */
- 0x00000072 /* EMC_TXSR */
- 0x00000200 /* EMC_TXSRDLL */
- 0x00000005 /* EMC_TCKE */
- 0x00000015 /* EMC_TFAW */
- 0x00000000 /* EMC_TRPAB */
- 0x00000006 /* EMC_TCLKSTABLE */
- 0x00000007 /* EMC_TCLKSTOP */
- 0x00001453 /* EMC_TREFBW */
- 0x0000000b /* EMC_QUSE_EXTRA */
- 0x00000006 /* EMC_FBIO_CFG6 */
- 0x00000000 /* EMC_ODT_WRITE */
- 0x00000000 /* EMC_ODT_READ */
- 0x00005088 /* EMC_FBIO_CFG5 */
- 0xf00b0191 /* EMC_CFG_DIG_DLL */
- 0x00008000 /* EMC_CFG_DIG_DLL_PERIOD */
- 0x00000008 /* EMC_DLL_XFORM_DQS0 */
- 0x00000008 /* EMC_DLL_XFORM_DQS1 */
- 0x00000008 /* EMC_DLL_XFORM_DQS2 */
- 0x00000008 /* EMC_DLL_XFORM_DQS3 */
- 0x0000000a /* EMC_DLL_XFORM_DQS4 */
- 0x0000000a /* EMC_DLL_XFORM_DQS5 */
- 0x0000000a /* EMC_DLL_XFORM_DQS6 */
- 0x0000000a /* EMC_DLL_XFORM_DQS7 */
- 0x00018000 /* EMC_DLL_XFORM_QUSE0 */
- 0x00018000 /* EMC_DLL_XFORM_QUSE1 */
- 0x00018000 /* EMC_DLL_XFORM_QUSE2 */
- 0x00018000 /* EMC_DLL_XFORM_QUSE3 */
- 0x00000000 /* EMC_DLL_XFORM_QUSE4 */
- 0x00000000 /* EMC_DLL_XFORM_QUSE5 */
- 0x00000000 /* EMC_DLL_XFORM_QUSE6 */
- 0x00000000 /* EMC_DLL_XFORM_QUSE7 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS0 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS1 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS2 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS3 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS4 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS5 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS6 */
- 0x00000000 /* EMC_DLI_TRIM_TXDQS7 */
- 0x0000000a /* EMC_DLL_XFORM_DQ0 */
- 0x0000000a /* EMC_DLL_XFORM_DQ1 */
- 0x0000000a /* EMC_DLL_XFORM_DQ2 */
- 0x0000000a /* EMC_DLL_XFORM_DQ3 */
- 0x000002a0 /* EMC_XM2CMDPADCTRL */
- 0x0800013d /* EMC_XM2DQSPADCTRL2 */
- 0x22220000 /* EMC_XM2DQPADCTRL2 */
- 0x77fff884 /* EMC_XM2CLKPADCTRL */
- 0x01f1f501 /* EMC_XM2COMPPADCTRL */
- 0x07077404 /* EMC_XM2VTTGENPADCTRL */
- 0x54000000 /* EMC_XM2VTTGENPADCTRL2 */
- 0x080001e8 /* EMC_XM2QUSEPADCTRL */
- 0x0c000021 /* EMC_XM2DQSPADCTRL3 */
- 0x00000802 /* EMC_CTT_TERM_CTRL */
- 0x00020000 /* EMC_ZCAL_INTERVAL */
- 0x00000100 /* EMC_ZCAL_WAIT_CNT */
- 0x0155000c /* EMC_MRS_WAIT_CNT */
- 0xa0f10000 /* EMC_AUTO_CAL_CONFIG */
- 0x00000000 /* EMC_CTT */
- 0x00000000 /* EMC_CTT_DURATION */
- 0x800028a5 /* EMC_DYN_SELF_REF_CONTROL */
- 0xe8000000 /* EMC_FBIO_SPARE */
- 0xff00ff49 /* EMC_CFG_RSV */
- >;
- };
- };
- };
|