Received: by 2002:a05:6a10:6d25:0:0:0:0 with SMTP id gq37csp1846814pxb; Mon, 13 Sep 2021 06:50:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy6OEuDMfWlEXxapzLEtBAt4hfUzK7US76Prz5MxEF4ICdFoL5k/iVAnXKih+vqEwMbUjq1 X-Received: by 2002:a05:6638:329d:: with SMTP id f29mr9806959jav.61.1631541036620; Mon, 13 Sep 2021 06:50:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631541036; cv=none; d=google.com; s=arc-20160816; b=ANj5ot7OSBim//SZyTw+MsRUyFMtVSBunYouUYLe6Tellmq13UuaQobh4/5T8w2FWo kl3A8pfPhmmhHPYHv87ngTRM+afC79JrQ7Ob7e30pk8A6+j9gONzYsSxaozHhODT8F0t ICEGkUZDfHBEmYNdXR1Rvdn2msccSSpsxI9vL2a46pt6Joy4cMjaeqFL/eQ6ZFapl3Tp fBxEJ2TdnX9oSpxZkPRV3mp+h4EouytpkLMGBMItRylqupfyk3VW30u7G7pAuVO3lhGa 2GeZWqB6hBaWdbZkgcUfCCXUV0PulRVY1wIE64wD68y/sF6+5xczDIGINUTJVmi8JDga 6whA== 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=vBIu6SaWQarSbAB89OtrK6qacTGLcG7DAYHB/437FKA=; b=tw6hgaEVAV/qk7689WhR2jpEGOvmt08cCYQSBy34qpTbkRjOjvkJrnfm5NFry+/0JN PKjqlZWb2twYF1zG6RH9NGa3um0aebroV2NGkd5JZWVwv8RohFI2WmnjmnLvSpXWjcFd hrcD0YiuSBBOwlAULh705baKRBkknxPJu6XuzZSxih38XBlfZuBSBqMu6gUddxS0IE4x lpkzzE7YNxYIcaaVdUY5GI1xxNT/l8uXMbxuc6dF0TqQtG/H3pF7GECsRQBEK0+fXLwb bUHbokyWZVEYTJoggt+UTewBj5Q/aS+3PGFf++VVmWp7bUUStsR3N4/oJu1L4lL59t5v BiMg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Ikk97YBn; 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 b11si7115057ilj.16.2021.09.13.06.50.24; Mon, 13 Sep 2021 06:50:36 -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=Ikk97YBn; 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 S241942AbhIMNsc (ORCPT + 99 others); Mon, 13 Sep 2021 09:48:32 -0400 Received: from mail.kernel.org ([198.145.29.99]:46618 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S241463AbhIMNoE (ORCPT ); Mon, 13 Sep 2021 09:44:04 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 8174C61350; Mon, 13 Sep 2021 13:30:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631539847; bh=aR1/j4mTQJKSQr2RZXBR6jtZYZyAhqihq51z16wOFDQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ikk97YBn4x6DNk3g+urFUz54pZDsry+3NqL9SJQM1InAnyLqjBhLI5k5q9stWl3+f ZdiA7Elvt5h65UmcM+jWPFrnumDf1kYlQVk8IE20RFS/LavvpwIZTd8BeOHtEzlOw0 eWUnHPCj7uVj39FU0ImSL8rMn3OnCt0fXWJsQqL8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Cezary Rojewski , Lukasz Majczak , Mark Brown , Sasha Levin Subject: [PATCH 5.10 185/236] ASoC: Intel: Skylake: Fix module resource and format selection Date: Mon, 13 Sep 2021 15:14:50 +0200 Message-Id: <20210913131106.665156610@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210913131100.316353015@linuxfoundation.org> References: <20210913131100.316353015@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: Cezary Rojewski [ Upstream commit e8b374b649afe756c2470e0e6668022e90bf8518 ] Module configuration may differ between its instances depending on resources required and input and output audio format. Available parameters to select from are stored in module resource and interface (format) lists. These come from topology, together with description of each of pipe's modules. Ignoring index value provided by topology and relying always on 0th entry leads to unexpected module behavior due to under/overbudged resources assigned or impropper format selection. Fix by taking entry at index specified by topology. Fixes: f6fa56e22559 ("ASoC: Intel: Skylake: Parse and update module config structure") Signed-off-by: Cezary Rojewski Tested-by: Lukasz Majczak Link: https://lore.kernel.org/r/20210818075742.1515155-5-cezary.rojewski@intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/intel/skylake/skl-topology.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/sound/soc/intel/skylake/skl-topology.c b/sound/soc/intel/skylake/skl-topology.c index 16f9f3bd68be..73976c6dfbdc 100644 --- a/sound/soc/intel/skylake/skl-topology.c +++ b/sound/soc/intel/skylake/skl-topology.c @@ -113,7 +113,7 @@ static int is_skl_dsp_widget_type(struct snd_soc_dapm_widget *w, static void skl_dump_mconfig(struct skl_dev *skl, struct skl_module_cfg *mcfg) { - struct skl_module_iface *iface = &mcfg->module->formats[0]; + struct skl_module_iface *iface = &mcfg->module->formats[mcfg->fmt_idx]; dev_dbg(skl->dev, "Dumping config\n"); dev_dbg(skl->dev, "Input Format:\n"); @@ -195,8 +195,8 @@ static void skl_tplg_update_params_fixup(struct skl_module_cfg *m_cfg, struct skl_module_fmt *in_fmt, *out_fmt; /* Fixups will be applied to pin 0 only */ - in_fmt = &m_cfg->module->formats[0].inputs[0].fmt; - out_fmt = &m_cfg->module->formats[0].outputs[0].fmt; + in_fmt = &m_cfg->module->formats[m_cfg->fmt_idx].inputs[0].fmt; + out_fmt = &m_cfg->module->formats[m_cfg->fmt_idx].outputs[0].fmt; if (params->stream == SNDRV_PCM_STREAM_PLAYBACK) { if (is_fe) { @@ -239,9 +239,9 @@ static void skl_tplg_update_buffer_size(struct skl_dev *skl, /* Since fixups is applied to pin 0 only, ibs, obs needs * change for pin 0 only */ - res = &mcfg->module->resources[0]; - in_fmt = &mcfg->module->formats[0].inputs[0].fmt; - out_fmt = &mcfg->module->formats[0].outputs[0].fmt; + res = &mcfg->module->resources[mcfg->res_idx]; + in_fmt = &mcfg->module->formats[mcfg->fmt_idx].inputs[0].fmt; + out_fmt = &mcfg->module->formats[mcfg->fmt_idx].outputs[0].fmt; if (mcfg->m_type == SKL_MODULE_TYPE_SRCINT) multiplier = 5; @@ -1631,11 +1631,12 @@ int skl_tplg_update_pipe_params(struct device *dev, struct skl_module_cfg *mconfig, struct skl_pipe_params *params) { - struct skl_module_res *res = &mconfig->module->resources[0]; + struct skl_module_res *res; struct skl_dev *skl = get_skl_ctx(dev); struct skl_module_fmt *format = NULL; u8 cfg_idx = mconfig->pipe->cur_config_idx; + res = &mconfig->module->resources[mconfig->res_idx]; skl_tplg_fill_dma_id(mconfig, params); mconfig->fmt_idx = mconfig->mod_cfg[cfg_idx].fmt_idx; mconfig->res_idx = mconfig->mod_cfg[cfg_idx].res_idx; @@ -1644,9 +1645,9 @@ int skl_tplg_update_pipe_params(struct device *dev, return 0; if (params->stream == SNDRV_PCM_STREAM_PLAYBACK) - format = &mconfig->module->formats[0].inputs[0].fmt; + format = &mconfig->module->formats[mconfig->fmt_idx].inputs[0].fmt; else - format = &mconfig->module->formats[0].outputs[0].fmt; + format = &mconfig->module->formats[mconfig->fmt_idx].outputs[0].fmt; /* set the hw_params */ format->s_freq = params->s_freq; -- 2.30.2