From patchwork Tue Mar 28 00:40:50 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Longerbeam X-Patchwork-Id: 9647959 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E677F602C8 for ; Tue, 28 Mar 2017 01:05:29 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D6A5E27B2F for ; Tue, 28 Mar 2017 01:05:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CAF4827F80; Tue, 28 Mar 2017 01:05:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 82DB627B2F for ; Tue, 28 Mar 2017 01:05:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=bkzYRMenWWDneseNYk70vtBQFbroZxidZWPcxJkcRMI=; b=V15W6DTMUz05oARAgTqyEYpFXk X4jqpwUEzmYu8C7WaJTs7kYdOsiQeKHurqRo22HH94liv+idj8midkdtKQTeSnm6ko+BKQXZsKdnv Zj0fHCFmCc76yITm36kXFTXi1jFnVQIC5FpQb0FvC4RHM2Kx6em3JJnPaVe/rd5n70gt1bZE9Df4Z PqfKiD0ogIQxzDkj3MwoHwUm37nTppoOXBxJdI3ojBcC3gfgzqz89ghYCmKWFlA6/o55soKNwV1Dl xOWSAAprUKt+FXYDr2jB4ifkgWCjOzkqyXanW1UVs+9fto43ggM3GVQovwjPwB8dWaTKc0Jhy/OWr l0WL+Htg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1csfZc-0002Pq-UK; Tue, 28 Mar 2017 01:05:24 +0000 Received: from casper.infradead.org ([2001:770:15f::2]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1csfUl-0006Z0-Va for linux-arm-kernel@bombadil.infradead.org; Tue, 28 Mar 2017 01:00:24 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=References:In-Reply-To:Message-Id:Date: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=kUT4bxVrpIgoXS4WFaUHHfeiL/fVwT/baXA343BAGPs=; b=nYXFvk3p9CAatLwSsRIC75wEM yeQEb6TC8ii0hNxMKkkHRR/oeaUlFb5ZwYFjVjQ6PD+yoYblPbXL+zHalTspTp9ZXrOB4qswNMk+C QloTd1BGInvVeC/KSAHwOgIf3ou6JpkErGARt4RhKpex+js/IpyJ1kpHgygR6TBQwCDLvDP0L0auY t5nFuSQkT9AYi6l3zWdTdT4rOW5sOjUm17KAjxygNe27NejLco+nBrqgOhIMqgsx7GYgm5/1RdHP/ 2iWLhKyxTAl+GVMspTXGCj7FHdMbaJMzDKmM+9/ppTu04UNi8ESG9+V18aKWezM16vm7KRuUVNF3k vEu3ue0hw==; Received: from mail-pg0-x244.google.com ([2607:f8b0:400e:c05::244]) by casper.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1csfDn-0004MF-4j for linux-arm-kernel@lists.infradead.org; Tue, 28 Mar 2017 00:42:52 +0000 Received: by mail-pg0-x244.google.com with SMTP id 79so16994639pgf.0 for ; Mon, 27 Mar 2017 17:42:31 -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=kUT4bxVrpIgoXS4WFaUHHfeiL/fVwT/baXA343BAGPs=; b=l7/kOhhwy5WI9NkIAjNRFF2jGR882pKXe1ewpHj9Ik/5v5L4CFe8qT7kKyyS+yafIE gjVwv+OjeRHddYX2QXjHce6+61QWYonqCfQ9Y7Ulw+GB1XNQ0Q9s4tmS+2F230ZYWXgD tbHcqNquvvozCswuiUebDEOebSjqZpGIRNLvmPujhVcygVpwdUJTCOACVf7J1hWd014G kpuU9SLAtPQ+3w4vgKdLMfqR463rKzwV3/61fOVK5gg34vCFlM6t8NxBlnPMAEn/Ri3Y 5szUI14Tfxld4IjHT67c4E/dQdx7B5jmmfj3vqBzsEosaE09Nnb1dpq2gJ/y7mNrUj9e PRdg== 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=kUT4bxVrpIgoXS4WFaUHHfeiL/fVwT/baXA343BAGPs=; b=T6BVguKvYPwXnbgWEvR5QbD1Zr89N7iVf+NqV1vzd31r6K+g5TzqecgutcTa48sqxQ /Fbtv3Azi7DzIaJ6cfmSZOzejFl5JQZwB53IUDM6qbu2NgFRE/+16P9XaFi1MC2TUhCG xZNs0+PySyr8UsRd9tgtDja0NP+mGjTQiQZe1jSZsSVAXSaKIJg/bI6M91/ktvjLbh6E d2mDGJuZScoGbP3NkQbMOfY2UYNdPN73e2uqInMGtX0xyvpgGvmY+PcoLQcv7Wa9Kyjp U2KUYkBiyn1usz0YH/qfmzd4R/HdZFSsqpiAskmj7eEJ+8PFyRhlb8T8FA7H8ocC3zay 3n/w== X-Gm-Message-State: AFeK/H022oLfffTaKUtjhyAaecc13rRFWAuh1HJcWU80ZcoG1SuxPN+Gh8Cwr3scyjrkwQ== X-Received: by 10.99.56.17 with SMTP id f17mr24273007pga.228.1490661749531; Mon, 27 Mar 2017 17:42:29 -0700 (PDT) Received: from majic.sklembedded.com (c-98-210-181-167.hsd1.ca.comcast.net. [98.210.181.167]) by smtp.googlemail.com with ESMTPSA id o194sm3300299pfg.66.2017.03.27.17.42.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 27 Mar 2017 17:42:28 -0700 (PDT) From: Steve Longerbeam X-Google-Original-From: Steve Longerbeam To: robh+dt@kernel.org, mark.rutland@arm.com, shawnguo@kernel.org, kernel@pengutronix.de, fabio.estevam@nxp.com, linux@armlinux.org.uk, mchehab@kernel.org, hverkuil@xs4all.nl, nick@shmanahar.org, markus.heiser@darmarIT.de, p.zabel@pengutronix.de, laurent.pinchart+renesas@ideasonboard.com, bparrot@ti.com, geert@linux-m68k.org, arnd@arndb.de, sudipm.mukherjee@gmail.com, minghsiu.tsai@mediatek.com, tiffany.lin@mediatek.com, jean-christophe.trotin@st.com, horms+renesas@verge.net.au, niklas.soderlund+renesas@ragnatech.se, robert.jarzmik@free.fr, songjun.wu@microchip.com, andrew-ct.chen@mediatek.com, gregkh@linuxfoundation.org, shuah@kernel.org, sakari.ailus@linux.intel.com, pavel@ucw.cz Subject: [PATCH v6 33/39] media: imx: csi: Avoid faulty sensor frames at stream start Date: Mon, 27 Mar 2017 17:40:50 -0700 Message-Id: <1490661656-10318-34-git-send-email-steve_longerbeam@mentor.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1490661656-10318-1-git-send-email-steve_longerbeam@mentor.com> References: <1490661656-10318-1-git-send-email-steve_longerbeam@mentor.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170328_014251_347147_E7BAB140 X-CRM114-Status: GOOD ( 13.19 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, Steve Longerbeam , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP If the attached sensor reports faulty frames at stream start via g_skip_frames callback, add a delay to avoid them before enabling the CSI hardware. Especially for sensors with a bt.656 interface, any shifts in the SAV/EAV sync codes will cause the CSI to lose vert/horiz sync. Signed-off-by: Steve Longerbeam --- drivers/staging/media/imx/imx-media-csi.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/drivers/staging/media/imx/imx-media-csi.c b/drivers/staging/media/imx/imx-media-csi.c index d9c3a3b..8597d7e 100644 --- a/drivers/staging/media/imx/imx-media-csi.c +++ b/drivers/staging/media/imx/imx-media-csi.c @@ -9,6 +9,7 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ +#include #include #include #include @@ -591,6 +592,7 @@ static int csi_setup(struct csi_priv *priv) static int csi_start(struct csi_priv *priv) { + u32 bad_frames = 0; int ret; if (!priv->sensor) { @@ -598,6 +600,25 @@ static int csi_start(struct csi_priv *priv) return -EINVAL; } + ret = v4l2_subdev_call(priv->sensor->sd, sensor, + g_skip_frames, &bad_frames); + if (!ret && bad_frames) { + struct v4l2_fract *fi = &priv->frame_interval; + u32 delay_usec; + + /* + * This sensor has bad frames when it is turned on, + * add a delay to avoid them before enabling the CSI + * hardware. Especially for sensors with a bt.656 interface, + * any shifts in the SAV/EAV sync codes will cause the CSI + * to lose vert/horiz sync. + */ + delay_usec = DIV_ROUND_UP_ULL( + (u64)USEC_PER_SEC * fi->numerator * bad_frames, + fi->denominator); + usleep_range(delay_usec, delay_usec + 1000); + } + if (priv->dest == IPU_CSI_DEST_IDMAC) { ret = csi_idmac_start(priv); if (ret)