Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3294370pxf; Mon, 5 Apr 2021 08:19:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxDvdSOGouZ0rZ1CXzW8sDLM/GDfwSV6cNVxVun1gvohULjuzeWuGVU9OaVtWqS3cK6Hi3a X-Received: by 2002:a6b:fc05:: with SMTP id r5mr20414963ioh.103.1617635950016; Mon, 05 Apr 2021 08:19:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617635950; cv=none; d=google.com; s=arc-20160816; b=cDpARuDXEygZ1dvP85aILtCegwJH0Yu39K4EiVSOj5z//sHxTGg5T7B/Ij2wSRwktt JmtvxTYifc5LfXTfnqGffduo9Ga3dy9Vh6+Hjhbiw3MzR9G7m+WSLBn1BqQVGxObmP9k 8HHxeA9s+qZp26FL1K5fdht+WUqn/dwWsEmBMR0pt+nSNd4zm62A1rm0y9cYkn/a7Z26 RptGU/WqOWofjAdu4ENqE+B6LHK80s1mWGV7IJa/knbZXkMOVVHd0YsTCAleIa7M96zt 0dCYf4GNC8KJIbhFZOkJn+kt8MUjCPMiLKOiXDXwFu+9qNy1yoSBHuT45Sw/sOuX3MsQ xHVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=MIWh+fkr0Ivj2fYfOrJJyGJYdwC6KrEiybsJ4Ai+rNo=; b=kyEm5g2sDK0KAWmyQ3n2VPzn7ttCOOrs0VtRy6+gaqSXcX9xSzeO/SmZbCDstsmkL0 4sNrzYP/Iv8CjX6ICIU9FVYAAoUzPEnNYabiWdEK+I65godpTf24MnZwNCkOnEjExeVZ qNOBr+U8ycaNv/NYIeteDjo9/P2xOI2MRZNwvb6pA7cEW/N9YpIygS92KFz8EmfvCg0I Pg8ZueiNTqrQb53J/D70ke3C6U/q02SNOpvMpHMzq8JnscGC4tJ0Vyz+uY+l++04pOFc 4Df245aLHf/99yLuBssvh6ZMJ7N1dD7t2h2upgxnaG1bF3NXwRou+62xeU8oQZ1DeAvK faNA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=sXotVRcB; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d19si15272420jak.14.2021.04.05.08.18.57; Mon, 05 Apr 2021 08:19:10 -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; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=sXotVRcB; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237968AbhDEJGV (ORCPT + 99 others); Mon, 5 Apr 2021 05:06:21 -0400 Received: from mail.kernel.org ([198.145.29.99]:48088 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238267AbhDEJEl (ORCPT ); Mon, 5 Apr 2021 05:04:41 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id B1CB461393; Mon, 5 Apr 2021 09:04:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1617613476; bh=Q/Y4k2wcSNF73hgj4PURLtegrzDPPTwTGSpbTM8Vdso=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sXotVRcB5XpO7YE7ENwAAveMjQK6uiUQeY72XLz/PiNh+xsNeeupIkQy3Y0ZWjUHm ugn/CE8UNLrnxufYBI67MTPWTL+dx2K2nkpRQ/RdIJZ+x+GDvB7BpXbu6ZgwLvzQyQ LUgy7AvIuQN9f3HVjYUJx8kwfIo0qGcgX2kRvJv4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Lucas Tanure , Mark Brown , Sasha Levin Subject: [PATCH 5.4 16/74] ASoC: cs42l42: Fix channel width support Date: Mon, 5 Apr 2021 10:53:40 +0200 Message-Id: <20210405085025.250432016@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210405085024.703004126@linuxfoundation.org> References: <20210405085024.703004126@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lucas Tanure [ Upstream commit 2bdc4f5c6838f7c3feb4fe68e4edbeea158ec0a2 ] Remove the hard coded 32 bits width and replace with the correct width calculated by params_width. Signed-off-by: Lucas Tanure Link: https://lore.kernel.org/r/20210305173442.195740-3-tanureal@opensource.cirrus.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/codecs/cs42l42.c | 47 ++++++++++++++++++-------------------- sound/soc/codecs/cs42l42.h | 1 - 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/sound/soc/codecs/cs42l42.c b/sound/soc/codecs/cs42l42.c index c78e2ce37930..26ca5acf0136 100644 --- a/sound/soc/codecs/cs42l42.c +++ b/sound/soc/codecs/cs42l42.c @@ -691,24 +691,6 @@ static int cs42l42_pll_config(struct snd_soc_component *component) CS42L42_CLK_OASRC_SEL_MASK, CS42L42_CLK_OASRC_SEL_12 << CS42L42_CLK_OASRC_SEL_SHIFT); - /* channel 1 on low LRCLK, 32 bit */ - snd_soc_component_update_bits(component, - CS42L42_ASP_RX_DAI0_CH1_AP_RES, - CS42L42_ASP_RX_CH_AP_MASK | - CS42L42_ASP_RX_CH_RES_MASK, - (CS42L42_ASP_RX_CH_AP_LOW << - CS42L42_ASP_RX_CH_AP_SHIFT) | - (CS42L42_ASP_RX_CH_RES_32 << - CS42L42_ASP_RX_CH_RES_SHIFT)); - /* Channel 2 on high LRCLK, 32 bit */ - snd_soc_component_update_bits(component, - CS42L42_ASP_RX_DAI0_CH2_AP_RES, - CS42L42_ASP_RX_CH_AP_MASK | - CS42L42_ASP_RX_CH_RES_MASK, - (CS42L42_ASP_RX_CH_AP_HI << - CS42L42_ASP_RX_CH_AP_SHIFT) | - (CS42L42_ASP_RX_CH_RES_32 << - CS42L42_ASP_RX_CH_RES_SHIFT)); if (pll_ratio_table[i].mclk_src_sel == 0) { /* Pass the clock straight through */ snd_soc_component_update_bits(component, @@ -824,14 +806,29 @@ static int cs42l42_pcm_hw_params(struct snd_pcm_substream *substream, { struct snd_soc_component *component = dai->component; struct cs42l42_private *cs42l42 = snd_soc_component_get_drvdata(component); - int retval; + unsigned int width = (params_width(params) / 8) - 1; + unsigned int val = 0; cs42l42->srate = params_rate(params); - cs42l42->swidth = params_width(params); - retval = cs42l42_pll_config(component); + switch(substream->stream) { + case SNDRV_PCM_STREAM_PLAYBACK: + val |= width << CS42L42_ASP_RX_CH_RES_SHIFT; + /* channel 1 on low LRCLK */ + snd_soc_component_update_bits(component, CS42L42_ASP_RX_DAI0_CH1_AP_RES, + CS42L42_ASP_RX_CH_AP_MASK | + CS42L42_ASP_RX_CH_RES_MASK, val); + /* Channel 2 on high LRCLK */ + val |= CS42L42_ASP_RX_CH_AP_HI << CS42L42_ASP_RX_CH_AP_SHIFT; + snd_soc_component_update_bits(component, CS42L42_ASP_RX_DAI0_CH2_AP_RES, + CS42L42_ASP_RX_CH_AP_MASK | + CS42L42_ASP_RX_CH_RES_MASK, val); + break; + default: + break; + } - return retval; + return cs42l42_pll_config(component); } static int cs42l42_set_sysclk(struct snd_soc_dai *dai, @@ -896,9 +893,9 @@ static int cs42l42_digital_mute(struct snd_soc_dai *dai, int mute) return 0; } -#define CS42L42_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S18_3LE | \ - SNDRV_PCM_FMTBIT_S20_3LE | SNDRV_PCM_FMTBIT_S24_LE | \ - SNDRV_PCM_FMTBIT_S32_LE) +#define CS42L42_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\ + SNDRV_PCM_FMTBIT_S24_LE |\ + SNDRV_PCM_FMTBIT_S32_LE ) static const struct snd_soc_dai_ops cs42l42_ops = { diff --git a/sound/soc/codecs/cs42l42.h b/sound/soc/codecs/cs42l42.h index 1f0d67c95a9a..9b017b76828a 100644 --- a/sound/soc/codecs/cs42l42.h +++ b/sound/soc/codecs/cs42l42.h @@ -757,7 +757,6 @@ struct cs42l42_private { struct completion pdn_done; u32 sclk; u32 srate; - u32 swidth; u8 plug_state; u8 hs_type; u8 ts_inv; -- 2.30.1