Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp7046771ybi; Mon, 22 Jul 2019 06:16:13 -0700 (PDT) X-Google-Smtp-Source: APXvYqzkjsSgYEniBXwK0NKuB3ylY8iEqY5Dv2P4str7/ykV1lqYOiQrNuBf7u4CAPVvxJTRcCHm X-Received: by 2002:a17:902:29e6:: with SMTP id h93mr18481845plb.297.1563801373800; Mon, 22 Jul 2019 06:16:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1563801373; cv=none; d=google.com; s=arc-20160816; b=CER9fGdqBQUcK4HM9cEpG2CCbq5E8rCeh78WovDDW4JdXslH0xwGdc64XT/lKYR5w+ GtFrHAM4QIDmL68KGTeur8AUo2AMLPZFQbcbJRIcAD7UuVGxd73CMd23bS3S8dTC2XxU AU8vLSpBhVQZDmBGOxmQKInmjOrDAY2H7HKSk66AEcxOyf9zgyyKnsqDlrbs0ckSQz2f Ost9cnnjVieGL8XtaklICbonEZlQ2alOnsJCDA76NePH/3+VXSCvvJH4ZeIspSZugHGs E1jNvA7/ty/jmPH6OV2K3766kVA3RpdnaJtPrJx0oLVwDmewSqQQXJp8/mhs690IYHJx xVDw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=wiOoia5sS61Qytf4zF2V8dI9vnsBIh34+f6e9KiQfL0=; b=Nfn3nE+phiEjGob8eqwppAz2QYq+KnpN9bQ62Ac957FCsgAaiDCTx2zP6H9u7nMeb8 k/kKMMa6JYNKjfo1VohV1cugSxRenweoEYNsimwUzEaIabDKWrkQnPXhmJ3R60DKAqV9 oOve55li/PXmoYR1dChE3glpJ90MYZ3BSgOeEFNucYhm/tiGgLunLtQLKDT8pRixSLVa xEgOR+Dpyl0Qs+yA7Uy/i2870OAppdSvDH6+YWZyTFFl3IHhdHqFdQfT2S6vvEGAewbh z4Q3RGy2o/mpRchOpk9j6heHkUN74qHOC8QHnL27o3LII4i45rwbecH15T0tV1DR5X57 mXLA== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y4si8732923pgq.534.2019.07.22.06.15.57; Mon, 22 Jul 2019 06:16:13 -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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728867AbfGVMtT (ORCPT + 99 others); Mon, 22 Jul 2019 08:49:19 -0400 Received: from inva021.nxp.com ([92.121.34.21]:39544 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729877AbfGVMsy (ORCPT ); Mon, 22 Jul 2019 08:48:54 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 2F5E02002E1; Mon, 22 Jul 2019 14:48:52 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 21AF02002E0; Mon, 22 Jul 2019 14:48:52 +0200 (CEST) Received: from fsr-ub1864-103.ea.freescale.net (fsr-ub1864-103.ea.freescale.net [10.171.82.17]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id 69390205DB; Mon, 22 Jul 2019 14:48:51 +0200 (CEST) From: Daniel Baluta To: 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, l.stach@pengutronix.de, viorel.suman@nxp.com, Daniel Baluta Subject: [PATCH 05/10] ASoC: fsl_sai: Add support to enable multiple data lines Date: Mon, 22 Jul 2019 15:48:28 +0300 Message-Id: <20190722124833.28757-6-daniel.baluta@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190722124833.28757-1-daniel.baluta@nxp.com> References: <20190722124833.28757-1-daniel.baluta@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SAI supports up to 8 Rx/Tx data lines which can be enabled using TCE/RCE bits of TCR3/RCR3 registers. Data lines to be enabled are read from DT fsl,dl_mask property. By default (if no DT entry is provided) only data line 0 is enabled. Note: We can only enable consecutive data lines starting with data line #0. Signed-off-by: Daniel Baluta --- sound/soc/fsl/fsl_sai.c | 10 +++++++++- sound/soc/fsl/fsl_sai.h | 6 ++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index 768341608695..d0fa02188b7c 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c @@ -601,7 +601,7 @@ static int fsl_sai_startup(struct snd_pcm_substream *substream, regmap_update_bits(sai->regmap, FSL_SAI_xCR3(tx), FSL_SAI_CR3_TRCE_MASK, - FSL_SAI_CR3_TRCE); + FSL_SAI_CR3_TRCE(sai->soc_data->dl_mask[tx]); ret = snd_pcm_hw_constraint_list(substream->runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &fsl_sai_rate_constraints); @@ -887,6 +887,14 @@ static int fsl_sai_probe(struct platform_device *pdev) } } + /* active data lines mask for TX/RX, defaults to 1 (only the first + * data line is enabled + */ + sai->dl_mask[RX] = 1; + sai->dl_mask[TX] = 1; + of_property_read_u32_index(np, "fsl,dl_mask", RX, &sai->dl_mask[RX]); + of_property_read_u32_index(np, "fsl,dl_mask", TX, &sai->dl_mask[TX]); + irq = platform_get_irq(pdev, 0); if (irq < 0) { dev_err(&pdev->dev, "no irq for node %s\n", pdev->name); diff --git a/sound/soc/fsl/fsl_sai.h b/sound/soc/fsl/fsl_sai.h index b1abeed2f78e..6d32f0950ec5 100644 --- a/sound/soc/fsl/fsl_sai.h +++ b/sound/soc/fsl/fsl_sai.h @@ -109,8 +109,8 @@ #define FSL_SAI_CR2_DIV_MASK 0xff /* SAI Transmit and Receive Configuration 3 Register */ -#define FSL_SAI_CR3_TRCE BIT(16) -#define FSL_SAI_CR3_TRCE_MASK GENMASK(16, 23) +#define FSL_SAI_CR3_TRCE(x) ((x) << 16) +#define FSL_SAI_CR3_TRCE_MASK GENMASK(23, 16) #define FSL_SAI_CR3_WDFL(x) (x) #define FSL_SAI_CR3_WDFL_MASK 0x1f @@ -176,6 +176,8 @@ struct fsl_sai { unsigned int slots; unsigned int slot_width; + unsigned int dl_mask[2]; + const struct fsl_sai_soc_data *soc_data; struct snd_dmaengine_dai_dma_data dma_params_rx; struct snd_dmaengine_dai_dma_data dma_params_tx; -- 2.17.1