From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B330C43381 for ; Sun, 24 Mar 2019 16:43:32 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D46C02087E for ; Sun, 24 Mar 2019 16:43:31 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="cyQCzs5f"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=kernel.org header.i=@kernel.org header.b="xQqF7ccO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D46C02087E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Subject:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XGg5mIhZc7ztNBxB6htpKCvqxv3AqYY5ZDAwYBa/9sY=; b=cyQCzs5ferimqe RXBIUXSFxOPes4jhuy2B5bEPoHv1E0SbsLIPyr5bUlsPnMkf7klMaVg90cjOtHyJk/z8VYHn4+73+ 9fbzhjqBKYkod44EqTbvVYEISUNTMCLH82JUWz92ifG8R/lvMmF4Qu9MDJCqjXkSiWheTPOc0d1Zh 7/9kEgbS3ea4YvheOA6Yv2SDqOTEtJBdI4gA+PXcW+OUsRzXdrAHFQs1+dLDIwtF+cGNnQ+P6J0z8 U83oJdQ9sgJAL9e5ZZM+BFpzHTRdFm/KNin7ZdsBnyPysFmX+QsFDKEUNqbnhsFyTT1fu0mpYiU++ Fi5yt8H/pwoOXu/H9Gyg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h86DY-0007FR-Bk; Sun, 24 Mar 2019 16:43:28 +0000 Received: from mail.kernel.org ([198.145.29.99]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h86DV-0007F7-9v for linux-arm-kernel@lists.infradead.org; Sun, 24 Mar 2019 16:43:26 +0000 Received: from archlinux (cpc91196-cmbg18-2-0-cust659.5-4.cable.virginm.net [81.96.234.148]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 87B3E20823; Sun, 24 Mar 2019 16:43:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1553445805; bh=Cb/0edEa0zDiHNSpD4LXCfUVokL9vtAUR86ZqD3RCqo=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=xQqF7ccOYV8CjzQYaokXu9LhrCPzhr1ONPukktecV/7mb3SHMtGSJCy42/iSF/2+j 3n4o0vG7E3vl4FhRCg6bsBvMD+2C+ZDDO1MsGvK8gHGkM6znkIlU+DkDtNxBesbL1j Q9Aj4BJqF7/6PvrVbjaB4tqE1f1oPTf9tGfJLgAs= Date: Sun, 24 Mar 2019 16:43:19 +0000 From: Jonathan Cameron To: Fabrice Gasnier Subject: Re: [PATCH v2 2/8] iio: adc: stm32-dfsdm: continuous mode depends on current mode Message-ID: <20190324164319.28cf5f57@archlinux> In-Reply-To: <1553186849-6261-3-git-send-email-fabrice.gasnier@st.com> References: <1553186849-6261-1-git-send-email-fabrice.gasnier@st.com> <1553186849-6261-3-git-send-email-fabrice.gasnier@st.com> X-Mailer: Claws Mail 3.17.3 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190324_094325_387020_20BBC3BF X-CRM114-Status: GOOD ( 19.82 ) 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: lars@metafoo.de, olivier.moysan@st.com, alexandre.torgue@st.com, linux-iio@vger.kernel.org, pmeerw@pmeerw.net, arnaud.pouliquen@st.com, linux-kernel@vger.kernel.org, mcoquelin.stm32@gmail.com, knaack.h@gmx.de, linux-stm32@st-md-mailman.stormreply.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, 21 Mar 2019 17:47:23 +0100 Fabrice Gasnier wrote: > DFSDM regular continuous mode usage depends on current mode (not DMA): > - for single conversion, RCONT doesn't need to be set. > - for buffer mode, RCONT has to be set (e.g. INDIO_BUFFER_SOFTWARE > used by audio currently). > This is related to filter configuration, move it to relevant routine. > > This is precursor patch to ease support of triggered buffer mode. > > Signed-off-by: Fabrice Gasnier Applied, Thanks, Jonathan > --- > drivers/iio/adc/stm32-dfsdm-adc.c | 54 +++++++++++++++++++-------------------- > 1 file changed, 27 insertions(+), 27 deletions(-) > > diff --git a/drivers/iio/adc/stm32-dfsdm-adc.c b/drivers/iio/adc/stm32-dfsdm-adc.c > index fcd4a1c..8690672 100644 > --- a/drivers/iio/adc/stm32-dfsdm-adc.c > +++ b/drivers/iio/adc/stm32-dfsdm-adc.c > @@ -38,6 +38,10 @@ > #define DFSDM_MAX_RES BIT(31) > #define DFSDM_DATA_RES BIT(23) > > +/* Filter configuration */ > +#define DFSDM_CR1_CFG_MASK (DFSDM_CR1_RCH_MASK | DFSDM_CR1_RCONT_MASK | \ > + DFSDM_CR1_RSYNC_MASK) > + > enum sd_converter_type { > DFSDM_AUDIO, > DFSDM_IIO, > @@ -262,11 +266,13 @@ static void stm32_dfsdm_stop_filter(struct stm32_dfsdm *dfsdm, > DFSDM_CR1_DFEN_MASK, DFSDM_CR1_DFEN(0)); > } > > -static int stm32_dfsdm_filter_configure(struct stm32_dfsdm *dfsdm, > +static int stm32_dfsdm_filter_configure(struct stm32_dfsdm_adc *adc, > unsigned int fl_id, unsigned int ch_id) > { > - struct regmap *regmap = dfsdm->regmap; > - struct stm32_dfsdm_filter *fl = &dfsdm->fl_list[fl_id]; > + struct iio_dev *indio_dev = iio_priv_to_dev(adc); > + struct regmap *regmap = adc->dfsdm->regmap; > + struct stm32_dfsdm_filter *fl = &adc->dfsdm->fl_list[fl_id]; > + u32 cr1; > int ret; > > /* Average integrator oversampling */ > @@ -287,14 +293,16 @@ static int stm32_dfsdm_filter_configure(struct stm32_dfsdm *dfsdm, > return ret; > > /* No scan mode supported for the moment */ > - ret = regmap_update_bits(regmap, DFSDM_CR1(fl_id), DFSDM_CR1_RCH_MASK, > - DFSDM_CR1_RCH(ch_id)); > - if (ret) > - return ret; > + cr1 = DFSDM_CR1_RCH(ch_id); > + > + /* Continuous conversions triggered by SPI clock in buffer mode */ > + if (indio_dev->currentmode & INDIO_BUFFER_SOFTWARE) > + cr1 |= DFSDM_CR1_RCONT(1); > > - return regmap_update_bits(regmap, DFSDM_CR1(fl_id), > - DFSDM_CR1_RSYNC_MASK, > - DFSDM_CR1_RSYNC(fl->sync_mode)); > + cr1 |= DFSDM_CR1_RSYNC(fl->sync_mode); > + > + return regmap_update_bits(regmap, DFSDM_CR1(fl_id), DFSDM_CR1_CFG_MASK, > + cr1); > } > > static int stm32_dfsdm_channel_parse_of(struct stm32_dfsdm *dfsdm, > @@ -426,47 +434,39 @@ static int stm32_dfsdm_start_conv(struct stm32_dfsdm_adc *adc, > { > struct regmap *regmap = adc->dfsdm->regmap; > int ret; > - unsigned int dma_en = 0, cont_en = 0; > + unsigned int dma_en = 0; > > ret = stm32_dfsdm_start_channel(adc->dfsdm, chan->channel); > if (ret < 0) > return ret; > > - ret = stm32_dfsdm_filter_configure(adc->dfsdm, adc->fl_id, > - chan->channel); > + ret = stm32_dfsdm_filter_configure(adc, adc->fl_id, chan->channel); > if (ret < 0) > goto stop_channels; > > if (dma) { > /* Enable DMA transfer*/ > dma_en = DFSDM_CR1_RDMAEN(1); > - /* Enable conversion triggered by SPI clock*/ > - cont_en = DFSDM_CR1_RCONT(1); > } > /* Enable DMA transfer*/ > ret = regmap_update_bits(regmap, DFSDM_CR1(adc->fl_id), > DFSDM_CR1_RDMAEN_MASK, dma_en); > if (ret < 0) > - goto stop_channels; > - > - /* Enable conversion triggered by SPI clock*/ > - ret = regmap_update_bits(regmap, DFSDM_CR1(adc->fl_id), > - DFSDM_CR1_RCONT_MASK, cont_en); > - if (ret < 0) > - goto stop_channels; > + goto filter_unconfigure; > > ret = stm32_dfsdm_start_filter(adc->dfsdm, adc->fl_id); > if (ret < 0) > - goto stop_channels; > + goto stop_dma; > > return 0; > > -stop_channels: > +stop_dma: > regmap_update_bits(regmap, DFSDM_CR1(adc->fl_id), > DFSDM_CR1_RDMAEN_MASK, 0); > - > +filter_unconfigure: > regmap_update_bits(regmap, DFSDM_CR1(adc->fl_id), > - DFSDM_CR1_RCONT_MASK, 0); > + DFSDM_CR1_CFG_MASK, 0); > +stop_channels: > stm32_dfsdm_stop_channel(adc->dfsdm, chan->channel); > > return ret; > @@ -484,7 +484,7 @@ static void stm32_dfsdm_stop_conv(struct stm32_dfsdm_adc *adc, > DFSDM_CR1_RDMAEN_MASK, 0); > > regmap_update_bits(regmap, DFSDM_CR1(adc->fl_id), > - DFSDM_CR1_RCONT_MASK, 0); > + DFSDM_CR1_CFG_MASK, 0); > > stm32_dfsdm_stop_channel(adc->dfsdm, chan->channel); > } _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel