Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp1143595pxv; Fri, 9 Jul 2021 19:23:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxgMl1TNyAXp8CYXRwZB2wYgCee034KaX9VzkIcVNpnLFbd6PR9v+DMT/OkFqVKD6HjpNMm X-Received: by 2002:a17:906:660f:: with SMTP id b15mr41090249ejp.443.1625883794938; Fri, 09 Jul 2021 19:23:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625883794; cv=none; d=google.com; s=arc-20160816; b=tTDQymswtMGuDze6uFmITjNI31vwe/jx5IBFeIEj9mjPK7A7RyUTfElm3DijQJA63/ BmWZ1Eh7uCrIVkgrGpDm4+/2wMWq6wnEnhh1HP3sUUD+oTCdexzsEhXiVk4Un47BqKWG LvE4LsExvUHGk6/D8RDUPHf8UFaWZDMAhJf2FDfgTpfrG/wjWwoN8gV2VL3SuQq2gfsA RUqSspEvcNXC4C9ctfjS7iqerVbBWH6jly/jsBl5dkAnf4p9okY2Kncoi5wXifY1SjXd yCwPsdVQ2tChaGGEtYSwmIIVjccRcQCCsKxy9EObE4ZgXIqd62QYNbe0sRNYsEZM6Mna /+Pw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=I+w+7PpggZGDgBEiVlkKH0hWF1Jg2FoyeqGUs7m6WmM=; b=WgcMazTBKdi61rBFgVl0Ov15r8dy2ya9fWjaUZ1BzfT+83hi9ISLPBp04r7sBm3Wjn b18WMO/wV2FFkIPtunGtO9Y6b24kRpa2GZDccJ2s7tsoup55E24r2Sy7bKE1lrEXKrvx FHlCkZbo+7HRXZaje3VHNnyFLqdsRglq9Dr7Jf2lM5Mn56VMdjKc1nDNKidU1AOPYukC fNc/3LasynMk+4xcpUkfhUh4pNYjZ9Hj6ucN2AXHi2OLJFXzCv5JJzJp3TFHXuoXBts+ jzIlgBT8waraBxP0fuQ/M/plhT5fc5Vq/4qwpfGN4vTlydapYcKVIpP/epWAHlpCT1nF 0DCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=rZj9Lxz8; 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=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s18si9269793eji.655.2021.07.09.19.22.51; Fri, 09 Jul 2021 19:23:14 -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=@kernel.org header.s=k20201202 header.b=rZj9Lxz8; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231487AbhGJCYo (ORCPT + 99 others); Fri, 9 Jul 2021 22:24:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:41398 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231355AbhGJCYo (ORCPT ); Fri, 9 Jul 2021 22:24:44 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 0A8F0613CC; Sat, 10 Jul 2021 02:21:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1625883719; bh=V17iZAtlDJtdmfky34MKjTT9SgYihWsXZKBHvFlFewE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rZj9Lxz8t4bnGRBFnYNHLY16SDElKVBsgCfAUZ0CWT6StwT5ioEWOiYtVCYXrP5LK vzm7cFaM/Rr37r5HtC2g0h4CyNnUmrpqJvyx5A5KAwNHIN1WX1aZJNxrmL5wG7CS+p E6jmIrkamYAq/z5tduE8piD+2wD6p44MtfPVa3Vlizz/UrJrFmsgz9wZBk8E1Oc3U7 A3QyAaHS2iimyesXxGEsvrRUMoJIM2pfuqXNXy1lQkZ88ylvJnCRPdNWx8RwMztUe4 IClJeoMX/8AHmapE9vqozzGDEAfEp9z/HOief7Ir+NlyZg+7MGZZX6qxxc1cSgNGOS duzl+nzVUF4vA== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Pierre-Louis Bossart , Kai Vehmanen , Libin Yang , Mark Brown , Sasha Levin , alsa-devel@alsa-project.org Subject: [PATCH AUTOSEL 5.12 002/104] ASoC: Intel: sof_sdw: add mutual exclusion between PCH DMIC and RT715 Date: Fri, 9 Jul 2021 22:20:14 -0400 Message-Id: <20210710022156.3168825-2-sashal@kernel.org> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210710022156.3168825-1-sashal@kernel.org> References: <20210710022156.3168825-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pierre-Louis Bossart [ Upstream commit 35564e2bf94611c3eb51d35362addb3cb394ad54 ] When external RT714/715 devices are used for capture, we don't want the PCH DMICs to be used. Any information provided by the SOF platform driver or DMI quirks will be overridden. Signed-off-by: Pierre-Louis Bossart Reviewed-by: Kai Vehmanen Reviewed-by: Libin Yang Link: https://lore.kernel.org/r/20210505163705.305616-5-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/intel/boards/sof_sdw.c | 19 +++++++++++++++++-- sound/soc/intel/boards/sof_sdw_common.h | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c index ecd3f90f4bbe..85a2797c2550 100644 --- a/sound/soc/intel/boards/sof_sdw.c +++ b/sound/soc/intel/boards/sof_sdw.c @@ -353,6 +353,7 @@ static struct sof_sdw_codec_info codec_info_list[] = { .part_id = 0x714, .version_id = 3, .direction = {false, true}, + .ignore_pch_dmic = true, .dai_name = "rt715-aif2", .init = sof_sdw_rt715_sdca_init, }, @@ -360,6 +361,7 @@ static struct sof_sdw_codec_info codec_info_list[] = { .part_id = 0x715, .version_id = 3, .direction = {false, true}, + .ignore_pch_dmic = true, .dai_name = "rt715-aif2", .init = sof_sdw_rt715_sdca_init, }, @@ -367,6 +369,7 @@ static struct sof_sdw_codec_info codec_info_list[] = { .part_id = 0x714, .version_id = 2, .direction = {false, true}, + .ignore_pch_dmic = true, .dai_name = "rt715-aif2", .init = sof_sdw_rt715_init, }, @@ -374,6 +377,7 @@ static struct sof_sdw_codec_info codec_info_list[] = { .part_id = 0x715, .version_id = 2, .direction = {false, true}, + .ignore_pch_dmic = true, .dai_name = "rt715-aif2", .init = sof_sdw_rt715_init, }, @@ -729,7 +733,8 @@ static int create_sdw_dailink(struct device *dev, int *be_index, int *cpu_id, bool *group_generated, struct snd_soc_codec_conf *codec_conf, int codec_count, - int *codec_conf_index) + int *codec_conf_index, + bool *ignore_pch_dmic) { const struct snd_soc_acpi_link_adr *link_next; struct snd_soc_dai_link_component *codecs; @@ -782,6 +787,9 @@ static int create_sdw_dailink(struct device *dev, int *be_index, if (codec_index < 0) return codec_index; + if (codec_info_list[codec_index].ignore_pch_dmic) + *ignore_pch_dmic = true; + cpu_dai_index = *cpu_id; for_each_pcm_streams(stream) { char *name, *cpu_name; @@ -913,6 +921,7 @@ static int sof_card_dai_links_create(struct device *dev, const struct snd_soc_acpi_link_adr *adr_link; struct snd_soc_dai_link_component *cpus; struct snd_soc_codec_conf *codec_conf; + bool ignore_pch_dmic = false; int codec_conf_count; int codec_conf_index = 0; bool group_generated[SDW_MAX_GROUPS]; @@ -1019,7 +1028,8 @@ static int sof_card_dai_links_create(struct device *dev, sdw_cpu_dai_num, cpus, adr_link, &cpu_id, group_generated, codec_conf, codec_conf_count, - &codec_conf_index); + &codec_conf_index, + &ignore_pch_dmic); if (ret < 0) { dev_err(dev, "failed to create dai link %d", be_id); return -ENOMEM; @@ -1087,6 +1097,10 @@ static int sof_card_dai_links_create(struct device *dev, DMIC: /* dmic */ if (dmic_num > 0) { + if (ignore_pch_dmic) { + dev_warn(dev, "Ignoring PCH DMIC\n"); + goto HDMI; + } cpus[cpu_id].dai_name = "DMIC01 Pin"; init_dai_link(dev, links + link_id, be_id, "dmic01", 0, 1, // DMIC only supports capture @@ -1105,6 +1119,7 @@ static int sof_card_dai_links_create(struct device *dev, INC_ID(be_id, cpu_id, link_id); } +HDMI: /* HDMI */ if (hdmi_num > 0) { idisp_components = devm_kcalloc(dev, hdmi_num, diff --git a/sound/soc/intel/boards/sof_sdw_common.h b/sound/soc/intel/boards/sof_sdw_common.h index f3cb6796363e..ea60e8ed215c 100644 --- a/sound/soc/intel/boards/sof_sdw_common.h +++ b/sound/soc/intel/boards/sof_sdw_common.h @@ -56,6 +56,7 @@ struct sof_sdw_codec_info { int amp_num; const u8 acpi_id[ACPI_ID_LEN]; const bool direction[2]; // playback & capture support + const bool ignore_pch_dmic; const char *dai_name; const struct snd_soc_ops *ops; -- 2.30.2