drm_eld.c 1.1 KB

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