From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>,
intel-gfx@lists.freedesktop.org,
Harry Wentland <harry.wentland@amd.com>,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [RFC 09/19] drm/edid: convert drm_edid_to_sad() to use cea db iter
Date: Wed, 23 Mar 2022 18:18:40 +0200 [thread overview]
Message-ID: <YjtIYButRBTVm5rx@intel.com> (raw)
In-Reply-To: <fb35ac3c561f6ff98374ebeb2fb3a4fb8a22974e.1647985054.git.jani.nikula@intel.com>
On Tue, Mar 22, 2022 at 11:40:38PM +0200, Jani Nikula wrote:
> Use the cea db iterator for short audio descriptors. We'll still stop at
> the first audio data block, but not at the first CEA extension if that
> doesn't have the info.
This stuff should probably be converted over to the drm_edid_to_eld()
approach which looks up all the SADs from the whole EDID. But that's
something for amdgpu/radeon folks to think about since they're the only
user.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_edid.c | 34 +++++++++-------------------------
> 1 file changed, 9 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 992b3578a73f..e341790521d6 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -4854,40 +4854,21 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
> */
> int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads)
> {
> + const struct cea_db *db;
> + struct cea_db_iter iter;
> int count = 0;
> - int i, start, end, dbl;
> - const u8 *cea;
> -
> - cea = drm_find_cea_extension(edid);
> - if (!cea) {
> - DRM_DEBUG_KMS("SAD: no CEA Extension found\n");
> - return 0;
> - }
> -
> - if (cea_revision(cea) < 3) {
> - DRM_DEBUG_KMS("SAD: wrong CEA revision\n");
> - return 0;
> - }
> -
> - if (cea_db_offsets(cea, &start, &end)) {
> - DRM_DEBUG_KMS("SAD: invalid data block offsets\n");
> - return -EPROTO;
> - }
> -
> - for_each_cea_db(cea, i, start, end) {
> - const u8 *db = &cea[i];
>
> + cea_db_iter_edid_begin(edid, &iter);
> + cea_db_iter_for_each(db, &iter) {
> if (cea_db_tag(db) == CEA_DB_AUDIO) {
> int j;
>
> - dbl = cea_db_payload_len(db);
> -
> - count = dbl / 3; /* SAD is 3B */
> + count = cea_db_payload_len(db) / 3; /* SAD is 3B */
> *sads = kcalloc(count, sizeof(**sads), GFP_KERNEL);
> if (!*sads)
> return -ENOMEM;
> for (j = 0; j < count; j++) {
> - const u8 *sad = &db[1 + j * 3];
> + const u8 *sad = &db->data[j * 3];
>
> (*sads)[j].format = (sad[0] & 0x78) >> 3;
> (*sads)[j].channels = sad[0] & 0x7;
> @@ -4897,6 +4878,9 @@ int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads)
> break;
> }
> }
> + cea_db_iter_end(&iter);
> +
> + DRM_DEBUG_KMS("Found %d Short Audio Descriptors\n", count);
>
> return count;
> }
> --
> 2.30.2
--
Ville Syrjälä
Intel
WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>,
intel-gfx@lists.freedesktop.org, amd-gfx@lists.freedesktop.org,
dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [RFC 09/19] drm/edid: convert drm_edid_to_sad() to use cea db iter
Date: Wed, 23 Mar 2022 18:18:40 +0200 [thread overview]
Message-ID: <YjtIYButRBTVm5rx@intel.com> (raw)
In-Reply-To: <fb35ac3c561f6ff98374ebeb2fb3a4fb8a22974e.1647985054.git.jani.nikula@intel.com>
On Tue, Mar 22, 2022 at 11:40:38PM +0200, Jani Nikula wrote:
> Use the cea db iterator for short audio descriptors. We'll still stop at
> the first audio data block, but not at the first CEA extension if that
> doesn't have the info.
This stuff should probably be converted over to the drm_edid_to_eld()
approach which looks up all the SADs from the whole EDID. But that's
something for amdgpu/radeon folks to think about since they're the only
user.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/drm_edid.c | 34 +++++++++-------------------------
> 1 file changed, 9 insertions(+), 25 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 992b3578a73f..e341790521d6 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -4854,40 +4854,21 @@ static void drm_edid_to_eld(struct drm_connector *connector, struct edid *edid)
> */
> int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads)
> {
> + const struct cea_db *db;
> + struct cea_db_iter iter;
> int count = 0;
> - int i, start, end, dbl;
> - const u8 *cea;
> -
> - cea = drm_find_cea_extension(edid);
> - if (!cea) {
> - DRM_DEBUG_KMS("SAD: no CEA Extension found\n");
> - return 0;
> - }
> -
> - if (cea_revision(cea) < 3) {
> - DRM_DEBUG_KMS("SAD: wrong CEA revision\n");
> - return 0;
> - }
> -
> - if (cea_db_offsets(cea, &start, &end)) {
> - DRM_DEBUG_KMS("SAD: invalid data block offsets\n");
> - return -EPROTO;
> - }
> -
> - for_each_cea_db(cea, i, start, end) {
> - const u8 *db = &cea[i];
>
> + cea_db_iter_edid_begin(edid, &iter);
> + cea_db_iter_for_each(db, &iter) {
> if (cea_db_tag(db) == CEA_DB_AUDIO) {
> int j;
>
> - dbl = cea_db_payload_len(db);
> -
> - count = dbl / 3; /* SAD is 3B */
> + count = cea_db_payload_len(db) / 3; /* SAD is 3B */
> *sads = kcalloc(count, sizeof(**sads), GFP_KERNEL);
> if (!*sads)
> return -ENOMEM;
> for (j = 0; j < count; j++) {
> - const u8 *sad = &db[1 + j * 3];
> + const u8 *sad = &db->data[j * 3];
>
> (*sads)[j].format = (sad[0] & 0x78) >> 3;
> (*sads)[j].channels = sad[0] & 0x7;
> @@ -4897,6 +4878,9 @@ int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads)
> break;
> }
> }
> + cea_db_iter_end(&iter);
> +
> + DRM_DEBUG_KMS("Found %d Short Audio Descriptors\n", count);
>
> return count;
> }
> --
> 2.30.2
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2022-03-23 16:27 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-22 21:40 [Intel-gfx] [RFC 00/19] drm/edid: overhaul CEA data block iteration Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 01/19] drm/edid: add drm_edid_extension_block_count() and drm_edid_size() Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-23 15:21 ` [Intel-gfx] " Ville Syrjälä
2022-03-22 21:40 ` [Intel-gfx] [RFC 02/19] drm: use " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-23 15:24 ` [Intel-gfx] " Ville Syrjälä
2022-03-23 15:24 ` Ville Syrjälä
2022-03-22 21:40 ` [Intel-gfx] [RFC 03/19] drm/edid: clean up CEA data block tag definitions Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-23 15:33 ` [Intel-gfx] " Ville Syrjälä
2022-03-22 21:40 ` [Intel-gfx] [RFC 04/19] drm/edid: add iterator for EDID base and extension blocks Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 05/19] drm/edid: add iterator for CEA data blocks Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-23 16:05 ` [Intel-gfx] " Ville Syrjälä
2022-03-23 16:05 ` Ville Syrjälä
2022-03-22 21:40 ` [Intel-gfx] [RFC 06/19] drm/edid: clean up cea_db_is_*() functions Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-23 15:43 ` [Intel-gfx] " Ville Syrjälä
2022-03-23 17:26 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 07/19] drm/edid: convert add_cea_modes() to use cea db iter Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 08/19] drm/edid: convert drm_edid_to_speaker_allocation() " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 09/19] drm/edid: convert drm_edid_to_sad() " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-23 16:18 ` Ville Syrjälä [this message]
2022-03-23 16:18 ` [Intel-gfx] " Ville Syrjälä
2022-03-22 21:40 ` [Intel-gfx] [RFC 10/19] drm/edid: convert drm_detect_hdmi_monitor() " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 11/19] drm/edid: convert drm_detect_monitor_audio() " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 12/19] drm/edid: convert drm_parse_cea_ext() " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 13/19] drm/edid: convert drm_edid_to_eld() " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 14/19] drm/edid: sunset the old unused cea data block iterators Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 15/19] drm/edid: restore some type safety to cea_db_*() functions Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 16/19] drm/edid: detect basic audio only on CEA extension Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 17/19] drm/edid: detect color formats and CEA revision " Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 18/19] drm/edid: skip CEA extension scan in drm_edid_to_eld() just for CEA rev Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-22 21:40 ` [Intel-gfx] [RFC 19/19] drm/edid: sunset drm_find_cea_extension() Jani Nikula
2022-03-22 21:40 ` Jani Nikula
2022-03-23 16:36 ` [Intel-gfx] " Ville Syrjälä
2022-03-23 16:36 ` Ville Syrjälä
2022-03-22 22:07 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/edid: overhaul CEA data block iteration Patchwork
2022-03-22 22:09 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-03-22 22:13 ` [Intel-gfx] ✗ Fi.CI.DOCS: " Patchwork
2022-03-22 22:37 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-03-23 7:06 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2022-03-23 16:38 ` [Intel-gfx] [RFC 00/19] " Ville Syrjälä
2022-03-23 16:38 ` Ville Syrjälä
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YjtIYButRBTVm5rx@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.