// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.hardware.nand;

// Matches the value of ZBI_PARTITION_GUID_LEN.
const uint32 GUID_LEN = 16;

enum Class : uint32 {
    UNKNOWN = 0; // Unknown device.
    PARTMAP = 1; // NAND device contains multiple partitions.
    FTL = 2; // NAND device is a FTL partition.
    BBS = 3; // NAND device is a bad block skip partition.
    TEST = 4; // Test device.
};

[ForDeprecatedCBindings]
struct Info {
    uint32 page_size; // Read/write unit size, in bytes.
    uint32 pages_per_block; // Erase block size, in pages.
    uint32 num_blocks; // Device size, in erase blocks.
    uint32 ecc_bits; // Number of ECC bits (correctable bit flips),
    // per correction chunk.
    uint32 oob_size; // Available out of band bytes per page.
    Class nand_class; // The device purpose.
    array<uint8>:GUID_LEN partition_guid; // Partition type GUID from partition map.
};
