diff options
| author | Lespiau, Damien <damien.lespiau@intel.com> | 2013-08-19 11:58:59 -0400 |
|---|---|---|
| committer | Dave Airlie <airlied@gmail.com> | 2013-08-29 18:41:13 -0400 |
| commit | a26a58e89a4e5f2ab006b6ea2b8f3c9a97ae2e77 (patch) | |
| tree | df1def4c5a1868c2384fce3b6a1b6eddc690bd85 /drivers/gpu/host1x | |
| parent | 7d27becb3532d881378846e72864031977be511a (diff) | |
gpu: host1x: Port the HDMI vendor infoframe code the common helpers
I just wrote the bits to define and pack HDMI vendor specific infoframe.
Port the host1x driver to use those so I can refactor the infoframe code
a bit more.
This changes the length of the infoframe payload from 6 to 5, which is
enough for the "frame packing" stereo format.
v2: Pimp up the commit message with the note about the length
(Ville Syrjälä)
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Terje Bergström <tbergstrom@nvidia.com>
Cc: linux-tegra@vger.kernel.org
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Reviewed-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Dave Airlie <airlied@gmail.com>
Diffstat (limited to 'drivers/gpu/host1x')
| -rw-r--r-- | drivers/gpu/host1x/drm/hdmi.c | 24 |
1 files changed, 4 insertions, 20 deletions
diff --git a/drivers/gpu/host1x/drm/hdmi.c b/drivers/gpu/host1x/drm/hdmi.c index 01097da09f7f..b5489187a163 100644 --- a/drivers/gpu/host1x/drm/hdmi.c +++ b/drivers/gpu/host1x/drm/hdmi.c | |||
| @@ -539,7 +539,7 @@ static void tegra_hdmi_setup_audio_infoframe(struct tegra_hdmi *hdmi) | |||
| 539 | 539 | ||
| 540 | static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi) | 540 | static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi) |
| 541 | { | 541 | { |
| 542 | struct hdmi_vendor_infoframe frame; | 542 | struct hdmi_hdmi_infoframe frame; |
| 543 | unsigned long value; | 543 | unsigned long value; |
| 544 | u8 buffer[10]; | 544 | u8 buffer[10]; |
| 545 | ssize_t err; | 545 | ssize_t err; |
| @@ -551,26 +551,10 @@ static void tegra_hdmi_setup_stereo_infoframe(struct tegra_hdmi *hdmi) | |||
| 551 | return; | 551 | return; |
| 552 | } | 552 | } |
| 553 | 553 | ||
| 554 | memset(&frame, 0, sizeof(frame)); | 554 | hdmi_hdmi_infoframe_init(&frame); |
| 555 | frame.s3d_struct = HDMI_3D_STRUCTURE_FRAME_PACKING; | ||
| 555 | 556 | ||
| 556 | frame.type = HDMI_INFOFRAME_TYPE_VENDOR; | 557 | err = hdmi_hdmi_infoframe_pack(&frame, buffer, sizeof(buffer)); |
| 557 | frame.version = 0x01; | ||
| 558 | frame.length = 6; | ||
| 559 | |||
| 560 | frame.data[0] = 0x03; /* regid0 */ | ||
| 561 | frame.data[1] = 0x0c; /* regid1 */ | ||
| 562 | frame.data[2] = 0x00; /* regid2 */ | ||
| 563 | frame.data[3] = 0x02 << 5; /* video format */ | ||
| 564 | |||
| 565 | /* TODO: 74 MHz limit? */ | ||
| 566 | if (1) { | ||
| 567 | frame.data[4] = 0x00 << 4; /* 3D structure */ | ||
| 568 | } else { | ||
| 569 | frame.data[4] = 0x08 << 4; /* 3D structure */ | ||
| 570 | frame.data[5] = 0x00 << 4; /* 3D ext. data */ | ||
| 571 | } | ||
| 572 | |||
| 573 | err = hdmi_vendor_infoframe_pack(&frame, buffer, sizeof(buffer)); | ||
| 574 | if (err < 0) { | 558 | if (err < 0) { |
| 575 | dev_err(hdmi->dev, "failed to pack vendor infoframe: %zd\n", | 559 | dev_err(hdmi->dev, "failed to pack vendor infoframe: %zd\n", |
| 576 | err); | 560 | err); |
