Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp7049623ybi; Mon, 22 Jul 2019 06:19:00 -0700 (PDT) X-Google-Smtp-Source: APXvYqx76QZ+r/TF/I7Zd4Sgln6+yU6r8sKGfDq+3SHmw+I2vr3f/u8sfMi/2BAiymV+MfC3A3VF X-Received: by 2002:a63:de07:: with SMTP id f7mr33771352pgg.213.1563801540007; Mon, 22 Jul 2019 06:19:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563801539; cv=none; d=google.com; s=arc-20160816; b=Kk33XXnz8jBhSYjcZHBwxLjYlTLGPXWUqYpnnFBV7jIdX2RtoCZ3TRbQ28iU10+WHA z2AYB5wk0Vj3Wdlg6c7omyP5EfmFcjS+vbgLW56gnzymvQPDsdOjXHT6FBWRwc+HiF7b 1vRO43eFBUhcv3xAYV0Y3wA4NtLVPaj1kisE8EEu3xYdl3zmyhUY6D6Drs2nEsMNYnZo X1yoqV5KlaOTCQqf1xWtwuaRpZrpI1ERJ5BMklcvGVZWSq8eLk0zKq5kLy7X8gEmydK8 dnFP/fGtshIBVS5vlK320XBvavaAEgxhoQ+/aXJOzxyuRgdS+fi8Sb/MynDHYRq5Wy2n z0HA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:date:cc:to:from:subject:message-id; bh=zA17RMpH72b9efaHtn2/TlJLOUEJQvs66vJr0g+eyrw=; b=twZtikRAv6wIGd8wLH0S9sKmtdNXIThHhiMk/7RTsN6VHZtsDub9Hvan85aKp8OByg N9iQw41rBJJdoTjOrGjao1eoZemBegFWw+eT1MkbTSLU4BmUAcZOy96lYHU2VJAzoOuN 8Qwss5NiCz9t6ctsVWOTCyZVxTTVt4LTZUtLWWs7iaVnZWiyo2dZ+9Hh/VZafUh03WEo uiQ3M5RGCwxiNHgW93k0/KlptbMjc7QLJbNi6mQfdDKFj3WW4H1uv47ZLFWcpn7HbSNg 8rTFfjlYbIIjePAB8PNU6KL0tGGI11pHQnUzA4YlbM5Kr3o2U+lV6SrufryKs+votrJ+ LUjQ== 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 v7si14473714pfb.132.2019.07.22.06.18.43; Mon, 22 Jul 2019 06:18:59 -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 S1729852AbfGVNBf (ORCPT + 99 others); Mon, 22 Jul 2019 09:01:35 -0400 Received: from metis.ext.pengutronix.de ([85.220.165.71]:51759 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727164AbfGVNBf (ORCPT ); Mon, 22 Jul 2019 09:01:35 -0400 Received: from kresse.hi.pengutronix.de ([2001:67c:670:100:1d::2a]) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1hpXwN-0005n3-Uu; Mon, 22 Jul 2019 15:01:19 +0200 Message-ID: <1563800477.2311.12.camel@pengutronix.de> Subject: Re: [PATCH 07/10] ASoC: fsl_sai: Add support for FIFO combine mode From: Lucas Stach To: Daniel Baluta , broonie@kernel.org Cc: festevam@gmail.com, perex@perex.cz, tiwai@suse.com, Xiubo.Lee@gmail.com, nicoleotsuka@gmail.com, timur@kernel.org, alsa-devel@alsa-project.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, linux-imx@nxp.com, shengjiu.wang@nxp.com, angus@akkea.ca, kernel@pengutronix.de, viorel.suman@nxp.com Date: Mon, 22 Jul 2019 15:01:17 +0200 In-Reply-To: <20190722124833.28757-8-daniel.baluta@nxp.com> References: <20190722124833.28757-1-daniel.baluta@nxp.com> <20190722124833.28757-8-daniel.baluta@nxp.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.22.6-1+deb9u2 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::2a X-SA-Exim-Mail-From: l.stach@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Am Montag, den 22.07.2019, 15:48 +0300 schrieb Daniel Baluta: > FIFO combining mode allows the separate FIFOs for multiple data > channels > to be used as a single FIFO for either software accesses or a single > data > channel or both. > > FIFO combined mode is described in chapter 13.10.3.5.4 from i.MX8MQ > reference manual [1]. > > For each direction (RX/TX) fifo combine mode is read from fsl,fcomb- > mode > DT property. By default, if no property is specified fifo combine > mode > is disabled. > > [1]https://cache.nxp.com/secured/assets/documents/en/reference-manual > /IMX8MDQLQRM.pdf?__gda__=1563728701_38bea7f0f726472cc675cb141b91bec7& > fileExt=.pdf > > Signed-off-by: Daniel Baluta > --- >  sound/soc/fsl/fsl_sai.c | 37 +++++++++++++++++++++++++++++++++++++ >  sound/soc/fsl/fsl_sai.h |  9 +++++++++ >  2 files changed, 46 insertions(+) > > diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c > index d0fa02188b7c..140014901fce 100644 > --- a/sound/soc/fsl/fsl_sai.c > +++ b/sound/soc/fsl/fsl_sai.c > @@ -475,6 +475,35 @@ static int fsl_sai_hw_params(struct > snd_pcm_substream *substream, >   } >   } >   > + switch (sai->soc_data->fcomb_mode[tx]) { > + case FSL_SAI_FCOMB_NONE: > + regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx), > +    FSL_SAI_CR4_FCOMB_SOFT | > +    FSL_SAI_CR4_FCOMB_SHIFT, 0); > + break; > + case FSL_SAI_FCOMB_SHIFT: > + regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx), > +    FSL_SAI_CR4_FCOMB_SOFT | > +    FSL_SAI_CR4_FCOMB_SHIFT, > +    FSL_SAI_CR4_FCOMB_SHIFT); > + break; > + case FSL_SAI_FCOMB_SOFT: > + regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx), > +    FSL_SAI_CR4_FCOMB_SOFT | > +    FSL_SAI_CR4_FCOMB_SHIFT, > +    FSL_SAI_CR4_FCOMB_SOFT); > + break; > + case FSL_SAI_FCOMB_BOTH: > + regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx), > +    FSL_SAI_CR4_FCOMB_SOFT | > +    FSL_SAI_CR4_FCOMB_SHIFT, > +    FSL_SAI_CR4_FCOMB_SOFT | > +    FSL_SAI_CR4_FCOMB_SHIFT); > + break; > + default: > + break; > + } This would probably look less redundant if you only select the bits to set in the switch statement and move the regmap_update_bits after the switch. Regards, Lucas >   regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx), >      FSL_SAI_CR4_SYWD_MASK | > FSL_SAI_CR4_FRSZ_MASK, >      val_cr4); > @@ -887,6 +916,14 @@ static int fsl_sai_probe(struct platform_device > *pdev) >   } >   } >   > + /* FIFO combine mode for TX/RX, defaults to disabled */ > + sai->fcomb_mode[RX] = FSL_SAI_FCOMB_NONE; > + sai->fcomb_mode[TX] = FSL_SAI_FCOMB_NONE; > + of_property_read_u32_index(np, "fsl,fcomb-mode", RX, > +    &sai->fcomb_mode[RX]); > + of_property_read_u32_index(np, "fsl,fcomb-mode", TX, > +    &sai->fcomb_mode[TX]); > + >   /* active data lines mask for TX/RX, defaults to 1 (only the > first >    * data line is enabled >    */ > diff --git a/sound/soc/fsl/fsl_sai.h b/sound/soc/fsl/fsl_sai.h > index 6d32f0950ec5..abf140951187 100644 > --- a/sound/soc/fsl/fsl_sai.h > +++ b/sound/soc/fsl/fsl_sai.h > @@ -115,6 +115,8 @@ >  #define FSL_SAI_CR3_WDFL_MASK 0x1f >   >  /* SAI Transmit and Receive Configuration 4 Register */ > +#define FSL_SAI_CR4_FCOMB_SHIFT BIT(26) > +#define FSL_SAI_CR4_FCOMB_SOFT  BIT(27) >  #define FSL_SAI_CR4_FRSZ(x) (((x) - 1) << 16) >  #define FSL_SAI_CR4_FRSZ_MASK (0x1f << 16) >  #define FSL_SAI_CR4_SYWD(x) (((x) - 1) << 8) > @@ -155,6 +157,12 @@ >  #define FSL_SAI_MAXBURST_TX 6 >  #define FSL_SAI_MAXBURST_RX 6 >   > +/* FIFO combine modes */ > +#define FSL_SAI_FCOMB_NONE     0 > +#define FSL_SAI_FCOMB_SHIFT    1 > +#define FSL_SAI_FCOMB_SOFT     2 > +#define FSL_SAI_FCOMB_BOTH     3 > + >  struct fsl_sai_soc_data { >   bool use_imx_pcm; >   unsigned int fifo_depth; > @@ -177,6 +185,7 @@ struct fsl_sai { >   unsigned int slot_width; >   >   unsigned int dl_mask[2]; > + unsigned int fcomb_mode[2]; >   >   const struct fsl_sai_soc_data *soc_data; >   struct snd_dmaengine_dai_dma_data dma_params_rx;