1# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mtd/jedec,spi-nor.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: SPI NOR flash ST M25Pxx (and similar) serial flash chips
8
9maintainers:
10  - Rob Herring <robh@kernel.org>
11
12allOf:
13  - $ref: "mtd.yaml#"
14  - $ref: /schemas/spi/spi-peripheral-props.yaml#
15
16properties:
17  compatible:
18    oneOf:
19      - items:
20          - pattern: "^((((micron|spansion|st),)?\
21              (m25p(40|80|16|32|64|128)|\
22              n25q(32b|064|128a11|128a13|256a|512a|164k)))|\
23              atmel,at25df(321a|641|081a)|\
24              everspin,mr25h(10|40|128|256)|\
25              (mxicy|macronix),mx25l(4005a|1606e|6405d|8005|12805d|25635e)|\
26              (mxicy|macronix),mx25u(4033|4035)|\
27              (spansion,)?s25fl(128s|256s1|512s|008k|064k|164k)|\
28              (sst|microchip),sst25vf(016b|032b|040b)|\
29              (sst,)?sst26wf016b|\
30              (sst,)?sst25wf(040b|080)|\
31              winbond,w25x(80|32)|\
32              (winbond,)?w25q(16|32(w|dw)?|64(dw)?|80bl|128(fw)?|256))$"
33          - const: jedec,spi-nor
34      - items:
35          - enum:
36              - issi,is25lp016d
37              - micron,mt25qu02g
38              - mxicy,mx25r1635f
39              - mxicy,mx25u6435f
40              - mxicy,mx25v8035f
41              - spansion,s25sl12801
42              - spansion,s25fs512s
43          - const: jedec,spi-nor
44      - const: jedec,spi-nor
45    description:
46      Must also include "jedec,spi-nor" for any SPI NOR flash that can be
47      identified by the JEDEC READ ID opcode (0x9F).
48
49  reg:
50    maxItems: 1
51
52  spi-max-frequency: true
53  spi-rx-bus-width: true
54  spi-tx-bus-width: true
55
56  m25p,fast-read:
57    type: boolean
58    description:
59      Use the "fast read" opcode to read data from the chip instead of the usual
60      "read" opcode. This opcode is not supported by all chips and support for
61      it can not be detected at runtime. Refer to your chips' datasheet to check
62      if this is supported by your chip.
63
64  broken-flash-reset:
65    type: boolean
66    description:
67      Some flash devices utilize stateful addressing modes (e.g., for 32-bit
68      addressing) which need to be managed carefully by a system. Because these
69      sorts of flash don't have a standardized software reset command, and
70      because some systems don't toggle the flash RESET# pin upon system reset
71      (if the pin even exists at all), there are systems which cannot reboot
72      properly if the flash is left in the "wrong" state. This boolean flag can
73      be used on such systems, to denote the absence of a reliable reset
74      mechanism.
75
76  label: true
77
78  partitions:
79    type: object
80
81  '#address-cells': true
82  '#size-cells': true
83
84patternProperties:
85  # Note: use 'partitions' node for new users
86  '^partition@':
87    type: object
88
89  "^otp(-[0-9]+)?$":
90    type: object
91
92unevaluatedProperties: false
93
94examples:
95  - |
96    spi {
97        #address-cells = <1>;
98        #size-cells = <0>;
99
100        flash@0 {
101            #address-cells = <1>;
102            #size-cells = <1>;
103            compatible = "spansion,m25p80", "jedec,spi-nor";
104            reg = <0>;
105            spi-max-frequency = <40000000>;
106            m25p,fast-read;
107        };
108    };
109...
110