Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp3850983imm; Mon, 11 Jun 2018 02:54:04 -0700 (PDT) X-Google-Smtp-Source: ADUXVKJt+IU9x3jDpjxz5/iGoMW0m90veV7Yyh30RL2aPMNnWAOzrBT8TEdcFFzdF2Z4RxMw+dJk X-Received: by 2002:a65:46cb:: with SMTP id n11-v6mr13872115pgr.193.1528710844172; Mon, 11 Jun 2018 02:54:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528710844; cv=none; d=google.com; s=arc-20160816; b=kGeaCjNuQPBLr92gOZO4/LzvnvkN+Bx2LntuzaGzvWlQtF6kWaSMqqufIIyI42hIFq uj4C3juBrI3fViFNt5ZZ9OpM0XFRgFqiyLYNahqqLWsAePxTirceoVwSVHjaq7hsFdNz KNLBK2EbmOZhi4vqLLVKDP7hLNkYb7rkv3CukROAxSOEhltbOm2VoLx2YSn0G77Za9u4 pmAx5hZ/3cLtbev5VDISFlTKnupOcZHftM8WZ+W4oT4ulpeNhL3ytjoNXBO8yaCp6uqU snZ6GvyofVVI6Zr0bcU9ikkglmBl56YdDH4ON5w4cOmvUxepCmZphKOX+dBx+lVW0/Pu O0TQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:arc-authentication-results; bh=yCiXx9j8kaZSRbgsR28qiHVrXKqhpxaVu0kLqDsqZxk=; b=0aajuErMLRIPhtt3bWJBzBaO0NNvB65mTYpPKS1t7gOvj1vR7nFjKaqXQKsHNSWWj9 hq6Bv6huegJvZF27/Wtzt9GGoRgYn7fhESNedZYLRaPCq5lu1aFjRXjxeRe2dfLylhso kCWHkpl7x1iMO20itJJlC2mY6OCQfF9RzxD95cbCPOj6BFKMGYutvWkEmiWGXYQU2Orr McifmZOFsLpp7lIMhFbc2B1zrJryUR5rtq9Cbi3KgqNUwFJHgvAfbcZKDoTYKvOln5zu 1RPJeYj34LtOTmStD8z80IL5mS8XbBI1ArNhaZkAjX62UuhlYjDvhqAO1sFBhNgF3My9 TPNw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m2-v6si50553147pgs.349.2018.06.11.02.53.50; Mon, 11 Jun 2018 02:54:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932806AbeFKJws (ORCPT + 99 others); Mon, 11 Jun 2018 05:52:48 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:7985 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932702AbeFKJwq (ORCPT ); Mon, 11 Jun 2018 05:52:46 -0400 Received: from pps.filterd (m0046660.ppops.net [127.0.0.1]) by mx08-.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id w5B9ikQB013583; Mon, 11 Jun 2018 11:52:25 +0200 Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx08-00178001.pphosted.com with ESMTP id 2jg415reqj-1 (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 11 Jun 2018 11:52:25 +0200 Received: from zeta.dmz-eu.st.com (zeta.dmz-eu.st.com [164.129.230.9]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id CAB244A; Mon, 11 Jun 2018 09:52:23 +0000 (GMT) Received: from Webmail-eu.st.com (Safex1hubcas24.st.com [10.75.90.94]) by zeta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 9662C241E; Mon, 11 Jun 2018 09:52:23 +0000 (GMT) Received: from SAFEX1HUBCAS23.st.com (10.75.90.47) by Safex1hubcas24.st.com (10.75.90.94) with Microsoft SMTP Server (TLS) id 14.3.361.1; Mon, 11 Jun 2018 11:52:22 +0200 Received: from localhost (10.201.23.73) by webmail-ga.st.com (10.75.90.48) with Microsoft SMTP Server (TLS) id 14.3.361.1; Mon, 11 Jun 2018 11:52:22 +0200 From: Hugues Fruchet To: Maxime Coquelin , Alexandre Torgue , Mauro Carvalho Chehab , "Hans Verkuil" CC: , , , Benjamin Gaignard , Yannick Fertre , Hugues Fruchet Subject: [PATCH] media: stm32-dcmi: revisit stop streaming ops Date: Mon, 11 Jun 2018 11:52:17 +0200 Message-ID: <1528710737-8946-1-git-send-email-hugues.fruchet@st.com> X-Mailer: git-send-email 1.9.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.201.23.73] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-06-11_03:,, signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Do not wait for interrupt completion when stopping streaming, stopping sensor and disabling interruptions are enough. Signed-off-by: Hugues Fruchet --- drivers/media/platform/stm32/stm32-dcmi.c | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/drivers/media/platform/stm32/stm32-dcmi.c b/drivers/media/platform/stm32/stm32-dcmi.c index 581ded0..f0134a6 100644 --- a/drivers/media/platform/stm32/stm32-dcmi.c +++ b/drivers/media/platform/stm32/stm32-dcmi.c @@ -87,7 +87,6 @@ enum state { STOPPED = 0, WAIT_FOR_BUFFER, RUNNING, - STOPPING, }; #define MIN_WIDTH 16U @@ -432,18 +431,6 @@ static irqreturn_t dcmi_irq_thread(int irq, void *arg) spin_lock_irq(&dcmi->irqlock); - /* Stop capture is required */ - if (dcmi->state == STOPPING) { - reg_clear(dcmi->regs, DCMI_IER, IT_FRAME | IT_OVR | IT_ERR); - - dcmi->state = STOPPED; - - complete(&dcmi->complete); - - spin_unlock_irq(&dcmi->irqlock); - return IRQ_HANDLED; - } - if ((dcmi->misr & IT_OVR) || (dcmi->misr & IT_ERR)) { dcmi->errors_count++; if (dcmi->misr & IT_OVR) @@ -701,8 +688,6 @@ static void dcmi_stop_streaming(struct vb2_queue *vq) { struct stm32_dcmi *dcmi = vb2_get_drv_priv(vq); struct dcmi_buf *buf, *node; - unsigned long time_ms = msecs_to_jiffies(TIMEOUT_MS); - long timeout; int ret; /* Disable stream on the sub device */ @@ -712,13 +697,6 @@ static void dcmi_stop_streaming(struct vb2_queue *vq) __func__, ret); spin_lock_irq(&dcmi->irqlock); - dcmi->state = STOPPING; - spin_unlock_irq(&dcmi->irqlock); - - timeout = wait_for_completion_interruptible_timeout(&dcmi->complete, - time_ms); - - spin_lock_irq(&dcmi->irqlock); /* Disable interruptions */ reg_clear(dcmi->regs, DCMI_IER, IT_FRAME | IT_OVR | IT_ERR); @@ -726,12 +704,6 @@ static void dcmi_stop_streaming(struct vb2_queue *vq) /* Disable DCMI */ reg_clear(dcmi->regs, DCMI_CR, CR_ENABLE); - if (!timeout) { - dev_err(dcmi->dev, "%s: Timeout during stop streaming\n", - __func__); - dcmi->state = STOPPED; - } - /* Return all queued buffers to vb2 in ERROR state */ list_for_each_entry_safe(buf, node, &dcmi->buffers, list) { list_del_init(&buf->list); @@ -739,6 +711,7 @@ static void dcmi_stop_streaming(struct vb2_queue *vq) } dcmi->active = NULL; + dcmi->state = STOPPED; spin_unlock_irq(&dcmi->irqlock); -- 1.9.1