summaryrefslogtreecommitdiff
path: root/fw/fe310/eos/dev/drv/ov2640_imlib.h
diff options
context:
space:
mode:
authorUros Majstorovic <majstor@majstor.org>2025-02-16 20:11:47 +0100
committerUros Majstorovic <majstor@majstor.org>2025-02-16 20:11:47 +0100
commit064631db87182694459056ceeb331506b553d0f0 (patch)
treed1113214d11a6f407548c4f16008adb1e7c73475 /fw/fe310/eos/dev/drv/ov2640_imlib.h
parentaeb896b55c384d7f9a6e9a29f74cf560c6392c5b (diff)
drivers made independent from microcontroller/os
Diffstat (limited to 'fw/fe310/eos/dev/drv/ov2640_imlib.h')
-rw-r--r--fw/fe310/eos/dev/drv/ov2640_imlib.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/fw/fe310/eos/dev/drv/ov2640_imlib.h b/fw/fe310/eos/dev/drv/ov2640_imlib.h
new file mode 100644
index 0000000..b32a79f
--- /dev/null
+++ b/fw/fe310/eos/dev/drv/ov2640_imlib.h
@@ -0,0 +1,12 @@
+/* from OpenMV imlib.h */
+#define IM_LOG2_2(x) (((x) & 0x2ULL) ? ( 2 ) : 1) // NO ({ ... }) !
+#define IM_LOG2_4(x) (((x) & 0xCULL) ? ( 2 + IM_LOG2_2((x) >> 2)) : IM_LOG2_2(x)) // NO ({ ... }) !
+#define IM_LOG2_8(x) (((x) & 0xF0ULL) ? ( 4 + IM_LOG2_4((x) >> 4)) : IM_LOG2_4(x)) // NO ({ ... }) !
+#define IM_LOG2_16(x) (((x) & 0xFF00ULL) ? ( 8 + IM_LOG2_8((x) >> 8)) : IM_LOG2_8(x)) // NO ({ ... }) !
+#define IM_LOG2_32(x) (((x) & 0xFFFF0000ULL) ? (16 + IM_LOG2_16((x) >> 16)) : IM_LOG2_16(x)) // NO ({ ... }) !
+#define IM_LOG2(x) (((x) & 0xFFFFFFFF00000000ULL) ? (32 + IM_LOG2_32((x) >> 32)) : IM_LOG2_32(x)) // NO ({ ... }) !
+
+#define IM_MAX(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a > _b ? _a : _b; })
+#define IM_MIN(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _a < _b ? _a : _b; })
+#define IM_DIV(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _b ? (_a / _b) : 0; })
+#define IM_MOD(a,b) ({ __typeof__ (a) _a = (a); __typeof__ (b) _b = (b); _b ? (_a % _b) : 0; })