From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 48EB5C43464 for ; Mon, 21 Sep 2020 10:32:02 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (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 A1FB420684 for ; Mon, 21 Sep 2020 10:32:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="oH8f3FVc"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jnag0fqD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A1FB420684 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 33F4616E7; Mon, 21 Sep 2020 12:31:10 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 33F4616E7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1600684320; bh=4/IDvTQPnUbOdxL+1N+6f3R3qxNHZgCrX7Ul0vD2cl8=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=oH8f3FVcoL02JDjlBRFyhN+VlmboqanA6hLPDYq9k0k6nROQNvXHMvjswatoWSERX E4AIcOJ29OOXtvwVz8U/0mYYUEWwSfk1qfYEsPd/ZtQPsaTv/aYfO35KUz35wrB2II zK1xQGXND2oJzUtp2L8Ger6ckBbI/ZPG/AgxqaU4= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 1C198F80315; Mon, 21 Sep 2020 12:28:20 +0200 (CEST) Received: by alsa1.perex.cz (Postfix, from userid 50401) id BE263F802FE; Mon, 21 Sep 2020 12:28:03 +0200 (CEST) Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 22744F80161 for ; Mon, 21 Sep 2020 12:27:43 +0200 (CEST) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 22744F80161 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jnag0fqD" Received: by mail-wr1-x444.google.com with SMTP id g4so12137990wrs.5 for ; Mon, 21 Sep 2020 03:27:43 -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=edlSUT/Y078NXbAZqDd8CvaKkdPfuHJQ/JeQ1t1s3zw=; b=jnag0fqDdXTzH7mJmr/nHlCqEUC2q1l0NOwme88e8hBjTYY8yvZxkoFcn5x2oxWOFg GxaB2+IakXYFHyl1hJIAk9vBDGCwfnx9exyigyT7DB2XlY+s/RifWzoYU4umXVUfUNof Wtha0ZzWvQ6ziUsmsqC1BE8gEiXietWKSgZLVqgIKZdLaOSjmqIdMsrHTbIbeVyrFzn2 J4XDrv5R1jyjikClYuEb4z/BDp02aV+u/zfAI7lU5py/chj8whvxZ7o6F/SM+Ub098HK pEppTaatuCVvCTO/zImKSqN2xgMo/8rt0IF4RG2aGT6oCt6qGY8bhA6MZCprotV3kqfZ EE/w== 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=edlSUT/Y078NXbAZqDd8CvaKkdPfuHJQ/JeQ1t1s3zw=; b=dRncM8GB0DU6lUnAKOEXPt4p941akrKF4K0tWj7TgAAcWKZvfoVYENw9TTt4rAQ0Rj RFD1FMMm3Sc43JPQ8kElICv3oDAxC8eHkvvz/jXmBkx4gWtrVw/OW7YbqoPviglu00Mv V66m9OWEy0e7lTNGeR2oztbVbHw7JeFX5sq8btX6LkVogtUwd3dQd1VfVPobe0rd7a6W JadKD11xXp7xvo1N1iLmLfPnDGFz+79zJNe54T4ulkuHgXnSKUAOO3GuXELoTtGWrWo8 70u1HnDypZF/PIerRqg2Xl1Qhiy6tdmwU5wF263bPDwcBkQ9o3OyxPEjk2ZvZHBACXSZ ZGtg== X-Gm-Message-State: AOAM5324Doo6hK+Pmmz/ckdlRfDwqgiSvBt+/ni84e1uMEFq8/CnkCCn AHCv/QdAY4GjiQdqKBt2T5w= X-Google-Smtp-Source: ABdhPJxmFW+NaCfURDMye6Dosi+5xOQ1AdjDzKmNSK/hSvD75t+zteXJgK4z547kQ2tx9GTkQqXoAQ== X-Received: by 2002:a5d:4710:: with SMTP id y16mr53373939wrq.203.1600684058897; Mon, 21 Sep 2020 03:27:38 -0700 (PDT) Received: from localhost.localdomain (lputeaux-656-1-11-33.w82-127.abo.wanadoo.fr. [82.127.142.33]) by smtp.gmail.com with ESMTPSA id h2sm20713774wrp.69.2020.09.21.03.27.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Sep 2020 03:27:37 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Maxime Ripard , Chen-Yu Tsai , Rob Herring , Mark Brown , Liam Girdwood Subject: [PATCH v4 03/22] ASoC: sun4i-i2s: Change get_sr() and get_wss() to be more explicit Date: Mon, 21 Sep 2020 12:27:12 +0200 Message-Id: <20200921102731.747736-4-peron.clem@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200921102731.747736-1-peron.clem@gmail.com> References: <20200921102731.747736-1-peron.clem@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: devicetree@vger.kernel.org, Jernej Skrabec , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, Takashi Iwai , Marcus Cooper , linux-sunxi@googlegroups.com, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= , linux-arm-kernel@lists.infradead.org X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" We are actually using a complex formula to just return a bunch of simple values. Also this formula is wrong for sun4i. Replace this with a simpler switch case. Also drop the i2s params not used. Signed-off-by: Clément Péron --- sound/soc/sunxi/sun4i-i2s.c | 69 +++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c index 0633b9fba3d7..11bbcbe24d6b 100644 --- a/sound/soc/sunxi/sun4i-i2s.c +++ b/sound/soc/sunxi/sun4i-i2s.c @@ -175,8 +175,8 @@ struct sun4i_i2s_quirks { unsigned int num_mclk_dividers; unsigned long (*get_bclk_parent_rate)(const struct sun4i_i2s *); - s8 (*get_sr)(const struct sun4i_i2s *, int); - s8 (*get_wss)(const struct sun4i_i2s *, int); + int (*get_sr)(unsigned int width); + int (*get_wss)(unsigned int width); int (*set_chan_cfg)(const struct sun4i_i2s *i2s, unsigned int channels, unsigned int slots, unsigned int slot_width); @@ -381,37 +381,56 @@ static int sun4i_i2s_set_clk_rate(struct snd_soc_dai *dai, return 0; } -static s8 sun4i_i2s_get_sr(const struct sun4i_i2s *i2s, int width) +static int sun4i_i2s_get_sr(unsigned int width) { - if (width < 16 || width > 24) - return -EINVAL; - - if (width % 4) - return -EINVAL; + switch (width) { + case 16: + return 0x0; + case 20: + return 0x1; + case 24: + return 0x2; + } - return (width - 16) / 4; + return -EINVAL; } -static s8 sun4i_i2s_get_wss(const struct sun4i_i2s *i2s, int width) +static int sun4i_i2s_get_wss(unsigned int width) { - if (width < 16 || width > 32) - return -EINVAL; - - if (width % 4) - return -EINVAL; + switch (width) { + case 16: + return 0x0; + case 20: + return 0x1; + case 24: + return 0x2; + case 32: + return 0x3; + } - return (width - 16) / 4; + return -EINVAL; } -static s8 sun8i_i2s_get_sr_wss(const struct sun4i_i2s *i2s, int width) +static int sun8i_i2s_get_sr_wss(unsigned int width) { - if (width % 4) - return -EINVAL; - - if (width < 8 || width > 32) - return -EINVAL; + switch (width) { + case 8: + return 0x1; + case 12: + return 0x2; + case 16: + return 0x3; + case 20: + return 0x4; + case 24: + return 0x5; + case 28: + return 0x6; + case 32: + return 0x7; + } - return (width - 8) / 4 + 1; + return -EINVAL; } static int sun4i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, @@ -572,11 +591,11 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream, } i2s->playback_dma_data.addr_width = width; - sr = i2s->variant->get_sr(i2s, word_size); + sr = i2s->variant->get_sr(word_size); if (sr < 0) return -EINVAL; - wss = i2s->variant->get_wss(i2s, slot_width); + wss = i2s->variant->get_wss(slot_width); if (wss < 0) return -EINVAL; -- 2.25.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.5 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EFE54C43463 for ; Mon, 21 Sep 2020 10:29:36 +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 AA2562073A for ; Mon, 21 Sep 2020 10:29:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="YXXWIp5t"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jnag0fqD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AA2562073A 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+linux-arm-kernel=archiver.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=sdK1tmOf4WsxwazS60L0pDsnmRizcH3RDg2ypra1XC4=; b=YXXWIp5t6vJCdK2Qz1J7Eb2jW SjWDIqNIXIsCX7yhz30nzASfB0bJ8UuLibKezIwwkpnDWKimBR99cIM0kLsax9XUVRLiamw6hlsnI RDjnQZZ9jTyr6uYHrgKPYKAIC8Wt4EU65QmB9TgRqDgOi28Oje7Y9P/lIwJfKWpZh+Vu5foAw60OW RZNZih8TUtFQVawkDpfsnCleZ7fUHCa5EYN6jlp+FmVffrFEGfq0/NRv4zTJc1uPiF2cOKtBPKtla lozZ3NFN8QT3zUmz0BTwrZpTgEdABFvg6Fvb8MbISBDw65E3E88lZkSW3hWs4u1DS4t7UySsdIfuD s1S8W6V5w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKJ34-0007kC-CT; Mon, 21 Sep 2020 10:27:54 +0000 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKJ2q-0007eu-46 for linux-arm-kernel@lists.infradead.org; Mon, 21 Sep 2020 10:27:41 +0000 Received: by mail-wr1-x443.google.com with SMTP id k15so12136907wrn.10 for ; Mon, 21 Sep 2020 03:27:39 -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=edlSUT/Y078NXbAZqDd8CvaKkdPfuHJQ/JeQ1t1s3zw=; b=jnag0fqDdXTzH7mJmr/nHlCqEUC2q1l0NOwme88e8hBjTYY8yvZxkoFcn5x2oxWOFg GxaB2+IakXYFHyl1hJIAk9vBDGCwfnx9exyigyT7DB2XlY+s/RifWzoYU4umXVUfUNof Wtha0ZzWvQ6ziUsmsqC1BE8gEiXietWKSgZLVqgIKZdLaOSjmqIdMsrHTbIbeVyrFzn2 J4XDrv5R1jyjikClYuEb4z/BDp02aV+u/zfAI7lU5py/chj8whvxZ7o6F/SM+Ub098HK pEppTaatuCVvCTO/zImKSqN2xgMo/8rt0IF4RG2aGT6oCt6qGY8bhA6MZCprotV3kqfZ EE/w== 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=edlSUT/Y078NXbAZqDd8CvaKkdPfuHJQ/JeQ1t1s3zw=; b=OW8niHKtWeOeh6MXobhI9ipoJbyq+kjzPN/x/uukTvQCSV4955k3dKFkra0Oi59X6/ GKYSOMOXjwbrBqaijiHy5FiYmwTf5cymfxrI+E2EFI42cLYVcQ2zR63TaQDotZK6CDJw WrpSN+u1INQaKsOJy9kfkYKnyjwLjdctNykRe8N8ciOKdC5DUKo07HEx1Z3kYe6lTkfs xhzBZabXB9NmpnhaA5FZKo4bhD0snCi/p/d0mr7lZuRSrsiI6tzsqur+YECnZ8UuKo0w kk7UEIX91RW8rH9z62NxGaazT+noupJTu9acPqiipEkgHI7Wcz3mNcrKRg4ahL1n0tvo pRMA== X-Gm-Message-State: AOAM5330nQWe24ueWOO5dHiHbFvLG56vYy7lDES0JFH0X7/QEdrq5l/n FHI+gaB38u/K0zy5FUTeBi8= X-Google-Smtp-Source: ABdhPJxmFW+NaCfURDMye6Dosi+5xOQ1AdjDzKmNSK/hSvD75t+zteXJgK4z547kQ2tx9GTkQqXoAQ== X-Received: by 2002:a5d:4710:: with SMTP id y16mr53373939wrq.203.1600684058897; Mon, 21 Sep 2020 03:27:38 -0700 (PDT) Received: from localhost.localdomain (lputeaux-656-1-11-33.w82-127.abo.wanadoo.fr. [82.127.142.33]) by smtp.gmail.com with ESMTPSA id h2sm20713774wrp.69.2020.09.21.03.27.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Sep 2020 03:27:37 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Maxime Ripard , Chen-Yu Tsai , Rob Herring , Mark Brown , Liam Girdwood Subject: [PATCH v4 03/22] ASoC: sun4i-i2s: Change get_sr() and get_wss() to be more explicit Date: Mon, 21 Sep 2020 12:27:12 +0200 Message-Id: <20200921102731.747736-4-peron.clem@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200921102731.747736-1-peron.clem@gmail.com> References: <20200921102731.747736-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-20200921_062740_207511_107A179D X-CRM114-Status: GOOD ( 16.02 ) 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?q?Cl=C3=A9ment=20P=C3=A9ron?= , linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org V2UgYXJlIGFjdHVhbGx5IHVzaW5nIGEgY29tcGxleCBmb3JtdWxhIHRvIGp1c3QgcmV0dXJuIGEg YnVuY2ggb2YKc2ltcGxlIHZhbHVlcy4gQWxzbyB0aGlzIGZvcm11bGEgaXMgd3JvbmcgZm9yIHN1 bjRpLgoKUmVwbGFjZSB0aGlzIHdpdGggYSBzaW1wbGVyIHN3aXRjaCBjYXNlLgoKQWxzbyBkcm9w IHRoZSBpMnMgcGFyYW1zIG5vdCB1c2VkLgoKU2lnbmVkLW9mZi1ieTogQ2zDqW1lbnQgUMOpcm9u IDxwZXJvbi5jbGVtQGdtYWlsLmNvbT4KLS0tCiBzb3VuZC9zb2Mvc3VueGkvc3VuNGktaTJzLmMg fCA2OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdl ZCwgNDQgaW5zZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc291bmQv c29jL3N1bnhpL3N1bjRpLWkycy5jIGIvc291bmQvc29jL3N1bnhpL3N1bjRpLWkycy5jCmluZGV4 IDA2MzNiOWZiYTNkNy4uMTFiYmNiZTI0ZDZiIDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mvc3VueGkv c3VuNGktaTJzLmMKKysrIGIvc291bmQvc29jL3N1bnhpL3N1bjRpLWkycy5jCkBAIC0xNzUsOCAr MTc1LDggQEAgc3RydWN0IHN1bjRpX2kyc19xdWlya3MgewogCXVuc2lnbmVkIGludAkJCW51bV9t Y2xrX2RpdmlkZXJzOwogCiAJdW5zaWduZWQgbG9uZyAoKmdldF9iY2xrX3BhcmVudF9yYXRlKShj b25zdCBzdHJ1Y3Qgc3VuNGlfaTJzICopOwotCXM4CSgqZ2V0X3NyKShjb25zdCBzdHJ1Y3Qgc3Vu NGlfaTJzICosIGludCk7Ci0JczgJKCpnZXRfd3NzKShjb25zdCBzdHJ1Y3Qgc3VuNGlfaTJzICos IGludCk7CisJaW50CSgqZ2V0X3NyKSh1bnNpZ25lZCBpbnQgd2lkdGgpOworCWludAkoKmdldF93 c3MpKHVuc2lnbmVkIGludCB3aWR0aCk7CiAJaW50CSgqc2V0X2NoYW5fY2ZnKShjb25zdCBzdHJ1 Y3Qgc3VuNGlfaTJzICppMnMsCiAJCQkJdW5zaWduZWQgaW50IGNoYW5uZWxzLAl1bnNpZ25lZCBp bnQgc2xvdHMsCiAJCQkJdW5zaWduZWQgaW50IHNsb3Rfd2lkdGgpOwpAQCAtMzgxLDM3ICszODEs NTYgQEAgc3RhdGljIGludCBzdW40aV9pMnNfc2V0X2Nsa19yYXRlKHN0cnVjdCBzbmRfc29jX2Rh aSAqZGFpLAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgczggc3VuNGlfaTJzX2dldF9zcihjb25z dCBzdHJ1Y3Qgc3VuNGlfaTJzICppMnMsIGludCB3aWR0aCkKK3N0YXRpYyBpbnQgc3VuNGlfaTJz X2dldF9zcih1bnNpZ25lZCBpbnQgd2lkdGgpCiB7Ci0JaWYgKHdpZHRoIDwgMTYgfHwgd2lkdGgg PiAyNCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAod2lkdGggJSA0KQotCQlyZXR1cm4gLUVJ TlZBTDsKKwlzd2l0Y2ggKHdpZHRoKSB7CisJY2FzZSAxNjoKKwkJcmV0dXJuIDB4MDsKKwljYXNl IDIwOgorCQlyZXR1cm4gMHgxOworCWNhc2UgMjQ6CisJCXJldHVybiAweDI7CisJfQogCi0JcmV0 dXJuICh3aWR0aCAtIDE2KSAvIDQ7CisJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBzOCBz dW40aV9pMnNfZ2V0X3dzcyhjb25zdCBzdHJ1Y3Qgc3VuNGlfaTJzICppMnMsIGludCB3aWR0aCkK K3N0YXRpYyBpbnQgc3VuNGlfaTJzX2dldF93c3ModW5zaWduZWQgaW50IHdpZHRoKQogewotCWlm ICh3aWR0aCA8IDE2IHx8IHdpZHRoID4gMzIpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKHdp ZHRoICUgNCkKLQkJcmV0dXJuIC1FSU5WQUw7CisJc3dpdGNoICh3aWR0aCkgeworCWNhc2UgMTY6 CisJCXJldHVybiAweDA7CisJY2FzZSAyMDoKKwkJcmV0dXJuIDB4MTsKKwljYXNlIDI0OgorCQly ZXR1cm4gMHgyOworCWNhc2UgMzI6CisJCXJldHVybiAweDM7CisJfQogCi0JcmV0dXJuICh3aWR0 aCAtIDE2KSAvIDQ7CisJcmV0dXJuIC1FSU5WQUw7CiB9CiAKLXN0YXRpYyBzOCBzdW44aV9pMnNf Z2V0X3NyX3dzcyhjb25zdCBzdHJ1Y3Qgc3VuNGlfaTJzICppMnMsIGludCB3aWR0aCkKK3N0YXRp YyBpbnQgc3VuOGlfaTJzX2dldF9zcl93c3ModW5zaWduZWQgaW50IHdpZHRoKQogewotCWlmICh3 aWR0aCAlIDQpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKHdpZHRoIDwgOCB8fCB3aWR0aCA+ IDMyKQotCQlyZXR1cm4gLUVJTlZBTDsKKwlzd2l0Y2ggKHdpZHRoKSB7CisJY2FzZSA4OgorCQly ZXR1cm4gMHgxOworCWNhc2UgMTI6CisJCXJldHVybiAweDI7CisJY2FzZSAxNjoKKwkJcmV0dXJu IDB4MzsKKwljYXNlIDIwOgorCQlyZXR1cm4gMHg0OworCWNhc2UgMjQ6CisJCXJldHVybiAweDU7 CisJY2FzZSAyODoKKwkJcmV0dXJuIDB4NjsKKwljYXNlIDMyOgorCQlyZXR1cm4gMHg3OworCX0K IAotCXJldHVybiAod2lkdGggLSA4KSAvIDQgKyAxOworCXJldHVybiAtRUlOVkFMOwogfQogCiBz dGF0aWMgaW50IHN1bjRpX2kyc19zZXRfY2hhbl9jZmcoY29uc3Qgc3RydWN0IHN1bjRpX2kycyAq aTJzLApAQCAtNTcyLDExICs1OTEsMTEgQEAgc3RhdGljIGludCBzdW40aV9pMnNfaHdfcGFyYW1z KHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3RyZWFtLAogCX0KIAlpMnMtPnBsYXliYWNr X2RtYV9kYXRhLmFkZHJfd2lkdGggPSB3aWR0aDsKIAotCXNyID0gaTJzLT52YXJpYW50LT5nZXRf c3IoaTJzLCB3b3JkX3NpemUpOworCXNyID0gaTJzLT52YXJpYW50LT5nZXRfc3Iod29yZF9zaXpl KTsKIAlpZiAoc3IgPCAwKQogCQlyZXR1cm4gLUVJTlZBTDsKIAotCXdzcyA9IGkycy0+dmFyaWFu dC0+Z2V0X3dzcyhpMnMsIHNsb3Rfd2lkdGgpOworCXdzcyA9IGkycy0+dmFyaWFudC0+Z2V0X3dz cyhzbG90X3dpZHRoKTsKIAlpZiAod3NzIDwgMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLS0gCjIu MjUuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LWFybS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4 LWFybS1rZXJuZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 72399C43464 for ; Mon, 21 Sep 2020 10:29:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 40C8C20EDD for ; Mon, 21 Sep 2020 10:29:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jnag0fqD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726605AbgIUK1m (ORCPT ); Mon, 21 Sep 2020 06:27:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60234 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726417AbgIUK1k (ORCPT ); Mon, 21 Sep 2020 06:27:40 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4990EC0613D0; Mon, 21 Sep 2020 03:27:40 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id j2so12147436wrx.7; Mon, 21 Sep 2020 03:27:40 -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=edlSUT/Y078NXbAZqDd8CvaKkdPfuHJQ/JeQ1t1s3zw=; b=jnag0fqDdXTzH7mJmr/nHlCqEUC2q1l0NOwme88e8hBjTYY8yvZxkoFcn5x2oxWOFg GxaB2+IakXYFHyl1hJIAk9vBDGCwfnx9exyigyT7DB2XlY+s/RifWzoYU4umXVUfUNof Wtha0ZzWvQ6ziUsmsqC1BE8gEiXietWKSgZLVqgIKZdLaOSjmqIdMsrHTbIbeVyrFzn2 J4XDrv5R1jyjikClYuEb4z/BDp02aV+u/zfAI7lU5py/chj8whvxZ7o6F/SM+Ub098HK pEppTaatuCVvCTO/zImKSqN2xgMo/8rt0IF4RG2aGT6oCt6qGY8bhA6MZCprotV3kqfZ EE/w== 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=edlSUT/Y078NXbAZqDd8CvaKkdPfuHJQ/JeQ1t1s3zw=; b=R0gLnePrjn6qUj2nXCrKNQERdrJkv02hxRvcctfyVA7S0o5QkNKPv1CsWKYewEYz3D y0JGs8NGjOk9mNmIMmHoqs53Dv5hYLwH9I/yiUd8CB5bX4YFBscgOWWS8LBRUTp4vkeV lK3VGh56SbaG9Tca5NnFiBAAZLj3bi622m/RgI66JmJba6quZw7sXQFHkWVETlZNk+/1 bEWhBlhkuzfLLQdvdKxkN5jAq0lWXIC5r9Zc4ELnVPGbGph7Rnhm4CkNz0eNtVwYJixR Nf4sUdBnzLC3piXbmdK8WXvBfcscQGq2wSjdyFBFQ+9mq/4kmixcwGVqpSDBVY7oAu6D eAQQ== X-Gm-Message-State: AOAM532QMgqGVh/KUsQH99POPPYbXLDLVE1aKmVkwBCMED+GX0UmDPEm 1PZhrUQVwBBxGbr1vkYgWYs= X-Google-Smtp-Source: ABdhPJxmFW+NaCfURDMye6Dosi+5xOQ1AdjDzKmNSK/hSvD75t+zteXJgK4z547kQ2tx9GTkQqXoAQ== X-Received: by 2002:a5d:4710:: with SMTP id y16mr53373939wrq.203.1600684058897; Mon, 21 Sep 2020 03:27:38 -0700 (PDT) Received: from localhost.localdomain (lputeaux-656-1-11-33.w82-127.abo.wanadoo.fr. [82.127.142.33]) by smtp.gmail.com with ESMTPSA id h2sm20713774wrp.69.2020.09.21.03.27.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Sep 2020 03:27:37 -0700 (PDT) From: =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= To: Maxime Ripard , Chen-Yu Tsai , Rob Herring , Mark Brown , Liam Girdwood Cc: Jaroslav Kysela , Takashi Iwai , Marcus Cooper , Jernej Skrabec , alsa-devel@alsa-project.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com, =?UTF-8?q?Cl=C3=A9ment=20P=C3=A9ron?= Subject: [PATCH v4 03/22] ASoC: sun4i-i2s: Change get_sr() and get_wss() to be more explicit Date: Mon, 21 Sep 2020 12:27:12 +0200 Message-Id: <20200921102731.747736-4-peron.clem@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200921102731.747736-1-peron.clem@gmail.com> References: <20200921102731.747736-1-peron.clem@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org We are actually using a complex formula to just return a bunch of simple values. Also this formula is wrong for sun4i. Replace this with a simpler switch case. Also drop the i2s params not used. Signed-off-by: Clément Péron --- sound/soc/sunxi/sun4i-i2s.c | 69 +++++++++++++++++++++++-------------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c index 0633b9fba3d7..11bbcbe24d6b 100644 --- a/sound/soc/sunxi/sun4i-i2s.c +++ b/sound/soc/sunxi/sun4i-i2s.c @@ -175,8 +175,8 @@ struct sun4i_i2s_quirks { unsigned int num_mclk_dividers; unsigned long (*get_bclk_parent_rate)(const struct sun4i_i2s *); - s8 (*get_sr)(const struct sun4i_i2s *, int); - s8 (*get_wss)(const struct sun4i_i2s *, int); + int (*get_sr)(unsigned int width); + int (*get_wss)(unsigned int width); int (*set_chan_cfg)(const struct sun4i_i2s *i2s, unsigned int channels, unsigned int slots, unsigned int slot_width); @@ -381,37 +381,56 @@ static int sun4i_i2s_set_clk_rate(struct snd_soc_dai *dai, return 0; } -static s8 sun4i_i2s_get_sr(const struct sun4i_i2s *i2s, int width) +static int sun4i_i2s_get_sr(unsigned int width) { - if (width < 16 || width > 24) - return -EINVAL; - - if (width % 4) - return -EINVAL; + switch (width) { + case 16: + return 0x0; + case 20: + return 0x1; + case 24: + return 0x2; + } - return (width - 16) / 4; + return -EINVAL; } -static s8 sun4i_i2s_get_wss(const struct sun4i_i2s *i2s, int width) +static int sun4i_i2s_get_wss(unsigned int width) { - if (width < 16 || width > 32) - return -EINVAL; - - if (width % 4) - return -EINVAL; + switch (width) { + case 16: + return 0x0; + case 20: + return 0x1; + case 24: + return 0x2; + case 32: + return 0x3; + } - return (width - 16) / 4; + return -EINVAL; } -static s8 sun8i_i2s_get_sr_wss(const struct sun4i_i2s *i2s, int width) +static int sun8i_i2s_get_sr_wss(unsigned int width) { - if (width % 4) - return -EINVAL; - - if (width < 8 || width > 32) - return -EINVAL; + switch (width) { + case 8: + return 0x1; + case 12: + return 0x2; + case 16: + return 0x3; + case 20: + return 0x4; + case 24: + return 0x5; + case 28: + return 0x6; + case 32: + return 0x7; + } - return (width - 8) / 4 + 1; + return -EINVAL; } static int sun4i_i2s_set_chan_cfg(const struct sun4i_i2s *i2s, @@ -572,11 +591,11 @@ static int sun4i_i2s_hw_params(struct snd_pcm_substream *substream, } i2s->playback_dma_data.addr_width = width; - sr = i2s->variant->get_sr(i2s, word_size); + sr = i2s->variant->get_sr(word_size); if (sr < 0) return -EINVAL; - wss = i2s->variant->get_wss(i2s, slot_width); + wss = i2s->variant->get_wss(slot_width); if (wss < 0) return -EINVAL; -- 2.25.1