From 064631db87182694459056ceeb331506b553d0f0 Mon Sep 17 00:00:00 2001 From: Uros Majstorovic Date: Sun, 16 Feb 2025 20:11:47 +0100 Subject: drivers made independent from microcontroller/os --- fw/fe310/eos/dev/drv/ov2640_imlib.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 fw/fe310/eos/dev/drv/ov2640_imlib.h (limited to 'fw/fe310/eos/dev/drv/ov2640_imlib.h') 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; }) -- cgit v1.2.3