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