mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
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: Sebastian Wick <sebastian.wick@redhat.com> Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com> Signed-off-by: Harry Wentland <harry.wentland@amd.com> Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Melissa Wen <mwen@igalia.com> Signed-off-by: Simon Ser <contact@emersion.fr> Link: https://patch.msgid.link/20251115000237.3561250-2-alex.hung@amd.com
This commit is contained in:
parent
c884ee70b1
commit
4fc183828b
|
|
@ -78,6 +78,23 @@ static inline u32 dfixed_div(fixed20_12 A, fixed20_12 B)
|
||||||
#define DRM_FIXED_EPSILON 1LL
|
#define DRM_FIXED_EPSILON 1LL
|
||||||
#define DRM_FIXED_ALMOST_ONE (DRM_FIXED_ONE - DRM_FIXED_EPSILON)
|
#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)
|
static inline s64 drm_int2fixp(int a)
|
||||||
{
|
{
|
||||||
return ((s64)a) << DRM_FIXED_POINT;
|
return ((s64)a) << DRM_FIXED_POINT;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user