From patchwork Fri Feb 22 09:53:06 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajay Kumar X-Patchwork-Id: 222489 X-Patchwork-Delegate: promsoft@gmail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id E4F772C02AB for ; Fri, 22 Feb 2013 20:34:21 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id D9B234A216; Fri, 22 Feb 2013 10:34:09 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ENtJ5Je-sM5A; Fri, 22 Feb 2013 10:34:09 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 363F64A21B; Fri, 22 Feb 2013 10:33:32 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 19D284A18C for ; Fri, 22 Feb 2013 10:33:06 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id eUh4+Jj98H+8 for ; Fri, 22 Feb 2013 10:33:04 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by theia.denx.de (Postfix) with ESMTP id B7FC44A1C6 for ; Fri, 22 Feb 2013 10:32:49 +0100 (CET) Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MIM000M57TYXID0@mailout4.samsung.com> for u-boot@lists.denx.de; Fri, 22 Feb 2013 18:32:43 +0900 (KST) Received: from epcpsbgm2.samsung.com ( [172.20.52.122]) by epcpsbgr1.samsung.com (EPCPMTA) with SMTP id DF.5E.16905.B3B37215; Fri, 22 Feb 2013 18:32:43 +0900 (KST) X-AuditID: cbfee68d-b7f4f6d000004209-f1-51273b3b78a4 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2.samsung.com (EPCPMTA) with SMTP id 1F.2F.03880.73B37215; Fri, 22 Feb 2013 18:32:39 +0900 (KST) Received: from chrome-ubuntu.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 <0MIM00B6K7TU7A60@mmp1.samsung.com> for u-boot@lists.denx.de; Fri, 22 Feb 2013 18:32:39 +0900 (KST) From: Ajay Kumar To: u-boot@lists.denx.de Date: Fri, 22 Feb 2013 04:53:06 -0500 Message-id: <1361526789-29787-11-git-send-email-ajaykumar.rs@samsung.com> X-Mailer: git-send-email 1.8.0 In-reply-to: <1361526789-29787-1-git-send-email-ajaykumar.rs@samsung.com> References: <1361526789-29787-1-git-send-email-ajaykumar.rs@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrCLMWRmVeSWpSXmKPExsWyRsSkStfaWj3Q4MhbNYu3ezvZHRg9zt7Z wRjAGMVlk5Kak1mWWqRvl8CVcfv+KcaCvyoVS992sDQwvpHrYuTgkBAwkXi5J6eLkRPIFJO4 cG89WxcjF4eQwFJGiZVP21hgajbPdIeIL2KU+P9rA1TRMiaJ/2+7mEG62QS0JbZNv8kCYosI SEj86r/KCGIzC4RL/P03A8wWFvCU6L4zG8xmEVCVuL/rDzuIzQsUn7RqJxvEFXISH/Y8Aotz AsUbO5rB6oUEPCTarl1iAlksIXCZTeLN/+/MEIMEJL5NPgR1qazEpgPMEHMkJQ6uuMEygVF4 ASPDKkbR1ILkguKk9CJDveLE3OLSvHS95PzcTYzAEDz971nvDsbbB6wPMSYDjZvILCWanA8M 4bySeENjE3NTY1MzI0tLS1PShJXEeeUuyQQKCaQnlqRmp6YWpBbFF5XmpBYfYmTi4JRqYDQ1 mascct1hd/jZTYF/5ZOjpzIo69UySytd/T7j39ud+Zk891/FFygm1fl8Pfvf+oTGEfO9N4Iq DC9IxatXqnzk2Lak02F5SNx6hYs+q11rPx+//PBx7m+jiWtWs/x9d3TjmiMd69kXZEkXd1Vl X+jfqO77/oJdhSDfWV5p018O+rYrtR58Oq/EUpyRaKjFXFScCADMWSutVwIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrEIsWRmVeSWpSXmKPExsVy+t9jAV1za/VAg5c7eC3e7u1kd2D0OHtn B2MAY1QDo01GamJKapFCal5yfkpmXrqtkndwvHO8qZmBoa6hpYW5kkJeYm6qrZKLT4CuW2YO 0FglhbLEnFKgUEBicbGSvh2mCaEhbroWMI0Rur4hQXA9RgZoIGENY8bt+6cYC/6qVCx928HS wPhGrouRg0NCwERi80z3LkZOIFNM4sK99WxdjFwcQgKLGCX+/9oA5Sxjkvj/tosZpIpNQFti 2/SbLCC2iICExK/+q4wgNrNAuMTffzPAbGEBT4nuO7PBbBYBVYn7u/6wg9i8QPFJq3ayQWyT k/iw5xFYnBMo3tjRDFYvJOAh0XbtEtMERt4FjAyrGEVTC5ILipPSc430ihNzi0vz0vWS83M3 MYJD/Jn0DsZVDRaHGAU4GJV4eDu81QKFWBPLiitzDzFKcDArifAaWKgHCvGmJFZWpRblxxeV 5qQWH2JMBrpqIrOUaHI+MP7ySuINjU3MTY1NLU0sTMwsSRNWEudlPPUkQEggPbEkNTs1tSC1 CGYLEwenVANjjmrjea1ZE+VMMtXEtbQmbFP0l31o2Xht7VGFPR/ZQ46VSmtrVVuHzH6QwFPg 2Wg98b9mu/iteS9M17Lu0v0Zd8xfesa7lWLH5y2uPKq/SeaousJJnU+3/htw7Ra/FbW091Ph GuPL6xZcSukJv6MS+uKB2+4DQeGTX06W0J27hlEk1cJqXpKoEktxRqKhFnNRcSIAxPlnjrUC AAA= DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: inki.dae@samsung.com, dh09.lee@samsung.com, sjg@chomium.org Subject: [U-Boot] [PATCH 10/13] video: exynos_dp: Add function to parse DP DT node X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Add function to parse the required platform data fron DP DT node and fill the edp_info structure. Signed-off-by: Ajay Kumar --- drivers/video/exynos_dp.c | 65 ++++++++++++++++++++++++++++++++++++++ drivers/video/exynos_dp_lowlevel.c | 17 ++++++++++ 2 files changed, 82 insertions(+) diff --git a/drivers/video/exynos_dp.c b/drivers/video/exynos_dp.c index 5f4f25e..87bb907 100644 --- a/drivers/video/exynos_dp.c +++ b/drivers/video/exynos_dp.c @@ -27,9 +27,13 @@ #include #include #include +#include +#include #include "exynos_dp_lowlevel.h" +DECLARE_GLOBAL_DATA_PTR; + static struct exynos_dp_platform_data *dp_pd; void __exynos_set_dp_phy(unsigned int onoff) @@ -859,6 +863,62 @@ static unsigned int exynos_dp_config_video(struct edp_device_info *edp_info) return ret; } +#ifdef CONFIG_OF_CONTROL +int exynos_dp_parse_dt(const void *blob, struct edp_device_info *edp_info) +{ + unsigned int node = fdtdec_next_compatible(blob, 0, + COMPAT_SAMSUNG_EXYNOS5_DP); + if (node <= 0) { + debug("exynos_dp: Can't get device node for dp\n"); + return -ENODEV; + } + + edp_info->disp_info.h_res = fdtdec_get_int(blob, node, + "samsung,h-res", 0); + edp_info->disp_info.h_sync_width = fdtdec_get_int(blob, node, + "samsung,h-sync-width", 0); + edp_info->disp_info.h_back_porch = fdtdec_get_int(blob, node, + "samsung,h-back-porch", 0); + edp_info->disp_info.h_front_porch = fdtdec_get_int(blob, node, + "samsung,h-front-porch", 0); + edp_info->disp_info.v_res = fdtdec_get_int(blob, node, + "samsung,v-res", 0); + edp_info->disp_info.v_sync_width = fdtdec_get_int(blob, node, + "samsung,v-sync-width", 0); + edp_info->disp_info.v_back_porch = fdtdec_get_int(blob, node, + "samsung,v-back-porch", 0); + edp_info->disp_info.v_front_porch = fdtdec_get_int(blob, node, + "samsung,v-front-porch", 0); + edp_info->disp_info.v_sync_rate = fdtdec_get_int(blob, node, + "samsung,v-sync-rate", 0); + + edp_info->lt_info.lt_status = fdtdec_get_int(blob, node, + "samsung,lt-status", 0); + + edp_info->video_info.master_mode = fdtdec_get_int(blob, node, + "samsung,master-mode", 0); + edp_info->video_info.bist_mode = fdtdec_get_int(blob, node, + "samsung,bist-mode", 0); + edp_info->video_info.bist_pattern = fdtdec_get_int(blob, node, + "samsung,bist-pattern", 0); + edp_info->video_info.h_sync_polarity = fdtdec_get_int(blob, node, + "samsung,h-sync-polarity", 0); + edp_info->video_info.v_sync_polarity = fdtdec_get_int(blob, node, + "samsung,v-sync-polarity", 0); + edp_info->video_info.interlaced = fdtdec_get_int(blob, node, + "samsung,interlaced", 0); + edp_info->video_info.color_space = fdtdec_get_int(blob, node, + "samsung,color-space", 0); + edp_info->video_info.dynamic_range = fdtdec_get_int(blob, node, + "samsung,dynamic-range", 0); + edp_info->video_info.ycbcr_coeff = fdtdec_get_int(blob, node, + "samsung,ycbcr-coeff", 0); + edp_info->video_info.color_depth = fdtdec_get_int(blob, node, + "samsung,color-depth", 0); + return 0; +} +#endif + unsigned int exynos_init_dp(void) { unsigned int ret; @@ -870,11 +930,16 @@ unsigned int exynos_init_dp(void) return -EFAULT; } +#ifdef CONFIG_OF_CONTROL + if (exynos_dp_parse_dt(gd->fdt_blob, edp_info)) + debug("unable to parse DP DT node\n"); +#else edp_info = dp_pd->edp_dev_info; if (edp_info == NULL) { debug("failed to get edp_info data.\n"); return -EFAULT; } +#endif exynos_dp_set_base_addr(); diff --git a/drivers/video/exynos_dp_lowlevel.c b/drivers/video/exynos_dp_lowlevel.c index 0be91a5..748d9b8 100644 --- a/drivers/video/exynos_dp_lowlevel.c +++ b/drivers/video/exynos_dp_lowlevel.c @@ -25,12 +25,29 @@ #include #include #include +#include +#include + +/* Declare global data pointer */ +DECLARE_GLOBAL_DATA_PTR; struct exynos_dp *dp_regs; void exynos_dp_set_base_addr(void) { +#ifdef CONFIG_OF_CONTROL + unsigned int node = fdtdec_next_compatible(gd->fdt_blob, + 0, COMPAT_SAMSUNG_EXYNOS5_DP); + if (node <= 0) + debug("exynos_dp: Can't get device node for dp\n"); + + dp_regs = (struct exynos_dp *)fdtdec_get_addr(gd->fdt_blob, + node, "reg"); + if (dp_regs == NULL) + debug("Can't get the DP base address\n"); +#else dp_regs = (struct exynos_dp *)samsung_get_base_dp(); +#endif } static void exynos_dp_enable_video_input(unsigned int enable)