diff --git a/src/flash/arm_nandio.h b/src/flash/arm_nandio.h index 27b3ad351..d3504f434 100644 --- a/src/flash/arm_nandio.h +++ b/src/flash/arm_nandio.h @@ -1,25 +1,55 @@ +/* + * Copyright (C) 2009 by David Brownell + * + * 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 program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #ifndef __ARM_NANDIO_H #define __ARM_NANDIO_H #include #include +/** + * Available operational states the arm_nand_data struct can be in. + */ +enum arm_nand_op { + ARM_NAND_NONE, /**< No operation performed. */ + ARM_NAND_READ, /**< Read operation performed. */ + ARM_NAND_WRITE, /**< Write operation performed. */ +}; + /** * The arm_nand_data struct is used for defining NAND I/O operations on an ARM * core. */ struct arm_nand_data { - /** target is proxy for some ARM core */ - struct target *target; + /** Target is proxy for some ARM core. */ + struct target *target; - /** copy_area holds write-to-NAND loop and data to write */ + /** The copy area holds code loop and data for I/O operations. */ struct working_area *copy_area; - /** chunk_size == page or ECC unit */ - unsigned chunk_size; + /** The chunk size is the page size or ECC chunk. */ + unsigned chunk_size; - /** data == where to write the data */ - uint32_t data; + /** Where data is read from or written to. */ + uint32_t data; + + /** Last operation executed using this struct. */ + enum arm_nand_op op; /* currently implicit: data width == 8 bits (not 16) */ }; diff --git a/src/flash/nand/davinci.c b/src/flash/nand/davinci.c index 40be36d46..66770737c 100644 --- a/src/flash/nand/davinci.c +++ b/src/flash/nand/davinci.c @@ -710,6 +710,7 @@ NAND_DEVICE_COMMAND_HANDLER(davinci_nand_device_command) info->io.target = target; info->io.data = info->data; + info->io.op = ARM_NAND_NONE; /* NOTE: for now we don't do any error correction on read. * Nothing else in OpenOCD currently corrects read errors, diff --git a/src/flash/nand/orion.c b/src/flash/nand/orion.c index 436151fba..b124deee6 100644 --- a/src/flash/nand/orion.c +++ b/src/flash/nand/orion.c @@ -155,6 +155,7 @@ NAND_DEVICE_COMMAND_HANDLER(orion_nand_device_command) hw->io.target = hw->target; hw->io.data = hw->data; + hw->io.op = ARM_NAND_NONE; return ERROR_OK; }