From patchwork Tue Mar 11 09:00:30 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shirish S X-Patchwork-Id: 3815031 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id CFF51BF540 for ; Wed, 12 Mar 2014 00:16:13 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id E07222022A for ; Wed, 12 Mar 2014 00:16:12 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id 6F560201FD for ; Wed, 12 Mar 2014 00:16:11 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2A0A1FAF7D; Tue, 11 Mar 2014 17:16:01 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout2.samsung.com (mailout2.samsung.com [203.254.224.25]) by gabe.freedesktop.org (Postfix) with ESMTP id 4F689FAABC for ; Tue, 11 Mar 2014 02:00:00 -0700 (PDT) Received: from epcpsbgr5.samsung.com (u145.gpu120.samsung.co.kr [203.254.230.145]) by mailout2.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N2900KO0KZYPZB0@mailout2.samsung.com> for dri-devel@lists.freedesktop.org; Tue, 11 Mar 2014 17:59:58 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.122]) by epcpsbgr5.samsung.com (EPCPMTA) with SMTP id 4D.32.14803.C80DE135; Tue, 11 Mar 2014 17:59:56 +0900 (KST) X-AuditID: cbfee691-b7efc6d0000039d3-5d-531ed08c0e75 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 18.9B.28157.B80DE135; Tue, 11 Mar 2014 17:59:56 +0900 (KST) Received: from chrome-server.sisodomain.com ([107.108.73.106]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0N2900BGHKZQGH00@mmp1.samsung.com>; Tue, 11 Mar 2014 17:59:55 +0900 (KST) From: Shirish S To: dri-devel@lists.freedesktop.org, inki.dae@samsung.com Subject: [PATCH] drm/exynos: set the active aspect ratio as per mode Date: Tue, 11 Mar 2014 14:30:30 +0530 Message-id: <1394528430-13734-1-git-send-email-s.shirish@samsung.com> X-Mailer: git-send-email 1.7.10.4 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrGLMWRmVeSWpSXmKPExsWyRsSkSrfnglywwao14hZXvr5ns5h0fwKL xbTZGxktmnYcZHNg8ZjdcJHF4373cSaPvi2rGAOYo7hsUlJzMstSi/TtErgyDm67wFjQJVPR cOYLewNjp3gXIyeHhICJxJXWRnYIW0ziwr31bF2MXBxCAksZJba+/sQOU3Rv+Q1miMQiRoll W+8ygiSEBHqZJD6s5Qax2QTUJS5OXs0MYosIWEo82PobzGYWsJZYfecUWL2wgIvEmcdrwIay CKhK/Fi0lgXE5hVwlTjw7DcjxDJFie5nE8CukBC4zybxclobG0SDgMS3yYeAGjiAErISmw4w Q9RLShxccYNlAqPgAkaGVYyiqQXJBcVJ6UWmesWJucWleel6yfm5mxiBYXj637OJOxjvH7A+ xJgMNG4is5Rocj4wjPNK4g2NzYwsTE1MjY3MLc1IE1YS501/lBQkJJCeWJKanZpakFoUX1Sa k1p8iJGJg1OqgdGEy/yyVLCyRcXOvRtl73w0zZnwbnP6TWZxE9t765j3v4s9E1rAoPJhY4vI fSfvs11Fx5JeHj4q/zhzan5Z3q97Kse2Xqp93ru85pzYX4YnXdoTVD50GNzx+HQrrWDJ5aU3 Q2KUPPhT91tOfnRgfuhnzw9mB1vfPHbymMyotXjXnjV/Pv347VWjxFKckWioxVxUnAgAzEPF DlkCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrMIsWRmVeSWpSXmKPExsVy+t9jAd2eC3LBBu9us1pc+fqezWLS/Qks FtNmb2S0aNpxkM2BxWN2w0UWj/vdx5k8+rasYgxgjmpgtMlITUxJLVJIzUvOT8nMS7dV8g6O d443NTMw1DW0tDBXUshLzE21VXLxCdB1y8wB2qekUJaYUwoUCkgsLlbSt8M0ITTETdcCpjFC 1zckCK7HyAANJKxhzDi47QJjQZdMRcOZL+wNjJ3iXYycHBICJhL3lt9ghrDFJC7cW8/WxcjF ISSwiFFi2da7jCAJIYFeJokPa7lBbDYBdYmLk1eDNYgIWEo82PobzGYWsJZYfecUWL2wgIvE mcdr2EFsFgFViR+L1rKA2LwCrhIHnv1mhFimKNH9bALbBEbuBYwMqxhFUwuSC4qT0nON9IoT c4tL89L1kvNzNzGCg/yZ9A7GVQ0WhxgFOBiVeHhX+MsFC7EmlhVX5h5ilOBgVhLh/XEGKMSb klhZlVqUH19UmpNafIgxGWj7RGYp0eR8YATmlcQbGpuYmxqbWppYmJhZkiasJM57sNU6UEgg PbEkNTs1tSC1CGYLEwenVAOjWLRb7/HN69zbsycuu9bfbqW064m9cOM+pjsz9lxctefME/uc g9uCpk1uN7y/Tm1y4W0hMYnq+57Liqo3/TTgXH3jjtmzM3bfKy23/H0cZLBfgfX+1iyWi8Uh /2KKplwRM5nmr5k/75i/cYWWjIfH4XS3YwcU3n+/qzld/1a5+52Y7tLkC9MylViKMxINtZiL ihMBX5URmrYCAAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected X-Mailman-Approved-At: Tue, 11 Mar 2014 17:16:00 -0700 Cc: shirish@chromium.org, Shirish S X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: dri-devel-bounces@lists.freedesktop.org Errors-To: dri-devel-bounces@lists.freedesktop.org X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP now that the drm_display_mode also provides aspect ratio for all resolutions, this patch adds its usage to set the active aspect ratio of AVI info frame packets as per CEA-861-D standard's Table 9. This is also needed to abide by the 7-27 compliance test of HDMI. V2: rebased it to TODO branch, and made the orr'ing logic correct Signed-off-by: Shirish S --- drivers/gpu/drm/exynos/exynos_hdmi.c | 38 +++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index c021ddc..bba54c9 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c @@ -53,8 +53,6 @@ /* AVI header and aspect ratio */ #define HDMI_AVI_VERSION 0x02 #define HDMI_AVI_LENGTH 0x0D -#define AVI_PIC_ASPECT_RATIO_16_9 (2 << 4) -#define AVI_SAME_AS_PIC_ASPECT_RATIO 8 /* AUI header info */ #define HDMI_AUI_VERSION 0x01 @@ -65,6 +63,12 @@ enum hdmi_type { HDMI_TYPE14, }; +enum active_aspect_ratio { + AVI_SAME_AS_PIC_ASPECT_RATIO = 8, + AVI_4_3_Center_RATIO, + AVI_16_9_Center_RATIO, +}; + struct hdmi_resources { struct clk *hdmi; struct clk *sclk_hdmi; @@ -162,6 +166,7 @@ struct hdmi_v14_conf { struct hdmi_conf_regs { int pixel_clock; int cea_video_id; + enum hdmi_picture_aspect aspect_ratio; union { struct hdmi_v13_conf v13_conf; struct hdmi_v14_conf v14_conf; @@ -668,7 +673,6 @@ static void hdmi_reg_infoframe(struct hdmi_context *hdata, { u32 hdr_sum; u8 chksum; - u32 aspect_ratio; u32 mod; u32 vic; @@ -697,10 +701,28 @@ static void hdmi_reg_infoframe(struct hdmi_context *hdata, AVI_ACTIVE_FORMAT_VALID | AVI_UNDERSCANNED_DISPLAY_VALID); - aspect_ratio = AVI_PIC_ASPECT_RATIO_16_9; - - hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), aspect_ratio | - AVI_SAME_AS_PIC_ASPECT_RATIO); + /* + * Set the aspect ratio as per the mode, mentioned in + * Table 9 AVI InfoFrame Data Byte 2 of CEA-861-D Standard + */ + switch (hdata->mode_conf.aspect_ratio) { + case HDMI_PICTURE_ASPECT_4_3: + hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), + (hdata->mode_conf.aspect_ratio << 4) | + AVI_4_3_Center_RATIO); + break; + case HDMI_PICTURE_ASPECT_16_9: + hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), + (hdata->mode_conf.aspect_ratio << 4) | + AVI_16_9_Center_RATIO); + break; + case HDMI_PICTURE_ASPECT_NONE: + default: + hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), + (hdata->mode_conf.aspect_ratio << 4) | + AVI_SAME_AS_PIC_ASPECT_RATIO); + break; + } vic = hdata->mode_conf.cea_video_id; hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(4), vic); @@ -1421,6 +1443,7 @@ static void hdmi_v13_mode_set(struct hdmi_context *hdata, hdata->mode_conf.cea_video_id = drm_match_cea_mode((struct drm_display_mode *)m); hdata->mode_conf.pixel_clock = m->clock * 1000; + hdata->mode_conf.aspect_ratio = m->picture_aspect_ratio; hdmi_set_reg(core->h_blank, 2, m->htotal - m->hdisplay); hdmi_set_reg(core->h_v_line, 3, (m->htotal << 12) | m->vtotal); @@ -1517,6 +1540,7 @@ static void hdmi_v14_mode_set(struct hdmi_context *hdata, hdata->mode_conf.cea_video_id = drm_match_cea_mode((struct drm_display_mode *)m); hdata->mode_conf.pixel_clock = m->clock * 1000; + hdata->mode_conf.aspect_ratio = m->picture_aspect_ratio; hdmi_set_reg(core->h_blank, 2, m->htotal - m->hdisplay); hdmi_set_reg(core->v_line, 2, m->vtotal);