[Intel-gfx] [PATCH 6/6] drm/eld: add helpers to modify the SADs of an ELD

Golani, Mitulkumar Ajitkumar mitulkumar.ajitkumar.golani at intel.com
Tue Sep 26 18:04:29 UTC 2023


> -----Original Message-----
> From: Nikula, Jani <jani.nikula at intel.com>
> Sent: 07 September 2023 14:58
> To: dri-devel at lists.freedesktop.org
> Cc: intel-gfx at lists.freedesktop.org; Nikula, Jani <jani.nikula at intel.com>;
> Golani, Mitulkumar Ajitkumar <mitulkumar.ajitkumar.golani at intel.com>
> Subject: [PATCH 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.
> 
> Cc: Mitul Golani <mitulkumar.ajitkumar.golani at intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
>  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 f0f93aa62545..df91b7cd992e 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
> 215e78e79125..632e74d823e8 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..34e0d71c3550
> --- /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
> + * @i: SAD number
> + * @cta_sad: destination struct cea_sad
> + *
> + * @return: 0 on success, or negative on errors  */ int
> +drm_eld_sad_get(const u8 *eld, int i, struct cea_sad *cta_sad) {

Could we use a more descriptive variable name than 'i' for better code readability in the functions drm_eld_sad_get and drm_eld_sad_set?
possibly something like, `sad_number` or `index` ?

Regards,
Mitul
> +	const u8 *sad;
> +
> +	if (i >= drm_eld_sad_count(eld))
> +		return -EINVAL;
> +
> +	sad = eld + DRM_ELD_CEA_SAD(drm_eld_mnl(eld), i);
> +
> +	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
> + * @i: SAD number
> + * @cta_sad: source struct cea_sad
> + *
> + * @return: 0 on success, or negative on errors  */ int
> +drm_eld_sad_set(u8 *eld, int i, const struct cea_sad *cta_sad) {
> +	u8 *sad;
> +
> +	if (i >= drm_eld_sad_count(eld))
> +		return -EINVAL;
> +
> +	sad = eld + DRM_ELD_CEA_SAD(drm_eld_mnl(eld), i);
> +
> +	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..5b320157684c 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 i, struct cea_sad *cta_sad); int
> +drm_eld_sad_set(u8 *eld, int i, const struct cea_sad *cta_sad);
> +
>  /**
>   * drm_eld_sad - Get ELD SAD structures.
>   * @eld: pointer to an eld memory structure with sad_count set
> --
> 2.39.2



More information about the Intel-gfx mailing list