All of lore.kernel.org
 help / color / mirror / Atom feed
From: Damien Lespiau <damien.lespiau@intel.com>
To: "Martin Bugge (marbugge)" <marbugge@cisco.com>
Cc: treding@nvidia.com, paulo.r.zanoni@intel.com,
	dri-devel@lists.freedesktop.org
Subject: Re: drivers/video/hdmi.c:  Source Product Description (SPD) Information frame logging
Date: Tue, 26 Aug 2014 14:31:02 +0100	[thread overview]
Message-ID: <20140826133102.GF32146@strange.ger.corp.intel.com> (raw)
In-Reply-To: <53FC6588.1060009@cisco.com>

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.

HTH,

-- 
Damien

  reply	other threads:[~2014-08-26 13:31 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 [this message]
2014-09-01  7:18   ` Thierry Reding

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=20140826133102.GF32146@strange.ger.corp.intel.com \
    --to=damien.lespiau@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=marbugge@cisco.com \
    --cc=paulo.r.zanoni@intel.com \
    --cc=treding@nvidia.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.