From patchwork Tue Feb 8 08:42:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikita Yushchenko X-Patchwork-Id: 541843 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 7999CC433F5 for ; Tue, 8 Feb 2022 08:44:20 +0000 (UTC) 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 871C31767; Tue, 8 Feb 2022 09:43:26 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 871C31767 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1644309858; bh=d47q9OeNENJ3M7TkHjgzlTEZMDeqeOoOJ/Y0bzXL9d8=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=AjqcV+BrAHElBoEtInhmy23puV7kNhNcE2ULoydIn/ljtQOFb7XOk3UwrXkb/5Od+ fnn9uVZp4x8qlhpHyYW5AFurr1jRxnNadE1z/ret/TuHO2i4/scWcWpxijf6/2ob/6 Pgj++DfGH8kGL2t1Ltjs5NlPOzSE0io6aU/xj8Ng= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id B63C1F80508; Tue, 8 Feb 2022 09:42:52 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 9905EF80518; Tue, 8 Feb 2022 09:42:51 +0100 (CET) Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) (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 32F49F800EB for ; Tue, 8 Feb 2022 09:42:44 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 32F49F800EB Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=cogentembedded-com.20210112.gappssmtp.com header.i=@cogentembedded-com.20210112.gappssmtp.com header.b="SfuD4cs0" Received: by mail-lf1-x131.google.com with SMTP id m18so3493646lfq.4 for ; Tue, 08 Feb 2022 00:42:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=zAs8Yatfb5icRPps4ZaWoN14zXIRZ/fIsgdyAPNGOb4=; b=SfuD4cs0uNn4xZ7k3QGNDYawj1deQWy1OQ/+n1lA0GxfdK0Q1uRJB2bg5CtViFAkJ8 icuGxWaJ7CaR8hyZy2JGgU5BKVeUCabeHxN5mCuHSf/f1xHANr+o3XzwBDHbIM6I7EsT UXq6UNMwG5wreMRA8Tj9Bw5jvP4y6S0y09CDEpfXbPEuzmFvyC/Fm0h/aGMj+67HhD2g vhEjZv2aihkNPwK5knvQFdxoxIGS1LUVQKkxiWULZ8qkIj9//0gyXkpSp6BBpyKTkbOS rUuO1rSwTm5r/vnk4Bh4fROhGrycSBPystmyVqUeFfLrszN7qcp2BoDdv6kks9ApsWAd mhRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=zAs8Yatfb5icRPps4ZaWoN14zXIRZ/fIsgdyAPNGOb4=; b=EbtZIKnkuZV5ITDwEyts+QIDJMboDoiA9CNrJWv7UMSb4evFLznked2fqpic8EA29+ NVlSgqub+0228WiGxamJwHWS2Qdz7XikLcnn0XHGZjxEiK840gWpYEGvpgaDhof7QWEt LQSXGQFqjST/q0K8vH61bBu4G/1IUPnXNNDRiQhVqrhmwkRk8+G3YEGRjHeMTXla7Bt+ 07aX7wNKtLGsVb8VDDxaJ+acpMzNDP4ZEei0NF8inavkq5oYY2dJxfieRLC7rNswmO8i s7fQYjjSBUiMmEMgRPGK7RFqBKoMEBMjxHmZv4oGC4GzsqtR/XCC0GpvOWi7q2ywFuNd L8vQ== X-Gm-Message-State: AOAM5310AOaxS84nKO2/j1xnpqmA9bx2+o97xbM8pRZffHokwdwbGeai 3pb6evH7fIL7d1b9uy6GxF/OHg== X-Google-Smtp-Source: ABdhPJyScCD/zHSIZnBLnovm2lIeHylddool/rNUHBAjMxezHHhiSO5YvqwnGzUQRB10qdhFJgQPnA== X-Received: by 2002:ac2:560a:: with SMTP id v10mr2359890lfd.260.1644309761652; Tue, 08 Feb 2022 00:42:41 -0800 (PST) Received: from cobook.home (nikaet.starlink.ru. [94.141.168.29]) by smtp.gmail.com with ESMTPSA id o12sm1830361lfu.96.2022.02.08.00.42.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Feb 2022 00:42:41 -0800 (PST) From: Nikita Yushchenko To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Kuninori Morimoto Subject: [PATCH 1/4] ASoC: pcm3168a: cleanup unintuitive mask usage Date: Tue, 8 Feb 2022 11:42:17 +0300 Message-Id: <20220208084220.1289836-2-nikita.yoush@cogentembedded.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> References: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> MIME-Version: 1.0 Cc: Nikita Yushchenko , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.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" When checking if the requested parameters are supported, the driver uses PCM3168A_FMT_DSP_MASK to check for PCM3168A_FMT_DSP_* values. However, formally not only PCM3168A_FMT_DSP_* values match that condition, PCM3168A_FMT_I2S_TDM and PCM3168A_FMT_LEFT_J_TDM also do. The check still gives correct result because those extra values can't be in 'fmt' at the check location. Still, to make the code less cryptic, better to compare 'fmt' with PCM3168A_FMT_DSP_* values explicitly. Signed-off-by: Nikita Yushchenko --- sound/soc/codecs/pcm3168a.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c index fdf92c8b28e1..987c5845f769 100644 --- a/sound/soc/codecs/pcm3168a.c +++ b/sound/soc/codecs/pcm3168a.c @@ -33,7 +33,6 @@ #define PCM3168A_FMT_DSP_B 0x5 #define PCM3168A_FMT_I2S_TDM 0x6 #define PCM3168A_FMT_LEFT_J_TDM 0x7 -#define PCM3168A_FMT_DSP_MASK 0x4 #define PCM3168A_NUM_SUPPLIES 6 static const char *const pcm3168a_supply_names[PCM3168A_NUM_SUPPLIES] = { @@ -511,7 +510,8 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, fmt = PCM3168A_FMT_RIGHT_J_16; break; case 24: - if (master_mode || (fmt & PCM3168A_FMT_DSP_MASK)) { + if (master_mode || (fmt == PCM3168A_FMT_DSP_A) || + (fmt == PCM3168A_FMT_DSP_B)) { dev_err(component->dev, "24-bit slots not supported in master mode, or slave mode using DSP\n"); return -EINVAL; } From patchwork Tue Feb 8 08:42:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikita Yushchenko X-Patchwork-Id: 540811 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 3106EC433FE for ; Tue, 8 Feb 2022 08:44:27 +0000 (UTC) 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 53E961785; Tue, 8 Feb 2022 09:43:35 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 53E961785 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1644309865; bh=29N6VXZ7rRK66m4yFLQoUflxBh+GsBaMa+FCFcGDhSU=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=MjjnmVDvKGbSovzJZKNqqm40qzJtDtgU304nk76cZPqPNMVv1PdlWAdQGsJa3UmCw DbICi2hNLQNSTKGSfeEYWgJ0uuNoZug86gGJpQ9acf+rN360Vml4/dSZ/guerhKHNR JqvN8g6h6c4sMXfBVZuyjT4ZaHaWsbFYEsEphGek= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 6AE4CF80519; Tue, 8 Feb 2022 09:42:53 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id A8676F800EB; Tue, 8 Feb 2022 09:42:51 +0100 (CET) Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) (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 06B49F800E1 for ; Tue, 8 Feb 2022 09:42:45 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 06B49F800E1 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=cogentembedded-com.20210112.gappssmtp.com header.i=@cogentembedded-com.20210112.gappssmtp.com header.b="GBxw4kKR" Received: by mail-lj1-x22e.google.com with SMTP id o17so23412166ljp.1 for ; Tue, 08 Feb 2022 00:42:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5SqcXIt39hShtKj54ZerZJEIaFZk+FrZV1s2XWCXxyw=; b=GBxw4kKR0joqbiZYz79uUSB9b2Zp2Zq+1eMvhtf1Ac1BmvTGd6BsEvmwkCkvocSnsS 9xvM6rXbEpDJHmHhuYFQK8iGxjYyygD7x58gMbrhhBdIEUDi7xoX5w/4l4kc6UCnU05S MZ8a2vzicDPPC4w9i0Ugy135JxLJwWR3ZBgpiOhYb8GAcxj3AvUtv4ZMb874OvgabLw+ +7hEEum8vy4INAKgeHb8aaQ/E/F41kVT4jvgClVu/0xFPGiZ8aYiVfTkpoxVPTxo3Nd0 aoynGWCm1BCwlnmvUskt8F5g2EE8uFrUUychYlknnDwWzPQMxWAXRPQIezuBo/ifrD7U NbGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=5SqcXIt39hShtKj54ZerZJEIaFZk+FrZV1s2XWCXxyw=; b=feRCpLte6vwvaZrhBS7pBExi+aUmsZePV7mkt9Wn6O5VDU5YvsnfGvcHPhxYeezjG6 +VLxpmtnKpyFMtLYynmMeZ1jIpZS3zpctjEupesBG4brSyKku9Rjyc889qBfxytpJOAE 4cHiKUpxcmjJdCLusxAFEz1E5kqVxH0Rvy0UtjkLi5nKAg/WLA3WSQZDkwXjlct3XKgA 6Bf5cTVAIigmuvEn8h641TIlzB7SSoVAl6t6Vt4Wb9ktAyUeIh+K4GC29Jrtd/PEPVVQ SZhntCtj5e3GCWcYsuNZkIkxGYpS1sO6xWnTK1648Jawy0AWTDncS7OaweZyY9RA7h6V Gawg== X-Gm-Message-State: AOAM533u3haHzoimI9XC3yHQtnYB0ha2tqwSAtopAyx4jemrjNlbf8l5 zl3Aga5VEptX2JbbR4T4uFE9o5AahvkT+AVh X-Google-Smtp-Source: ABdhPJz4lF2QXG+jryZwq6Ylmt24RIWtcNM+ZFjykyOOoX1MQeeQeKh9mmcRvwrBb5iaC7ORnycxEw== X-Received: by 2002:a2e:a5c3:: with SMTP id n3mr2173139ljp.212.1644309762594; Tue, 08 Feb 2022 00:42:42 -0800 (PST) Received: from cobook.home (nikaet.starlink.ru. [94.141.168.29]) by smtp.gmail.com with ESMTPSA id o12sm1830361lfu.96.2022.02.08.00.42.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Feb 2022 00:42:42 -0800 (PST) From: Nikita Yushchenko To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Kuninori Morimoto Subject: [PATCH 2/4] ASoC: pcm3168a: refactor hw_params routine Date: Tue, 8 Feb 2022 11:42:18 +0300 Message-Id: <20220208084220.1289836-3-nikita.yoush@cogentembedded.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> References: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> MIME-Version: 1.0 Cc: Nikita Yushchenko , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.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" - group together code lines that calculate value for msad/msda field - rename variables to better match their meaning: val -> ms, max_ratio -> num_scki_ratios - update variable types to match exactly parameters or return types of the calls where those variables are used - write two fields of the same register in a single regmap call Signed-off-by: Nikita Yushchenko --- sound/soc/codecs/pcm3168a.c | 67 ++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 38 deletions(-) diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c index 987c5845f769..526e4562ccb5 100644 --- a/sound/soc/codecs/pcm3168a.c +++ b/sound/soc/codecs/pcm3168a.c @@ -462,40 +462,45 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, struct pcm3168a_priv *pcm3168a = snd_soc_component_get_drvdata(component); struct pcm3168a_io_params *io_params = &pcm3168a->io_params[dai->id]; bool master_mode; - u32 val, mask, shift, reg; - unsigned int rate, fmt, ratio, max_ratio; - unsigned int tdm_slots; - int i, slot_width; - - rate = params_rate(params); - - ratio = pcm3168a->sysclk / rate; + unsigned int reg, mask, ms, ms_shift, fmt, fmt_shift, ratio, tdm_slots; + int i, num_scki_ratios, slot_width; if (dai->id == PCM3168A_DAI_DAC) { - max_ratio = PCM3168A_NUM_SCKI_RATIOS_DAC; + num_scki_ratios = PCM3168A_NUM_SCKI_RATIOS_DAC; reg = PCM3168A_DAC_PWR_MST_FMT; - mask = PCM3168A_DAC_MSDA_MASK; - shift = PCM3168A_DAC_MSDA_SHIFT; + mask = PCM3168A_DAC_MSDA_MASK | PCM3168A_DAC_FMT_MASK; + ms_shift = PCM3168A_DAC_MSDA_SHIFT; + fmt_shift = PCM3168A_DAC_FMT_SHIFT; } else { - max_ratio = PCM3168A_NUM_SCKI_RATIOS_ADC; + num_scki_ratios = PCM3168A_NUM_SCKI_RATIOS_ADC; reg = PCM3168A_ADC_MST_FMT; - mask = PCM3168A_ADC_MSAD_MASK; - shift = PCM3168A_ADC_MSAD_SHIFT; + mask = PCM3168A_ADC_MSAD_MASK | PCM3168A_ADC_FMTAD_MASK; + ms_shift = PCM3168A_ADC_MSAD_SHIFT; + fmt_shift = PCM3168A_ADC_FMTAD_SHIFT; } master_mode = io_params->master_mode; - fmt = io_params->fmt; - for (i = 0; i < max_ratio; i++) { - if (pcm3168a_scki_ratios[i] == ratio) - break; - } + if (master_mode) { + ratio = pcm3168a->sysclk / params_rate(params); - if (i == max_ratio) { - dev_err(component->dev, "unsupported sysclk ratio\n"); - return -EINVAL; + for (i = 0; i < num_scki_ratios; i++) { + if (pcm3168a_scki_ratios[i] == ratio) + break; + } + + if (i == num_scki_ratios) { + dev_err(component->dev, "unsupported sysclk ratio\n"); + return -EINVAL; + } + + ms = (i + 1); + } else { + ms = 0; } + fmt = io_params->fmt; + if (io_params->slot_width) slot_width = io_params->slot_width; else @@ -553,22 +558,8 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, } } - if (master_mode) - val = ((i + 1) << shift); - else - val = 0; - - regmap_update_bits(pcm3168a->regmap, reg, mask, val); - - if (dai->id == PCM3168A_DAI_DAC) { - mask = PCM3168A_DAC_FMT_MASK; - shift = PCM3168A_DAC_FMT_SHIFT; - } else { - mask = PCM3168A_ADC_FMTAD_MASK; - shift = PCM3168A_ADC_FMTAD_SHIFT; - } - - regmap_update_bits(pcm3168a->regmap, reg, mask, fmt << shift); + regmap_update_bits(pcm3168a->regmap, reg, mask, + (ms << ms_shift) | (fmt << fmt_shift)); return 0; } From patchwork Tue Feb 8 08:42:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikita Yushchenko X-Patchwork-Id: 541842 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 2F30DC433FE for ; Tue, 8 Feb 2022 08:44:32 +0000 (UTC) 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 89FB017AA; Tue, 8 Feb 2022 09:43:39 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 89FB017AA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1644309869; bh=EMgl9YEL6+hCclbsIjolBHIXljey9EYSovYsiw41TGg=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=kyxkmMoX9cbiYqKattJb0UDsvjky0/Nnk7u5s7D+aKC963Aao2SM5Md9t0YqaPHpG TutLV0TW9rQvNtQOGZH6Dvr3vOFNe2YTC6KkepMjv7zPOCiEWSf/ajvziL+pwSRr9Q JTfFFBx9ulc01nNdO8GDwk2kJLZ/PmJYm7QxrDrY= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id 644C1F8051C; Tue, 8 Feb 2022 09:42:55 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 8C775F8051B; Tue, 8 Feb 2022 09:42:53 +0100 (CET) Received: from mail-lf1-x12f.google.com (mail-lf1-x12f.google.com [IPv6:2a00:1450:4864:20::12f]) (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 60B4FF8012B for ; Tue, 8 Feb 2022 09:42:46 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 60B4FF8012B Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=cogentembedded-com.20210112.gappssmtp.com header.i=@cogentembedded-com.20210112.gappssmtp.com header.b="s/dW6xKS" Received: by mail-lf1-x12f.google.com with SMTP id k13so31882910lfg.9 for ; Tue, 08 Feb 2022 00:42:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WW/JZAMcHGwsu/aVKbZpcWKcH0tV5XFvXiTi6TpD/iM=; b=s/dW6xKSwn0E1ynwQfrMtagbanfi8I/MD/YsKH4d1q/ZgoSq04BvtcEI8wkWcxb05v kkW1hhq7jtkkqJKM8XoBQUam6wxWwUXsC9GuqWwGorHmsRJaUVSQHqFR6yYc+dzOVM5o Gs1RNdnxm7CgqnNqX5dL3MWcktyVp1YVuYtbgIGOvPyVbjItwN/73aIFk9CymvENye7F zffWwXb/3TFSQrHmsTo97z/Q1R65+vRDVKMqxx/Ws5CLax/8MGSH7W7xEDElYnDuJ1xF ycHqVTCU/Pm3SWL7+OzymBJVQsYkWh7vb6LRoFusWYDfWYLrvpNCYEIDgzcZ+ZxF+LeR 5SYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=WW/JZAMcHGwsu/aVKbZpcWKcH0tV5XFvXiTi6TpD/iM=; b=f2jpwOG7RFotHUCFoRZmuWrMDa0okXi8Rw/gf0i/equNWjCj/Xm7jw/T1ZBgjCDtwQ xmigGAfhOgXZAV2g+TtmqQkxt/jFXHejSAdk+o+ABuqbVbvWPTenCej1w4dsmrY3VVT8 uA7gzpRS7IaZpKe+T0MO3GdWTmxnEgx3KpNFLGsyBKI5paQKk2Fswlqjf5oMUKwmM0xo DOPqWwS8mtH8Ov9NyW+mHoSd5WZAblqGsG0rbTOL9O9/LEZmpBOgKr5a1FFLM4ag4TPF z9a/vajYVbRrt+yAoNU2uzzoqP4ZkP3GdOXWF7Qfd3ODhNfqXLRW9aW9UF0CUDOc2Zv6 D6Xw== X-Gm-Message-State: AOAM5334lTWSh5mSjMeQJPOquWquXzlBF9CbyEZb/iZxHsczaYlf/hix gpvYRcFwhJE228pp3OZqb3J6SA== X-Google-Smtp-Source: ABdhPJxRogpGR1JTxiEnIH+idlt+2Csfb5uit/sYazWB9tshUteT6LOqweKxQThophAaMSV7PRVHJg== X-Received: by 2002:a05:6512:3404:: with SMTP id i4mr2266933lfr.389.1644309763770; Tue, 08 Feb 2022 00:42:43 -0800 (PST) Received: from cobook.home (nikaet.starlink.ru. [94.141.168.29]) by smtp.gmail.com with ESMTPSA id o12sm1830361lfu.96.2022.02.08.00.42.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Feb 2022 00:42:43 -0800 (PST) From: Nikita Yushchenko To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Kuninori Morimoto Subject: [PATCH 3/4] ASoC: pcm3168a: refactor format handling Date: Tue, 8 Feb 2022 11:42:19 +0300 Message-Id: <20220208084220.1289836-4-nikita.yoush@cogentembedded.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> References: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> MIME-Version: 1.0 Cc: Nikita Yushchenko , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.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" - drop incomplete (not tdm-aware) calculation/setting of hardware fmt value from pcm3168a_set_dai_fmt(); instead, store original SND_SOC_DAIFMT* setting in io_params - in pcm3168a_hw_params(), do all checks in terms of SND_SOC_DAIFMT*, and convert that to register bitfield values only to write to hardware Signed-off-by: Nikita Yushchenko --- sound/soc/codecs/pcm3168a.c | 84 ++++++++++++++++++------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c index 526e4562ccb5..1d3821f2c5f1 100644 --- a/sound/soc/codecs/pcm3168a.c +++ b/sound/soc/codecs/pcm3168a.c @@ -50,7 +50,7 @@ static const char *const pcm3168a_supply_names[PCM3168A_NUM_SUPPLIES] = { /* ADC/DAC side parameters */ struct pcm3168a_io_params { bool master_mode; - unsigned int fmt; + unsigned int format; int tdm_slots; u32 tdm_mask; int slot_width; @@ -328,10 +328,11 @@ static void pcm3168a_update_fixup_pcm_stream(struct snd_soc_dai *dai) { struct snd_soc_component *component = dai->component; struct pcm3168a_priv *pcm3168a = snd_soc_component_get_drvdata(component); + struct pcm3168a_io_params *io_params = &pcm3168a->io_params[dai->id]; u64 formats = SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_LE; unsigned int channel_max = dai->id == PCM3168A_DAI_DAC ? 8 : 6; - if (pcm3168a->io_params[dai->id].fmt == PCM3168A_FMT_RIGHT_J) { + if (io_params->format == SND_SOC_DAIFMT_RIGHT_J) { /* S16_LE is only supported in RIGHT_J mode */ formats |= SNDRV_PCM_FMTBIT_S16_LE; @@ -339,7 +340,7 @@ static void pcm3168a_update_fixup_pcm_stream(struct snd_soc_dai *dai) * If multi DIN/DOUT is not selected, RIGHT_J can only support * two channels (no TDM support) */ - if (pcm3168a->io_params[dai->id].tdm_slots != 2) + if (io_params->tdm_slots != 2) channel_max = 2; } @@ -356,24 +357,15 @@ static int pcm3168a_set_dai_fmt(struct snd_soc_dai *dai, unsigned int format) { struct snd_soc_component *component = dai->component; struct pcm3168a_priv *pcm3168a = snd_soc_component_get_drvdata(component); - u32 fmt, reg, mask, shift; + struct pcm3168a_io_params *io_params = &pcm3168a->io_params[dai->id]; bool master_mode; switch (format & SND_SOC_DAIFMT_FORMAT_MASK) { case SND_SOC_DAIFMT_LEFT_J: - fmt = PCM3168A_FMT_LEFT_J; - break; case SND_SOC_DAIFMT_I2S: - fmt = PCM3168A_FMT_I2S; - break; case SND_SOC_DAIFMT_RIGHT_J: - fmt = PCM3168A_FMT_RIGHT_J; - break; case SND_SOC_DAIFMT_DSP_A: - fmt = PCM3168A_FMT_DSP_A; - break; case SND_SOC_DAIFMT_DSP_B: - fmt = PCM3168A_FMT_DSP_B; break; default: dev_err(component->dev, "unsupported dai format\n"); @@ -399,20 +391,8 @@ static int pcm3168a_set_dai_fmt(struct snd_soc_dai *dai, unsigned int format) return -EINVAL; } - if (dai->id == PCM3168A_DAI_DAC) { - reg = PCM3168A_DAC_PWR_MST_FMT; - mask = PCM3168A_DAC_FMT_MASK; - shift = PCM3168A_DAC_FMT_SHIFT; - } else { - reg = PCM3168A_ADC_MST_FMT; - mask = PCM3168A_ADC_FMTAD_MASK; - shift = PCM3168A_ADC_FMTAD_SHIFT; - } - - pcm3168a->io_params[dai->id].master_mode = master_mode; - pcm3168a->io_params[dai->id].fmt = fmt; - - regmap_update_bits(pcm3168a->regmap, reg, mask, fmt << shift); + io_params->master_mode = master_mode; + io_params->format = format & SND_SOC_DAIFMT_FORMAT_MASK; pcm3168a_update_fixup_pcm_stream(dai); @@ -461,7 +441,8 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, struct snd_soc_component *component = dai->component; struct pcm3168a_priv *pcm3168a = snd_soc_component_get_drvdata(component); struct pcm3168a_io_params *io_params = &pcm3168a->io_params[dai->id]; - bool master_mode; + bool master_mode, tdm_mode; + unsigned int format; unsigned int reg, mask, ms, ms_shift, fmt, fmt_shift, ratio, tdm_slots; int i, num_scki_ratios, slot_width; @@ -499,7 +480,7 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, ms = 0; } - fmt = io_params->fmt; + format = io_params->format; if (io_params->slot_width) slot_width = io_params->slot_width; @@ -508,15 +489,14 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, switch (slot_width) { case 16: - if (master_mode || (fmt != PCM3168A_FMT_RIGHT_J)) { + if (master_mode || (format != SND_SOC_DAIFMT_RIGHT_J)) { dev_err(component->dev, "16-bit slots are supported only for slave mode using right justified\n"); return -EINVAL; } - fmt = PCM3168A_FMT_RIGHT_J_16; break; case 24: - if (master_mode || (fmt == PCM3168A_FMT_DSP_A) || - (fmt == PCM3168A_FMT_DSP_B)) { + if (master_mode || (format == SND_SOC_DAIFMT_DSP_A) || + (format == SND_SOC_DAIFMT_DSP_B)) { dev_err(component->dev, "24-bit slots not supported in master mode, or slave mode using DSP\n"); return -EINVAL; } @@ -541,15 +521,14 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, * If pcm3168a->tdm_slots is set to 2 then DIN1/2/3/4 and DOUT1/2/3 is * used in normal mode, no need to switch to TDM modes. */ - if (tdm_slots > 2) { - switch (fmt) { - case PCM3168A_FMT_I2S: - case PCM3168A_FMT_DSP_A: - fmt = PCM3168A_FMT_I2S_TDM; - break; - case PCM3168A_FMT_LEFT_J: - case PCM3168A_FMT_DSP_B: - fmt = PCM3168A_FMT_LEFT_J_TDM; + tdm_mode = (tdm_slots > 2); + + if (tdm_mode) { + switch (format) { + case SND_SOC_DAIFMT_I2S: + case SND_SOC_DAIFMT_DSP_A: + case SND_SOC_DAIFMT_LEFT_J: + case SND_SOC_DAIFMT_DSP_B: break; default: dev_err(component->dev, @@ -558,6 +537,27 @@ static int pcm3168a_hw_params(struct snd_pcm_substream *substream, } } + switch (format) { + case SND_SOC_DAIFMT_I2S: + fmt = tdm_mode ? PCM3168A_FMT_I2S_TDM : PCM3168A_FMT_I2S; + break; + case SND_SOC_DAIFMT_LEFT_J: + fmt = tdm_mode ? PCM3168A_FMT_LEFT_J_TDM : PCM3168A_FMT_LEFT_J; + break; + case SND_SOC_DAIFMT_RIGHT_J: + fmt = (slot_width == 16) ? PCM3168A_FMT_RIGHT_J_16 : + PCM3168A_FMT_RIGHT_J; + break; + case SND_SOC_DAIFMT_DSP_A: + fmt = tdm_mode ? PCM3168A_FMT_I2S_TDM : PCM3168A_FMT_DSP_A; + break; + case SND_SOC_DAIFMT_DSP_B: + fmt = tdm_mode ? PCM3168A_FMT_LEFT_J_TDM : PCM3168A_FMT_DSP_B; + break; + default: + return -EINVAL; + } + regmap_update_bits(pcm3168a->regmap, reg, mask, (ms << ms_shift) | (fmt << fmt_shift)); From patchwork Tue Feb 8 08:42:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nikita Yushchenko X-Patchwork-Id: 540810 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org 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 smtp.lore.kernel.org (Postfix) with ESMTPS id 74801C433EF for ; Tue, 8 Feb 2022 08:45:00 +0000 (UTC) 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 8A9E9175F; Tue, 8 Feb 2022 09:44:08 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 8A9E9175F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1644309898; bh=a6vgBGTpTCWKD2K/Lu1HjpQs1vhJPHH2BmOpsR0sSHY=; h=From:To:Subject:Date:In-Reply-To:References:Cc:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=o3YWFAm1PrwfPkpBTcELf2tJav8dTyIL2k7ZUHC/xZaIWUBhN9O95YeVQvI9AD2IY TtvjKYBMAKPKXTT73RUpJbvBcLZiFvxgWj26RStb9UrGl5HLjEUmAbLc8cFeL5DeEp UkF6ArCLyc4A0RlDsD/u7vxY/I1KRs62YLgEVwWs= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id D79C7F8051F; Tue, 8 Feb 2022 09:42:57 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id C15CCF80161; Tue, 8 Feb 2022 09:42:56 +0100 (CET) Received: from mail-lf1-x12a.google.com (mail-lf1-x12a.google.com [IPv6:2a00:1450:4864:20::12a]) (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 D61ABF80161 for ; Tue, 8 Feb 2022 09:42:46 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz D61ABF80161 Authentication-Results: alsa1.perex.cz; dkim=pass (2048-bit key) header.d=cogentembedded-com.20210112.gappssmtp.com header.i=@cogentembedded-com.20210112.gappssmtp.com header.b="3MWbe0vi" Received: by mail-lf1-x12a.google.com with SMTP id u6so31844010lfm.10 for ; Tue, 08 Feb 2022 00:42:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cogentembedded-com.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OqsnPBD75OEIg0YKhpWxP7ylQrnXYC+DLarhM8bDSAE=; b=3MWbe0vi62zn/YVDnF5AtSjnMWk8c4SBFKMTP6yKlW3QOxcHBOzJnAJuDxR7FCvAGs Ps1jDNA7iChEK/zGZ7XUHry/uWERzhbiHUYdDpQjU2KjSMsmrlXrCF5s/LcYL3Ixpwoi awrIfufh4k7dLcivn5jOg2y2BbEbiAtCWZ0USyrE9hXvvZON6+yHTGjy9fblj3HTzsEh TiC2cYjWPffoFw3xbdE4jq6adsp2ji2X5N16P/WDZVtc66nlOiRL+WnFAydGbuBquRV7 WP0IEiZjvq7h0IC+JrttRh7CnsEACVKT4o2Rz61YE04PQ/uvfFoeX6Kc0W0kA3jd/gqC /JOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=OqsnPBD75OEIg0YKhpWxP7ylQrnXYC+DLarhM8bDSAE=; b=KeUCbID3UPraoBpbklw2wD4cKvedhlLLfFnss/aNSFtMfoZ8CdntiTdIWjEdsgsiTG YOtFhVW02twL7jlBo1FgwI4KjBjoDsoKxE9jEtOcpuzeMw9lA4cxfGw0FJsQPaMozume kPLGSw0MIPp/UVvVSSE12+18tv7BQ3iPACPKyYeOPy+lA23wcDPMBeJLzv/q1UoFZmAg D1dc8nDivezW9o3IOP6aKSQpJ+Mc7q1KSaXnxkHAEgLeTmbW198ObbLS7fiFXZ1sva/N WbwJTKe7uhRiNu7wwLizCRjSMNjt9iqTeaT0NKWlcxHj6WnNbgWQ/Mgp3t1UxcmJutYM to5A== X-Gm-Message-State: AOAM532jMCfsPIc4rKmxD4d2vp4aEAW7kQ35Cs4Pd3QBJw0KNrd5xhpl c846w12xzAKq+kUukIM+4Fif5w== X-Google-Smtp-Source: ABdhPJyRjmxFsSQKhUcZklAkzKieZBtNVZ0fLTFeF4+lWwQjOFe79DqlC62orWr4LAzCsom/vZ4HFw== X-Received: by 2002:ac2:46ed:: with SMTP id q13mr2283630lfo.99.1644309764661; Tue, 08 Feb 2022 00:42:44 -0800 (PST) Received: from cobook.home (nikaet.starlink.ru. [94.141.168.29]) by smtp.gmail.com with ESMTPSA id o12sm1830361lfu.96.2022.02.08.00.42.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Feb 2022 00:42:44 -0800 (PST) From: Nikita Yushchenko To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Kuninori Morimoto Subject: [PATCH 4/4] ASoC: pcm3168a: remove numeric PCM3168A_NUM_SUPPLIES Date: Tue, 8 Feb 2022 11:42:20 +0300 Message-Id: <20220208084220.1289836-5-nikita.yoush@cogentembedded.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> References: <20220208084220.1289836-1-nikita.yoush@cogentembedded.com> MIME-Version: 1.0 Cc: Nikita Yushchenko , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.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" Just use ARRAY_SIZE() instead. Signed-off-by: Nikita Yushchenko --- sound/soc/codecs/pcm3168a.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sound/soc/codecs/pcm3168a.c b/sound/soc/codecs/pcm3168a.c index 1d3821f2c5f1..7417cf45d916 100644 --- a/sound/soc/codecs/pcm3168a.c +++ b/sound/soc/codecs/pcm3168a.c @@ -34,8 +34,7 @@ #define PCM3168A_FMT_I2S_TDM 0x6 #define PCM3168A_FMT_LEFT_J_TDM 0x7 -#define PCM3168A_NUM_SUPPLIES 6 -static const char *const pcm3168a_supply_names[PCM3168A_NUM_SUPPLIES] = { +static const char *const pcm3168a_supply_names[] = { "VDD1", "VDD2", "VCCAD1", @@ -57,7 +56,7 @@ struct pcm3168a_io_params { }; struct pcm3168a_priv { - struct regulator_bulk_data supplies[PCM3168A_NUM_SUPPLIES]; + struct regulator_bulk_data supplies[ARRAY_SIZE(pcm3168a_supply_names)]; struct regmap *regmap; struct clk *scki; struct gpio_desc *gpio_rst;