Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm: Add helper to extract lut from struct drm_color_lut32

Add helper to extract lut values in 32-bit precision needed by
hardware.

Signed-off-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Chaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
Reviewed-by: Sebastian Wick <sebastian.wick@redhat.com>
Signed-off-by: Simon Ser <contact@emersion.fr>
Link: https://patch.msgid.link/20251115000237.3561250-37-alex.hung@amd.com

authored by

Chaitanya Kumar Borah and committed by
Simon Ser
94529775 621c45ca

+16
+16
include/drm/drm_color_mgmt.h
··· 50 50 (1 << 16) - 1); 51 51 } 52 52 53 + /** 54 + * drm_color_lut32_extract - clamp and round LUT entries 55 + * @user_input: input value 56 + * @bit_precision: number of bits the hw LUT supports 57 + * 58 + * Extract U0.bit_precision from a U0.32 LUT value. 59 + * 60 + */ 61 + static inline u32 drm_color_lut32_extract(u32 user_input, int bit_precision) 62 + { 63 + u64 max = (bit_precision >= 64) ? ~0ULL : (1ULL << bit_precision) - 1; 64 + 65 + return DIV_ROUND_CLOSEST_ULL((u64)user_input * max, 66 + (1ULL << 32) - 1); 67 + } 68 + 53 69 u64 drm_color_ctm_s31_32_to_qm_n(u64 user_input, u32 m, u32 n); 54 70 55 71 void drm_crtc_enable_color_mgmt(struct drm_crtc *crtc,