zephyr/dts/bindings/mtd/atmel,at45.yaml
Andrzej Głąbek 0b573a1f38 drivers: spi_flash_at45: Fix erasing of first two sectors
Most available AT45 flash chips have their first two sectors shorter
than the consecutive ones. Usually, the first sector is marked as 0a
and has its size equal to eight pages (one block) and the second one
(usually 0b) is the complement to the size of a regular sector.
This commits modifies the driver so that erasing of these first two
sectors is performed correctly. This modified behavior is configurable
with a new DT property so that it is still possible to also use legacy
AT45 chips that do not feature such sector split. Such legacy chips
usually also do not support the chip erase and sector erase commands,
so two more DT properties are introduced to cover that.

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
2023-05-09 12:22:15 +02:00

98 lines
2.9 KiB
YAML

# Copyright (c) 2020 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0
description: Atmel AT45 (or compatible) SPI flash
compatible: "atmel,at45"
include: [spi-device.yaml]
properties:
jedec-id:
type: uint8-array
required: true
description: JEDEC ID as manufacturer ID (1 byte) and device ID (2 bytes).
size:
type: int
required: true
description: Flash capacity in bits.
sector-size:
type: int
required: true
description: Flash sector size in bytes.
sector-0a-pages:
type: int
default: 8
description: |
Most available AT45 flash chips have their first two sectors shorter
than the consecutive ones. Usually, the first sector is marked as 0a
and has its size equal to eight pages (one block) and the second one
(usually 0b) is the complement to the size of a regular sector.
This property allows specifying the size (in pages) of that first sector
and defaults to the commonly used value of eight pages.
Value of zero means that the flash chip has all sectors of equal size.
block-size:
type: int
required: true
description: Flash block size in bytes.
page-size:
type: int
required: true
description: Flash page size in bytes.
no-chip-erase:
type: boolean
description: |
If set, indicates that the chip does not support the chip erase command.
no-sector-erase:
type: boolean
description: |
If set, indicates that the chip does not support the sector erase command.
use-udpd:
type: boolean
description: |
When set, the driver will use the Ultra-Deep Power-Down command instead
of the default Deep Power-Down one to put the chip into low power mode.
From the driver perspective, as it does not rely on the contents of the
SRAM buffers in the chip, the difference between the Deep and Ultra-Deep
Power-Down modes is that the chip consumes far less power in the latter
but needs some more time to enter this mode and to exit from it.
enter-dpd-delay:
type: int
default: 0
description: |
Time, in nanoseconds, needed by the chip to enter the Deep Power-Down
mode (or Ultra-Deep Power-Down mode when the "use-udpd" property is set)
after the corresponding command is issued.
exit-dpd-delay:
type: int
default: 0
description: |
Time, in nanoseconds, needed by the chip to exit from the Deep Power-Down
mode (or Ultra-Deep Power-Down mode when the "use-udpd" property is set)
after the corresponding command is issued.
reset-gpios:
type: phandle-array
description: |
The RESET pin of AT45 is active low.
If connected directly the MCU pin should be configured
as active low.
wp-gpios:
type: phandle-array
description: |
The WP pin of AT45 is active low.
If connected directly the MCU pin should be configured
as active low.