Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp521926ybz; Fri, 24 Apr 2020 04:43:14 -0700 (PDT) X-Google-Smtp-Source: APiQypK4pg85oSLKA1fuTuJbISLgt8fSjY4ASPHw9HrT4vF11O7fAS3TEuBxHqsOdaEA/klomLyL X-Received: by 2002:aa7:dcd7:: with SMTP id w23mr6819248edu.300.1587728594810; Fri, 24 Apr 2020 04:43:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587728594; cv=none; d=google.com; s=arc-20160816; b=GNqrwZ/6J59fHcbbd30Cpd1MrEwShqdK8hh86m7qQeLtFrZC4pIqsr4EiD3ELHh7P5 +KVWeMbJEnZst9CBjPADpaN4I0ic11ecKcPmaW60x10/UzAjFXH6fH3scMizrUvo0wFW 4ta9BGheSS10yMoNJFuAPnv7wfPgpEIGDJFK0b2cItWBFtitH8WGCXCXID16ZJjnHZqM HkgCa3Y4Z2yb54caAyJ1gKZwRYhja25jghY5x0M4CWq43gOiL7jbPxmnRt9VXNy3wiBC EcRR+rQRS5iughhnVsbkwejP/ab/zLH6klxVNiGcg7G7Um7inXLL12v7KXvmKnS+aC+7 PuOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=f15cWn5l7+qnePYQkKeXeKN4S4ucsruNAsfQ5NRJgnw=; b=OfWkVdArOKV8uF/716pQdjV8GqroQkgcInNqVX//RPmNOWRPFdb5Zl8G/C+C0GZ+Un 2IsG/ODtBVe2KnnJ4zTPta+TEMoxnGFjoHSiHnesgmLyHAXPLm7gYwL6F1WTSlO18FRa gv15tG+gEwP0LnvjeF2CrAEwGqujhhAL+xYuorwp/TjJLJ9oQduTRy6ZGHBiQzfNOxui M6z3x44sEn6AG8prUGWw6+UpmdrtJsm8PhdUMYi1k8sSzQqPbasZz4DJU/aGb2WylwT6 phdJPNN5S7VPCmqg7rIX+FFSqbmCC0QazSmP5Q7FJFHDirPKqrEXqwkfsKYFkc+f5CUT RxXg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=J6iWt8Py; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dn15si2795031edb.555.2020.04.24.04.42.51; Fri, 24 Apr 2020 04:43:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@st.com header.s=STMicroelectronics header.b=J6iWt8Py; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=st.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726989AbgDXLlX (ORCPT + 99 others); Fri, 24 Apr 2020 07:41:23 -0400 Received: from mx08-00178001.pphosted.com ([91.207.212.93]:54432 "EHLO mx07-00178001.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726865AbgDXLlW (ORCPT ); Fri, 24 Apr 2020 07:41:22 -0400 Received: from pps.filterd (m0046661.ppops.net [127.0.0.1]) by mx07-00178001.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 03OBWi4b029084; Fri, 24 Apr 2020 13:41:06 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=st.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=STMicroelectronics; bh=f15cWn5l7+qnePYQkKeXeKN4S4ucsruNAsfQ5NRJgnw=; b=J6iWt8Pyv/o+0QkN41DpefKdKHfaEICctClHv4A7K0E1jeD3OY6t7KuiCpqPXdQpHKTi kB0LtSxI4ZUBJ5mp1FJVcglFZRtbGFMtdCh5Y0vt7Iwu9T3izsZk13yUvjktYwSts4pv XZeXC4swut3fqjqkxE5Q60GIehyGJL2+w2X8qMehw0qFohRGhre+MShqtH+PdttmypEi mT8PQdxMWTslx4Vto/iXhx7ipAWXrHhuzsssoyCT4uWQGrpsvsm6611No7o7FJMDsQtj YNztTP2MAe+5pm166gIncvD4tcKAohbXc269wwqTOGLHn0yb2x6Ut6ZSGKijqc7vGDE9 0g== Received: from beta.dmz-eu.st.com (beta.dmz-eu.st.com [164.129.1.35]) by mx07-00178001.pphosted.com with ESMTP id 30freh30hv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 24 Apr 2020 13:41:05 +0200 Received: from euls16034.sgp.st.com (euls16034.sgp.st.com [10.75.44.20]) by beta.dmz-eu.st.com (STMicroelectronics) with ESMTP id 75E6210002A; Fri, 24 Apr 2020 13:41:05 +0200 (CEST) Received: from Webmail-eu.st.com (sfhdag3node3.st.com [10.75.127.9]) by euls16034.sgp.st.com (STMicroelectronics) with ESMTP id 67D662B3DA0; Fri, 24 Apr 2020 13:41:05 +0200 (CEST) Received: from localhost (10.75.127.50) by SFHDAG3NODE3.st.com (10.75.127.9) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Fri, 24 Apr 2020 13:41:04 +0200 From: Benjamin Gaignard To: , , , , , , , CC: , , , , , Benjamin Gaignard Subject: [RFC 3/3] media: stm32-dcmi: Inform cpufreq governors about cpu load needs Date: Fri, 24 Apr 2020 13:40:58 +0200 Message-ID: <20200424114058.21199-4-benjamin.gaignard@st.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20200424114058.21199-1-benjamin.gaignard@st.com> References: <20200424114058.21199-1-benjamin.gaignard@st.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.75.127.50] X-ClientProxiedBy: SFHDAG2NODE3.st.com (10.75.127.6) To SFHDAG3NODE3.st.com (10.75.127.9) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138,18.0.676 definitions=2020-04-24_04:2020-04-23,2020-04-24 signatures=0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When start streaming the CPU load could remain very low because almost all the capture pipeline is done in hardware (i.e. without using the CPU) and let believe to cpufreq governor that it could use lower frequencies. If the governor decides to use a too low frequency that becomes a problem when we need to acknowledge the interrupt during the blanking time. To avoid this problem, DCMI driver informs the cpufreq governors by adding a cpufreq minimum load QoS resquest. Signed-off-by: Benjamin Gaignard --- drivers/media/platform/stm32/stm32-dcmi.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/media/platform/stm32/stm32-dcmi.c b/drivers/media/platform/stm32/stm32-dcmi.c index b8931490b83b..774f2506b2f1 100644 --- a/drivers/media/platform/stm32/stm32-dcmi.c +++ b/drivers/media/platform/stm32/stm32-dcmi.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -173,6 +174,8 @@ struct stm32_dcmi { struct media_device mdev; struct media_pad vid_cap_pad; struct media_pipeline pipeline; + + struct pm_qos_request qos_request; }; static inline struct stm32_dcmi *notifier_to_dcmi(struct v4l2_async_notifier *n) @@ -827,6 +830,9 @@ static int dcmi_start_streaming(struct vb2_queue *vq, unsigned int count) else reg_set(dcmi->regs, DCMI_IER, IT_OVR | IT_ERR); + cpufreq_minload_qos_add_request(&dcmi->qos_request, + CPUFREQ_GOV_QOS_MIN_LOAD_MAX_VALUE); + return 0; err_pipeline_stop: @@ -859,6 +865,8 @@ static void dcmi_stop_streaming(struct vb2_queue *vq) struct stm32_dcmi *dcmi = vb2_get_drv_priv(vq); struct dcmi_buf *buf, *node; + cpufreq_minload_qos_remove_request(&dcmi->qos_request); + dcmi_pipeline_stop(dcmi); media_pipeline_stop(&dcmi->vdev->entity); -- 2.15.0