Commit 4fc18382 authored by Harry Wentland's avatar Harry Wentland Committed by Simon Ser
Browse files

drm: Add helper for conversion from signed-magnitude



CTM values are defined as signed-magnitude values. Add
a helper that converts from CTM signed-magnitude fixed
point value to the twos-complement value used by
drm_fixed.

Reviewed-by: default avatarSebastian Wick <sebastian.wick@redhat.com>
Reviewed-by: default avatarLouis Chauvet <louis.chauvet@bootlin.com>
Signed-off-by: default avatarHarry Wentland <harry.wentland@amd.com>
Reviewed-by: default avatarDaniel Stone <daniels@collabora.com>
Reviewed-by: default avatarMelissa Wen <mwen@igalia.com>
Signed-off-by: default avatarSimon Ser <contact@emersion.fr>
Link: https://patch.msgid.link/20251115000237.3561250-2-alex.hung@amd.com
parent c884ee70
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -78,6 +78,23 @@ static inline u32 dfixed_div(fixed20_12 A, fixed20_12 B)
#define DRM_FIXED_EPSILON	1LL
#define DRM_FIXED_ALMOST_ONE	(DRM_FIXED_ONE - DRM_FIXED_EPSILON)

/**
 * @drm_sm2fixp
 *
 * Convert a 1.31.32 signed-magnitude fixed point to 32.32
 * 2s-complement fixed point
 *
 * @return s64 2s-complement fixed point
 */
static inline s64 drm_sm2fixp(__u64 a)
{
	if ((a & (1LL << 63))) {
		return -(a & 0x7fffffffffffffffll);
	} else {
		return a;
	}
}

static inline s64 drm_int2fixp(int a)
{
	return ((s64)a) << DRM_FIXED_POINT;