Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp2538507rdb; Mon, 25 Dec 2023 16:34:23 -0800 (PST) X-Google-Smtp-Source: AGHT+IE7tIwNjSu21ZpGNOO/kwhNv0Fkn6ld0gnXwbTQW4TokL9/yr78zYUtpD0ThKw3Ar3LWwhf X-Received: by 2002:a05:620a:2e2:b0:781:551a:a253 with SMTP id a2-20020a05620a02e200b00781551aa253mr395836qko.134.1703550863514; Mon, 25 Dec 2023 16:34:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703550863; cv=none; d=google.com; s=arc-20160816; b=UDaI4L8EgoCh6IbW1K6czvyBgnx2iADS/a/EjuVBV41MWphrfY6zDWnSRZAUYL7fTC x0Zbj4bil05LqqZJEwEEomwL/Nl+/of+zGQCldnZmPehqflC38VU3reR146YBcGTutIN C8vkgCdT7jHKd5+mdnxJ8JDiWX3v0P1kEmwzHx4SbO75LuPgLUDE/7mHtvfnR3N04uJt SOx95SABpnKiDlK7+d8QlEklcSTpGZ3MWTKBsKsy4rRy5ZyVTCf9DVDdmmRCxY0Ra1B7 8n8TVWxkEKm4vyZVILr1oPTEznIW0FoODu5ixdDQITvs+GxmwFMMzseDTwh+YdGT+UCM JnnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=02681MSPJBpR9hNbSgU7+yJC8+aWBE8px+pheMrrdmg=; fh=pXhF9Ma3i70M5OXn46ZGsCywaGBcyyTrkTWNLYQL3J4=; b=yz8gFR34+0V5Qhk/M1zmbslXFyKtajDmt6ebuv5nFolJf8fh5iaQb+AlpRGZPin/LK DgBhc4VIlhshXVpqG+5Ho3kZvw7JEDL3TgOYmwhtGtA+PguxablrL0nr/yslqZbMsDLL li/JxLWAM8MpNqrdG1jWKg/SI9drn29stQqVmqBlLMhySdWCM9xazaYMkNyiNvxgCIsQ brMkxB4YZh+LRLPR+OpCDf0uzStUaQEMvLR+bn6G72gZcFyediq0Wi1ed9Tl+Dj5GLed iY5ekOxp8WE/+xtxWbQFIxZGxHGLQIwJZMISQzJifIAwtyyFj99Ayd3/LkFa5SBTCrZ2 M6fw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=soa6gGVi; spf=pass (google.com: domain of linux-kernel+bounces-11246-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-11246-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id de13-20020a05620a370d00b007813eebc6b2si5414363qkb.611.2023.12.25.16.34.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Dec 2023 16:34:23 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-11246-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=soa6gGVi; spf=pass (google.com: domain of linux-kernel+bounces-11246-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-11246-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 17D421C21A93 for ; Tue, 26 Dec 2023 00:34:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7D2BE57887; Tue, 26 Dec 2023 00:23:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="soa6gGVi" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ACEE257864; Tue, 26 Dec 2023 00:23:36 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 91202C433CA; Tue, 26 Dec 2023 00:23:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1703550216; bh=i1zObizUN1cZTejifiGFQ7HMTFeTZBT+N6mPs1S0oa0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=soa6gGVi+10/97nafMBGewS+IsSLUxftVgPGZfsF7+jjvSrA4ICxoYAie23IhmnYT EsV1m3m8Lfp5epcMJxRqjAyxVdZYRAChVNhHEfNFi5aCx4eG6WVqmIjttT+hWtdiov Rhw3ukRMiHp9tdiPoTL57RcpK5lFP/T71YAdWwNHoWG2QhzlExtDkd+GVe63ugKsL0 8lSr33kp8unhnMDr6nWBsc3GsFqKQvFOPQHZ9I2L0lEsBiRUH2QXhjYj7ShlwjSSOj AR+2JuYIeTFhgXbQ2cIe/77+Zp7sHbakZddFJVV0LeBXzbr9VQMFNZFGxu1nFAOwnF WzQHOGuhQWSNw== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Hans de Goede , Pierre-Louis Bossart , Mark Brown , Sasha Levin , cezary.rojewski@intel.com, liam.r.girdwood@linux.intel.com, peter.ujfalusi@linux.intel.com, yung-chuan.liao@linux.intel.com, ranjani.sridharan@linux.intel.com, kai.vehmanen@linux.intel.com, perex@perex.cz, tiwai@suse.com, u.kleine-koenig@pengutronix.de, andriy.shevchenko@linux.intel.com, kuninori.morimoto.gx@renesas.com, alsa-devel@alsa-project.org, linux-sound@vger.kernel.org Subject: [PATCH AUTOSEL 6.1 14/24] ASoC: Intel: bytcr_rt5640: Add new swapped-speakers quirk Date: Mon, 25 Dec 2023 19:22:07 -0500 Message-ID: <20231226002255.5730-14-sashal@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231226002255.5730-1-sashal@kernel.org> References: <20231226002255.5730-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore X-stable-base: Linux 6.1.69 Content-Transfer-Encoding: 8bit From: Hans de Goede [ Upstream commit b1b6131bca35a55a69fadc39d51577968fa2ee97 ] Some BYTCR x86 tablets with a rt5640 codec have the left and right channels of their speakers swapped. Add a new BYT_RT5640_SWAPPED_SPEAKERS quirk for this which sets cfg-spk:swapped in the components string to let userspace know about the swapping so that the UCM profile can configure the mixer to correct this. Enable this new quirk on the Medion Lifetab S10346 which has its speakers swapped. Signed-off-by: Hans de Goede Acked-by: Pierre-Louis Bossart Link: https://msgid.link/r/20231217213221.49424-2-hdegoede@redhat.com Signed-off-by: Mark Brown Signed-off-by: Sasha Levin --- sound/soc/intel/boards/bytcr_rt5640.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/sound/soc/intel/boards/bytcr_rt5640.c b/sound/soc/intel/boards/bytcr_rt5640.c index b63c16c67898f..797d0a48d6066 100644 --- a/sound/soc/intel/boards/bytcr_rt5640.c +++ b/sound/soc/intel/boards/bytcr_rt5640.c @@ -83,6 +83,7 @@ enum { #define BYT_RT5640_HSMIC2_ON_IN1 BIT(27) #define BYT_RT5640_JD_HP_ELITEP_1000G2 BIT(28) #define BYT_RT5640_USE_AMCR0F28 BIT(29) +#define BYT_RT5640_SWAPPED_SPEAKERS BIT(30) #define BYTCR_INPUT_DEFAULTS \ (BYT_RT5640_IN3_MAP | \ @@ -157,6 +158,8 @@ static void log_quirks(struct device *dev) dev_info(dev, "quirk MONO_SPEAKER enabled\n"); if (byt_rt5640_quirk & BYT_RT5640_NO_SPEAKERS) dev_info(dev, "quirk NO_SPEAKERS enabled\n"); + if (byt_rt5640_quirk & BYT_RT5640_SWAPPED_SPEAKERS) + dev_info(dev, "quirk SWAPPED_SPEAKERS enabled\n"); if (byt_rt5640_quirk & BYT_RT5640_LINEOUT) dev_info(dev, "quirk LINEOUT enabled\n"); if (byt_rt5640_quirk & BYT_RT5640_LINEOUT_AS_HP2) @@ -893,6 +896,7 @@ static const struct dmi_system_id byt_rt5640_quirk_table[] = { DMI_MATCH(DMI_BIOS_DATE, "10/22/2015"), }, .driver_data = (void *)(BYTCR_INPUT_DEFAULTS | + BYT_RT5640_SWAPPED_SPEAKERS | BYT_RT5640_SSP0_AIF1 | BYT_RT5640_MCLK_EN), }, @@ -1621,11 +1625,11 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev) const char *platform_name; struct acpi_device *adev; struct device *codec_dev; + const char *cfg_spk; bool sof_parent; int ret_val = 0; int dai_index = 0; - int i, cfg_spk; - int aif; + int i, aif; is_bytcr = false; priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); @@ -1785,13 +1789,16 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev) } if (byt_rt5640_quirk & BYT_RT5640_NO_SPEAKERS) { - cfg_spk = 0; + cfg_spk = "0"; spk_type = "none"; } else if (byt_rt5640_quirk & BYT_RT5640_MONO_SPEAKER) { - cfg_spk = 1; + cfg_spk = "1"; spk_type = "mono"; + } else if (byt_rt5640_quirk & BYT_RT5640_SWAPPED_SPEAKERS) { + cfg_spk = "swapped"; + spk_type = "swapped"; } else { - cfg_spk = 2; + cfg_spk = "2"; spk_type = "stereo"; } @@ -1806,7 +1813,7 @@ static int snd_byt_rt5640_mc_probe(struct platform_device *pdev) headset2_string = " cfg-hs2:in1"; snprintf(byt_rt5640_components, sizeof(byt_rt5640_components), - "cfg-spk:%d cfg-mic:%s aif:%d%s%s", cfg_spk, + "cfg-spk:%s cfg-mic:%s aif:%d%s%s", cfg_spk, map_name[BYT_RT5640_MAP(byt_rt5640_quirk)], aif, lineout_string, headset2_string); byt_rt5640_card.components = byt_rt5640_components; -- 2.43.0