Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1766050pxa; Sun, 2 Aug 2020 20:40:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtGy82d3KPH0aFdu7UYJoSZX/vqs2g9BJelQyBmwqr1SnpV1KXoqyNs8UjshkWcS6gZDcp X-Received: by 2002:a17:906:9592:: with SMTP id r18mr14145953ejx.464.1596426006867; Sun, 02 Aug 2020 20:40:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1596426006; cv=none; d=google.com; s=arc-20160816; b=QKM50EMPXJBZR6RNP98J6ZJtqn9Q3wXa+KmdoPfrzhFMJJQZ5UWstK4E3BoZP9trSV quTH9Ki7ZucEQvwTFY0nwQOv9gElUJ/auvMIgA1UdrCuLTzJb/lCms6PIC/PkwKDySKv 4baGX6+ZxT1TZ3uQRh9clodyE1szYCB0kGMaQqKhcmRTqBnj2wQr5MlxpCQ0bS8tj5ZC RxpyAvCbq0D9gx7+uEfg2SCJO9g/cCnCzs6Ry80KrDfy+iwJI9AhsrwuBKf7W3prSz1h 9N8fYA15E4Fg8q6PeXS6hHmmx5Yo25ZW8NmNGvxbkaQkpeR0zGimmDs4AKfyDbl7hVY1 nyvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:to:from; bh=cbDo2d6k8UcLcEBXyc+ff8kvDxOmvhzK0Z7HExR8ViE=; b=P2a/8orXsKMG0nC9ZXIHhE8WSF125YnEqZoAu45OmoEIdzTeC9Cn8Hv84BX346PWTU A/LAGgNAh4r1lswUTSKsGmbiwJI5i/3QddjMofzompWv2xOfZZIeqfI0ZDRISlFQVLjL zZ+3YoYh2w/5E1tHgSSLfFG/B0vEq3XAMln7qTg51bZvHdnwabYuo2ltFw+AgxXfIMS7 22diFPKmqkYetKnLU0kC0BznhqqFkA9BnQ3/3wmBm8iiPJsD3/8MSrP5qC4bCKFk/wrh M61VJ3JtDyddhVM19GmA2tY6F+IeYcb13fM2ohDik7Z9W2J7l34gCdCooDSW4APYeoyz /Wcg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id dn20si14277668ejc.341.2020.08.02.20.39.21; Sun, 02 Aug 2020 20:40:06 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726534AbgHCDWb (ORCPT + 99 others); Sun, 2 Aug 2020 23:22:31 -0400 Received: from inva021.nxp.com ([92.121.34.21]:34310 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725863AbgHCDWb (ORCPT ); Sun, 2 Aug 2020 23:22:31 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 840432000E8; Mon, 3 Aug 2020 05:22:29 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 189D82000F7; Mon, 3 Aug 2020 05:22:25 +0200 (CEST) Received: from localhost.localdomain (shlinux2.ap.freescale.net [10.192.224.44]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 0A4ED402DE; Mon, 3 Aug 2020 05:22:18 +0200 (CEST) From: Shengjiu Wang To: timur@kernel.org, nicoleotsuka@gmail.com, Xiubo.Lee@gmail.com, festevam@gmail.com, lgirdwood@gmail.com, broonie@kernel.org, perex@perex.cz, tiwai@suse.com, alsa-devel@alsa-project.org, linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org Subject: [PATCH] ASoC: fsl_sai: Clean code for synchronize mode Date: Mon, 3 Aug 2020 11:17:54 +0800 Message-Id: <1596424674-32127-1-git-send-email-shengjiu.wang@nxp.com> X-Mailer: git-send-email 2.7.4 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 TX synchronous with RX: The RMR is no need to be changed when Tx is enabled, the other configuration in hw_params() is enough for clock generation. The TCSR.TE is no need to enabled when only RX is enabled. RX synchronous with TX: The TMR is no need to be changed when Rx is enabled, the other configuration in hw_params() is enough for clock generation. The RCSR.RE is no need to enabled when only TX is enabled. Signed-off-by: Shengjiu Wang --- sound/soc/fsl/fsl_sai.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c index cdff739924e2..a210c9836a9a 100644 --- a/sound/soc/fsl/fsl_sai.c +++ b/sound/soc/fsl/fsl_sai.c @@ -482,8 +482,6 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream, regmap_update_bits(sai->regmap, FSL_SAI_TCR5(ofs), FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK | FSL_SAI_CR5_FBT_MASK, val_cr5); - regmap_write(sai->regmap, FSL_SAI_TMR, - ~0UL - ((1 << channels) - 1)); } else if (!sai->synchronous[RX] && sai->synchronous[TX] && tx) { regmap_update_bits(sai->regmap, FSL_SAI_RCR4(ofs), FSL_SAI_CR4_SYWD_MASK | FSL_SAI_CR4_FRSZ_MASK, @@ -491,8 +489,6 @@ static int fsl_sai_hw_params(struct snd_pcm_substream *substream, regmap_update_bits(sai->regmap, FSL_SAI_RCR5(ofs), FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK | FSL_SAI_CR5_FBT_MASK, val_cr5); - regmap_write(sai->regmap, FSL_SAI_RMR, - ~0UL - ((1 << channels) - 1)); } } @@ -553,11 +549,18 @@ static int fsl_sai_trigger(struct snd_pcm_substream *substream, int cmd, regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_FRDE, FSL_SAI_CSR_FRDE); - regmap_update_bits(sai->regmap, FSL_SAI_RCSR(ofs), - FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE); - regmap_update_bits(sai->regmap, FSL_SAI_TCSR(ofs), + regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE); + /* Enable opposite direction when necessarily */ + if (!sai->synchronous[TX] && sai->synchronous[RX] && !tx) { + regmap_update_bits(sai->regmap, FSL_SAI_xCSR((!tx), ofs), + FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE); + } else if (!sai->synchronous[RX] && sai->synchronous[TX] && tx) { + regmap_update_bits(sai->regmap, FSL_SAI_xCSR((!tx), ofs), + FSL_SAI_CSR_TERE, FSL_SAI_CSR_TERE); + } + regmap_update_bits(sai->regmap, FSL_SAI_xCSR(tx, ofs), FSL_SAI_CSR_xIE_MASK, FSL_SAI_FLAGS); break; -- 2.27.0