xref: /linux/Documentation/devicetree/bindings/memory-controllers/ddr/jedec,lpddr2.yaml (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
19e17f71eSDmitry Osipenko# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
29e17f71eSDmitry Osipenko%YAML 1.2
39e17f71eSDmitry Osipenko---
49e17f71eSDmitry Osipenko$id: http://devicetree.org/schemas/memory-controllers/ddr/jedec,lpddr2.yaml#
59e17f71eSDmitry Osipenko$schema: http://devicetree.org/meta-schemas/core.yaml#
69e17f71eSDmitry Osipenko
79e17f71eSDmitry Osipenkotitle: LPDDR2 SDRAM compliant to JEDEC JESD209-2
89e17f71eSDmitry Osipenko
99e17f71eSDmitry Osipenkomaintainers:
108a1e6bb3SKrzysztof Kozlowski  - Krzysztof Kozlowski <krzk@kernel.org>
119e17f71eSDmitry Osipenko
12b7178cd5SJulius WernerallOf:
13b7178cd5SJulius Werner  - $ref: jedec,lpddr-props.yaml#
14b7178cd5SJulius Werner
159e17f71eSDmitry Osipenkoproperties:
169e17f71eSDmitry Osipenko  compatible:
179e17f71eSDmitry Osipenko    oneOf:
189e17f71eSDmitry Osipenko      - items:
199e17f71eSDmitry Osipenko          - enum:
209e17f71eSDmitry Osipenko              - elpida,ECB240ABACN
212782ece0SDmitry Osipenko              - elpida,B8132B2PB-6D-F
229e17f71eSDmitry Osipenko          - enum:
23*686fe63bSJulius Werner              - jedec,lpddr2-nvm
24*686fe63bSJulius Werner              - jedec,lpddr2-s2
259e17f71eSDmitry Osipenko              - jedec,lpddr2-s4
269e17f71eSDmitry Osipenko      - items:
27*686fe63bSJulius Werner          - pattern: "^lpddr2-[0-9a-f]{2},[0-9a-f]{4}$"
289e17f71eSDmitry Osipenko          - enum:
299e17f71eSDmitry Osipenko              - jedec,lpddr2-nvm
30*686fe63bSJulius Werner              - jedec,lpddr2-s2
31*686fe63bSJulius Werner              - jedec,lpddr2-s4
329e17f71eSDmitry Osipenko
333539a2c6SDmitry Osipenko  revision-id1:
343539a2c6SDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
353539a2c6SDmitry Osipenko    maximum: 255
363539a2c6SDmitry Osipenko    description: |
373539a2c6SDmitry Osipenko      Revision 1 value of SDRAM chip. Obtained from device datasheet.
3880ce9173SJulius Werner      Property is deprecated, use revision-id instead.
3980ce9173SJulius Werner    deprecated: true
403539a2c6SDmitry Osipenko
413539a2c6SDmitry Osipenko  revision-id2:
423539a2c6SDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
433539a2c6SDmitry Osipenko    maximum: 255
443539a2c6SDmitry Osipenko    description: |
453539a2c6SDmitry Osipenko      Revision 2 value of SDRAM chip. Obtained from device datasheet.
4680ce9173SJulius Werner      Property is deprecated, use revision-id instead.
4780ce9173SJulius Werner    deprecated: true
4880ce9173SJulius Werner
499e17f71eSDmitry Osipenko  tRRD-min-tck:
509e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
519e17f71eSDmitry Osipenko    maximum: 16
529e17f71eSDmitry Osipenko    description: |
539e17f71eSDmitry Osipenko      Active bank a to active bank b in terms of number of clock cycles.
549e17f71eSDmitry Osipenko      Obtained from device datasheet.
559e17f71eSDmitry Osipenko
569e17f71eSDmitry Osipenko  tWTR-min-tck:
579e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
589e17f71eSDmitry Osipenko    maximum: 16
599e17f71eSDmitry Osipenko    description: |
609e17f71eSDmitry Osipenko      Internal WRITE-to-READ command delay in terms of number of clock cycles.
619e17f71eSDmitry Osipenko      Obtained from device datasheet.
629e17f71eSDmitry Osipenko
639e17f71eSDmitry Osipenko  tXP-min-tck:
649e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
659e17f71eSDmitry Osipenko    maximum: 16
669e17f71eSDmitry Osipenko    description: |
679e17f71eSDmitry Osipenko      Exit power-down to next valid command delay in terms of number of clock
689e17f71eSDmitry Osipenko      cycles. Obtained from device datasheet.
699e17f71eSDmitry Osipenko
709e17f71eSDmitry Osipenko  tRTP-min-tck:
719e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
729e17f71eSDmitry Osipenko    maximum: 16
739e17f71eSDmitry Osipenko    description: |
749e17f71eSDmitry Osipenko      Internal READ to PRECHARGE command delay in terms of number of clock
759e17f71eSDmitry Osipenko      cycles. Obtained from device datasheet.
769e17f71eSDmitry Osipenko
779e17f71eSDmitry Osipenko  tCKE-min-tck:
789e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
799e17f71eSDmitry Osipenko    maximum: 16
809e17f71eSDmitry Osipenko    description: |
819e17f71eSDmitry Osipenko      CKE minimum pulse width (HIGH and LOW pulse width) in terms of number
829e17f71eSDmitry Osipenko      of clock cycles. Obtained from device datasheet.
839e17f71eSDmitry Osipenko
849e17f71eSDmitry Osipenko  tRPab-min-tck:
859e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
869e17f71eSDmitry Osipenko    maximum: 16
879e17f71eSDmitry Osipenko    description: |
889e17f71eSDmitry Osipenko      Row precharge time (all banks) in terms of number of clock cycles.
899e17f71eSDmitry Osipenko      Obtained from device datasheet.
909e17f71eSDmitry Osipenko
919e17f71eSDmitry Osipenko  tRCD-min-tck:
929e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
939e17f71eSDmitry Osipenko    maximum: 16
949e17f71eSDmitry Osipenko    description: |
959e17f71eSDmitry Osipenko      RAS-to-CAS delay in terms of number of clock cycles. Obtained from
969e17f71eSDmitry Osipenko      device datasheet.
979e17f71eSDmitry Osipenko
989e17f71eSDmitry Osipenko  tWR-min-tck:
999e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
1009e17f71eSDmitry Osipenko    maximum: 16
1019e17f71eSDmitry Osipenko    description: |
1029e17f71eSDmitry Osipenko      WRITE recovery time in terms of number of clock cycles. Obtained from
1039e17f71eSDmitry Osipenko      device datasheet.
1049e17f71eSDmitry Osipenko
1059e17f71eSDmitry Osipenko  tRASmin-min-tck:
1069e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
1079e17f71eSDmitry Osipenko    maximum: 16
1089e17f71eSDmitry Osipenko    description: |
1099e17f71eSDmitry Osipenko      Row active time in terms of number of clock cycles. Obtained from device
1109e17f71eSDmitry Osipenko      datasheet.
1119e17f71eSDmitry Osipenko
1129e17f71eSDmitry Osipenko  tCKESR-min-tck:
1139e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
1149e17f71eSDmitry Osipenko    maximum: 16
1159e17f71eSDmitry Osipenko    description: |
1169e17f71eSDmitry Osipenko      CKE minimum pulse width during SELF REFRESH (low pulse width during
1179e17f71eSDmitry Osipenko      SELF REFRESH) in terms of number of clock cycles. Obtained from device
1189e17f71eSDmitry Osipenko      datasheet.
1199e17f71eSDmitry Osipenko
1209e17f71eSDmitry Osipenko  tFAW-min-tck:
1219e17f71eSDmitry Osipenko    $ref: /schemas/types.yaml#/definitions/uint32
1229e17f71eSDmitry Osipenko    maximum: 16
1239e17f71eSDmitry Osipenko    description: |
1249e17f71eSDmitry Osipenko      Four-bank activate window in terms of number of clock cycles. Obtained
1259e17f71eSDmitry Osipenko      from device datasheet.
1269e17f71eSDmitry Osipenko
1279e17f71eSDmitry OsipenkopatternProperties:
1289e17f71eSDmitry Osipenko  "^lpddr2-timings":
129425fd283SKrzysztof Kozlowski    $ref: jedec,lpddr2-timings.yaml
1309e17f71eSDmitry Osipenko    description: |
1319e17f71eSDmitry Osipenko      The lpddr2 node may have one or more child nodes of type "lpddr2-timings".
1329e17f71eSDmitry Osipenko      "lpddr2-timings" provides AC timing parameters of the device for
1339e17f71eSDmitry Osipenko      a given speed-bin. The user may provide the timings for as many
134425fd283SKrzysztof Kozlowski      speed-bins as is required.
1359e17f71eSDmitry Osipenko
1369e17f71eSDmitry Osipenkorequired:
1379e17f71eSDmitry Osipenko  - compatible
1389e17f71eSDmitry Osipenko  - density
1399e17f71eSDmitry Osipenko  - io-width
1409e17f71eSDmitry Osipenko
141b7178cd5SJulius WernerunevaluatedProperties: false
1429e17f71eSDmitry Osipenko
1439e17f71eSDmitry Osipenkoexamples:
1449e17f71eSDmitry Osipenko  - |
1459e17f71eSDmitry Osipenko    elpida_ECB240ABACN: lpddr2 {
1469e17f71eSDmitry Osipenko        compatible = "elpida,ECB240ABACN", "jedec,lpddr2-s4";
1479e17f71eSDmitry Osipenko        density = <2048>;
1489e17f71eSDmitry Osipenko        io-width = <32>;
14980ce9173SJulius Werner        revision-id = <1 0>;
1509e17f71eSDmitry Osipenko
1519e17f71eSDmitry Osipenko        tRPab-min-tck = <3>;
1529e17f71eSDmitry Osipenko        tRCD-min-tck = <3>;
1539e17f71eSDmitry Osipenko        tWR-min-tck = <3>;
1549e17f71eSDmitry Osipenko        tRASmin-min-tck = <3>;
1559e17f71eSDmitry Osipenko        tRRD-min-tck = <2>;
1569e17f71eSDmitry Osipenko        tWTR-min-tck = <2>;
1579e17f71eSDmitry Osipenko        tXP-min-tck = <2>;
1589e17f71eSDmitry Osipenko        tRTP-min-tck = <2>;
1599e17f71eSDmitry Osipenko        tCKE-min-tck = <3>;
1609e17f71eSDmitry Osipenko        tCKESR-min-tck = <3>;
1619e17f71eSDmitry Osipenko        tFAW-min-tck = <8>;
1629e17f71eSDmitry Osipenko
1639e17f71eSDmitry Osipenko        timings_elpida_ECB240ABACN_400mhz: lpddr2-timings0 {
1649e17f71eSDmitry Osipenko            compatible = "jedec,lpddr2-timings";
1659e17f71eSDmitry Osipenko            min-freq = <10000000>;
1669e17f71eSDmitry Osipenko            max-freq = <400000000>;
1679e17f71eSDmitry Osipenko            tRPab = <21000>;
1689e17f71eSDmitry Osipenko            tRCD = <18000>;
1699e17f71eSDmitry Osipenko            tWR = <15000>;
1709e17f71eSDmitry Osipenko            tRAS-min = <42000>;
1719e17f71eSDmitry Osipenko            tRRD = <10000>;
1729e17f71eSDmitry Osipenko            tWTR = <7500>;
1739e17f71eSDmitry Osipenko            tXP = <7500>;
1749e17f71eSDmitry Osipenko            tRTP = <7500>;
1759e17f71eSDmitry Osipenko            tCKESR = <15000>;
1769e17f71eSDmitry Osipenko            tDQSCK-max = <5500>;
1779e17f71eSDmitry Osipenko            tFAW = <50000>;
1789e17f71eSDmitry Osipenko            tZQCS = <90000>;
1799e17f71eSDmitry Osipenko            tZQCL = <360000>;
1809e17f71eSDmitry Osipenko            tZQinit = <1000000>;
1819e17f71eSDmitry Osipenko            tRAS-max-ns = <70000>;
1829e17f71eSDmitry Osipenko        };
1839e17f71eSDmitry Osipenko
1849e17f71eSDmitry Osipenko        timings_elpida_ECB240ABACN_200mhz: lpddr2-timings1 {
1859e17f71eSDmitry Osipenko            compatible = "jedec,lpddr2-timings";
1869e17f71eSDmitry Osipenko            min-freq = <10000000>;
1879e17f71eSDmitry Osipenko            max-freq = <200000000>;
1889e17f71eSDmitry Osipenko            tRPab = <21000>;
1899e17f71eSDmitry Osipenko            tRCD = <18000>;
1909e17f71eSDmitry Osipenko            tWR = <15000>;
1919e17f71eSDmitry Osipenko            tRAS-min = <42000>;
1929e17f71eSDmitry Osipenko            tRRD = <10000>;
1939e17f71eSDmitry Osipenko            tWTR = <10000>;
1949e17f71eSDmitry Osipenko            tXP = <7500>;
1959e17f71eSDmitry Osipenko            tRTP = <7500>;
1969e17f71eSDmitry Osipenko            tCKESR = <15000>;
1979e17f71eSDmitry Osipenko            tDQSCK-max = <5500>;
1989e17f71eSDmitry Osipenko            tFAW = <50000>;
1999e17f71eSDmitry Osipenko            tZQCS = <90000>;
2009e17f71eSDmitry Osipenko            tZQCL = <360000>;
2019e17f71eSDmitry Osipenko            tZQinit = <1000000>;
2029e17f71eSDmitry Osipenko            tRAS-max-ns = <70000>;
2039e17f71eSDmitry Osipenko        };
2049e17f71eSDmitry Osipenko    };
205