On 02/26, Harry Wentland wrote: > 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@xxxxxxx> > --- > 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 0c9f917a4d4b..cb842ba80ddd 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); Hi Harry, Can we have a #define macro for this constant? ^ Other than that, LGTM. You can add my r-b to the next version. Thanks, Melissa > + } else { > + return a; > + } > + > +} > + > static inline s64 drm_int2fixp(int a) > { > return ((s64)a) << DRM_FIXED_POINT; > -- > 2.44.0 >