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

# Common properties used by nodes describing serial flash devices that
# are compatible with the JESD216 Serial Flash Discoverable Parameters
# specification.
#
# This allows encoding the entire BFP block in devicetree to avoid
# reading at runtime, while still allowing the driver to pull out extra
# data of interest, such as erase sizes.
#
# Alternatively the BFP block can be absent, but critical fields like
# size can be provided directly along with the JEDEC ID of the expected
# device to verify its presence at runtime.
#
# Only properties supported by parameter tables documented in the
# JESD216 standards should be listed in this binding include file.

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

  size:
    type: int
    description: flash capacity in bits

  sfdp-bfp:
    type: uint8-array
    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 retrieval of SFDP data
      is not desired.

  quad-enable-requirements:
    type: string
    enum:
      - "NONE"
      - "S2B1v1"
      - "S1B6"
      - "S2B7"
      - "S2B1v4"
      - "S2B1v5"
      - "S2B1v6"
    description: |
      Quad Enable Requirements value from JESD216 BFP DW15.

      Use NONE if the device detects 1-1-4 and 1-4-4 modes by the
      instruction.  Use S1B6 if QE is bit 6 of the first status register
      byte, and can be configured by reading then writing one byte with
      RDSR and WRSR.  For other fields see the specification.

  enter-4byte-addr:
    type: int
    description: |
      Enter 4-Byte Addressing value from JESD216 BFP DW16

      This property is ignored if the device is configured to use SFDP data
      from the sfdp-bfp property (CONFIG_SPI_NOR_SFDP_DEVICETREE) or to read
      SFDP properties at runtime (CONFIG_SPI_NOR_SFDP_RUNTIME).

      For CONFIG_SPI_NOR_SFDP_MINIMAL this is the 8-bit value from bits 31:24
      of DW16 identifying ways a device can be placed into 4-byte addressing
      mode.  If provided as a non-zero value the driver assumes that 4-byte
      addressing is require to access the full address range, and
      automatically puts the device into 4-byte address mode when the device
      is initialized.

  page-size:
    type: int
    description: |
      Number of bytes in a page from JESD216 BFP DW11

      This property is only used in the CONFIG_SPI_NOR_SFDP_MINIMAL configuration.
      It is ignored if the device is configured to use SFDP data
      from the sfdp-bfp property (CONFIG_SPI_NOR_SFDP_DEVICETREE) or
      if the SFDP parameters are read from the device at
      runtime (CONFIG_SPI_NOR_SFDP_RUNTIME).

      The default value is 256 bytes if the value is not specified.
