From patchwork Mon Jun 3 21:05:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Opaniuk X-Patchwork-Id: 1109479 X-Patchwork-Delegate: agust@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="TFT8ScQ0"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45HnfX1KMTz9s3l for ; Tue, 4 Jun 2019 07:06:28 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id D0052C21DD9; Mon, 3 Jun 2019 21:06:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id A9723C21DE8; Mon, 3 Jun 2019 21:06:11 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5D453C21E12; Mon, 3 Jun 2019 21:06:08 +0000 (UTC) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by lists.denx.de (Postfix) with ESMTPS id B2C4CC21C57 for ; Mon, 3 Jun 2019 21:06:05 +0000 (UTC) Received: by mail-wr1-f67.google.com with SMTP id n4so10524558wrs.3 for ; Mon, 03 Jun 2019 14:06:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RJtzEWXjC/NqU0ZJmootW6gkmnr6QOxGCSyDQ3pkT08=; b=TFT8ScQ0QIepCkYqq/8QPUzaZeiXTo6T640zwyzyMz5SMf4qkhrs3cgJxzYwWGzjdW UUgRht6cvolLrzAlz1eEu/xZy7tKj/LpVdrS5fIHV3cAj966Rbc42rpjMFiRViqlvO3G Tdp3WPXJ2d+bD92/Y4BDktDvriyZ0Kjw5kICcEGWXzUxyiyVz8nhFeFeettvGpAwSZ2j 2ktG0ZNpUgBUxLsTPUx1/gEeBGaCYPBxxFfPLc9t/1tDnP9aM90IeFM/kRqpQSKdhfLQ Ni6AGDKrpf4DwOVfqcOqZGrxfaKS9dbkCQfZbW22+HV66ZtO6pXOCCv0NV04M0euUy3c 21dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=RJtzEWXjC/NqU0ZJmootW6gkmnr6QOxGCSyDQ3pkT08=; b=e7tY+GHZhd3odcEpQ7lj882o8qrOU/D9Ewj+ihHJYCFpI4pMz7MWiShg8bd9fEA2hx 5u5VTtSNMJGnAoze2b6kCuUQXJEnd04FMaF1cehYY//l8cezYDr39dJudxxBqHNZnW5Q e6WITLlbeTl5F49nFrMrLj+2j/8ezSrwRkEbkbvoEFRc4Ft7wfy0r8rKFMs0YvArOsLo kfadM9VOjfMoOUnbnTUXSTsyE1jDOlkRUNYUoAknYcnvnVPtW4UQXTf/UuwS+UkHzd1s at+2U1eZuxshnMlK15jvhbqiDy3Rews2GMlKkn4xOIRYYDFDRU97/yAWgdkVJxx5kyQD A+GA== X-Gm-Message-State: APjAAAW/ZZMQ+DcWMavyDOWZdgzs22P43mCDtRuAmoXWRIhgXIfhvvNJ s8Pm2B2PKYMJobw2/y8ARH7x7th/ X-Google-Smtp-Source: APXvYqxRakpSUG7g1iceP187RpvzKeZGyVbiUMCaa4eEyD8oSZJSjRTNhm59pUwiNNm/fr7hAafkXg== X-Received: by 2002:a5d:528b:: with SMTP id c11mr615352wrv.25.1559595964233; Mon, 03 Jun 2019 14:06:04 -0700 (PDT) Received: from localhost ([194.105.145.90]) by smtp.gmail.com with ESMTPSA id t198sm11548120wmt.2.2019.06.03.14.06.03 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jun 2019 14:06:03 -0700 (PDT) From: Igor Opaniuk To: u-boot@lists.denx.de Date: Tue, 4 Jun 2019 00:05:56 +0300 Message-Id: <20190603210601.30857-2-igor.opaniuk@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190603210601.30857-1-igor.opaniuk@gmail.com> References: <20190603210601.30857-1-igor.opaniuk@gmail.com> Cc: max.krummenacher@toradex.com, Anson.Huang@nxp.com, otavio@ossystems.com.br, marcel.ziswiler@toradex.com, rui.silva@linaro.org, marcel@ziswiler.com, uboot-imx@nxp.com Subject: [U-Boot] [RFC 1/6] video: mxsfb: change mxs_lcd_init signature X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Igor Opaniuk Provide directly framebuffer address instead of pointer to GraphicDevice struct, which will let to re-use this function in DM_VIDEO configurations. Signed-off-by: Igor Opaniuk --- drivers/video/mxsfb.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c index 02fde05908..0f3a10b0f6 100644 --- a/drivers/video/mxsfb.c +++ b/drivers/video/mxsfb.c @@ -46,8 +46,7 @@ __weak void mxsfb_system_setup(void) * le:89,ri:164,up:23,lo:10,hs:10,vs:10,sync:0,vmode:0 */ -static void mxs_lcd_init(GraphicDevice *panel, - struct ctfb_res_modes *mode, int bpp) +static void mxs_lcd_init(u32 fb_addr, struct ctfb_res_modes *mode, int bpp) { struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE; uint32_t word_len = 0, bus_width = 0; @@ -112,8 +111,8 @@ static void mxs_lcd_init(GraphicDevice *panel, writel((0 << LCDIF_VDCTRL4_DOTCLK_DLY_SEL_OFFSET) | mode->xres, ®s->hw_lcdif_vdctrl4); - writel(panel->frameAdrs, ®s->hw_lcdif_cur_buf); - writel(panel->frameAdrs, ®s->hw_lcdif_next_buf); + writel(fb_addr, ®s->hw_lcdif_cur_buf); + writel(fb_addr, ®s->hw_lcdif_next_buf); /* Flush FIFO first */ writel(LCDIF_CTRL1_FIFO_CLEAR, ®s->hw_lcdif_ctrl1_set); @@ -214,7 +213,7 @@ void *video_hw_init(void) printf("%s\n", panel.modeIdent); /* Start framebuffer */ - mxs_lcd_init(&panel, &mode, bpp); + mxs_lcd_init(panel.frameAdrs, &mode, bpp); #ifdef CONFIG_VIDEO_MXS_MODE_SYSTEM /* From patchwork Mon Jun 3 21:05:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Opaniuk X-Patchwork-Id: 1109483 X-Patchwork-Delegate: agust@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Njt38cJq"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45HnhR2T8Tz9s3l for ; Tue, 4 Jun 2019 07:08:07 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 1A9C6C21DDC; Mon, 3 Jun 2019 21:06:49 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 9B011C21DB6; Mon, 3 Jun 2019 21:06:19 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 7ECF8C21E2B; Mon, 3 Jun 2019 21:06:09 +0000 (UTC) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by lists.denx.de (Postfix) with ESMTPS id 259A1C21D65 for ; Mon, 3 Jun 2019 21:06:06 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id r18so4563659wrm.10 for ; Mon, 03 Jun 2019 14:06:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=kQ7HiIdStV6CVrNffeRd/AGKJRt0/KoKhxihBXSdvh0=; b=Njt38cJqEHC4EOuq7vYvomWANlEzXXE8Ibs8P/YlovMZJfRAmhYk7hu2zzfaf1M7UN Pf4aINMUgtdzxg7pBZ4hZM0Y5M2DKsW0K/D2vg0cdo0rUnbZ4xgX3WTyrBAGZDV0utWO hWXkVVYP9WpHwt2LACTCW4J1DhiSQSV34QTg/gHN85ytnNP0lBznXg+8WxKai+4PLjvj Fg907l65cv4trtg1ekYXsRE1UOtOmvg5CgkSEUD40Bdz9xHxcgfhONHanqKfwYA+AIHQ yVQcLyNp8yfg1AqR2OiZ95T049Awga8ohfED2lIe5Hvt2RfSzNbYhfbDXVCj5E/GrpP+ hnwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=kQ7HiIdStV6CVrNffeRd/AGKJRt0/KoKhxihBXSdvh0=; b=HL02xJbWEEVWzepuUD0JLDq7w9JEdahWmbhnco3E3tzaG4BFWx/eeQ5aKE+0zpyGj/ EEvp2KJfDgComy2xyG/khCbxrYcjPT9V3sUQLjZqYp6G1dMdnkUW6d1QvNX3kBkt5GeU WqD6gFBuyXER9MKl6xCvgWIkQOxbpwiX051GYbeNFHpKuPSQlNRKZvxEIWMUctpy9dDV k9PvDqhbe/MQmNeICyvNTZ24gyNOOYZ30ksWfYWpwejSwLPEykZ4GF+wWmySB06YK9DM tQee7VHIwD8sn8m3LF2SQ30M9dAQzbP5k3s1RIb28wOhkakgWq0byivgxzeOyAKjav2L 4HxA== X-Gm-Message-State: APjAAAXDAjXO8dOHndIHi7aeiHI+SuF8pBubsqTJU4whcelmjkhWUjiy H05NLr5EJkY94AHdl9Hal9Hw55RL X-Google-Smtp-Source: APXvYqyRP1theOSr8dwi/ElslzQY4zanS+xrNaFa6GGoIiha1NGkY5rvI1NQ6Itt1HcVMa3T8sGgqw== X-Received: by 2002:adf:8183:: with SMTP id 3mr3939071wra.181.1559595965550; Mon, 03 Jun 2019 14:06:05 -0700 (PDT) Received: from localhost ([194.105.145.90]) by smtp.gmail.com with ESMTPSA id b2sm15888485wrt.20.2019.06.03.14.06.04 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jun 2019 14:06:04 -0700 (PDT) From: Igor Opaniuk To: u-boot@lists.denx.de Date: Tue, 4 Jun 2019 00:05:57 +0300 Message-Id: <20190603210601.30857-3-igor.opaniuk@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190603210601.30857-1-igor.opaniuk@gmail.com> References: <20190603210601.30857-1-igor.opaniuk@gmail.com> Cc: max.krummenacher@toradex.com, Anson.Huang@nxp.com, otavio@ossystems.com.br, marcel.ziswiler@toradex.com, rui.silva@linaro.org, marcel@ziswiler.com, uboot-imx@nxp.com Subject: [U-Boot] [RFC 2/6] video: mxsfb: reorder includes X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Igor Opaniuk Follow alphabetical order of includes, which simplifies detecting duplicate includes etc. Signed-off-by: Igor Opaniuk --- drivers/video/mxsfb.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c index 0f3a10b0f6..059fbf2b05 100644 --- a/drivers/video/mxsfb.c +++ b/drivers/video/mxsfb.c @@ -5,16 +5,15 @@ * Copyright (C) 2011-2013 Marek Vasut */ #include +#include #include #include -#include #include +#include #include -#include -#include - #include +#include #include "videomodes.h" From patchwork Mon Jun 3 21:05:58 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Opaniuk X-Patchwork-Id: 1109482 X-Patchwork-Delegate: agust@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="JxvrmGLg"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45HnhM653wz9s3l for ; Tue, 4 Jun 2019 07:08:03 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 85410C21D4A; Mon, 3 Jun 2019 21:07:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 119DCC21E0F; Mon, 3 Jun 2019 21:06:23 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id B8991C21E13; Mon, 3 Jun 2019 21:06:10 +0000 (UTC) Received: from mail-wr1-f67.google.com (mail-wr1-f67.google.com [209.85.221.67]) by lists.denx.de (Postfix) with ESMTPS id 865BDC21D4A for ; Mon, 3 Jun 2019 21:06:07 +0000 (UTC) Received: by mail-wr1-f67.google.com with SMTP id e16so5319049wrn.1 for ; Mon, 03 Jun 2019 14:06:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=DgI7vV3tYJdWGt2bKC6aDZLeDnNevs+T7Na/YIgUfo0=; b=JxvrmGLg7YthH/qewlaaBT9Hg92haPvPNmXYtyhY3s1diec9UVpG7UKL0MIr9X1Bl4 8OsNfumPgeAkHHyb0hpZBSB1NLH5G+sDnuA/bKH54ugs2bQ6MNFQJKJfTTKiFah1NiKu KujL/ZsPXaFJC3e7rUukPPy3vgeHYfHwINqC/b8W56LfDv4MehSyk5QB3csOEx6Ote2p Cc3Crnqe3pHvZiCWJ7xBKCS+QoMO0XeLlgenIgH9kxTuYjIJgvnOVFWkbYGbErysiwDj 05aBJv8WrlPK6kvih+M2y2jW3tbrr0yO+/8uU84nuvaHDCqPA62sMCm9eh/aCTQkv9ZD iBvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=DgI7vV3tYJdWGt2bKC6aDZLeDnNevs+T7Na/YIgUfo0=; b=Cg08RC9/Lm7VTFFU+z+T8tJ0DiuWMbha+Jyh/Cbh6FnziiydPaQaNpGIB7VRcogZxO tIlD/tr1QSAzfri0WEMdf4YHZjgUlNWy2+LprkaYClTAlhTBJxCUC2srRe2Nxyw+ApdW nadk0YyoHktVhyB3rFiziOQgaB07GwZUMwgDxSGbzNOE1ngNRNd2sbq09f5GUkeF/f6L q44FReCUcGS9z5XnGY6O5Ep7nbqxuPWbD1srGDAgMd2XuFUM7dU8Q9r83r+/ejP62hR7 cELY2wwi9hwF6DyeC27DRvvFM44hTHCKPPrOxg0IyUv4W/w0MYx0aZ8tbEMSbxnwrgQp 58hg== X-Gm-Message-State: APjAAAV+Z8EGUfhSQzvjjmK64jTZV8hR79iDHiRXCc5nlr5yQpZlL/hQ BL8VlUI20IBQAZXZnH3FFFXa6wzf X-Google-Smtp-Source: APXvYqzeCRvhr1JSPHwMSmBrGndom+o+v598Whs5m3qCgTFMz4qvNhz8rZbXM+18NrSSVAztc69klA== X-Received: by 2002:adf:bac5:: with SMTP id w5mr6549746wrg.124.1559595966920; Mon, 03 Jun 2019 14:06:06 -0700 (PDT) Received: from localhost ([194.105.145.90]) by smtp.gmail.com with ESMTPSA id e17sm2928541wrt.95.2019.06.03.14.06.06 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jun 2019 14:06:06 -0700 (PDT) From: Igor Opaniuk To: u-boot@lists.denx.de Date: Tue, 4 Jun 2019 00:05:58 +0300 Message-Id: <20190603210601.30857-4-igor.opaniuk@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190603210601.30857-1-igor.opaniuk@gmail.com> References: <20190603210601.30857-1-igor.opaniuk@gmail.com> Cc: max.krummenacher@toradex.com, Anson.Huang@nxp.com, otavio@ossystems.com.br, marcel.ziswiler@toradex.com, rui.silva@linaro.org, marcel@ziswiler.com, uboot-imx@nxp.com Subject: [U-Boot] [RFC 3/6] video: mxsfb: refactor video_hw_init() X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Igor Opaniuk Refactor video_hw_init() function, and introduce an independent function for the common procedure of initialization. Currently video_hw_init() is only in charge of parsing configuration from env("videomode") and filling struct GraphicPanel, and new mxs_probe_common() does hw specific initialization (invocation of mxs_lcd_init() etc.) Signed-off-by: Igor Opaniuk --- drivers/video/mxsfb.c | 68 ++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 27 deletions(-) diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c index 059fbf2b05..6e269409d6 100644 --- a/drivers/video/mxsfb.c +++ b/drivers/video/mxsfb.c @@ -128,6 +128,37 @@ static void mxs_lcd_init(u32 fb_addr, struct ctfb_res_modes *mode, int bpp) writel(LCDIF_CTRL_RUN, ®s->hw_lcdif_ctrl_set); } +static int mxs_probe_common(struct ctfb_res_modes *mode, int bpp, void *fb) +{ + /* Start framebuffer */ + mxs_lcd_init((u32)fb, mode, bpp); + +#ifdef CONFIG_VIDEO_MXS_MODE_SYSTEM + /* + * If the LCD runs in system mode, the LCD refresh has to be triggered + * manually by setting the RUN bit in HW_LCDIF_CTRL register. To avoid + * having to set this bit manually after every single change in the + * framebuffer memory, we set up specially crafted circular DMA, which + * sets the RUN bit, then waits until it gets cleared and repeats this + * infinitelly. This way, we get smooth continuous updates of the LCD. + */ + struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE; + + memset(&desc, 0, sizeof(struct mxs_dma_desc)); + desc.address = (dma_addr_t)&desc; + desc.cmd.data = MXS_DMA_DESC_COMMAND_NO_DMAXFER | MXS_DMA_DESC_CHAIN | + MXS_DMA_DESC_WAIT4END | + (1 << MXS_DMA_DESC_PIO_WORDS_OFFSET); + desc.cmd.pio_words[0] = readl(®s->hw_lcdif_ctrl) | LCDIF_CTRL_RUN; + desc.cmd.next = (uint32_t)&desc.cmd; + + /* Execute the DMA chain. */ + mxs_dma_circ_start(MXS_DMA_CHANNEL_AHB_APBH_LCDIF, &desc); +#endif + + return 0; +} + void lcdif_power_down(void) { struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE; @@ -151,8 +182,9 @@ void lcdif_power_down(void) void *video_hw_init(void) { int bpp = -1; + int ret = 0; char *penv; - void *fb; + void *fb = NULL; struct ctfb_res_modes mode; puts("Video: "); @@ -167,8 +199,7 @@ void *video_hw_init(void) bpp = video_get_params(&mode, penv); /* fill in Graphic device struct */ - sprintf(panel.modeIdent, "%dx%dx%d", - mode.xres, mode.yres, bpp); + sprintf(panel.modeIdent, "%dx%dx%d", mode.xres, mode.yres, bpp); panel.winSizeX = mode.xres; panel.winSizeY = mode.yres; @@ -211,31 +242,14 @@ void *video_hw_init(void) printf("%s\n", panel.modeIdent); - /* Start framebuffer */ - mxs_lcd_init(panel.frameAdrs, &mode, bpp); - -#ifdef CONFIG_VIDEO_MXS_MODE_SYSTEM - /* - * If the LCD runs in system mode, the LCD refresh has to be triggered - * manually by setting the RUN bit in HW_LCDIF_CTRL register. To avoid - * having to set this bit manually after every single change in the - * framebuffer memory, we set up specially crafted circular DMA, which - * sets the RUN bit, then waits until it gets cleared and repeats this - * infinitelly. This way, we get smooth continuous updates of the LCD. - */ - struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE; + ret = mxs_probe_common(&mode, bpp, fb); + if (ret) + goto dealloc_fb; - memset(&desc, 0, sizeof(struct mxs_dma_desc)); - desc.address = (dma_addr_t)&desc; - desc.cmd.data = MXS_DMA_DESC_COMMAND_NO_DMAXFER | MXS_DMA_DESC_CHAIN | - MXS_DMA_DESC_WAIT4END | - (1 << MXS_DMA_DESC_PIO_WORDS_OFFSET); - desc.cmd.pio_words[0] = readl(®s->hw_lcdif_ctrl) | LCDIF_CTRL_RUN; - desc.cmd.next = (uint32_t)&desc.cmd; + return (void *)&panel; - /* Execute the DMA chain. */ - mxs_dma_circ_start(MXS_DMA_CHANNEL_AHB_APBH_LCDIF, &desc); -#endif +dealloc_fb: + free(fb); - return (void *)&panel; + return NULL; } From patchwork Mon Jun 3 21:05:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Opaniuk X-Patchwork-Id: 1109480 X-Patchwork-Delegate: agust@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="tkVQzAQn"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45HngD4pyLz9s3l for ; Tue, 4 Jun 2019 07:07:04 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 3716BC21DB6; Mon, 3 Jun 2019 21:06:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 34840C21E0B; Mon, 3 Jun 2019 21:06:19 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5BF73C21E26; Mon, 3 Jun 2019 21:06:12 +0000 (UTC) Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by lists.denx.de (Postfix) with ESMTPS id B4384C21DFA for ; Mon, 3 Jun 2019 21:06:08 +0000 (UTC) Received: by mail-wm1-f65.google.com with SMTP id g135so9462418wme.4 for ; Mon, 03 Jun 2019 14:06:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7pIikPnxJPtkF3EDad+MCOfGhUQPhpQWkCKBYMqKvFg=; b=tkVQzAQnl5QhbL8tJ7FJHr9K4A7z0It25A7aTwpOFev9RBgjs1+sjLt9yJ0e/VRRwK AyWgbpcaU1K607P2vmX1ZSF7cf5XofkZQgB8l2iUj+H8dHqt5XaRlmX9m0v+Tc3LSWWS e1Z2/tk/0MBVQIKU/SViZS/7hRlzYGAhItMZU3ZS0JJlF4RvpunQHOt5AmE6BFNUfJqd g0eziA1CPq8LrSmteYwkUXjf8rJUv7+k7Lbs9x7QsDImnjDsMK+Gne+AWj3PKvZZdjAu LPS/G8KR5Hg8sW+OzIRnmAXE8C0xBbCsDIWjBvOmzcPMcbPaJ2jFVeyDBpJ/OFNSJVB7 V+uA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7pIikPnxJPtkF3EDad+MCOfGhUQPhpQWkCKBYMqKvFg=; b=gvK3p7TOLDyTEiSw6DkvNywRELnfJV+FjVT9camWIsChHQ8ptEXtMRQqNU148McuXY 4SUXGFvFiR7/n+PyZVDTmvJXEHFbt0lc6IZ4DG+xQ7DBXiyd7Fs6O1QPqfvPcGdWvEhs rmLb8wFYgBKCHNXo1EDSz8EGR5saeq84nf1rMPSdtlQKOusPw11sDkWvhj5OnuFXGztl SMt3ES/uC4xmeRyJLGeOhE2cmYH5A/PIcEIOq+Pq4iPJyKiNr96m/oRbvrVtqRauNYDp x53BvCYpKKy0Dir1LME09wcuBIKyj8Nk+czGVYBW9qF4rd3wKDeKghQP2JfMJ1BWBupI L+Yw== X-Gm-Message-State: APjAAAWium7Y6sMyw/iQkJNyFLbDFN429hupQjSaDPxaFJa6NNCQVSF7 LX8ZytSxyyf9jRPURiRACpXNqris X-Google-Smtp-Source: APXvYqz6HWyO7Hk3RDEkidR8oVRmEAlv7jUSVY3blK4GPL3XSArd09E5ZhD5WPADqgWTs++9SgdXRQ== X-Received: by 2002:a05:600c:228b:: with SMTP id 11mr15710822wmf.26.1559595968158; Mon, 03 Jun 2019 14:06:08 -0700 (PDT) Received: from localhost ([194.105.145.90]) by smtp.gmail.com with ESMTPSA id 135sm4653128wmb.28.2019.06.03.14.06.07 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jun 2019 14:06:07 -0700 (PDT) From: Igor Opaniuk To: u-boot@lists.denx.de Date: Tue, 4 Jun 2019 00:05:59 +0300 Message-Id: <20190603210601.30857-5-igor.opaniuk@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190603210601.30857-1-igor.opaniuk@gmail.com> References: <20190603210601.30857-1-igor.opaniuk@gmail.com> Cc: max.krummenacher@toradex.com, Anson.Huang@nxp.com, otavio@ossystems.com.br, marcel.ziswiler@toradex.com, rui.silva@linaro.org, marcel@ziswiler.com, uboot-imx@nxp.com Subject: [U-Boot] [RFC 4/6] video: mxsfb: add DM_VIDEO support X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Igor Opaniuk Extend the driver to build with DM_VIDEO enabled. DTS files must additionally include 'u-boot,dm-pre-reloc' property in soc and child nodes to enable driver binding to mxsfb device. Signed-off-by: Igor Opaniuk --- arch/arm/mach-imx/cpu.c | 2 +- arch/arm/mach-imx/mx7/soc.c | 2 +- drivers/video/mxsfb.c | 145 +++++++++++++++++++++++++++++++-- include/configs/colibri_imx7.h | 2 +- 4 files changed, 139 insertions(+), 12 deletions(-) diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c index 6b83f92662..64a0670fcf 100644 --- a/arch/arm/mach-imx/cpu.c +++ b/arch/arm/mach-imx/cpu.c @@ -298,7 +298,7 @@ void arch_preboot_os(void) /* disable video before launching O/S */ ipuv3_fb_shutdown(); #endif -#if defined(CONFIG_VIDEO_MXS) +#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_DM_VIDEO) lcdif_power_down(); #endif } diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 7cfdff0981..4a914fca5e 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -369,7 +369,7 @@ void s_init(void) void reset_misc(void) { #ifndef CONFIG_SPL_BUILD -#ifdef CONFIG_VIDEO_MXS +#if defined(CONFIG_VIDEO_MXS) && !defined(CONFIG_DM_VIDEO) lcdif_power_down(); #endif #endif diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c index 6e269409d6..f02ba20138 100644 --- a/drivers/video/mxsfb.c +++ b/drivers/video/mxsfb.c @@ -5,8 +5,10 @@ * Copyright (C) 2011-2013 Marek Vasut */ #include +#include #include #include +#include #include #include @@ -18,8 +20,11 @@ #include "videomodes.h" #define PS2KHZ(ps) (1000000000UL / (ps)) +#define HZ2PS(hz) (1000000000UL / ((hz) / 1000)) + +#define BITS_PP 18 +#define BYTES_PP 4 -static GraphicDevice panel; struct mxs_dma_desc desc; /** @@ -128,10 +133,10 @@ static void mxs_lcd_init(u32 fb_addr, struct ctfb_res_modes *mode, int bpp) writel(LCDIF_CTRL_RUN, ®s->hw_lcdif_ctrl_set); } -static int mxs_probe_common(struct ctfb_res_modes *mode, int bpp, void *fb) +static int mxs_probe_common(struct ctfb_res_modes *mode, int bpp, u32 fb) { /* Start framebuffer */ - mxs_lcd_init((u32)fb, mode, bpp); + mxs_lcd_init(fb, mode, bpp); #ifdef CONFIG_VIDEO_MXS_MODE_SYSTEM /* @@ -159,16 +164,16 @@ static int mxs_probe_common(struct ctfb_res_modes *mode, int bpp, void *fb) return 0; } -void lcdif_power_down(void) +static int mxs_remove_common(u32 fb) { struct mxs_lcdif_regs *regs = (struct mxs_lcdif_regs *)MXS_LCDIF_BASE; int timeout = 1000000; - if (!panel.frameAdrs) - return; + if (!fb) + return -EINVAL; - writel(panel.frameAdrs, ®s->hw_lcdif_cur_buf_reg); - writel(panel.frameAdrs, ®s->hw_lcdif_next_buf_reg); + writel(fb, ®s->hw_lcdif_cur_buf_reg); + writel(fb, ®s->hw_lcdif_next_buf_reg); writel(LCDIF_CTRL1_VSYNC_EDGE_IRQ, ®s->hw_lcdif_ctrl1_clr); while (--timeout) { if (readl(®s->hw_lcdif_ctrl1_reg) & @@ -177,6 +182,17 @@ void lcdif_power_down(void) udelay(1); } mxs_reset_block((struct mxs_register_32 *)®s->hw_lcdif_ctrl_reg); + + return 0; +} + +#ifndef CONFIG_DM_VIDEO + +static GraphicDevice panel; + +void lcdif_power_down(void) +{ + mxs_remove_common(panel.frameAdrs); } void *video_hw_init(void) @@ -242,7 +258,7 @@ void *video_hw_init(void) printf("%s\n", panel.modeIdent); - ret = mxs_probe_common(&mode, bpp, fb); + ret = mxs_probe_common(&mode, bpp, (u32)fb); if (ret) goto dealloc_fb; @@ -253,3 +269,114 @@ dealloc_fb: return NULL; } +#else /* ifndef CONFIG_DM_VIDEO */ + +static int mxs_video_probe(struct udevice *dev) +{ + struct video_uc_platdata *plat = dev_get_uclass_platdata(dev); + struct video_priv *uc_priv = dev_get_uclass_priv(dev); + + struct ctfb_res_modes mode; + struct display_timing timings; + int bpp = -1; + u32 fb_start, fb_end; + int ret; + + debug("%s() plat: base 0x%lx, size 0x%x\n", + __func__, plat->base, plat->size); + + ret = ofnode_decode_display_timing(dev_ofnode(dev), 0, &timings); + if (ret) { + dev_err(dev, "failed to get any display timings\n"); + return -EINVAL; + } + + mode.xres = timings.hactive.typ; + mode.yres = timings.vactive.typ; + mode.left_margin = timings.hback_porch.typ; + mode.right_margin = timings.hfront_porch.typ; + mode.upper_margin = timings.vback_porch.typ; + mode.lower_margin = timings.vfront_porch.typ; + mode.hsync_len = timings.hsync_len.typ; + mode.vsync_len = timings.vsync_len.typ; + mode.pixclock = HZ2PS(timings.pixelclock.typ); + + bpp = BITS_PP; + + ret = mxs_probe_common(&mode, bpp, plat->base); + if (ret) + return ret; + + switch (bpp) { + case 24: + case 18: + uc_priv->bpix = VIDEO_BPP32; + break; + case 16: + uc_priv->bpix = VIDEO_BPP16; + break; + case 8: + uc_priv->bpix = VIDEO_BPP8; + break; + default: + dev_err(dev, "invalid bpp specified (bpp = %i)\n", bpp); + return -EINVAL; + } + + uc_priv->xsize = mode.xres; + uc_priv->ysize = mode.yres; + + /* Enable dcache for the frame buffer */ + fb_start = plat->base & ~(MMU_SECTION_SIZE - 1); + fb_end = plat->base + plat->size; + fb_end = ALIGN(fb_end, 1 << MMU_SECTION_SHIFT); + mmu_set_region_dcache_behaviour(fb_start, fb_end - fb_start, + DCACHE_WRITEBACK); + video_set_flush_dcache(dev, true); + + return ret; +} + +static int mxs_video_bind(struct udevice *dev) +{ + struct video_uc_platdata *plat = dev_get_uclass_platdata(dev); + struct display_timing timings; + int ret; + + ret = ofnode_decode_display_timing(dev_ofnode(dev), 0, &timings); + if (ret) { + dev_err(dev, "failed to get any display timings\n"); + return -EINVAL; + } + + plat->size = timings.hactive.typ * timings.vactive.typ * BYTES_PP; + + return 0; +} + +static int mxs_video_remove(struct udevice *dev) +{ + struct video_uc_platdata *plat = dev_get_uclass_platdata(dev); + + mxs_remove_common(plat->base); + + return 0; +} + +static const struct udevice_id mxs_video_ids[] = { + { .compatible = "fsl,imx23-lcdif" }, + { .compatible = "fsl,imx28-lcdif" }, + { .compatible = "fsl,imx7ulp-lcdif" }, + { /* sentinel */ } +}; + +U_BOOT_DRIVER(mxs_video) = { + .name = "mxs_video", + .id = UCLASS_VIDEO, + .of_match = mxs_video_ids, + .bind = mxs_video_bind, + .probe = mxs_video_probe, + .remove = mxs_video_remove, + .flags = DM_FLAG_PRE_RELOC, +}; +#endif /* ifndef CONFIG_DM_VIDEO */ diff --git a/include/configs/colibri_imx7.h b/include/configs/colibri_imx7.h index 7dfc92c085..c3b353b2c2 100644 --- a/include/configs/colibri_imx7.h +++ b/include/configs/colibri_imx7.h @@ -225,7 +225,7 @@ #define CONFIG_SYS_DFU_DATA_BUF_SIZE SZ_16M #define DFU_DEFAULT_POLL_TIMEOUT 300 -#ifdef CONFIG_VIDEO +#if defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO) #define CONFIG_VIDEO_MXS #define CONFIG_VIDEO_LOGO #define CONFIG_SPLASH_SCREEN From patchwork Mon Jun 3 21:06:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Opaniuk X-Patchwork-Id: 1109484 X-Patchwork-Delegate: agust@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Xj37MJm1"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45Hnjc715Hz9s3l for ; Tue, 4 Jun 2019 07:09:08 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id B0CE2C21DF8; Mon, 3 Jun 2019 21:07:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 1CFC5C21D72; Mon, 3 Jun 2019 21:06:40 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id BB216C21D65; Mon, 3 Jun 2019 21:06:13 +0000 (UTC) Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by lists.denx.de (Postfix) with ESMTPS id EFBB5C21DF3 for ; Mon, 3 Jun 2019 21:06:09 +0000 (UTC) Received: by mail-wr1-f68.google.com with SMTP id n9so1142618wru.0 for ; Mon, 03 Jun 2019 14:06:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2HKSiR+qjA5XAvcHNN0BOji4jSfo8D3lxZmkPLhDLZY=; b=Xj37MJm1MMBDEuzEJWX4R7a2c82NBTSJbh+LptRc6k/jcKF3eb2KCjMNOrD0i7q8WE SkLchylkse3Ogc8TsoB85KJOBYqA3c82FcwY0SEx1tEd5hwcWge0jAv5sG/XLtP7Yx2t LB3ykrY70R7W3plXkbOmlBGb9FCZhqx2ts7L+HLsUIHHwToR6NqaG57Eijw4eZDi4tpQ waxzPhUms/iBBqBRzW+CIeZ6r6ouZIOdCQods54rWKE0csMi8ZKcUUdCU0OCHrCDrmSE IglG7euLqeVIu9YkoBhszLURvpFbCYP/rpirdXrYh4xkQiabkvIB7kmVCk5vxAmiATxp ru6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2HKSiR+qjA5XAvcHNN0BOji4jSfo8D3lxZmkPLhDLZY=; b=fC/63Arn0YZcRfs6CPnxIeOY854zR9vuCnR2sL+xK87bRW3mRpbJAEsNtn+PDEqYom UGHDMI3cqYWUIXBjMo+gRUnKehpKTAuFQkj3BmzDPNVSJyhkmVETtSX26NlRaYw2INxx 4nWdJsJzEF78oA6/vKLN06LAwNdcxX2yKF/h+1wYHF7+gR4c8QIsgYkpYM6hSFI0JvwK b/+Nnxpr3CuXmWA3T1MFpY9fhdhhx2/x4tPrlV0wHPT8O+5nEUscAl3ENXdmc71g3251 su3cX/wmV7krDLFngrMvavWtnX+yPQlc9NqUgFjMo0jggEolcFgtsZDgukOIa8MXHXXR JSUw== X-Gm-Message-State: APjAAAUdLA5HQ72SWLxbptzYjhDr4OimycqEgt+SCV4/3Fc0r9MWhGIn NLaD2B1czEiFlVM3ZnAyiutelmnH X-Google-Smtp-Source: APXvYqxI4VT/+7o74MstVlQPbPkxQpUeq+IAUyi2EfKT0ysdYaG+eZ6GExsTh0D0u68lDKi6uke1vg== X-Received: by 2002:adf:dd52:: with SMTP id u18mr3899530wrm.193.1559595969419; Mon, 03 Jun 2019 14:06:09 -0700 (PDT) Received: from localhost ([194.105.145.90]) by smtp.gmail.com with ESMTPSA id n5sm16756312wrj.27.2019.06.03.14.06.08 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jun 2019 14:06:08 -0700 (PDT) From: Igor Opaniuk To: u-boot@lists.denx.de Date: Tue, 4 Jun 2019 00:06:00 +0300 Message-Id: <20190603210601.30857-6-igor.opaniuk@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190603210601.30857-1-igor.opaniuk@gmail.com> References: <20190603210601.30857-1-igor.opaniuk@gmail.com> Cc: max.krummenacher@toradex.com, Anson.Huang@nxp.com, otavio@ossystems.com.br, marcel.ziswiler@toradex.com, rui.silva@linaro.org, marcel@ziswiler.com, uboot-imx@nxp.com Subject: [U-Boot] [RFC 5/6] ARM: dts: colibri_imx7: Add lcdif node X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Igor Opaniuk Extend lcdif DT node with proper display-timings for mxsfb driver. Signed-off-by: Igor Opaniuk --- arch/arm/dts/imx7-colibri-emmc.dts | 2 ++ arch/arm/dts/imx7-colibri.dtsi | 28 ++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/arch/arm/dts/imx7-colibri-emmc.dts b/arch/arm/dts/imx7-colibri-emmc.dts index efd600091d..8db2a62707 100644 --- a/arch/arm/dts/imx7-colibri-emmc.dts +++ b/arch/arm/dts/imx7-colibri-emmc.dts @@ -11,8 +11,10 @@ compatible = "toradex,imx7d-colibri-emmc", "fsl,imx7d"; aliases { + u-boot,dm-pre-reloc; mmc0 = &usdhc3; mmc1 = &usdhc1; + display1 = &lcdif; }; chosen { diff --git a/arch/arm/dts/imx7-colibri.dtsi b/arch/arm/dts/imx7-colibri.dtsi index a85702f519..81717c233d 100644 --- a/arch/arm/dts/imx7-colibri.dtsi +++ b/arch/arm/dts/imx7-colibri.dtsi @@ -111,3 +111,31 @@ >; }; }; + +&lcdif { + u-boot,dm-pre-reloc; + status = "okay"; + + display-timings { + native-mode = <&timing_vga>; + + /* Standard VGA timing */ + timing_vga: 640x480 { + u-boot,dm-pre-reloc; + clock-frequency = <25175000>; + hactive = <640>; + vactive = <480>; + hback-porch = <48>; + hfront-porch = <16>; + vback-porch = <33>; + vfront-porch = <10>; + hsync-len = <96>; + vsync-len = <2>; + + de-active = <1>; + hsync-active = <0>; + vsync-active = <0>; + pixelclk-active = <0>; + }; + }; +}; From patchwork Mon Jun 3 21:06:01 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Igor Opaniuk X-Patchwork-Id: 1109485 X-Patchwork-Delegate: agust@denx.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="fTY8LLar"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 45Hnjl6FCPz9s5c for ; Tue, 4 Jun 2019 07:09:15 +1000 (AEST) Received: by lists.denx.de (Postfix, from userid 105) id 5F8AFC21DB5; Mon, 3 Jun 2019 21:07:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, RCVD_IN_MSPIKE_H2, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 8DB83C21C93; Mon, 3 Jun 2019 21:06:38 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 5C777C21DD3; Mon, 3 Jun 2019 21:06:14 +0000 (UTC) Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by lists.denx.de (Postfix) with ESMTPS id 444FAC21E16 for ; Mon, 3 Jun 2019 21:06:11 +0000 (UTC) Received: by mail-wm1-f67.google.com with SMTP id 16so8233833wmg.5 for ; Mon, 03 Jun 2019 14:06:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ITDseqVh0a/KNp9YpfLG1AQgzd0xenO6FiBUaSrtpSk=; b=fTY8LLar5PPqaqO0lYRCWe330M1JAgCQ5L35+N8klrRE4K4W2MmTWO7ggB5s/T3Alq S9PZGmiXHyEas+M4mohCctgs7NOLvnXizg7IqbbUZcbolMa/stLFoTaITx/YvxgbPAIl ru3AP7NK8nm1bZpSc7dnnQ/MebrKZ/59KgjQX2RabUSyjf/ZyQvajo8qJpjXB919kocn Oftch/fx5ofjQgBABG4eyWH8OHFFO6aL3/MfurHLoJ+2ata0l1E7/pHaa1Ven6enk3So YRj3RPosaFrxtr3VG7T6nilMwMRa89vyQJd1kJphePT0NZ/rfVmszZd88IiN1TyvdSda vY4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ITDseqVh0a/KNp9YpfLG1AQgzd0xenO6FiBUaSrtpSk=; b=smFfrF1hHGWdwd66QYrZvJB4LLD5NrqjafPJhDQ46Qaxz+CN4ok1MRlMFdEc94Hd/w M8sCiRCuFT+zOCBpG2h32zT9+FI1HKm2LODMbkpV3PxT/ocrcl6nBOaOmCqYMDdHGQ7S 0sm+Lim9+EUWHVPX/H2K6F9/yBUVEEgPOLlCzNjbaIZw6RWUH7Mx01EEoPYNxiII5L8a owHwsoI+3y6KphQfQcMfGGHGaBKQ83tUnSe+3Du9qi9eZVhFCcaB/YjL9rLFGT9bU2Ju 68RWrNdDBGNFXP0JjxI7FahgHV021go2cgWupooiFK+BTwxpalal/Nx9rtztQN0jyTsO 1RNw== X-Gm-Message-State: APjAAAWSWpOcUVxeZ8GwyDe984wkGpMJj0qqhqhq53q7cKh4f4xotyg3 3Yy9qFlNVZojvGJXBbHeSfPChgQf X-Google-Smtp-Source: APXvYqz+PtSxx7Cv8MY8yYVvf7itRtDe+OikIZviRWqh44c0VDQ1uCyiJfL4i81B4drhaGaMaU6YRQ== X-Received: by 2002:a1c:a648:: with SMTP id p69mr3506352wme.155.1559595970715; Mon, 03 Jun 2019 14:06:10 -0700 (PDT) Received: from localhost ([194.105.145.90]) by smtp.gmail.com with ESMTPSA id u5sm14073187wmc.32.2019.06.03.14.06.09 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 03 Jun 2019 14:06:10 -0700 (PDT) From: Igor Opaniuk To: u-boot@lists.denx.de Date: Tue, 4 Jun 2019 00:06:01 +0300 Message-Id: <20190603210601.30857-7-igor.opaniuk@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190603210601.30857-1-igor.opaniuk@gmail.com> References: <20190603210601.30857-1-igor.opaniuk@gmail.com> Cc: max.krummenacher@toradex.com, Anson.Huang@nxp.com, otavio@ossystems.com.br, marcel.ziswiler@toradex.com, rui.silva@linaro.org, marcel@ziswiler.com, uboot-imx@nxp.com Subject: [U-Boot] [RFC 6/6] colibri_imx7_emmc: enable DM_VIDEO X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" From: Igor Opaniuk Enable DM_VIDEO for Colibri iMX7 eMMC version. Signed-off-by: Igor Opaniuk --- configs/colibri_imx7_emmc_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/colibri_imx7_emmc_defconfig b/configs/colibri_imx7_emmc_defconfig index f35cabaed6..392d4ab8d0 100644 --- a/configs/colibri_imx7_emmc_defconfig +++ b/configs/colibri_imx7_emmc_defconfig @@ -63,6 +63,6 @@ CONFIG_USB_GADGET_VENDOR_NUM=0x1b67 CONFIG_USB_GADGET_PRODUCT_NUM=0x4000 CONFIG_CI_UDC=y CONFIG_USB_GADGET_DOWNLOAD=y -CONFIG_VIDEO=y +CONFIG_DM_VIDEO=y CONFIG_FAT_WRITE=y CONFIG_OF_LIBFDT_OVERLAY=y