summaryrefslogtreecommitdiff
path: root/flashimg/cpu_main/flashio.h
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-07-03 08:00:50 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-07-03 08:00:50 -0600
commit1d5a211e1ae3645e9c13163b76fea0a3c87f46f1 (patch)
tree610128434e35b9b6028609d7cb5d67bcd13b3379 /flashimg/cpu_main/flashio.h
parent1be02f3e2379b2cd06dbae775504948ff37bf89a (diff)
parentad2ef1642096665be998e83f9b6c4b7de308b644 (diff)
Merge branch 'lukeshu/flash-file'HEADmain
Diffstat (limited to 'flashimg/cpu_main/flashio.h')
-rw-r--r--flashimg/cpu_main/flashio.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/flashimg/cpu_main/flashio.h b/flashimg/cpu_main/flashio.h
new file mode 100644
index 0000000..c109739
--- /dev/null
+++ b/flashimg/cpu_main/flashio.h
@@ -0,0 +1,29 @@
+/* flashimg/cpu_main/flashio.h - DMA-safe flash storage
+ *
+ * Copyright (C) 2025 Luke T. Shumaker <lukeshu@lukeshu.com>
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+
+#ifndef _FLASHIMG_CPU_MAIN_FLASHIO_H_
+#define _FLASHIMG_CPU_MAIN_FLASHIO_H_
+
+#include <hardware/flash.h> /* for FLASH_SECTOR_SIZE */
+
+#include <libcr_ipc/mutex.h>
+#include <libhw/generic/io.h>
+#include <libmisc/private.h>
+
+struct flashio {
+ BEGIN_PRIVATE(FLASHIO_H);
+ uint8_t dat[FLASH_SECTOR_SIZE];
+ size_t dat_pos;
+ bool dat_dirty;
+ bool dat_ok;
+ cr_mutex_t mu;
+ END_PRIVATE(FLASHIO_H);
+};
+LO_IMPLEMENTATION_H(io_preader_to, struct flashio, flashio);
+LO_IMPLEMENTATION_H(io_pwriter, struct flashio, flashio);
+LO_IMPLEMENTATION_H(io_flusher, struct flashio, flashio);
+
+#endif /* _FLASHIMG_CPU_MAIN_FLASHIO_H_ */