Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp3427989ybl; Sun, 1 Sep 2019 12:51:26 -0700 (PDT) X-Google-Smtp-Source: APXvYqyQjXE/2caHe4Lg7vsLrAb4zyx9PLon3omLa4UzvpwiDueU0OainQQ8mcKKI3xShAuR5WpT X-Received: by 2002:a17:90a:734a:: with SMTP id j10mr9666990pjs.63.1567367486573; Sun, 01 Sep 2019 12:51:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1567367486; cv=none; d=google.com; s=arc-20160816; b=xQXSSHcUg37KXHM4l/J7BZPw0yg2LjSPuhhJAFuDcdAhqMpz9nJ9kvOC6aLvOkFSU+ ZUCidjpKGT+YlqBl5jn/ROH4+4mIc+H9be+TI7D+qk5037rvn6Q4Vxp5bHTRaGP4vC/+ viSKuP3awQrLf+72BX+wlL0GCSqutHm73etaJHWuaQCP22UIPc6puDaCFezlNakwx2pA FdB7b2DvlrPgYn+IvlpiVHUTJl8Mv0eSy+svtVnMYGRuvKjfC1UVl1CE0YlLBt9a1Skt VLt5BO3chwc/LzwaZZ9P0KYV3o9RM8Lre5Lex+reWYfOhmM2YKqx7q05S5PVDw/10KZd TOMA== 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 :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=1t8RKux0b3auTyo3EU4Fjza8Z8XyMBYSPlq98c5flic=; b=GxJdiiv8v/o8YOMb3z/CQgR+jqiOJFdq2wFEzeFvSrDMC52Cc5pIvE+KRqy7FWrKaQ 7ZIieisTCRznB5rbsy8SgFwlGcnu248cS8ps+dBPBq56d3XLbA0SJJd2xxJmoTj5VNCy Tee9AfVFxsy7VU8k/iDGn8DFNs82eHQ2JkfRZ5orHI3rKaBQU273NMC6IIawnZLxxb+e bSs6o05M4ibDOu4nZNsF9EHNWBjqibDs51B5cY3GGdl+/k2e86V2Wkb5wK6bDg9kalMZ xOC+S/GX8IV9Ht5JGYFnigeu3fMXvqmqVgDGQmM6ylF59h7Ii+R9HjO+8amVMdGwHmFs ekcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Fc4aT5+u; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e11si1802865pfl.287.2019.09.01.12.51.10; Sun, 01 Sep 2019 12:51:26 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Fc4aT5+u; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729009AbfIATtt (ORCPT + 99 others); Sun, 1 Sep 2019 15:49:49 -0400 Received: from mail-wm1-f66.google.com ([209.85.128.66]:50565 "EHLO mail-wm1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728506AbfIATtt (ORCPT ); Sun, 1 Sep 2019 15:49:49 -0400 Received: by mail-wm1-f66.google.com with SMTP id c10so466250wmc.0 for ; Sun, 01 Sep 2019 12:49:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=1t8RKux0b3auTyo3EU4Fjza8Z8XyMBYSPlq98c5flic=; b=Fc4aT5+uP8DK3G5DqiX1PVV2U0OR5puONXiG36iLvcBgC5k9t3q5XjF75IRYjbbgxy aIQkqrvX4ndW8RUayuyDYvIjx2aJFf4TbnI5pGadB7iNwZVsE9UD2tEN1XOCo0rbrhcv ZgpnWW44RXkXooQLApzTxaK7xFfdgGHLw/sVzVJU09l6RwHZNWQUEI+ATBYN5Wb9TyNf 6GqU/CikpFvNy+g7jzE+5M0EjQxcTmWk7OxrDi3nsCaQSjwHkqB6LQwt4aT7oiBYLIxf 6qDyXfNfW77+yBUX8CoAfE7CQ6o8jwkqMD4aM/C2jBoTtRzavn8XletlmQJbR7vske2S bvMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=1t8RKux0b3auTyo3EU4Fjza8Z8XyMBYSPlq98c5flic=; b=dmOh1MWzxVA1gyO1xgET0VTRLenltqnchQEaGqNg1smdwlkHrd3zHvaw8WDY2i1j0A ByHCWa1T2BlFwKUNGDkuNXsKSjJRMlgq2uUze+Vo4YqdfA9Jncketq1uQGHuTKS5Fmrg zeWvXJLS/CvAMg7KhcHwl3AcRi3CGJekxnrsMOoISgR1AQPuNojge9dX+DnJ0VkDbM+5 1013URNhr1ovIOcdh8OIyqg7MVMKsq+6WFH0Ms9spfAm9P1NVmMsyDbq+G22+1S7EnzP vHIedRjhlntZHKxd5GgSQ8RC4h+oHNbHKyu8Hmbyy7vq9TYJv4bbMqrQNXSblxO6CiB6 cZUQ== X-Gm-Message-State: APjAAAVKKz2ejo6Zqydxfc2EQH2HWSov5sbzOtO/Gq5ctVA/VtjVEgVN s51WvwJx4vPHetADumR2b38= X-Received: by 2002:a7b:c857:: with SMTP id c23mr33536520wml.51.1567367386985; Sun, 01 Sep 2019 12:49:46 -0700 (PDT) Received: from noxium ([86.124.23.129]) by smtp.gmail.com with ESMTPSA id f75sm17153683wmf.2.2019.09.01.12.49.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 01 Sep 2019 12:49:46 -0700 (PDT) Message-ID: <5124dd295d2b5fb934ad567fbe19b2f6b37a8372.camel@gmail.com> Subject: Re: [PATCH] ASoC: fsl_sai: Set SAI Channel Mode to Output Mode From: Cosmin-Gabriel Samoila To: Daniel Baluta , broonie@kernel.org Cc: festevam@gmail.com, nicoleotsuka@gmail.com, Xiubo.Lee@gmail.com, shengjiu.wang@nxp.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, timur@kernel.org, NXP Linux Team , Cosmin-Gabriel Samoila Date: Sun, 01 Sep 2019 22:49:44 +0300 In-Reply-To: <20190830225514.5283-1-daniel.baluta@nxp.com> References: <20190830225514.5283-1-daniel.baluta@nxp.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.30.5-1.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Looks good to me! Best regards, Cosmin On Sat, 2019-08-31 at 01:55 +0300, Daniel Baluta wrote: > From SAI datasheet: > > CHMOD, configures if transmit data pins are configured for TDM mode > or Output mode. > * (0) TDM mode, transmit data pins are tri-stated when slots > are > masked or channels are disabled. > * (1) Output mode, transmit data pins are never tri-stated and > will output zero when slots are masked or channels are > disabled. > > When data pins are tri-stated, there is noise on some channels > when FS clock value is high and data is read while fsclk is > transitioning from high to low. > > Fix this by setting CHMOD to Output Mode so that pins will output > zero > when slots are masked or channels are disabled. > > Cc: NXP Linux Team > Signed-off-by: Cosmin-Gabriel Samoila > Signed-off-by: Daniel Baluta > --- > sound/soc/fsl/fsl_sai.c | 15 ++++++++++++--- > sound/soc/fsl/fsl_sai.h | 2 ++ > 2 files changed, 14 insertions(+), 3 deletions(-) > > diff --git a/sound/soc/fsl/fsl_sai.c b/sound/soc/fsl/fsl_sai.c > index e896b577b1f7..b9daab0eb6eb 100644 > --- a/sound/soc/fsl/fsl_sai.c > +++ b/sound/soc/fsl/fsl_sai.c > @@ -467,6 +467,12 @@ static int fsl_sai_hw_params(struct > snd_pcm_substream *substream, > > val_cr4 |= FSL_SAI_CR4_FRSZ(slots); > > + /* > + * set CHMOD to Output Mode so that transmit data pins will > + * output zero when slots are masked or channels are disabled > + */ > + val_cr4 |= FSL_SAI_CR4_CHMOD; > + > /* > * For SAI master mode, when Tx(Rx) sync with Rx(Tx) clock, > Rx(Tx) will > * generate bclk and frame clock for Tx(Rx), we should set > RCR4(TCR4), > @@ -477,7 +483,8 @@ static int fsl_sai_hw_params(struct > snd_pcm_substream *substream, > if (!sai->is_slave_mode) { > if (!sai->synchronous[TX] && sai->synchronous[RX] && > !tx) { > regmap_update_bits(sai->regmap, > FSL_SAI_TCR4(ofs), > - FSL_SAI_CR4_SYWD_MASK | > FSL_SAI_CR4_FRSZ_MASK, > + FSL_SAI_CR4_SYWD_MASK | > FSL_SAI_CR4_FRSZ_MASK | > + FSL_SAI_CR4_CHMOD_MASK, > val_cr4); > regmap_update_bits(sai->regmap, > FSL_SAI_TCR5(ofs), > FSL_SAI_CR5_WNW_MASK | > FSL_SAI_CR5_W0W_MASK | > @@ -486,7 +493,8 @@ static int fsl_sai_hw_params(struct > snd_pcm_substream *substream, > ~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, > + FSL_SAI_CR4_SYWD_MASK | > FSL_SAI_CR4_FRSZ_MASK | > + FSL_SAI_CR4_CHMOD_MASK, > val_cr4); > regmap_update_bits(sai->regmap, > FSL_SAI_RCR5(ofs), > FSL_SAI_CR5_WNW_MASK | > FSL_SAI_CR5_W0W_MASK | > @@ -497,7 +505,8 @@ static int fsl_sai_hw_params(struct > snd_pcm_substream *substream, > } > > regmap_update_bits(sai->regmap, FSL_SAI_xCR4(tx, ofs), > - FSL_SAI_CR4_SYWD_MASK | > FSL_SAI_CR4_FRSZ_MASK, > + FSL_SAI_CR4_SYWD_MASK | > FSL_SAI_CR4_FRSZ_MASK | > + FSL_SAI_CR4_CHMOD_MASK, > val_cr4); > regmap_update_bits(sai->regmap, FSL_SAI_xCR5(tx, ofs), > FSL_SAI_CR5_WNW_MASK | FSL_SAI_CR5_W0W_MASK > | > diff --git a/sound/soc/fsl/fsl_sai.h b/sound/soc/fsl/fsl_sai.h > index f96f8d97489d..1e3b4a6889a8 100644 > --- a/sound/soc/fsl/fsl_sai.h > +++ b/sound/soc/fsl/fsl_sai.h > @@ -119,6 +119,8 @@ > #define FSL_SAI_CR4_FRSZ_MASK (0x1f << 16) > #define FSL_SAI_CR4_SYWD(x) (((x) - 1) << 8) > #define FSL_SAI_CR4_SYWD_MASK (0x1f << 8) > +#define FSL_SAI_CR4_CHMOD BIT(5) > +#define FSL_SAI_CR4_CHMOD_MASK GENMASK(5, 5) > #define FSL_SAI_CR4_MF BIT(4) > #define FSL_SAI_CR4_FSE BIT(3) > #define FSL_SAI_CR4_FSP BIT(1)