| // 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.rawnand; |
| |
| using fuchsia.hardware.nandinfo; |
| using zx; |
| |
| @transport("Banjo") |
| @banjo_layout("ddk-protocol") |
| protocol RawNand { |
| /// Read one NAND page and its out-of-band data with hardware ECC. |
| ReadPageHwecc(struct { |
| nandpage uint32; |
| }) -> (struct { |
| s zx.status; |
| @buffer |
| data vector<uint8>:MAX; |
| @buffer |
| oob vector<uint8>:MAX; |
| ecc_correct uint32; |
| }); |
| |
| /// Write one NAND page and its out-of-band data with hardware ECC. |
| /// |
| /// Should return ZX_ERR_IO *only* when an error occurred due to underlying hardware. |
| WritePageHwecc(struct { |
| @buffer |
| data vector<uint8>:MAX; |
| @buffer |
| oob vector<uint8>:MAX; |
| nandpage uint32; |
| }) -> (struct { |
| s zx.status; |
| }); |
| |
| /// Erase NAND block. |
| /// |
| /// Should return ZX_ERR_IO *only* when error occurred due to underlying hardware. |
| EraseBlock(struct { |
| nandpage uint32; |
| }) -> (struct { |
| s zx.status; |
| }); |
| |
| GetNandInfo() -> (struct { |
| s zx.status; |
| info fuchsia.hardware.nandinfo.NandInfo; |
| }); |
| }; |