summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
Diffstat (limited to 'src/include')
-rw-r--r--src/include/gpxe/threewire.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/include/gpxe/threewire.h b/src/include/gpxe/threewire.h
index d60e1a714..865fc25d5 100644
--- a/src/include/gpxe/threewire.h
+++ b/src/include/gpxe/threewire.h
@@ -11,6 +11,7 @@
*/
#include <gpxe/spi.h>
+#include <limits.h>
/**
* @defgroup tcmds Three-wire commands
@@ -20,10 +21,28 @@
/** Read data from memory array */
#define THREEWIRE_READ 0x6
+/** Write data to memory array */
+#define THREEWIRE_WRITE 0x5
+
+/** Write enable */
+#define THREEWIRE_EWEN 0x4
+
+/** Address to be used for write enable command */
+#define THREEWIRE_EWEN_ADDRESS INT_MAX
+
+/** Time to wait for write cycles to complete
+ *
+ * This is sufficient for AT93C46/AT93C56 devices, but may need to be
+ * increased in future when other devices are added.
+ */
+#define THREEWIRE_WRITE_MDELAY 10
+
/** @} */
extern int threewire_read ( struct nvs_device *nvs, unsigned int address,
void *data, size_t len );
+extern int threewire_write ( struct nvs_device *nvs, unsigned int address,
+ const void *data, size_t len );
/**
* @defgroup tdevs Three-wire device types
@@ -36,6 +55,7 @@ init_at93cx6 ( struct spi_device *device, unsigned int organisation ) {
device->nvs.block_size = 1;
device->command_len = 3,
device->nvs.read = threewire_read;
+ device->nvs.write = threewire_write;
}
/**