summaryrefslogtreecommitdiffstats
path: root/lib/x1000-installer/include/xf_nandio.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/x1000-installer/include/xf_nandio.h')
-rw-r--r--lib/x1000-installer/include/xf_nandio.h130
1 files changed, 0 insertions, 130 deletions
diff --git a/lib/x1000-installer/include/xf_nandio.h b/lib/x1000-installer/include/xf_nandio.h
deleted file mode 100644
index a10b71992c..0000000000
--- a/lib/x1000-installer/include/xf_nandio.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2021 Aidan MacDonald
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#ifndef _XF_NANDIO_H_
-#define _XF_NANDIO_H_
-
-#include "nand-x1000.h"
-#include <stdint.h>
-#include <stddef.h>
-
-enum xf_nandio_mode {
- XF_NANDIO_READ = 0,
- XF_NANDIO_PROGRAM,
- XF_NANDIO_VERIFY,
-};
-
-struct xf_nandio {
- nand_drv* ndrv;
- int nand_err; /* copy of the last NAND error code */
- int alloc_handle;
- enum xf_nandio_mode mode;
-
- size_t block_size; /* size of a block, in bytes */
- size_t page_size; /* size of a page, in bytes */
-
- uint8_t* old_buf; /* contains the 'old' block data already on chip */
- uint8_t* new_buf; /* contains the possibly modified 'new' block data */
-
- nand_block_t cur_block; /* address of the current block */
- size_t offset_in_block; /* byte offset in the current block */
- unsigned block_valid: 1; /* 1 if buffered block data is valid */
-};
-
-int xf_nandio_init(struct xf_nandio* nio);
-void xf_nandio_destroy(struct xf_nandio* nio);
-
-/** Sets the operational mode, which determines read/write/flush semantics.
- *
- * - XF_NANDIO_READ: Accesses the chip in read-only mode. Writes are allowed,
- * but should not be used. (Writes will modify a temporary buffer but this
- * will not alter the flash contents.)
- *
- * - XF_NANDIO_PROGRAM: Writes are allowed to modify the flash contents.
- * Writes within a block are accumulated in a temporary buffer. When
- * crossing a block boundary, either by writing past the end the current
- * block or by seeking to a new one, the data written to the temporary
- * buffer is compared against the current flash contents. If the block
- * has been modified, it is erased and any non-blank pages are programmed
- * with the new data.
- *
- * - XF_NANDIO_VERIFY: This mode allows callers to easily check whether the
- * flash contents match some expected contents. Callers "write" the expected
- * contents as if programming it with XF_NANDIO_PROGRAM. When a block is
- * flushed, if the written data doesn't match the block contents, an
- * XF_E_VERIFY_FAILED error is returned. The flash contents will not be
- * altered in this mode.
- *
- * \returns XF_E_SUCCESS or a negative error code on failure.
- */
-int xf_nandio_set_mode(struct xf_nandio* nio, enum xf_nandio_mode mode);
-
-/** Seek to a given byte offset in the NAND flash.
- *
- * If the new offset is outside the current block, the current block will
- * be automatically flushed. Note this can result in verification or program
- * failures as with any other flush.
- *
- * \returns XF_E_SUCCESS or a negative error code on failure.
- */
-int xf_nandio_seek(struct xf_nandio* nio, size_t offset);
-
-/** Read or write a contiguous sequence of bytes from flash.
- *
- * The read or write starts at the current position and continues for `count`
- * bytes. Both reads and writes may cross block boundaries. Modified blocks
- * will be flushed automatically if the operation crosses a block boundary.
- *
- * After a successful read or write, the current position is advanced by
- * exactly `count` bytes. After a failure, the position is indeterminate.
- *
- * \returns XF_E_SUCCESS or a negative error code on failure.
- */
-int xf_nandio_read(struct xf_nandio* nio, void* buf, size_t count);
-int xf_nandio_write(struct xf_nandio* nio, const void* buf, size_t count);
-
-/** Get a pointer to the block buffer for direct read/write access.
- *
- * These functions can be used to read or write data without intermediate
- * buffers. The caller passes in the amount of data to be transferred in
- * `*count`. A pointer to part of the block buffer is returned in `*buf`
- * and the number of bytes available in `*buf` is returned in `*count`.
- *
- * Data at the current position can be read from the returned buffer and
- * it may be modified by writing to the buffer. The buffer is only valid
- * until the next call to an `xf_nandio` function.
- *
- * The read/write position is advanced by the returned `*count` on success,
- * and is unchanged on failure.
- *
- * \returns XF_E_SUCCESS or a negative error code on failure.
- */
-int xf_nandio_get_buffer(struct xf_nandio* nio, void** buf, size_t* count);
-
-/** Flush the buffered block to ensure all outstanding program or verification
- * operations have been performed. This should only be called to ensure the
- * final modified block is flushed after you have finished writing all data.
- *
- * \returns XF_E_SUCCESS or a negative error code on failure.
- */
-int xf_nandio_flush(struct xf_nandio* nio);
-
-#endif /* _XF_NANDIO_H_ */