From a89dd2ca6542d157890656d918d6ae2f933ab401 Mon Sep 17 00:00:00 2001 From: oharboe Date: Thu, 3 Sep 2009 08:23:39 +0000 Subject: David Brownell Abstract the orion_nand_fast_block_write() routine into a separate routine -- arm_nandwrite() -- so that other ARM cores can reuse it. Have davinci_nand do so. This faster than byte-at-a-time ops by a factor of three (!), even given the slowish interactions to support hardware ECC (1-bit flavor in that test) each 512 bytes; those could be read more efficiently by on-chip code. NOTE that until there's a generic "ARM algorithm" structure, this can't work on newer ARMv6 (like ARM1136) or ARMv7A (like Cortex-A8) cores, though the downloaded code itself would work just fine there. git-svn-id: svn://svn.berlios.de/openocd/trunk@2663 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/flash/arm_nandio.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/flash/arm_nandio.h (limited to 'src/flash/arm_nandio.h') diff --git a/src/flash/arm_nandio.h b/src/flash/arm_nandio.h new file mode 100644 index 00000000..eedf5dca --- /dev/null +++ b/src/flash/arm_nandio.h @@ -0,0 +1,25 @@ +#ifndef __ARM_NANDIO_H +#define __ARM_NANDIO_H + +#include "nand.h" +#include "binarybuffer.h" + +struct arm_nand_data { + /* target is proxy for some ARM core */ + struct target_s *target; + + /* copy_area holds write-to-NAND loop and data to write */ + struct working_area_s *copy_area; + + /* chunk_size == page or ECC unit */ + unsigned chunk_size; + + /* data == where to write the data */ + uint32_t data; + + /* currently implicit: data width == 8 bits (not 16) */ +}; + +int arm_nandwrite(struct arm_nand_data *nand, uint8_t *data, int size); + +#endif /* __ARM_NANDIO_H */ -- cgit v1.2.3