From dd58f5e9108bc596c93071705d2b53233d13ade6 Mon Sep 17 00:00:00 2001
From: Angel Pons <th3fanbus@gmail.com>
Date: Sat, 7 May 2022 20:36:10 +0200
Subject: [PATCH 01/26] commonlib/clamp.h: Add more clamping functions

Add more clamping functions that work with different types.

Change-Id: I14cf335d5a54f769f8fd9184450957e876affd6b
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
---
 src/commonlib/include/commonlib/clamp.h | 26 +++++++++++++++++--------
 1 file changed, 18 insertions(+), 8 deletions(-)

diff --git a/src/commonlib/include/commonlib/clamp.h b/src/commonlib/include/commonlib/clamp.h
index e01a107ed4..526185195c 100644
--- a/src/commonlib/include/commonlib/clamp.h
+++ b/src/commonlib/include/commonlib/clamp.h
@@ -8,15 +8,25 @@
 /*
  * Clamp a value, so that it is between a lower and an upper bound.
  */
-static inline u32 clamp_u32(const u32 min, const u32 val, const u32 max)
-{
-	if (val > max)
-		return max;
+#define __MAKE_CLAMP_FUNC(type) \
+	static inline type clamp_##type(const type min, const type val, const type max) \
+	{				\
+		if (val > max)		\
+			return max;	\
+		if (val < min)		\
+			return min;	\
+		return val;		\
+	}				\
 
-	if (val < min)
-		return min;
+__MAKE_CLAMP_FUNC(s8)	/* clamp_s8  */
+__MAKE_CLAMP_FUNC(u8)	/* clamp_u8  */
+__MAKE_CLAMP_FUNC(s16)	/* clamp_s16 */
+__MAKE_CLAMP_FUNC(u16)	/* clamp_u16 */
+__MAKE_CLAMP_FUNC(s32)	/* clamp_s32 */
+__MAKE_CLAMP_FUNC(u32)	/* clamp_u32 */
+__MAKE_CLAMP_FUNC(s64)	/* clamp_s64 */
+__MAKE_CLAMP_FUNC(u64)	/* clamp_u64 */
 
-	return val;
-}
+#undef __MAKE_CLAMP_FUNC
 
 #endif /* COMMONLIB_CLAMP_H */
-- 
2.39.2

