Merge tag 'for-linus-6.9-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / gpu / drm / drm_eld.c
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);