summaryrefslogtreecommitdiff
path: root/nuttx/include
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2013-05-01 10:59:57 -0600
committerGregory Nutt <gnutt@nuttx.org>2013-05-01 10:59:57 -0600
commit5b280602d79bbb1a0625016be023aa429d6fe898 (patch)
tree3e0960e407ea8021ed20ed0bcbde56e36a226c25 /nuttx/include
parent1a5060c28be4edffb32eabc2ad422254fcd72bb2 (diff)
downloadpx4-nuttx-5b280602d79bbb1a0625016be023aa429d6fe898.tar.gz
px4-nuttx-5b280602d79bbb1a0625016be023aa429d6fe898.tar.bz2
px4-nuttx-5b280602d79bbb1a0625016be023aa429d6fe898.zip
Add an optional byte-oriented write method to the MTD interface
Diffstat (limited to 'nuttx/include')
-rw-r--r--nuttx/include/nuttx/mtd.h22
1 files changed, 16 insertions, 6 deletions
diff --git a/nuttx/include/nuttx/mtd.h b/nuttx/include/nuttx/mtd.h
index d90ea5f6b..dc2a9bc82 100644
--- a/nuttx/include/nuttx/mtd.h
+++ b/nuttx/include/nuttx/mtd.h
@@ -52,11 +52,12 @@
/* Macros to hide implementation */
-#define MTD_ERASE(d,s,n) ((d)->erase ? (d)->erase(d,s,n) : (-ENOSYS))
-#define MTD_BREAD(d,s,n,b) ((d)->bread ? (d)->bread(d,s,n,b) : (-ENOSYS))
-#define MTD_READ(d,s,n,b) ((d)->read ? (d)->read(d,s,n,b) : (-ENOSYS))
-#define MTD_BWRITE(d,s,n,b)((d)->bwrite ? (d)->bwrite(d,s,n,b) : (-ENOSYS))
-#define MTD_IOCTL(d,c,a) ((d)->ioctl ? (d)->ioctl(d,c,a) : (-ENOSYS))
+#define MTD_ERASE(d,s,n) ((d)->erase ? (d)->erase(d,s,n) : (-ENOSYS))
+#define MTD_BREAD(d,s,n,b) ((d)->bread ? (d)->bread(d,s,n,b) : (-ENOSYS))
+#define MTD_BWRITE(d,s,n,b)((d)->bwrite ? (d)->bwrite(d,s,n,b) : (-ENOSYS))
+#define MTD_READ(d,s,n,b) ((d)->read ? (d)->read(d,s,n,b) : (-ENOSYS))
+#define MTD_WRITE(d,s,n,b) ((d)->write ? (d)->write(d,s,n,b) : (-ENOSYS))
+#define MTD_IOCTL(d,c,a) ((d)->ioctl ? (d)->ioctl(d,c,a) : (-ENOSYS))
/* If any of the low-level device drivers declare they want sub-sector erase
* support, then define MTD_SUBSECTOR_ERASE.
@@ -108,7 +109,12 @@ struct mtd_dev_s
{
/* The following methods operate on the MTD: */
- /* Erase the specified erase blocks (units are erase blocks) */
+ /* Erase the specified erase blocks (units are erase blocks). Semantic
+ * Clarification: Here, we are not referring to the erase block according
+ * to the FLASH data sheet. Rather, we are referring to the *smallest*
+ * eraseable part of the FLASH which may have a name like a page or sector
+ * or subsector.
+ */
int (*erase)(FAR struct mtd_dev_s *dev, off_t startblock, size_t nblocks);
@@ -127,6 +133,10 @@ struct mtd_dev_s
ssize_t (*read)(FAR struct mtd_dev_s *dev, off_t offset, size_t nbytes,
FAR uint8_t *buffer);
+#ifdef CONFIG_MTD_BYTE_WRITE
+ ssize_t (*write)(FAR struct mtd_dev_s *dev, off_t offset, size_t nbytes,
+ FAR const uint8_t *buffer);
+#endif
/* Support other, less frequently used commands:
* - MTDIOC_GEOMETRY: Get MTD geometry