From patchwork Sun Sep 20 18:07:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgUMOpcm9u?= X-Patchwork-Id: 11788003 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9F27359D for ; Sun, 20 Sep 2020 18:10:44 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (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 6F760207EA for ; Sun, 20 Sep 2020 18:10:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="JeT6tcPj"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QFSnlyxo" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6F760207EA Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.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:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=FOKjLBIjHQyAbtH1rFXLMA/UOLxB4Db71qtHDk50kf4=; b=JeT6tcPj1VLNvdgFf99MU5aOz W57resNd77nphk8iVdOGzshRLkkaaTSUn/R98UxplACgnS47JXKL9koNp0BH6uvfH5105RioegavB eckeLxhEUxWQ4uBiC5Zy2Xx5pat7jxbQxMaz/EptFN5IWEkLSf616cObakX22YhL9keP0Pkwy8S8D bCERPsOnngnbht1XHk/Hxnbrqw8tScjAK4UdjRNJ9sM/zlgIvndgKEsHS6TaYuXAb9Fg5LJUJPGgv q4egJt4meyLKE2gvSMVE4izvKuoLfPZYz43oFBuBeRcoIVDlEc5HIFko8dHcfQFzTGYdZsPUy/j6p DeKS/xHOw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kK3lY-000111-7U; Sun, 20 Sep 2020 18:08:48 +0000 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kK3ky-0000lj-H2 for linux-arm-kernel@lists.infradead.org; Sun, 20 Sep 2020 18:08:13 +0000 Received: by mail-wm1-x342.google.com with SMTP id z9so10326215wmk.1 for ; Sun, 20 Sep 2020 11:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=51B2jgI3bIHgfxjPvcPjrMNGsbUxZmYa6XvJWzsGsIQ=; b=QFSnlyxo/BfaH6nGwNsyBOoNJJPkVC6KB4pYE9ln1WStuM68Y/Zgl835QNGA5hvkb3 wX3kQNze2x9xqbnTNX1OPyRxPEaVlYhKemqwLGDnty6CTE6jPDymYeRMWzRRT6XTr9zr aZh/Oz68hJCuUMYWDpT6x33/7smLG48wgdLIo19ZvBCUnaBbWf9WE9A6Bo0i/N01fUY2 56acwaA6VTX9X8XJ4C5C4IAbtsH2OKu3YpJMgJrhZ/o+FE41kSFzq8Iq/ol05ZxnGqRD 9LTgDTKmxqjwg7Xj3kAXmc4TOTnGTtgSjl2i0CO1i32ouybBW17v9YphPUk2IKe9QrA8 OhmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=51B2jgI3bIHgfxjPvcPjrMNGsbUxZmYa6XvJWzsGsIQ=; b=XR8HugczjGVW3HLhCmc9+QTd86ySWo5tyZ0axxtEy4xmppGGD7eXAoYAsbCHRPL1pi KuibfVVh8YGAc4PkHN0XZKcrvjZi5PqLso6k8uDVJ878pL0Bv68P5oLiD15UVdBAWNqg oRR9sOMvNAdUROZAEzAIX74Z8bBSqCs4phLm5X7IZH1ilH65BVAXfbudIC/XATH992fY S7osRDAfe9ygyH93/kieVuS16k4qgOy1S5o/6L+E5i/cU2Qox9xlZShKdXHDnA4qGU+/ 9H1mns5XvEPxt0rW/wn48eZWIE2HU6pre/4UcG+dlP9oDplqcfdHlABnOAQ6wtJweAWS YlMA== X-Gm-Message-State: AOAM531ZMFAiloeUpwc1TIDNORUGHAqdNTlRFjkffbqjvEj6j66R3fJH RrPkRg4/ofM3uY8tbg4nHX8= X-Google-Smtp-Source: ABdhPJxLTAqnrKH83UX+0zEXiX9MEMj+lyBH2GQJTV8GInqcH9Tjm7nAU0fXa7iu3uJJ+a8yX97ZFQ== X-Received: by 2002:a1c:2c85:: with SMTP id s127mr27265752wms.31.1600625291490; Sun, 20 Sep 2020 11:08:11 -0700 (PDT) Received: from clement-Latitude-7490.numericable.fr (213-245-241-245.rev.numericable.fr. [213.245.241.245]) by smtp.gmail.com with ESMTPSA id 18sm15142782wmj.28.2020.09.20.11.08.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Sep 2020 11:08:10 -0700 (PDT) From: =?utf-8?b?Q2zDqW1lbnQgUMOpcm9u?= To: Maxime Ripard , Chen-Yu Tsai , Rob Herring , Mark Brown , Liam Girdwood Subject: [PATCH v3 04/19] ASoC: sun4i-i2s: Set sign extend sample Date: Sun, 20 Sep 2020 20:07:43 +0200 Message-Id: <20200920180758.592217-5-peron.clem@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200920180758.592217-1-peron.clem@gmail.com> References: <20200920180758.592217-1-peron.clem@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200920_140812_619133_AE044BEF X-CRM114-Status: GOOD ( 14.87 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:342 listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [peron.clem[at]gmail.com] -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Jernej Skrabec , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, Takashi Iwai , Jaroslav Kysela , Marcus Cooper , linux-sunxi@googlegroups.com, =?utf-8?b?Q2zDqW1lbnQgUMOpcm9u?= , linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org From: Marcus Cooper On the newer SoCs such as the H3 and A64 this is set by default to transfer a 0 after each sample in each slot. However the A10 and A20 SoCs that this driver was developed on had a default setting where it padded the audio gain with zeros. This isn't a problem while we have only support for 16bit audio but with larger sample resolution rates in the pipeline then SEXT bits should be cleared so that they also pad at the LSB. Without this the audio gets distorted. Set sign extend sample for all the sunxi generations even if they are not affected. This will keep consistency and avoid relying on default. Signed-off-by: Marcus Cooper Signed-off-by: Clément Péron --- sound/soc/sunxi/sun4i-i2s.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c index 246d4a45edae..57a68222f99a 100644 --- a/sound/soc/sunxi/sun4i-i2s.c +++ b/sound/soc/sunxi/sun4i-i2s.c @@ -48,6 +48,9 @@ #define SUN4I_I2S_FMT0_FMT_I2S (0 << 0) #define SUN4I_I2S_FMT1_REG 0x08 +#define SUN4I_I2S_FMT1_REG_SEXT_MASK BIT(8) +#define SUN4I_I2S_FMT1_REG_SEXT(sext) ((sext) << 8) + #define SUN4I_I2S_FIFO_TX_REG 0x0c #define SUN4I_I2S_FIFO_RX_REG 0x10 @@ -105,6 +108,9 @@ #define SUN8I_I2S_FMT0_BCLK_POLARITY_INVERTED (1 << 7) #define SUN8I_I2S_FMT0_BCLK_POLARITY_NORMAL (0 << 7) +#define SUN8I_I2S_FMT1_REG_SEXT_MASK GENMASK(5, 4) +#define SUN8I_I2S_FMT1_REG_SEXT(sext) ((sext) << 4) + #define SUN8I_I2S_INT_STA_REG 0x0c #define SUN8I_I2S_FIFO_TX_REG 0x20 @@ -656,6 +662,7 @@ static int sun4i_i2s_set_soc_fmt(const struct sun4i_i2s *i2s, } regmap_update_bits(i2s->regmap, SUN4I_I2S_CTRL_REG, SUN4I_I2S_CTRL_MODE_MASK, val); + return 0; } @@ -758,6 +765,11 @@ static int sun8i_i2s_set_soc_fmt(const struct sun4i_i2s *i2s, SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT, val); + /* Set sign extension to pad out LSB with 0 */ + regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT1_REG, + SUN8I_I2S_FMT1_REG_SEXT_MASK, + SUN8I_I2S_FMT1_REG_SEXT(0)); + return 0; } @@ -854,6 +866,11 @@ static int sun50i_h6_i2s_set_soc_fmt(const struct sun4i_i2s *i2s, SUN8I_I2S_CTRL_BCLK_OUT | SUN8I_I2S_CTRL_LRCK_OUT, val); + /* Set sign extension to pad out LSB with 0 */ + regmap_update_bits(i2s->regmap, SUN4I_I2S_FMT1_REG, + SUN8I_I2S_FMT1_REG_SEXT_MASK, + SUN8I_I2S_FMT1_REG_SEXT(0)); + return 0; }