[V7 01/45] drm: Add helper for conversion from signed-magnitude
Louis Chauvet
louis.chauvet at bootlin.com
Mon Feb 24 16:07:28 UTC 2025
Le 20/12/2024 à 05:33, Alex Hung a écrit :
> From: Harry Wentland <harry.wentland at amd.com>
>
> 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.
>
> Signed-off-by: Harry Wentland <harry.wentland at amd.com>
Reviewed-by: Louis Chauvet <louis.chauvet at bootlin.com>
> ---
> include/drm/drm_fixed.h | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/include/drm/drm_fixed.h b/include/drm/drm_fixed.h
> index 1922188f00e8..0b44f2f294ce 100644
> --- a/include/drm/drm_fixed.h
> +++ b/include/drm/drm_fixed.h
> @@ -78,6 +78,24 @@ 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;
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
More information about the amd-gfx
mailing list