# Copyright (c) 2018 Peter Bigot Consulting, LLC
# Copyright (c) 2019 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

# Common properties used by nodes describing M25P80-compatible SPI NOR
# serial flash devices.

properties:
  jedec-id:
    type: uint8-array
    required: false
    description: JEDEC ID as manufacturer ID, memory type, memory density

  sfdp-bfp:
    type: uint8-array
    required: false
    description: |
      Contains the 32-bit words in little-endian byte order from the
      JESD216 Serial Flash Discoverable Parameters Basic Flash
      Parameters table.  This provides flash-specific configuration
      information in cases were runtime configuration is not desired.

  has-be32k:
    type: boolean
    required: false
    description: Not used after Zephyr 2.3.0

  requires-ulbpr:
    type: boolean
    required: false
    description: |
      Indicates the device requires the ULBPR (0x98) command.

      Some flash chips such as the Microchip SST26VF series have a block
      protection register that initializes to write-protected.  Use this
      property to indicate that the BPR must be unlocked before write
      operations can proceed.

  has-dpd:
    type: boolean
    required: false
    description: |
      Indicates the device supports the DPD (0xB9) command.

      Use this property to indicate the flash chip supports the Deep
      Power-Down mode that is entered by command 0xB9 to reduce power
      consumption below normal standby levels.  Use of this property
      implies that the RDPD (0xAB) Release from Deep Power Down command
      is also supported.  (On some chips this command functions as Read
      Electronic Signature; see t-enter-dpd).

  dpd-wakeup-sequence:
    type: array
    required: false
    description: |
      Specifies wakeup durations for devices without RDPD.

      Some devices (Macronix MX25R in particular) wake from deep power
      down by a timed sequence of CSn toggles rather than the RDPD
      command.  This property specifies three durations measured in
      nanoseconds, in this order:
      (1) tDPDD (Delay Time for Release from Deep Power-Down Mode)
      (2) tCDRP (CSn Toggling Time before Release from Deep Power-Down Mode)
      (3) tRDP (Recovery Time for Release from Deep Power-Down Mode)

      Absence of this property indicates that the RDPD command should be
      used to wake the chip from Deep Power-Down mode.

  t-enter-dpd:
    type: int
    required: false
    description: |
      Duration required to complete the DPD command.

      This provides the duration, in nanoseconds, that CSn must be
      remain deasserted after issuing DPD before the chip will enter
      deep power down.

      If not provided the driver does not enforce a delay.

  t-exit-dpd:
    type: int
    required: false
    description: |
      Duration required to complete the RDPD command.

      This provides the duration, in nanoseconds, that CSn must be
      remain deasserted after issuing RDPD before the chip will exit
      deep power down and be ready to receive additional commands.

      If not provided the driver does not enforce a delay.

  size:
    type: int
    required: false
    description: flash capacity in bits
