All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thierry Reding <treding@nvidia.com>
To: Damien Lespiau <damien.lespiau@intel.com>
Cc: "Martin Bugge (marbugge)" <marbugge@cisco.com>,
	"paulo.r.zanoni@intel.com" <paulo.r.zanoni@intel.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: drivers/video/hdmi.c:  Source Product Description (SPD) Information frame logging
Date: Mon, 1 Sep 2014 09:18:15 +0200	[thread overview]
Message-ID: <20140901071814.GB24226@ulmo.nvidia.com> (raw)
In-Reply-To: <20140826133102.GF32146@strange.ger.corp.intel.com>


[-- Attachment #1.1: Type: text/plain, Size: 3720 bytes --]

On Tue, Aug 26, 2014 at 03:31:02PM +0200, Damien Lespiau wrote:
> On Tue, Aug 26, 2014 at 12:46:32PM +0200, Martin Bugge (marbugge) wrote:
> > Hello Damien
> > 
> > I'm writing to you as you seems to be one of latest maintainers of:
> > 
> > include/linux/hdmi.h
> > drivers/video/hdmi.c
> > 
> > I wanted to add "Source Product Description information frame"
> > logging for the drivers in
> > 
> > ./drivers/media/i2c/adv7604.c
> > ./drivers/media/i2c/adv7842.c
> > 
> > But was advised to contact you and use some of the defines in
> > include/linux/hdmi.h
> > 
> > As you can see in:
> > 
> > http://www.spinics.net/lists/linux-media/msg74727.html
> > 
> > Would you consider the addition of a hdmi_spd_infoframe_log function
> > in hdmi.c a good idea ?
> > 
> > And the same goes for other HDMI Information frames.
> 
> I don't see why not. Currently the code there is somewhat geared for
> writing HDMI info frames, not really reading back/debug.
> 
> The various structures are not a 1:1 mapping with how the fields are
> actually represented in an info frame packet, so you get a _pack()
> function to serialize the info frame structures. Something to
> consider, then, for your logging API would be to either:
> 
>   - Give a buffer/size to your log() function and decode a raw buffer
>   - make an _unpack() function that takes a raw buffer and translate it
>     into one of the various infoframe structure and then have a _log
>     function that operates on the "unpacked" structure.
> 
> Another thing to keep in mind is that those "unpacked" versions of the
> infoframes don't actually have all the fields. eg.
> 
>        /*
>          * Data byte 1, bit 4 has to be set if we provide the active format
>          * aspect ratio
>          */
>         if (frame->active_aspect & 0xf)
>                 ptr[0] |= BIT(4);
> 
> 	[...]
> 
>         ptr[1] = ((frame->colorimetry & 0x3) << 6) |
>                  ((frame->picture_aspect & 0x3) << 4) |
>                  (frame->active_aspect & 0xf);
> 
> You can see that active_aspect needs two fields set, a "active aspect valid"
> bit (data byte 1, bit 4) and the actual active_aspect value. To prevent the
> user of the API to generate invalid infoframes (ie have a active_aspect value
> but forgetting to set the valid bit), I decided to "hide" the valid bit and set
> it automatically if active_aspect is set. This isn't just theoritical, we've
> had the bug that forgot the valid bit before.
> 
> That's the details I can think about atm, I don't seen any reason to not
> improve that code to be able to dump info frames. I have a slight preference to
> have an _unpack() version and have the _log() functions operate on the
> "expoded" structures, maybe Thierry/Paulo (in Cc.) have some input as well.

I do have a preference for adding an _unpack() variant, too. Although as
you pointed out there could be difficulties in reconstructing that from
the raw data given that we don't have a 1:1 encoding. For example, what
does the _unpack() do if the active aspect is set but not the valid bit?

One advantage perhaps would be that _unpack()/_pack() could act as a
sanitizer.

Thierry

-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------

[-- Attachment #1.2: Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

      reply	other threads:[~2014-09-01  7:18 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-26 10:46 drivers/video/hdmi.c: Source Product Description (SPD) Information frame logging Martin Bugge (marbugge)
2014-08-26 13:31 ` Damien Lespiau
2014-09-01  7:18   ` Thierry Reding [this message]

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=20140901071814.GB24226@ulmo.nvidia.com \
    --to=treding@nvidia.com \
    --cc=damien.lespiau@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=marbugge@cisco.com \
    --cc=paulo.r.zanoni@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.