> -----Original Message----- > From: Nikula, Jani <jani.nikula@xxxxxxxxx> > Sent: Tuesday, October 31, 2023 3:47 PM > To: dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: intel-gfx@xxxxxxxxxxxxxxxxxxxxx; Golani, Mitulkumar Ajitkumar > <mitulkumar.ajitkumar.golani@xxxxxxxxx>; Nikula, Jani > <jani.nikula@xxxxxxxxx> > Subject: [PATCH v2 6/6] drm/eld: add helpers to modify the SADs of an ELD > > Occasionally it's necessary for drivers to modify the SADs of an ELD, but it's > not so cool to have drivers poke at the ELD buffer directly. > > Using the helpers to translate between 3-byte SAD and struct cea_sad, add > ELD helpers to get/set the SADs from/to an ELD. > > v2: s/i/sad_index/ (Mitul) > > Cc: Mitul Golani <mitulkumar.ajitkumar.golani@xxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > Documentation/gpu/drm-kms-helpers.rst | 3 ++ > drivers/gpu/drm/Makefile | 1 + > drivers/gpu/drm/drm_eld.c | 55 +++++++++++++++++++++++++++ > include/drm/drm_eld.h | 5 +++ > 4 files changed, 64 insertions(+) > create mode 100644 drivers/gpu/drm/drm_eld.c > > diff --git a/Documentation/gpu/drm-kms-helpers.rst > b/Documentation/gpu/drm-kms-helpers.rst > index cfa8e6c399b6..59cfe8a7a8ba 100644 > --- a/Documentation/gpu/drm-kms-helpers.rst > +++ b/Documentation/gpu/drm-kms-helpers.rst > @@ -366,6 +366,9 @@ EDID Helper Functions Reference .. kernel-doc:: > include/drm/drm_eld.h > :internal: > > +.. kernel-doc:: drivers/gpu/drm/drm_eld.c > + :export: > + > SCDC Helper Functions Reference > =============================== > > diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile index > 8e1bde059170..cdbe91ac0bfc 100644 > --- a/drivers/gpu/drm/Makefile > +++ b/drivers/gpu/drm/Makefile > @@ -22,6 +22,7 @@ drm-y := \ > drm_drv.o \ > drm_dumb_buffers.o \ > drm_edid.o \ > + drm_eld.o \ > drm_encoder.o \ > drm_file.o \ > drm_fourcc.o \ > diff --git a/drivers/gpu/drm/drm_eld.c b/drivers/gpu/drm/drm_eld.c new > file mode 100644 index 000000000000..5177991aa272 > --- /dev/null > +++ b/drivers/gpu/drm/drm_eld.c > @@ -0,0 +1,55 @@ > +// SPDX-License-Identifier: MIT > +/* > + * Copyright © 2023 Intel Corporation > + */ > + > +#include <drm/drm_edid.h> > +#include <drm/drm_eld.h> > + > +#include "drm_internal.h" > + > +/** > + * drm_eld_sad_get - get SAD from ELD to struct cea_sad > + * @eld: ELD buffer > + * @sad_index: SAD index > + * @cta_sad: destination struct cea_sad > + * > + * @return: 0 on success, or negative on errors */ int > +drm_eld_sad_get(const u8 *eld, int sad_index, struct cea_sad *cta_sad) > +{ > + const u8 *sad; > + > + if (sad_index >= drm_eld_sad_count(eld)) > + return -EINVAL; > + > + sad = eld + DRM_ELD_CEA_SAD(drm_eld_mnl(eld), sad_index); > + > + drm_edid_cta_sad_set(cta_sad, sad); > + > + return 0; > +} > +EXPORT_SYMBOL(drm_eld_sad_get); > + > +/** > + * drm_eld_sad_set - set SAD to ELD from struct cea_sad > + * @eld: ELD buffer > + * @sad_index: SAD index > + * @cta_sad: source struct cea_sad > + * > + * @return: 0 on success, or negative on errors */ int > +drm_eld_sad_set(u8 *eld, int sad_index, const struct cea_sad *cta_sad) > +{ > + u8 *sad; > + > + if (sad_index >= drm_eld_sad_count(eld)) > + return -EINVAL; > + > + sad = eld + DRM_ELD_CEA_SAD(drm_eld_mnl(eld), sad_index); > + > + drm_edid_cta_sad_get(cta_sad, sad); > + > + return 0; > +} > +EXPORT_SYMBOL(drm_eld_sad_set); > diff --git a/include/drm/drm_eld.h b/include/drm/drm_eld.h index > 7b674256b9aa..0a88d10b28b0 100644 > --- a/include/drm/drm_eld.h > +++ b/include/drm/drm_eld.h > @@ -8,6 +8,8 @@ > > #include <linux/types.h> > > +struct cea_sad; > + > /* ELD Header Block */ > #define DRM_ELD_HEADER_BLOCK_SIZE 4 > > @@ -75,6 +77,9 @@ static inline int drm_eld_mnl(const u8 *eld) > return (eld[DRM_ELD_CEA_EDID_VER_MNL] & > DRM_ELD_MNL_MASK) >> DRM_ELD_MNL_SHIFT; } > > +int drm_eld_sad_get(const u8 *eld, int sad_index, struct cea_sad > +*cta_sad); int drm_eld_sad_set(u8 *eld, int sad_index, const struct > +cea_sad *cta_sad); Changes LGTM. Thanks Reviewed-by: Mitul Golani <mitulkumar.ajitkumar.golani@xxxxxxxxx> > + > /** > * drm_eld_sad - Get ELD SAD structures. > * @eld: pointer to an eld memory structure with sad_count set > -- > 2.39.2