1 // SPDX-License-Identifier: MIT 2 /* 3 * Copyright © 2023 Intel Corporation 4 */ 5 6 #include <linux/export.h> 7 8 #include <drm/drm_edid.h> 9 #include <drm/drm_eld.h> 10 11 #include "drm_crtc_internal.h" 12 13 /** 14 * drm_eld_sad_get - get SAD from ELD to struct cea_sad 15 * @eld: ELD buffer 16 * @sad_index: SAD index 17 * @cta_sad: destination struct cea_sad 18 * 19 * @return: 0 on success, or negative on errors 20 */ 21 int drm_eld_sad_get(const u8 *eld, int sad_index, struct cea_sad *cta_sad) 22 { 23 const u8 *sad; 24 25 if (sad_index >= drm_eld_sad_count(eld)) 26 return -EINVAL; 27 28 sad = eld + DRM_ELD_CEA_SAD(drm_eld_mnl(eld), sad_index); 29 30 drm_edid_cta_sad_set(cta_sad, sad); 31 32 return 0; 33 } 34 EXPORT_SYMBOL(drm_eld_sad_get); 35 36 /** 37 * drm_eld_sad_set - set SAD to ELD from struct cea_sad 38 * @eld: ELD buffer 39 * @sad_index: SAD index 40 * @cta_sad: source struct cea_sad 41 * 42 * @return: 0 on success, or negative on errors 43 */ 44 int drm_eld_sad_set(u8 *eld, int sad_index, const struct cea_sad *cta_sad) 45 { 46 u8 *sad; 47 48 if (sad_index >= drm_eld_sad_count(eld)) 49 return -EINVAL; 50 51 sad = eld + DRM_ELD_CEA_SAD(drm_eld_mnl(eld), sad_index); 52 53 drm_edid_cta_sad_get(cta_sad, sad); 54 55 return 0; 56 } 57 EXPORT_SYMBOL(drm_eld_sad_set); 58