From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 C9CA7302143 for ; Fri, 5 Sep 2025 15:44:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087082; cv=none; b=RzSUXAOKDIWWcgTcUOMu0OfKu0hO/ld5KM9j9/eS4svxqDUVL79eFI3rwFrEWRMU1k7mrIy3EVrNmX9I+7VuOQBZcsItpEKJVsA0/vxfchWrWbvp2r517sf6LcoE/zi+26GnNnRUiPcfbZBYKZDRnPDxU4DFOeOxF794DKxXm8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087082; c=relaxed/simple; bh=vmg0oYOxevk5nWCek+pJEZ1daibBK7o4kDXZ315AyTw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O2skp9AeYObOHS/deeX+KET6caIGYog51/CuNb5QKIo1atsV2o/aGSThyxn+Vmd/iUS0Bmmw3lYdak8OxcOWiW/OL6GK08NUXFeinJPJawSRVmHkHzSDLooxp9bxzzpjtrAUH2eXtUCnPExYkYeKdDP7lJFKTpfuvrPDGHBUYns= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=klSrKRYG; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="klSrKRYG" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5857MgeK008250 for ; Fri, 5 Sep 2025 15:44:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=qv++HabcA9y 4aEMaW0PNus8L2anA3PVptVFL6UgEzvw=; b=klSrKRYG2iH4+3b6N+L/zW0QrBu a5Rb8y6dAsWe2kBgFh7MCsjfzBTHzR1PL6QSHWkxgL6XhNsfUG8y41FWyziC/hry J9TukefpVzc+ntMKUo/cGr1aWH6EQi3/5V3qEN3MA7SY32B750umUAcmOMdwko0w moCP7QjEr1Rvn2KZLGIE1hJuyL6nOsNhLk+FW4yXvCNwW71eT6iFp5aDfudCEaT5 gMHuuKmQjwc9HXTvIXwSkS1i48FkzuIuATRT7oyFnzqHpix0medqYtAgrMVnMAI7 aAgOmyQqxOoarPGEkM/riUkquU/i6n+v+BeAudTC84D5igMU3qDJQFdeubQ== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48urmjujau-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:38 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-4b5d58d226cso49637791cf.1 for ; Fri, 05 Sep 2025 08:44:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087078; x=1757691878; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qv++HabcA9y4aEMaW0PNus8L2anA3PVptVFL6UgEzvw=; b=EjaYWGBLkOLjF70IeamLCdBY2IOdkaq7gQ5Hmg2HO2fJKcGResR4U3FbSxpPYgDCq5 ZYh9fRbmwuz3MjYseUf4nZOqGz4TfcZK7TR0RvvGvsQs24yHQhsoyiYLexdvFtjJxrKR BkoM7pb6HwZya6YwvzcnTXGGFySVr39ymYpZAiYeO4aAMElJCRSIRLusYZ3hZ5EtfaMk jWHjGIKS8Cd/vpYJCe5YINWjMUz0ewiKf8+OXLluCWFqm+7LdRJBjff4tHCYmK22NWew 2H+rja8R2duq7zqEKCxJMBMgKhrfqzGwzdt8LnOkG1m2COHflT7Fme8qvs4k/Z5VYpZR otcw== X-Forwarded-Encrypted: i=1; AJvYcCUcuGkL7sawKnT6ULMuJnH5RrQTA63IddXmcjF3yoLBY6x8KB3KM/wDxBXf//q62NYM7LitT7miVQu7/k0=@vger.kernel.org X-Gm-Message-State: AOJu0YyYiXqPIEG9KZAS+cYD7rgaBDAqga5FV3oyxRbbwaSbUar49+7P n8vKFBpvencMIdP8dWkz1ClwGwJgwoIaTjFGda4sGw7xeQhvgc0J9dmKNeP27XZlUt320t13Tlg 1W5be+qXIFWkC61y01BXmbOl692jVyrZ2M/H3rCocSt7Fz9dqf9Yh5ISFY5rN8Gqfuow= X-Gm-Gg: ASbGncuvMEn+x13sCy6eUCDHxgN0WxAN+WbiQYpf/2PyNBUiSlduwAhUnAzHcD4KbBl kd2wmJ2V52UPkh3oiWyW8Y/H+7H6naH2C/zqWgzh4ATbVMe3zMnJuHHQdIJFzBUMIf3yTs3s2Xo UC+S/DKG95S/ENjXJf8CZUdtEgEnQN72CdcDJntP316LgzlEXWT9XZSBMzQb8cje32T994Dtlmt iUU80hJPBsjyW7sVRUpF0kt/l3sL1RVpSfhd1WJGnLWBuYQ6sX+s0vQq2eoMm+dDqYc2r5zCDoH D7RYXgxW0URp+1PCn3M/OhvqPtzmrJS0CDeGniOKZWQre1c66rUi+A== X-Received: by 2002:ac8:5c91:0:b0:4b5:da71:ce7f with SMTP id d75a77b69052e-4b5da71d400mr53788591cf.44.1757087077916; Fri, 05 Sep 2025 08:44:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEfPWdh54JtUPfB1le9155RfINKV1xe4VJp0Xip0ilNblDszr9jrIP5rzVTnhlLQvIFuLirlg== X-Received: by 2002:ac8:5c91:0:b0:4b5:da71:ce7f with SMTP id d75a77b69052e-4b5da71d400mr53788271cf.44.1757087077420; Fri, 05 Sep 2025 08:44:37 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:37 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla , Stable@vger.kernel.org Subject: [PATCH v3 01/12] ASoC: codecs: wcd937x: set the comp soundwire port correctly Date: Fri, 5 Sep 2025 16:44:19 +0100 Message-ID: <20250905154430.12268-2-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=OemYDgTY c=1 sm=1 tr=0 ts=68bb0566 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=0i9YUgi2cL8IzqKwLzsA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: VVTp8fKjJiSjc0syx2CqGr5ESNV4PMm- X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAyNCBTYWx0ZWRfXwVhqfhaENuvl kDLyNih1UbE4atL/4zfy+Rylf0trquEmVSH3uvlC2atgmiSj1LLQ810tWQrmWKGFN+sn4hhdRfY F/IfbRLSEkULVxJDJKCYw5xO5qZzwYOLtH5PXTZGamEEMg5D0AfqguMH8DOJCkLOyX9mgYKb/pI VpTxNq7vFyqg0D2QXlUL+8MhbRjXBMvNCtepWtdx4+tTnCb71g/SBHkHuPfJy3aHkuEVt3fzNT4 67nqj1OPt5xD3mb9SnzDc750SF53JeoEuVPZSUbi0mGc1e1klVHNPJ8kphVEXHgXxiTab50aOiS LehG0t5lyn/bmjH79TWvDQdWoS7xlRPS+JCEMixLALfQNuGSTMaoHLwXYRizwyfvaBXyS87BobM /m0gZX6p X-Proofpoint-ORIG-GUID: VVTp8fKjJiSjc0syx2CqGr5ESNV4PMm- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 bulkscore=0 priorityscore=1501 adultscore=0 clxscore=1015 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300024 Content-Type: text/plain; charset="utf-8" For some reason we endup with setting soundwire port for HPHL_COMP and HPHR_COMP as zero, this can potentially result in a memory corruption due to accessing and setting -1 th element of port_map array. Fixes: 82be8c62a38c ("ASoC: codecs: wcd937x: add basic controls") Cc: Signed-off-by: Srinivas Kandagatla --- sound/soc/codecs/wcd937x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/soc/codecs/wcd937x.c b/sound/soc/codecs/wcd937x.c index 3b0a8cc314e0..de2dff3c56d3 100644 --- a/sound/soc/codecs/wcd937x.c +++ b/sound/soc/codecs/wcd937x.c @@ -2046,9 +2046,9 @@ static const struct snd_kcontrol_new wcd937x_snd_cont= rols[] =3D { SOC_ENUM_EXT("RX HPH Mode", rx_hph_mode_mux_enum, wcd937x_rx_hph_mode_get, wcd937x_rx_hph_mode_put), =20 - SOC_SINGLE_EXT("HPHL_COMP Switch", SND_SOC_NOPM, 0, 1, 0, + SOC_SINGLE_EXT("HPHL_COMP Switch", WCD937X_COMP_L, 0, 1, 0, wcd937x_get_compander, wcd937x_set_compander), - SOC_SINGLE_EXT("HPHR_COMP Switch", SND_SOC_NOPM, 1, 1, 0, + SOC_SINGLE_EXT("HPHR_COMP Switch", WCD937X_COMP_R, 1, 1, 0, wcd937x_get_compander, wcd937x_set_compander), =20 SOC_SINGLE_TLV("HPHL Volume", WCD937X_HPH_L_EN, 0, 20, 1, line_gain), --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 1293630214A for ; Fri, 5 Sep 2025 15:44:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087082; cv=none; b=mZOZajVzpORFlfxkJtsfZWaovV0iAH7JM0HyfdmITrMQCQDsOVWga4keL8TElNodaot6yMxDso+HE7moL6qDusQeFub/n830xc9tfm272vugZzsNCaUo1kF5p7tv2NuXlK3/jetTdXBaGyTfWvcmMPRZoDmgU7bCa7u3C7BZ+Dg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087082; c=relaxed/simple; bh=PhB2wEGrckuh+HShGhmgklly6y1CfiMHr/vjqDHdiKM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ScH9TKZQ5vAXofviV47ygsujVkVraGzrOAT7SGeNgfVQzpUOwPJnqOVh1IBUd2z8AU8VN8fOGGJ60leoPat1ZL//t+IScZp1hoILd38S/4OdpLnmxJ9vBvgFdrfHghP32z1obKH9ELmhl36aq513/1tTnUwEqMYHcqqWFR7bweE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Vv8zdK9a; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Vv8zdK9a" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5857Ak5C007841 for ; Fri, 5 Sep 2025 15:44:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=ZHK+TaiHSdo 0i2W1eF6c5y+ExVot/td708SwKzVcklc=; b=Vv8zdK9avO0Ifm+uuve/qJ56e7R NmudbvEYiA1ytla4nPHVQw6SCsmv6Nsf/f9O+n5iXsQRtVEEupgM1pGbP8kJtbTi BVUEaAnWafn7ibu79IWvKiQHi+FyuGjAfAdKyDhQkPJXhLQKejwGeTVO6Pc314EB nm6piuQFIRikG2adf9PCf9hbKuiys4yzMWamOAIkPODkvU00nLX4WCivVcextCvu lw0F1+z82YJS9FK4W9qU2ZA5asgDpi0zJOSAziQHUJq2qhdBjbZYTYq2wLEX9lQn ZyngY90dHkJdO+p5NlX2c4jvjSNZiMZy5qzMJSyoHbeJjraaWUDsfBv6fdw== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48ura93fvm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:39 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4b3472b7efeso41096281cf.1 for ; Fri, 05 Sep 2025 08:44:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087079; x=1757691879; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZHK+TaiHSdo0i2W1eF6c5y+ExVot/td708SwKzVcklc=; b=B3fveNthYLDHJJp81OYlOo21Iga6FCFfm6g16132sWab5Z8Upl3dg2VlBALnLOncAB 7+SR4vU/ZCWGuMe7pGR9TMkr3lfC3zisE6XPP0hh8X7yAMB8FlpxY68VF7ajVNSA2jUm znoGxY/ZUXOc7p43dWCUQMOHHLmiSn76oXkHjeJovFIukifotKmJnAxBU8SHz3gqCQup oJXRIouu5IaXOYfDkGEIxvi4NtI6FIRjvv98mpalhw0p2Czt52WJzLdLx/PHr6n1KiuH DJdy21oD64+wp4SkFWbYez3ymKtAU9u34MLRLvznqOIf23IuMPMul6AVtb7NhKevMfqU idfw== X-Forwarded-Encrypted: i=1; AJvYcCUp/kH4iN4Ec9yFIJovF4sbtH+DD25VmYq04hWhpQPsA23S99ICxuCVmso/p0RgiJkxfx09HNEYy+ckKkQ=@vger.kernel.org X-Gm-Message-State: AOJu0Ywbgk+kySi3lvPg66qF8GzEQULKc3IZfwYhZ/6eojCfFo+IR5In 46IIwXS840xXADbVhaQzdcLPbl9RZR6HY7p826iqrzQVmD4OdfMuJAxdc0oe9fzYbzZ3FxXNNnX 1vUAwafha7jdt8N0bAbb/BWDAzMPFDTXfANiPcKR+4Zvoqt47UwJ4/MTYdryIUhoUrHg= X-Gm-Gg: ASbGncsuZtOage5d6tj0WaIH8gHkRKEks+kYKL4EftCapox1qg/n5/TSl0LC7z5PT8i htJsLOkamzbrRihh8KoMHAUGgMgtcXBJPqdN6N7D6L5a3GBZUPmwjDZwrLVP0SFga1P6elD/Xv2 9vVHye+IJPemT7HFAKdz+D0vHB7Xi7u5b5mHApDvEgOpIFP//7hHD4W9wl+JpYR/x4PKNrn+2SO 6Nz8NQ2pdalVFZIIE2FUACLOFQq4R5wUP1uHmEm9VA7ncKGaVBnjBlrJE5md+RANEqJpLKRYWDq OJFYBOHguX2e42BGb10pZ8GtB11xN9MPYU8ZrkcAILYJzZumYzANhg== X-Received: by 2002:ac8:5814:0:b0:4b3:7ec:d238 with SMTP id d75a77b69052e-4b5e7cd601cmr40993101cf.4.1757087079052; Fri, 05 Sep 2025 08:44:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCIAh7hGtTrk3JjGWpjyCU0bakKbexV7o3uoUq3SmrVpektwo8ogXEHDmPA2fIURe83QX7mQ== X-Received: by 2002:ac8:5814:0:b0:4b3:7ec:d238 with SMTP id d75a77b69052e-4b5e7cd601cmr40992681cf.4.1757087078395; Fri, 05 Sep 2025 08:44:38 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:38 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 02/12] soundwire: bus: add of_sdw_find_device_by_node helper Date: Fri, 5 Sep 2025 16:44:20 +0100 Message-ID: <20250905154430.12268-3-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: OyJ8oFUzAP72DRkjXv5U0NqPlqyoZlzO X-Proofpoint-GUID: OyJ8oFUzAP72DRkjXv5U0NqPlqyoZlzO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAyMCBTYWx0ZWRfXxVoy1QwMUjty jT0P42Vu/WpuPGbQ8zODLNZyFxUmIQ3O+PFpH4dYBIVYdcjr6ApDd0y6aenjpFuMI+y8Wq80Jye QO3IVVdLXN5LwWvnOJiGI03Fb5bFSyRPhEY9M5NOyJMY1NB+c0KjAhmPjUoqN7jWi5E1NlcazKV QkEHy54B0PrDNltVGUPwmVPn57o0gaUbGxUnnyEWJF7911CApW6KLF8znE2okkHmccig+QvyEj7 yovXD3ny861pqmgfC00JVn7CuOMBUz4gWLiqOQ1AVjEAjMlYe1hFSJd8OuUbR26UNHU8U2eitPc ubX9fPzRbRb8bfsFq7UrRFpF53SZ5ziBU3aMEGFgZR5WBJa+uQ/qI8KdHDdwb6SSaGnLRdsXqK2 vhNh6QrI X-Authority-Analysis: v=2.4 cv=VNndn8PX c=1 sm=1 tr=0 ts=68bb0568 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=Ogeiovxhkh_6Bnox_XcA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 impostorscore=0 malwarescore=0 bulkscore=0 clxscore=1015 adultscore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300020 Content-Type: text/plain; charset="utf-8" There has been more than 3 instances of this helper in multiple codec drivers, it does not make sense to keep duplicating this part of code. Lets add a helper of_sdw_find_device_by_node for codec drivers to use it. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov Acked-by: Vinod Koul --- drivers/soundwire/slave.c | 6 ++++++ include/linux/soundwire/sdw.h | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c index d2d99555ec5a..3d4d00188c26 100644 --- a/drivers/soundwire/slave.c +++ b/drivers/soundwire/slave.c @@ -273,4 +273,10 @@ int sdw_of_find_slaves(struct sdw_bus *bus) return 0; } =20 +struct device *of_sdw_find_device_by_node(struct device_node *np) +{ + return bus_find_device_by_of_node(&sdw_bus_type, np); +} +EXPORT_SYMBOL_GPL(of_sdw_find_device_by_node); + MODULE_IMPORT_NS("SND_SOC_SDCA"); diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index 0832776262ac..096213956d31 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -19,6 +19,7 @@ =20 struct dentry; struct fwnode_handle; +struct device_node; =20 struct sdw_bus; struct sdw_slave; @@ -1086,6 +1087,8 @@ int sdw_stream_add_slave(struct sdw_slave *slave, int sdw_stream_remove_slave(struct sdw_slave *slave, struct sdw_stream_runtime *stream); =20 +struct device *of_sdw_find_device_by_node(struct device_node *np); + int sdw_slave_get_scale_index(struct sdw_slave *slave, u8 *base); =20 /* messaging and data APIs */ @@ -1119,6 +1122,12 @@ static inline int sdw_stream_remove_slave(struct sdw= _slave *slave, return -EINVAL; } =20 +static inline struct device *of_sdw_find_device_by_node(struct device_node= *np) +{ + WARN_ONCE(1, "SoundWire API is disabled"); + return NULL; +} + /* messaging and data APIs */ static inline int sdw_read(struct sdw_slave *slave, u32 addr) { --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 EAE1F302144 for ; Fri, 5 Sep 2025 15:44:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087083; cv=none; b=fecf94Iap1uFralSpVQ1Wp8nREuUnyBZ//Z4iUUVAIJLss18eHPdGpc6pUei3W8/MCm/251yt7lP3B6rbCA9p9Pkx8R56M9BZ5yceoDetGxeRONh0C7GYtSk76Ex8225S4A3S7KCTMRW8MFb6VVOtxlQN7bUKjqBwA0t7b2cROw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087083; c=relaxed/simple; bh=ikumlZWRZ31uELt9Gx3EsqoON5ydu7Y5Jeqw2vQ5WF0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Rs2NTQq5Rs/kvuSiC0y4ECHyEbIGgqiAsD/AI+wpFKUpywdC6FSrYpCXyQS37nrrdk6EKUEWolrpttSF3+OCOJq88HICAhCGa+sGFtkfBWDext2cB5FQ7RSk3vvxjAZmb+jCF0WHoyi2DlUFUHYOAQnaECCV7WfR0au+Q5Gr/wA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=D02YYZIB; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="D02YYZIB" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 585DRZNS018468 for ; Fri, 5 Sep 2025 15:44:41 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=O3dcTOpjTe1 fHGNnpmdRKX8jenRcrbq/0mDRIoxdxMI=; b=D02YYZIBUITV5pwlOSftAd7xBpI fbZh8JWiJSbEES+tHBf6yJYg/X100rNTm1sLqFgzy/n4hs8sisCcMsWfxrzPYgyU F3wvrrHp6MLV8r7x3DwDgeqKe2UWqA5PShOmDJRJZT5TXdmQAxjXYovvjCUXrYjs XaGYrBo+g4Qyecbav2B5z7VQbicTVtLKCCO+nlLfOWN7eox3sOAlLB9PaXpPnmeE ONVKkLBlVIQrH/MCdaOnKwMGyda9qqgR4x83L86E5S7RZ+TPr/+e5kuhxeOyI2qW ZhkSZvmd7VNptORsMo79rfm1Pqe1S2sRG4+ciReNwSTEjoE5uJKmqOgeGvw== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48yebuufmj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:40 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-4b5d58d226cso49638761cf.1 for ; Fri, 05 Sep 2025 08:44:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087080; x=1757691880; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=O3dcTOpjTe1fHGNnpmdRKX8jenRcrbq/0mDRIoxdxMI=; b=eDcq0HG9K1j9iZWHOFcS0coDazD4d+AJPorLLQfPxzlRinAXQOrtOe2b26Tnd3Qx5L OTxOtTVPGRS+P6rPcxqWk3tPrj024MsLzUVcuLUaIFjStD5fv8v3FvhM5ok3JFbBrGPL YlarfhrmDRaX14orlRYfKKGBkx6cRbSi9mJSpexhtm2bvu1Cystc+ocxF0pwu1YlLbHP 3VEpq3GXqmWgzp8//KGBs+gEqe8oCQunaUJWjhy1nqChXrAv86248+jsTwlaaOmkWnXt vUCQpOCUeIDOUfr1+DWcoCKXEiNZfzZ/AM+quU6WbUL7kOVYFZGGZkpEo82lrkbjBsUx syZw== X-Forwarded-Encrypted: i=1; AJvYcCWvxpw1G+KRR6YpezmnObsmcQeRSFDUrOGPNLcBOLCpVgIaANIo37vWFoAbou519fH90vPHd8m0FKaWRUA=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5Gq0u4+BgkwkKEbG/CHkEDMj580+LC/riuHW4KcEWMeo2C1wK 1k1pbiuPp/nAD2r8DFL/jIFCaMkNkXRn/oJw9EX3raqizdgOITxQQEJq27tVQ4ZD/GUy/o0FYlk cOaer6C1nnwKj81ctH1xDd/kxYA2fB93tgy5Z9ss+JPPFhItTLDjZCiNeKDZ4CoWihss= X-Gm-Gg: ASbGncs4INulgvZ9XjG+D9kF0kRVZmYZuIErayDUBWKKDJ0tto3jjqx9hI7rZsbizSF VnP+hkgzXTcvdLO2nl3WLD6A85aA1nZeQu+cOEv1ge0Sl2gfGxcloUb0RzfBg7oo/ASUA7anTEg BhOFKE6Ps3aw7tYHcCVpyVuotO6lAJG90IFbQtB0CM9othCsbPTGN/k3jGrVocS7ECnLiXggQY6 /lPd94o/UuCkOlJBcKCwAhCg0o76pPDve6pKZW4gHRJOoVLT5/dvvNsdxkpBViBbED9A86kRfyt 7qvbJ6V13u6pDwO5toZQtmEoUaNlRtVf2cptz+jwUVvmZ0WhnmbWTA== X-Received: by 2002:a05:622a:1a19:b0:4b5:e15e:d5ef with SMTP id d75a77b69052e-4b5e15ed670mr54954131cf.49.1757087079909; Fri, 05 Sep 2025 08:44:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEsTP+/oq/rU3gn4qxY8GGD+OI7+4fFO7Hkn/XxWCtszgnaXtzRjTNhePOlo1nQwVRWWK6iJA== X-Received: by 2002:a05:622a:1a19:b0:4b5:e15e:d5ef with SMTP id d75a77b69052e-4b5e15ed670mr54953861cf.49.1757087079400; Fri, 05 Sep 2025 08:44:39 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:39 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 03/12] soundwire: bus: add sdw_slave_get_current_bank helper Date: Fri, 5 Sep 2025 16:44:21 +0100 Message-ID: <20250905154430.12268-4-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: bg-LuZaot64kz4M4LIe_OI7ZejrLfuQU X-Authority-Analysis: v=2.4 cv=X+ZSKHTe c=1 sm=1 tr=0 ts=68bb0568 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=G7Fn18kybrAXfbFeA2QA:9 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA0MDE2MyBTYWx0ZWRfX/3Xo+tbc8V1W 8W2UeT3PloNfR20goihrcu3+UJ1JNoKdXzxpV6g/aTmhB/hFx/CLK9DuNdwIb2QCWSY3TdhUB0Y 6PWshV0L1CHxLtfoD9W87vlFe7xkHvmXyfMK5QKsF0tB1qCXPi4ycTPLanCLej2VMk/IHhCq9rj DkHQyVzbnCvYLEtnviSp6qGEzX2FE+ZHXU5xQSZXscBjK72riioUinmdAGjVFm32ZaLJH/1vN+X 3au2rLPyEjRkmaRzzxOTudmy0uqzPg3rocvpaBafbgmAVUszZ3BbS0PPdOe3SA+ZufRgEeFbliP AUUjJkCAam39ScDnCX5nEqHleWLvhnBjx0hWOaLZ1ibFFJpFanf3h4xZwxhTnCX0hj5IrqrLRBO QQibt8/S X-Proofpoint-ORIG-GUID: bg-LuZaot64kz4M4LIe_OI7ZejrLfuQU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 malwarescore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509040163 Content-Type: text/plain; charset="utf-8" There has been 2 instances of this helper in codec drivers, it does not make sense to keep duplicating this part of code. Lets add a helper sdw_get_current_bank() for codec drivers to use it. Signed-off-by: Srinivas Kandagatla Acked-by: Vinod Koul Reviewed-by: Dmitry Baryshkov --- drivers/soundwire/bus.c | 12 ++++++++++++ include/linux/soundwire/sdw.h | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/drivers/soundwire/bus.c b/drivers/soundwire/bus.c index 4fd5cac799c5..55c1db816534 100644 --- a/drivers/soundwire/bus.c +++ b/drivers/soundwire/bus.c @@ -1360,6 +1360,18 @@ int sdw_slave_get_scale_index(struct sdw_slave *slav= e, u8 *base) } EXPORT_SYMBOL(sdw_slave_get_scale_index); =20 +int sdw_slave_get_current_bank(struct sdw_slave *slave) +{ + int tmp; + + tmp =3D sdw_read(slave, SDW_SCP_CTRL); + if (tmp < 0) + return tmp; + + return FIELD_GET(SDW_SCP_STAT_CURR_BANK, tmp); +} +EXPORT_SYMBOL_GPL(sdw_slave_get_current_bank); + static int sdw_slave_set_frequency(struct sdw_slave *slave) { int scale_index; diff --git a/include/linux/soundwire/sdw.h b/include/linux/soundwire/sdw.h index 096213956d31..e6a3476bcef1 100644 --- a/include/linux/soundwire/sdw.h +++ b/include/linux/soundwire/sdw.h @@ -1089,6 +1089,8 @@ int sdw_stream_remove_slave(struct sdw_slave *slave, =20 struct device *of_sdw_find_device_by_node(struct device_node *np); =20 +int sdw_slave_get_current_bank(struct sdw_slave *sdev); + int sdw_slave_get_scale_index(struct sdw_slave *slave, u8 *base); =20 /* messaging and data APIs */ @@ -1128,6 +1130,12 @@ static inline struct device *of_sdw_find_device_by_n= ode(struct device_node *np) return NULL; } =20 +static inline int sdw_slave_get_current_bank(struct sdw_slave *sdev) +{ + WARN_ONCE(1, "SoundWire API is disabled"); + return -EINVAL; +} + /* messaging and data APIs */ static inline int sdw_read(struct sdw_slave *slave, u32 addr) { --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 6449530214C for ; Fri, 5 Sep 2025 15:44:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087085; cv=none; b=KJtA9l+/8Wy4G2rQU1CsjZkJx/dVTYxhcyb/yIXMsYJADx3y4DHoHk2NB5/65vsj6Smagn7yd4SNv/bmCkue33sgoWo4gDo+aahZh4HFdp4jKZpW8xENd3ASw9LPvvRcP1kJgnkGR8av2Y0+4X2UpoYczmZKFcWzQpMnVPTefj8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087085; c=relaxed/simple; bh=cVy7tXWBKEHoP/U0JsXIR9YXHxWo2Q7wpYa7sp87Jsg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VFidjTNoaGYto+/hRFpoI8pqs0nkhoU1opDtt46XDA6dwsshcoNZWLyAX3O/hATGYdyQvIA8TrcPppEPaHJIA+WkvNdd6u1Zl8qWzxXyGk4bEpvBCIrmQumIvrvzUElamKpWXEfFOFDbUaqUuOW+Ym97G2GeWvuLr7W1DMiKxSE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Js+iTkaZ; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Js+iTkaZ" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5858WYAM018519 for ; Fri, 5 Sep 2025 15:44:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=l+W1WoroOPJ 8XJoWecoC0R6dzcX5hWnGc4gF8mkYIdA=; b=Js+iTkaZ/Je4vmljuZc+2nabgYc GJbzbTJT8yGIHncaOg1sWks0uDjEB/Bmg/OP66BOc3vgyRdncksYAlV5tnTyLsC2 o17GOjYTzI/dgerlyaXLSHg7+TnSGwoNPUnM5S0jf/pU+M6kuDA7Qr4SI2d2EYDp nX7YWcQWwkUZgICyvcs6oPi/b+fUuuEfCi+xBa+Ch09dU//RrInq1II3MLoAe2Kt dY3AnulfnxPZGuvDyOTkrUmELgoHJJvor7naeevOccUwLuuaoR90KUZpsvfMLbIN wP/sf0rSmI+HWBGTUFhn6TPf49fa1I/4RfNs4o8b/w7hX5D3kvuqJtAp3Tg== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48upnpkraq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:42 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-4b5d58d226cso49639441cf.1 for ; Fri, 05 Sep 2025 08:44:42 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087081; x=1757691881; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=l+W1WoroOPJ8XJoWecoC0R6dzcX5hWnGc4gF8mkYIdA=; b=bgj8pbiJlSikWOHo6eM7q7UQhlUlNV4j7zZ6i7Tz3b2/vo2uoryTd1wdqlyyKlQ3BN NILPpJg9DVkZMYGD/Z0CN5WkMVOQ0bJEc2313a1o6WZrGLU+w3nYbAdf9iBXwoy+WRJQ iC+Op4T6G4I3Pyx6Wxq61Gpt3FIAse5GWG3reeZBTTFu6IKRuSpZyChtsbuuTF1yij+I 9TaLtkRM2iyMQh6sf1uQ3YiMA2IeUbEN7SFV9KDRFVsWgf1fBayC95gGASFVnUsmWnbo yTun3xQEI0jIOtxX0xf2AIOlAVVYkLvfwSUaWeRtZBTUSeTza9wsimCPIMPF4JtjRo1N TS5g== X-Forwarded-Encrypted: i=1; AJvYcCW/x949iy4lIqLIDFA7o2THd2MxoO+u7GaosNIfEm70OSrrgVrK7FRe4LWPXe5rfUfRrM+g3NZDSGKk+AY=@vger.kernel.org X-Gm-Message-State: AOJu0YxAKhIHidXNFh7Qd1uZ75JonYk4WWLZaMdZ6zxSJxJbSjNSJmxN uolIudDjB9gq+ayNNoBeHFxQbsv1PPS8n3U+hdJimOM9pEZ0IvN+RfqXRYT9zI/20IFRAklu2l6 tB8hi6MwAqbDZ40kWyvbp3KGx8jKZwEZzgBPuN0aGYeTH4WFzGr+vwu1WmGMkFJe+hu8= X-Gm-Gg: ASbGnctsLff51YO95q9vs9l6Ity1w67rfENsynaoCH4zgWSCDW75cKIrlr0Ie3kRoCW A1OTeac/bF3OxFqBYVJe8F0KgsgiBV7bl56TPnCgLBv/GCYUOSfCScQDDHMj1nCxcWl7fUGFz2J ydjYK8wsd6W2U1ABDruE15lfk1yhXKIXZYLdPL4pS4eQ4BbAlT5vyfzG7ClBlC4qEfpwQJRW6Ar 8TEfBJIdkmwvdWKYFMIWTcmX/Mndn7OihHuhz713NvE2cmYVsbmjGtyGopjWwvaVvHHj1B0tIJH 7ACKaWZUnegS0HYyjhdz7NXt0/7cfT2hSn87mj4quVRohV9ENw9+cw== X-Received: by 2002:a05:622a:1c07:b0:4b3:4a3a:48b8 with SMTP id d75a77b69052e-4b34a3a7654mr170182541cf.73.1757087081052; Fri, 05 Sep 2025 08:44:41 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGVF4pA9I2dJ2DRQMzkVTojWkJxOt2uCZE7XwoEveMWSKKsqVUG43lQCkNjtbyDZ4hMmDlHDA== X-Received: by 2002:a05:622a:1c07:b0:4b3:4a3a:48b8 with SMTP id d75a77b69052e-4b34a3a7654mr170182191cf.73.1757087080438; Fri, 05 Sep 2025 08:44:40 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:40 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 04/12] ASoC: codecs: wcdxxxx: use of_sdw_find_device_by_node helper Date: Fri, 5 Sep 2025 16:44:22 +0100 Message-ID: <20250905154430.12268-5-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: R2G6c7mBmjhMhm0EIV-HVoYmS5z8lmim X-Authority-Analysis: v=2.4 cv=Jt/xrN4C c=1 sm=1 tr=0 ts=68bb056a cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=VO0QnzvMDvqADXZeruwA:9 a=kacYvNCVWA4VmyqE58fU:22 X-Proofpoint-ORIG-GUID: R2G6c7mBmjhMhm0EIV-HVoYmS5z8lmim X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAwMSBTYWx0ZWRfX/BlTKcymsp+C 3E90NJVVXzdD+Z0JB9aBOtQ+Z5p0+ugCu2yvD3xMswjEFV9R9ueDHdvDE/nG+ulMrzKeSfjWKJZ 5YSjIXCVR44tYDHUBh4HND/nLJrnqxUBnSAAD/PTFIaEEj3o+l0zPS+8QQ6WjO9gHih9mOmnsvV +tnCnNCnflj46/Bx97tky907T9yVmKjuwVMtyYKjDEd7956jgqomtDkznHmQgg6q1V3gDN1B4RK IdNS4dJ0yO49tYnzzGZcxC4UviTmF7P8P924N9g52lMN/rDWdw9PwtPDjfmA8LLt+UWQwx/WWMU nClmPUr9CWxJs45pPe6y4/OezvByAGDtHCy6wvu3CmMzVHcThxrHwL9T3D9U1s3uzbFO/UypSMj E0Ct6LB2 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 clxscore=1015 bulkscore=0 impostorscore=0 spamscore=0 phishscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300001 Content-Type: text/plain; charset="utf-8" use of_sdw_find_device_by_node helper function, rather than duplicating this function in every codec driver. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/wcd937x-sdw.c | 6 ------ sound/soc/codecs/wcd937x.c | 4 ++-- sound/soc/codecs/wcd937x.h | 2 -- sound/soc/codecs/wcd938x-sdw.c | 7 ------- sound/soc/codecs/wcd938x.c | 4 ++-- sound/soc/codecs/wcd938x.h | 6 ------ sound/soc/codecs/wcd939x-sdw.c | 6 ------ sound/soc/codecs/wcd939x.c | 4 ++-- sound/soc/codecs/wcd939x.h | 6 ------ 9 files changed, 6 insertions(+), 39 deletions(-) diff --git a/sound/soc/codecs/wcd937x-sdw.c b/sound/soc/codecs/wcd937x-sdw.c index 1bfe7383b311..e7cc699bd8bc 100644 --- a/sound/soc/codecs/wcd937x-sdw.c +++ b/sound/soc/codecs/wcd937x-sdw.c @@ -78,12 +78,6 @@ static struct sdw_dpn_prop wcd937x_dpn_prop[WCD937X_MAX_= SWR_PORTS] =3D { } }; =20 -struct device *wcd937x_sdw_device_get(struct device_node *np) -{ - return bus_find_device_by_of_node(&sdw_bus_type, np); -} -EXPORT_SYMBOL_GPL(wcd937x_sdw_device_get); - int wcd937x_sdw_hw_params(struct wcd937x_sdw_priv *wcd, struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, diff --git a/sound/soc/codecs/wcd937x.c b/sound/soc/codecs/wcd937x.c index de2dff3c56d3..b78f37c582ca 100644 --- a/sound/soc/codecs/wcd937x.c +++ b/sound/soc/codecs/wcd937x.c @@ -2788,7 +2788,7 @@ static int wcd937x_bind(struct device *dev) return ret; } =20 - wcd937x->rxdev =3D wcd937x_sdw_device_get(wcd937x->rxnode); + wcd937x->rxdev =3D of_sdw_find_device_by_node(wcd937x->rxnode); if (!wcd937x->rxdev) { dev_err(dev, "could not find slave with matching of node\n"); return -EINVAL; @@ -2797,7 +2797,7 @@ static int wcd937x_bind(struct device *dev) wcd937x->sdw_priv[AIF1_PB] =3D dev_get_drvdata(wcd937x->rxdev); wcd937x->sdw_priv[AIF1_PB]->wcd937x =3D wcd937x; =20 - wcd937x->txdev =3D wcd937x_sdw_device_get(wcd937x->txnode); + wcd937x->txdev =3D of_sdw_find_device_by_node(wcd937x->txnode); if (!wcd937x->txdev) { dev_err(dev, "could not find txslave with matching of node\n"); return -EINVAL; diff --git a/sound/soc/codecs/wcd937x.h b/sound/soc/codecs/wcd937x.h index 3ab21bb5846e..49e5dce6f8c9 100644 --- a/sound/soc/codecs/wcd937x.h +++ b/sound/soc/codecs/wcd937x.h @@ -549,8 +549,6 @@ int wcd937x_sdw_hw_params(struct wcd937x_sdw_priv *wcd, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai); =20 -struct device *wcd937x_sdw_device_get(struct device_node *np); - #else int wcd937x_sdw_free(struct wcd937x_sdw_priv *wcd, struct snd_pcm_substream *substream, diff --git a/sound/soc/codecs/wcd938x-sdw.c b/sound/soc/codecs/wcd938x-sdw.c index e822cc145250..a7514d716086 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -82,13 +82,6 @@ static struct sdw_dpn_prop wcd938x_dpn_prop[WCD938X_MAX_= SWR_PORTS] =3D { } }; =20 -struct device *wcd938x_sdw_device_get(struct device_node *np) -{ - return bus_find_device_by_of_node(&sdw_bus_type, np); - -} -EXPORT_SYMBOL_GPL(wcd938x_sdw_device_get); - int wcd938x_swr_get_current_bank(struct sdw_slave *sdev) { int bank; diff --git a/sound/soc/codecs/wcd938x.c b/sound/soc/codecs/wcd938x.c index 711f373ece24..e2cb0758bca7 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -3400,7 +3400,7 @@ static int wcd938x_bind(struct device *dev) return ret; } =20 - wcd938x->rxdev =3D wcd938x_sdw_device_get(wcd938x->rxnode); + wcd938x->rxdev =3D of_sdw_find_device_by_node(wcd938x->rxnode); if (!wcd938x->rxdev) { dev_err(dev, "could not find slave with matching of node\n"); ret =3D -EINVAL; @@ -3409,7 +3409,7 @@ static int wcd938x_bind(struct device *dev) wcd938x->sdw_priv[AIF1_PB] =3D dev_get_drvdata(wcd938x->rxdev); wcd938x->sdw_priv[AIF1_PB]->wcd938x =3D wcd938x; =20 - wcd938x->txdev =3D wcd938x_sdw_device_get(wcd938x->txnode); + wcd938x->txdev =3D of_sdw_find_device_by_node(wcd938x->txnode); if (!wcd938x->txdev) { dev_err(dev, "could not find txslave with matching of node\n"); ret =3D -EINVAL; diff --git a/sound/soc/codecs/wcd938x.h b/sound/soc/codecs/wcd938x.h index fb6a0e4ef337..dbafcae247f4 100644 --- a/sound/soc/codecs/wcd938x.h +++ b/sound/soc/codecs/wcd938x.h @@ -670,7 +670,6 @@ int wcd938x_sdw_hw_params(struct wcd938x_sdw_priv *wcd, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai); =20 -struct device *wcd938x_sdw_device_get(struct device_node *np); int wcd938x_swr_get_current_bank(struct sdw_slave *sdev); =20 #else @@ -697,11 +696,6 @@ static inline int wcd938x_sdw_hw_params(struct wcd938x= _sdw_priv *wcd, return -EOPNOTSUPP; } =20 -static inline struct device *wcd938x_sdw_device_get(struct device_node *np) -{ - return NULL; -} - static inline int wcd938x_swr_get_current_bank(struct sdw_slave *sdev) { return 0; diff --git a/sound/soc/codecs/wcd939x-sdw.c b/sound/soc/codecs/wcd939x-sdw.c index f7a9323a9fea..e487a1bb0194 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -128,12 +128,6 @@ static struct sdw_dpn_prop wcd939x_tx_dpn_prop[WCD939X= _MAX_TX_SWR_PORTS] =3D { } }; =20 -struct device *wcd939x_sdw_device_get(struct device_node *np) -{ - return bus_find_device_by_of_node(&sdw_bus_type, np); -} -EXPORT_SYMBOL_GPL(wcd939x_sdw_device_get); - unsigned int wcd939x_swr_get_current_bank(struct sdw_slave *sdev) { return FIELD_GET(SDW_SCP_STAT_CURR_BANK, diff --git a/sound/soc/codecs/wcd939x.c b/sound/soc/codecs/wcd939x.c index 64f082e474c1..5a56c79a8922 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -3383,7 +3383,7 @@ static int wcd939x_bind(struct device *dev) goto err_put_typec_switch; } =20 - wcd939x->rxdev =3D wcd939x_sdw_device_get(wcd939x->rxnode); + wcd939x->rxdev =3D of_sdw_find_device_by_node(wcd939x->rxnode); if (!wcd939x->rxdev) { dev_err(dev, "could not find slave with matching of node\n"); ret =3D -EINVAL; @@ -3392,7 +3392,7 @@ static int wcd939x_bind(struct device *dev) wcd939x->sdw_priv[AIF1_PB] =3D dev_get_drvdata(wcd939x->rxdev); wcd939x->sdw_priv[AIF1_PB]->wcd939x =3D wcd939x; =20 - wcd939x->txdev =3D wcd939x_sdw_device_get(wcd939x->txnode); + wcd939x->txdev =3D of_sdw_find_device_by_node(wcd939x->txnode); if (!wcd939x->txdev) { dev_err(dev, "could not find txslave with matching of node\n"); ret =3D -EINVAL; diff --git a/sound/soc/codecs/wcd939x.h b/sound/soc/codecs/wcd939x.h index 3204fb10b58d..3f189e5cafd5 100644 --- a/sound/soc/codecs/wcd939x.h +++ b/sound/soc/codecs/wcd939x.h @@ -930,7 +930,6 @@ int wcd939x_sdw_hw_params(struct wcd939x_sdw_priv *wcd, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai); =20 -struct device *wcd939x_sdw_device_get(struct device_node *np); unsigned int wcd939x_swr_get_current_bank(struct sdw_slave *sdev); =20 struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd); @@ -958,11 +957,6 @@ static inline int wcd939x_sdw_hw_params(struct wcd939x= _sdw_priv *wcd, return -EOPNOTSUPP; } =20 -static inline struct device *wcd939x_sdw_device_get(struct device_node *np) -{ - return NULL; -} - static inline unsigned int wcd939x_swr_get_current_bank(struct sdw_slave *= sdev) { return 0; --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 20CD0309EE8 for ; Fri, 5 Sep 2025 15:44:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087086; cv=none; b=Vi95GvE46nBzCGtMP/v5mZO2lbrLYoL6KsXEySieAtvbBcZF518ArU6YVtQ7FQDTwMWlltKO24hEdVeLIJ7BlVhGJoLbNssUNYOEK6ehpDPjDWr0o314rwHvtBlfT+aHrc5bZiWO3DirXKXSc/q8wNs0+dVEevMp0tKQYSVyEtI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087086; c=relaxed/simple; bh=4NDb3BHQkI2X3E5eiL6I24at9ebSdCFIXHWDhEFcgdg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t2NasRkCYDyYcP18+PltEQ2P37IDG3oYBohz7cu8v0ijOdZKUVyYb+VCSiv4K4D8qFOdTHPdZnGeYtOZ50iH1W9Fug1ag3Hdu+OdFvnao4aw46L+u8gtfdY0VnjenMXgAD7PaMYUt1k6HcedFnaJi1ahbX2D9sLmXEZuzn6aRg4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SUwp4wVt; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SUwp4wVt" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5856j583008129 for ; Fri, 5 Sep 2025 15:44:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=C34AfntxGUQ tcgOzSpdk0iKg2eP3zakUjCy6JAxDmas=; b=SUwp4wVt6ASuoS6rYrViinDZGie SaaQrW3UEBd5x3XBMZjjFNlExG7iHL5Cw0JePdgPjghpNzYwZh1pdlJp0TyWiaJV xEDVSIWcgUr/iwbffMUJJWxrZK8ddMz2o2sAYHC3u3ozePpd137T9XGgPvtObqeP HNc+uvNSoqI1irQog11R9ti9VzpkamQBFROMw2DsShxdgza/wYi/jF+UIW5iqhis 2c449B48cUBkkwbYSyagOiAxEUYTMyRorOi011UfOPCQiKCesoZ0hVISP6urpD/s bNOxhD/YBjn+PAKEqpWYd6KX8e8Ip7OqvPpWvCQdqp1qKtoNEKG41yEbqUw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48urmjujba-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:44 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-4b3349c2c38so64909161cf.2 for ; Fri, 05 Sep 2025 08:44:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087083; x=1757691883; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=C34AfntxGUQtcgOzSpdk0iKg2eP3zakUjCy6JAxDmas=; b=Diwp1qA3V7sfn88/75DsZiuRpFpscZlZ99MUt2X3zYaYfTQFFeYyI7k8Q5wm5+OX1U avzLbZ7kYco4dR/dZe2yofZPCx+GRL85Qdxdtw1C4UeyILLY5zR81cNtNmMEUnZMIUkD fy+06M1/o1jmsabPDm9K4Suza73g9nK8pVYiNU1VyXdAC9+2yoeOrXv0+Eyvi1muapqw nsOacElp6Aj22xzSZR2NNhJ0qALkNs7IRdh5zxHlblgETIytEl6clPqBpRng6KxdXWiS 5f59XbjyJcT9HDMzr+4dp7kBTFgfcIH3+LwlWz7eurddvxDHZmL1Y80tXMkXERY99e0V 6BTA== X-Forwarded-Encrypted: i=1; AJvYcCWGFdr4j9zx67C/VdjgVWnIrlnA2lrgjq7h2ms2qqC8SVx0G7h/oWD6jyANfVq9iLEA95bYUVUCKiMXM0s=@vger.kernel.org X-Gm-Message-State: AOJu0Yxo3tV/jzmlyv/f2cDLQuUpAnKavuSzq7mDmZeF5lt6gEjE32MW 1j66adQQTP+BoXYvJD4d7XMAT8hac68N7lTnkJXA0wTVOdYYq3PT294eUnp/KwCX+Fo5h+wEWLx /+p+HJKngQli8JJAPpOzuwI0fOfwXPpVsjRVkoMUzll1vwTAIv1h951uUAEedL/WAkrI= X-Gm-Gg: ASbGnctCZuWvAJ6d4sPBZyLCpyF7ngnZGIUDh+xlZHGFx6L1fiI9yC/shryejucALRJ 52ntJbrM/pdGqCehEXzylXR7/uvIDrfzrnWn5vYm+1rtTWe9sMDPEDUc6wD+MokHUXwSsdocyQj OwFqvAgn7YYWjAAhpjkHgBHXWD5pnn1sp2pCAuQhlrTXnXWxHnPrg+r7AcnHWB5VTZuQgvOH3K/ 16hXeKs8+rtYMQjq6FxrJCFnbKAtFjcCDJur0nvg9jFSpu2bRYyXVLb8GccmQxQiJws6fRjnYfl Dm5ILCDXN5KyGhxS5MpJQ01uBzUBdNk752GjMhicMwbj8MvGMhFjKg== X-Received: by 2002:a05:622a:38c:b0:4b4:9273:9689 with SMTP id d75a77b69052e-4b4927397f8mr122516861cf.81.1757087082715; Fri, 05 Sep 2025 08:44:42 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFTqgTAeXKIaPrM79+DCWFqyIZktp8nLWlrRyAjPgHUYjE2/tgNnLfxITtxh9nMlLdrVZT6lw== X-Received: by 2002:a05:622a:38c:b0:4b4:9273:9689 with SMTP id d75a77b69052e-4b4927397f8mr122516131cf.81.1757087081455; Fri, 05 Sep 2025 08:44:41 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:41 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 05/12] ASoC: codecs: wcdxxxx: use sdw_slave_get_current_bank helper Date: Fri, 5 Sep 2025 16:44:23 +0100 Message-ID: <20250905154430.12268-6-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=OemYDgTY c=1 sm=1 tr=0 ts=68bb056c cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=VwQbUJbxAAAA:8 a=WmG1VI7HpiTX60UEcG8A:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: 6eJtZTt32f6GPoqI-zDwpB-hbwtXqJto X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAyNCBTYWx0ZWRfX/k9aRFX7aSjM oRIrXhh3RLAqtxDYtddwTD2OPyKAj1tqyGooAr9ZVnALAKioHRjaCQ5tHRw/3Au12KQL2WsGPdq y1xs5gvmauK3XgfBbhiqFo7nknsh7zSoIAqwVS22Ex/daXul+Ue/yW6KItfkHZOBaqdO+DaOjLp N4CCJeyt6PALl+Zki7E7rWfKSkEkJgxJS61mjK/YvN2P3+/ckCPKRXrCFcQ4VVFiHv/i9IQeaQo KiTKYF2N27LxY0NFIessewLZwZf2iOB++2bE3kBoYQkqkrr6pO4bAiCOQY/TyxkhmjUo6oAi/f6 f8kaDgLn8mUH6day66ao3iOrDwUaIiWVkfYFpZZfAad4vxuQ4sYLuZHuNNK5oLkTqZanc82iXvK 9JVxx9aK X-Proofpoint-ORIG-GUID: 6eJtZTt32f6GPoqI-zDwpB-hbwtXqJto X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 bulkscore=0 priorityscore=1501 adultscore=0 clxscore=1015 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300024 Content-Type: text/plain; charset="utf-8" use sdw_slave_get_current_bank() helper function, rather than duplicating this function in every codec driver. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov Acked-by: Vinod Koul --- sound/soc/codecs/wcd938x-sdw.c | 10 ---------- sound/soc/codecs/wcd938x.c | 3 +-- sound/soc/codecs/wcd938x.h | 7 ------- sound/soc/codecs/wcd939x-sdw.c | 7 ------- sound/soc/codecs/wcd939x.c | 2 +- sound/soc/codecs/wcd939x.h | 7 ------- 6 files changed, 2 insertions(+), 34 deletions(-) diff --git a/sound/soc/codecs/wcd938x-sdw.c b/sound/soc/codecs/wcd938x-sdw.c index a7514d716086..8bcd8396f375 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -82,16 +82,6 @@ static struct sdw_dpn_prop wcd938x_dpn_prop[WCD938X_MAX_= SWR_PORTS] =3D { } }; =20 -int wcd938x_swr_get_current_bank(struct sdw_slave *sdev) -{ - int bank; - - bank =3D sdw_read(sdev, SDW_SCP_CTRL); - - return ((bank & 0x40) ? 1 : 0); -} -EXPORT_SYMBOL_GPL(wcd938x_swr_get_current_bank); - int wcd938x_sdw_hw_params(struct wcd938x_sdw_priv *wcd, struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, diff --git a/sound/soc/codecs/wcd938x.c b/sound/soc/codecs/wcd938x.c index e2cb0758bca7..f8d7bf27a6ed 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -1094,8 +1094,7 @@ static int wcd938x_tx_swr_ctrl(struct snd_soc_dapm_wi= dget *w, int bank; int rate; =20 - bank =3D (wcd938x_swr_get_current_bank(wcd938x->sdw_priv[AIF1_CAP]->sdev)= ) ? 0 : 1; - bank =3D bank ? 0 : 1; + bank =3D sdw_slave_get_current_bank(wcd938x->sdw_priv[AIF1_CAP]->sdev); =20 switch (event) { case SND_SOC_DAPM_PRE_PMU: diff --git a/sound/soc/codecs/wcd938x.h b/sound/soc/codecs/wcd938x.h index dbafcae247f4..54ee56b7fbd6 100644 --- a/sound/soc/codecs/wcd938x.h +++ b/sound/soc/codecs/wcd938x.h @@ -669,9 +669,6 @@ int wcd938x_sdw_hw_params(struct wcd938x_sdw_priv *wcd, struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai); - -int wcd938x_swr_get_current_bank(struct sdw_slave *sdev); - #else =20 static inline int wcd938x_sdw_free(struct wcd938x_sdw_priv *wcd, @@ -696,9 +693,5 @@ static inline int wcd938x_sdw_hw_params(struct wcd938x_= sdw_priv *wcd, return -EOPNOTSUPP; } =20 -static inline int wcd938x_swr_get_current_bank(struct sdw_slave *sdev) -{ - return 0; -} #endif /* CONFIG_SND_SOC_WCD938X_SDW */ #endif /* __WCD938X_H__ */ diff --git a/sound/soc/codecs/wcd939x-sdw.c b/sound/soc/codecs/wcd939x-sdw.c index e487a1bb0194..477d6cf27d32 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -128,13 +128,6 @@ static struct sdw_dpn_prop wcd939x_tx_dpn_prop[WCD939X= _MAX_TX_SWR_PORTS] =3D { } }; =20 -unsigned int wcd939x_swr_get_current_bank(struct sdw_slave *sdev) -{ - return FIELD_GET(SDW_SCP_STAT_CURR_BANK, - sdw_read(sdev, SDW_SCP_CTRL)); -} -EXPORT_SYMBOL_GPL(wcd939x_swr_get_current_bank); - int wcd939x_sdw_hw_params(struct wcd939x_sdw_priv *wcd, struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, diff --git a/sound/soc/codecs/wcd939x.c b/sound/soc/codecs/wcd939x.c index 5a56c79a8922..85730ae40c2c 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -1017,7 +1017,7 @@ static int wcd939x_tx_swr_ctrl(struct snd_soc_dapm_wi= dget *w, int bank; int rate; =20 - bank =3D wcd939x_swr_get_current_bank(wcd939x->sdw_priv[AIF1_CAP]->sdev); + bank =3D sdw_slave_get_current_bank(wcd939x->sdw_priv[AIF1_CAP]->sdev); =20 switch (event) { case SND_SOC_DAPM_PRE_PMU: diff --git a/sound/soc/codecs/wcd939x.h b/sound/soc/codecs/wcd939x.h index 3f189e5cafd5..e70445b1a4bc 100644 --- a/sound/soc/codecs/wcd939x.h +++ b/sound/soc/codecs/wcd939x.h @@ -930,8 +930,6 @@ int wcd939x_sdw_hw_params(struct wcd939x_sdw_priv *wcd, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai); =20 -unsigned int wcd939x_swr_get_current_bank(struct sdw_slave *sdev); - struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd); #else =20 @@ -957,11 +955,6 @@ static inline int wcd939x_sdw_hw_params(struct wcd939x= _sdw_priv *wcd, return -EOPNOTSUPP; } =20 -static inline unsigned int wcd939x_swr_get_current_bank(struct sdw_slave *= sdev) -{ - return 0; -} - struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd) { return PTR_ERR(-EINVAL); --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 D868F309EFC for ; Fri, 5 Sep 2025 15:44:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087089; cv=none; b=ORC3EQXjbaY1b1SSaocDWgwZtZ3FCAjEijTsvXqS8/av9WTuZYDvwMo9gvQZajH5q9d9/GflQK1ir72PAWInnAnE1Yz/i4FM9EFIOET+qemtf/0/gWfV2GNA5mnCxJ2MHfU3OahFf9BczGio3pRqksVaHaoxeF/VPfiQqzKVZaY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087089; c=relaxed/simple; bh=Cjy52+rSRRvz3amTrK4YwqzuJwEQTV/P2tzL0E0LFV0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jk5DT4K8VM0SJ4TSz53SV/gZvQBE7n2iKC+N1ziFrPnzBV4B33SAMKAJVaVq9Rc4lj0kECa6YQ8CEA4vYEcjuZZXbp1sAxUxHq+pG12qAK2XkXB4SaO7PZcIxxU1wPycpn6QZiYTaW594JlXuCS13eO5EYGZjvzZDHsBrc7d29A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=KxJCOcUa; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="KxJCOcUa" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 585DD2L1018638 for ; Fri, 5 Sep 2025 15:44:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=K2pu6aXHHMg rwRHirB2+Q4ERe85JA0bGoneC1M05bpY=; b=KxJCOcUavzDLNCeF7ONaUzl/U5H TT5jWUYH/5CHl3vMsgpe+Y+vwECM6XLFOD/tkV0zCSokQx6RYkVlCP8g4bNcN5cx AZfCKSQQ7krx/2oMY69sozwO6Mmorn+R4JccAKyBRuLYLaHqJm88Ol+cjtzwlZyf BMVPTPxismLYO4X1cDVvw898vdsC1vxJ/G8Vac3x75A6xEZ4TluxND//F3eREFwb sl6DDCIrklmCXQtJzvG7jDmZi1HloiB7Z1Up2Kal2TikjzrQeFyDHkURE0eyfMRM 0gwbYU6nnoTQ0FiYeAaM60aIJF03S/brsEpCP02VhlwlQxGxZq1g752s4Pg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48yebuufmu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:44 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4b30cb3c705so68512751cf.3 for ; Fri, 05 Sep 2025 08:44:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087084; x=1757691884; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=K2pu6aXHHMgrwRHirB2+Q4ERe85JA0bGoneC1M05bpY=; b=tUt1itecugbYSFEguRONGx/IemBDQoLpx79jnbrXpL0v2QLj9xMSW2vD54zUEvV8pW zONRZrXZLElYq+yeWpAmvOxU+il34U9LXIJ1HSOn84UFcotLdBjyQa1G/SMnK940L3Px lWf8P7LG9eZxCdJ3u8U7oSKZG2rSJ0V/B38Eu7FmZB92qEP5Z7lmXCghGwqY+w9jh1qh cIvoDCr8W0c51ixRcV0iEPKWle+Ap15eb583hWclJcfCoeXqpsDpU+rdKI5QJWXcqo9S vdZHCmjHSs7qThxccr9fPYaIwqR5SiDhkJotvjdXQtRC6VIGhCYdmxgWee9njIdnnJ+L qZjQ== X-Forwarded-Encrypted: i=1; AJvYcCVDYYhuPQkXnjwvlkx+F6RWrsRUv0ca9EJM++SV3r9zJ6kNOEz9ETdmzAModeGuJvSp43q6BtpTzSQYIIc=@vger.kernel.org X-Gm-Message-State: AOJu0Yx1EQAHk7ZWzqj7aFTtdvyfAUxj+EYpw6Oq/uKOX+k1bjZFDrLG 9Mk9DfLy/PHpba/LmSMsusUyfCfTPh1wRtHpGJqAuj8oXzONDxuC3tvvXG7F/Q5fn6rf3avBF67 isWGN+O/MshmO2OJfdakd+H5Sa9LbISYOeij51roqFDMUs23TADsuCOjvHi7bWCchi2Q= X-Gm-Gg: ASbGnctevte/ivPta0D0POeTYjNnjlrtLPl51m+h/j0WqrqBTxJy7N0B7FT0jUFHqrK 4xXL4UGVKG5wrQhZ8LknNL7yu5JYHWHkujWJecXMQH5rVF9bISMfE7Eb4JX0mRgfpvfbz/N7kMb UXPrhjtBRue/FUm9iIH2afFOtuOdsJ+2NYhUuZ2e5K7MRJc5qyCw33xadWnQO+bxtkN5MAZi6sT isUuouTjFCXKkawA86BdmaZzHGZowzUxkHdBTGR/9xqYu7ISKkLBXcP09wub2eK6j91n/jOvPKr RYknlzxk3JVRrOoMTrC0Os0Kzqm2M1tb+CQNwDv4qZScz/pdLC23vA== X-Received: by 2002:ac8:5fd4:0:b0:4b4:8f9f:746c with SMTP id d75a77b69052e-4b48f9f8a42mr146800031cf.23.1757087083335; Fri, 05 Sep 2025 08:44:43 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGZgzTwEaz8RZ2gyWBCs/GRl9dOB+wMEPsneMmfR36D0n91yQ36mwhiHlbNNXR+RAF+oler4g== X-Received: by 2002:ac8:5fd4:0:b0:4b4:8f9f:746c with SMTP id d75a77b69052e-4b48f9f8a42mr146799461cf.23.1757087082604; Fri, 05 Sep 2025 08:44:42 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:42 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 06/12] ASoC: codecs: wcd: add common helper for wcd codecs Date: Fri, 5 Sep 2025 16:44:24 +0100 Message-ID: <20250905154430.12268-7-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 8ittyXVSgQ_jRk8iM1bY5wSVwTeEr7LW X-Authority-Analysis: v=2.4 cv=X+ZSKHTe c=1 sm=1 tr=0 ts=68bb056c cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=wa_gl3HYg-BSzEidaMMA:9 a=sbBvEVo_xVyyD6Se:21 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA0MDE2MyBTYWx0ZWRfX1lZRDwlYXr7U CrjL9hVZUytznYaavEILN6oTid+lmY6ebVGDJyzOxDZH30A9mwSAkKdvT4vz9sIKGR/+xTGUNUV u3HkpQUViPyK3G8aczkyyNJo9n46h/Zbl+1I8codwcJSPCvMC6myzjJP9PsOaj4+OKwKy1vEQuz BA5LmA2er+2mQi25WcMCSCWh/GUXifbDyarKbXgL1eMERXwlUd6sQ+dH7VisycFrjxHc7QzqNy4 iodbKXrsKi7mLkAwOpGq440rY+i8Ki6L6E3GGjm4Krx2s37CK5kRbj5JQ8VjBWLJQ+CtQrMZOVm ukjlWPDqPSB9N9hxZC548GDO1nx63M9SaW+f7f6aNYNFXEtcZ/5IPuk5SmTS8lXwFtKZ01eXXki 6JPTvQSN X-Proofpoint-ORIG-GUID: 8ittyXVSgQ_jRk8iM1bY5wSVwTeEr7LW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 malwarescore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509040163 Content-Type: text/plain; charset="utf-8" All the Qualcomm WCD codecs have most of its code duplicated across all these 3/4 drivers. This is an attempt to remove those duplicate parts by adding a common helper library for these codecs. To start with move all the micbias parsing and voltage settings these are identical in WCD934x, WCD937x, WCD938x and WCD939x codec driver. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/Kconfig | 8 ++++ sound/soc/codecs/Makefile | 2 + sound/soc/codecs/wcd-common.c | 70 +++++++++++++++++++++++++++ sound/soc/codecs/wcd-common.h | 27 +++++++++++ sound/soc/codecs/wcd934x.c | 82 +++++++++---------------------- sound/soc/codecs/wcd937x.c | 75 +++++++---------------------- sound/soc/codecs/wcd937x.h | 6 +-- sound/soc/codecs/wcd938x.c | 88 +++++++--------------------------- sound/soc/codecs/wcd939x.c | 90 +++++++---------------------------- 9 files changed, 183 insertions(+), 265 deletions(-) create mode 100644 sound/soc/codecs/wcd-common.c create mode 100644 sound/soc/codecs/wcd-common.h diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index b8d58d2fe326..f8476914e4ba 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -2251,12 +2251,16 @@ config SND_SOC_UDA1380 config SND_SOC_WCD_CLASSH tristate =20 +config SND_SOC_WCD_COMMON + tristate + config SND_SOC_WCD9335 tristate "WCD9335 Codec" depends on SLIMBUS select REGMAP_SLIMBUS select REGMAP_IRQ select SND_SOC_WCD_CLASSH + select SND_SOC_WCD_COMMON help The WCD9335 is a standalone Hi-Fi audio CODEC IC, supports Qualcomm Technologies, Inc. (QTI) multimedia solutions, @@ -2272,6 +2276,7 @@ config SND_SOC_WCD934X select REGMAP_IRQ select REGMAP_SLIMBUS select SND_SOC_WCD_CLASSH + select SND_SOC_WCD_COMMON select SND_SOC_WCD_MBHC depends on MFD_WCD934X || COMPILE_TEST help @@ -2283,6 +2288,7 @@ config SND_SOC_WCD937X tristate depends on SOUNDWIRE || !SOUNDWIRE select SND_SOC_WCD_CLASSH + select SND_SOC_WCD_COMMON =20 config SND_SOC_WCD937X_SDW tristate "WCD9370/WCD9375 Codec - SDW" @@ -2302,6 +2308,7 @@ config SND_SOC_WCD938X tristate depends on SOUNDWIRE || !SOUNDWIRE select SND_SOC_WCD_CLASSH + select SND_SOC_WCD_COMMON select MULTIPLEXER =20 config SND_SOC_WCD938X_SDW @@ -2321,6 +2328,7 @@ config SND_SOC_WCD939X depends on SOUNDWIRE || !SOUNDWIRE depends on TYPEC || !TYPEC select SND_SOC_WCD_CLASSH + select SND_SOC_WCD_COMMON =20 config SND_SOC_WCD939X_SDW tristate "WCD9390/WCD9395 Codec - SDW" diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile index a476d6c45451..8d9bc03ecc60 100644 --- a/sound/soc/codecs/Makefile +++ b/sound/soc/codecs/Makefile @@ -341,6 +341,7 @@ snd-soc-uda1334-y :=3D uda1334.o snd-soc-uda1342-y :=3D uda1342.o snd-soc-uda1380-y :=3D uda1380.o snd-soc-wcd-classh-y :=3D wcd-clsh-v2.o +snd-soc-wcd-common-y :=3D wcd-common.o snd-soc-wcd-mbhc-y :=3D wcd-mbhc-v2.o snd-soc-wcd9335-y :=3D wcd9335.o snd-soc-wcd934x-y :=3D wcd934x.o @@ -764,6 +765,7 @@ obj-$(CONFIG_SND_SOC_UDA1334) +=3D snd-soc-uda1334.o obj-$(CONFIG_SND_SOC_UDA1342) +=3D snd-soc-uda1342.o obj-$(CONFIG_SND_SOC_UDA1380) +=3D snd-soc-uda1380.o obj-$(CONFIG_SND_SOC_WCD_CLASSH) +=3D snd-soc-wcd-classh.o +obj-$(CONFIG_SND_SOC_WCD_COMMON) +=3D snd-soc-wcd-common.o obj-$(CONFIG_SND_SOC_WCD_MBHC) +=3D snd-soc-wcd-mbhc.o obj-$(CONFIG_SND_SOC_WCD9335) +=3D snd-soc-wcd9335.o obj-$(CONFIG_SND_SOC_WCD934X) +=3D snd-soc-wcd934x.o diff --git a/sound/soc/codecs/wcd-common.c b/sound/soc/codecs/wcd-common.c new file mode 100644 index 000000000000..25c0a48ff858 --- /dev/null +++ b/sound/soc/codecs/wcd-common.c @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright (c) 2025, Qualcomm Technologies, Inc. and/or its subsidiaries. + +#include +#include +#include +#include +#include +#include + +#include "wcd-common.h" + +#define WCD_MIN_MICBIAS_MV 1000 +#define WCD_DEF_MICBIAS_MV 1800 +#define WCD_MAX_MICBIAS_MV 2850 + +int wcd_get_micb_vout_ctl_val(struct device *dev, u32 micb_mv) +{ + /* min micbias voltage is 1V and maximum is 2.85V */ + if (micb_mv < WCD_MIN_MICBIAS_MV || micb_mv > WCD_MAX_MICBIAS_MV) { + dev_err(dev, "Unsupported micbias voltage (%u mV)\n", micb_mv); + return -EINVAL; + } + + return (micb_mv - WCD_MIN_MICBIAS_MV) / 50; +} +EXPORT_SYMBOL_GPL(wcd_get_micb_vout_ctl_val); + +static int wcd_get_micbias_val(struct device *dev, int micb_num, u32 *micb= _mv) +{ + char micbias[32]; + int mv; + + sprintf(micbias, "qcom,micbias%d-microvolt", micb_num); + + if (of_property_read_u32(dev->of_node, micbias, &mv)) { + dev_err(dev, "%s value not found, using default\n", micbias); + mv =3D WCD_DEF_MICBIAS_MV; + } else { + /* convert it to milli volts */ + mv =3D mv/1000; + } + if (micb_mv) + *micb_mv =3D mv; + + mv =3D wcd_get_micb_vout_ctl_val(dev, mv); + if (mv < 0) { + dev_err(dev, "Unsupported %s voltage (%d mV), falling back to default (%= d mV)\n", + micbias, mv, WCD_DEF_MICBIAS_MV); + return wcd_get_micb_vout_ctl_val(dev, WCD_DEF_MICBIAS_MV); + } + + return mv; +} + +int wcd_dt_parse_micbias_info(struct wcd_common *common) +{ + int i; + + for (i =3D 0; i < common->max_bias; i++) { + common->micb_vout[i] =3D wcd_get_micbias_val(common->dev, i+1, &common->= micb_mv[i]); + if (common->micb_vout[i] < 0) + return -EINVAL; + } + + return 0; +} +EXPORT_SYMBOL_GPL(wcd_dt_parse_micbias_info); +MODULE_DESCRIPTION("Common Qualcomm WCD Codec helpers driver"); +MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/wcd-common.h b/sound/soc/codecs/wcd-common.h new file mode 100644 index 000000000000..42d84e42d40f --- /dev/null +++ b/sound/soc/codecs/wcd-common.h @@ -0,0 +1,27 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2025, Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef __WCD_COMMON_H__ +#define __WCD_COMMON_H___ + +struct device; +struct sdw_slave; +struct sdw_bus_params; +struct irq_domain; +enum sdw_slave_status; + +#define WCD_MAX_MICBIAS 4 + +struct wcd_common { + struct device *dev; + int max_bias; + u32 micb_mv[WCD_MAX_MICBIAS]; + u32 micb_vout[WCD_MAX_MICBIAS]; +}; + +int wcd_get_micb_vout_ctl_val(struct device *dev, u32 micb_mv); +int wcd_dt_parse_micbias_info(struct wcd_common *common); + +#endif /* __WCD_COMMON_H___ */ diff --git a/sound/soc/codecs/wcd934x.c b/sound/soc/codecs/wcd934x.c index 1bb7e1dc7e6b..d10b457e6c9a 100644 --- a/sound/soc/codecs/wcd934x.c +++ b/sound/soc/codecs/wcd934x.c @@ -21,6 +21,7 @@ #include #include #include "wcd-clsh-v2.h" +#include "wcd-common.h" #include "wcd-mbhc-v2.h" =20 #include @@ -116,9 +117,6 @@ #define WCD934X_DEC_PWR_LVL_DF 0x00 #define WCD934X_DEC_PWR_LVL_HYBRID WCD934X_DEC_PWR_LVL_DF =20 -#define WCD934X_DEF_MICBIAS_MV 1800 -#define WCD934X_MAX_MICBIAS_MV 2850 - #define WCD_IIR_FILTER_SIZE (sizeof(u32) * BAND_MAX) =20 #define WCD_IIR_FILTER_CTL(xname, iidx, bidx) \ @@ -530,6 +528,7 @@ struct wcd934x_codec { struct slim_device *sdev; struct slim_device *sidev; struct wcd_clsh_ctrl *clsh_ctrl; + struct wcd_common common; struct snd_soc_component *component; struct wcd934x_slim_ch rx_chs[WCD934X_RX_MAX]; struct wcd934x_slim_ch tx_chs[WCD934X_TX_MAX]; @@ -555,7 +554,6 @@ struct wcd934x_codec { struct mutex micb_lock; u32 micb_ref[WCD934X_MAX_MICBIAS]; u32 pullup_ref[WCD934X_MAX_MICBIAS]; - u32 micb2_mv; }; =20 #define to_wcd934x_codec(_hw) container_of(_hw, struct wcd934x_codec, hw) @@ -2168,55 +2166,24 @@ static struct clk *wcd934x_register_mclk_output(str= uct wcd934x_codec *wcd) return NULL; } =20 -static int wcd934x_get_micbias_val(struct device *dev, const char *micbias, - u32 *micb_mv) -{ - int mv; - - if (of_property_read_u32(dev->parent->of_node, micbias, &mv)) { - dev_err(dev, "%s value not found, using default\n", micbias); - mv =3D WCD934X_DEF_MICBIAS_MV; - } else { - /* convert it to milli volts */ - mv =3D mv/1000; - } - - if (mv < 1000 || mv > 2850) { - dev_err(dev, "%s value not in valid range, using default\n", - micbias); - mv =3D WCD934X_DEF_MICBIAS_MV; - } - - if (micb_mv) - *micb_mv =3D mv; - - return (mv - 1000) / 50; -} - static int wcd934x_init_dmic(struct snd_soc_component *comp) { - int vout_ctl_1, vout_ctl_2, vout_ctl_3, vout_ctl_4; struct wcd934x_codec *wcd =3D dev_get_drvdata(comp->dev); u32 def_dmic_rate, dmic_clk_drv; + int ret; =20 - vout_ctl_1 =3D wcd934x_get_micbias_val(comp->dev, - "qcom,micbias1-microvolt", NULL); - vout_ctl_2 =3D wcd934x_get_micbias_val(comp->dev, - "qcom,micbias2-microvolt", - &wcd->micb2_mv); - vout_ctl_3 =3D wcd934x_get_micbias_val(comp->dev, - "qcom,micbias3-microvolt", NULL); - vout_ctl_4 =3D wcd934x_get_micbias_val(comp->dev, - "qcom,micbias4-microvolt", NULL); + ret =3D wcd_dt_parse_mbhc_data(comp->dev, &wcd->mbhc_cfg); + if (ret) + return ret; =20 snd_soc_component_update_bits(comp, WCD934X_ANA_MICB1, - WCD934X_MICB_VAL_MASK, vout_ctl_1); + WCD934X_MICB_VAL_MASK, wcd->common.micb_vout[0]); snd_soc_component_update_bits(comp, WCD934X_ANA_MICB2, - WCD934X_MICB_VAL_MASK, vout_ctl_2); + WCD934X_MICB_VAL_MASK, wcd->common.micb_vout[1]); snd_soc_component_update_bits(comp, WCD934X_ANA_MICB3, - WCD934X_MICB_VAL_MASK, vout_ctl_3); + WCD934X_MICB_VAL_MASK, wcd->common.micb_vout[2]); snd_soc_component_update_bits(comp, WCD934X_ANA_MICB4, - WCD934X_MICB_VAL_MASK, vout_ctl_4); + WCD934X_MICB_VAL_MASK, wcd->common.micb_vout[3]); =20 if (wcd->rate =3D=3D WCD934X_MCLK_CLK_9P6MHZ) def_dmic_rate =3D WCD9XXX_DMIC_SAMPLE_RATE_4P8MHZ; @@ -2517,15 +2484,6 @@ static void wcd934x_mbhc_micb_ramp_control(struct sn= d_soc_component *component, } } =20 -static int wcd934x_get_micb_vout_ctl_val(u32 micb_mv) -{ - /* min micbias voltage is 1V and maximum is 2.85V */ - if (micb_mv < 1000 || micb_mv > 2850) - return -EINVAL; - - return (micb_mv - 1000) / 50; -} - static int wcd934x_mbhc_micb_adjust_voltage(struct snd_soc_component *comp= onent, int req_volt, int micb_num) { @@ -2562,7 +2520,7 @@ static int wcd934x_mbhc_micb_adjust_voltage(struct sn= d_soc_component *component, cur_vout_ctl =3D snd_soc_component_read_field(component, micb_reg, WCD934X_MICB_VAL_MASK); =20 - req_vout_ctl =3D wcd934x_get_micb_vout_ctl_val(req_volt); + req_vout_ctl =3D wcd_get_micb_vout_ctl_val(component->dev, req_volt); if (req_vout_ctl < 0) { ret =3D -EINVAL; goto exit; @@ -2610,10 +2568,10 @@ static int wcd934x_mbhc_micb_ctrl_threshold_mic(str= uct snd_soc_component *compon * voltage needed to detect threshold microphone, then do * not change the micbias, just return. */ - if (wcd934x->micb2_mv >=3D WCD_MBHC_THR_HS_MICB_MV) + if (wcd934x->common.micb_mv[1] >=3D WCD_MBHC_THR_HS_MICB_MV) return 0; =20 - micb_mv =3D req_en ? WCD_MBHC_THR_HS_MICB_MV : wcd934x->micb2_mv; + micb_mv =3D req_en ? WCD_MBHC_THR_HS_MICB_MV : wcd934x->common.micb_mv[1]; =20 rc =3D wcd934x_mbhc_micb_adjust_voltage(component, micb_mv, MIC_BIAS_2); =20 @@ -3036,7 +2994,7 @@ static void wcd934x_mbhc_deinit(struct snd_soc_compon= ent *component) static int wcd934x_comp_probe(struct snd_soc_component *component) { struct wcd934x_codec *wcd =3D dev_get_drvdata(component->dev); - int i; + int i, ret; =20 snd_soc_component_init_regmap(component, wcd->regmap); wcd->component =3D component; @@ -3054,7 +3012,12 @@ static int wcd934x_comp_probe(struct snd_soc_compone= nt *component) for (i =3D 0; i < NUM_CODEC_DAIS; i++) INIT_LIST_HEAD(&wcd->dai[i].slim_ch_list); =20 - wcd934x_init_dmic(component); + + ret =3D wcd934x_init_dmic(component); + if (ret) { + dev_err(component->dev, "Failed to Initialize micbias\n"); + return ret; + } =20 if (wcd934x_mbhc_init(component)) dev_err(component->dev, "Failed to Initialize MBHC\n"); @@ -5860,14 +5823,13 @@ static int wcd934x_codec_parse_data(struct wcd934x_= codec *wcd) cfg->anc_micbias =3D MIC_BIAS_2; cfg->v_hs_max =3D WCD_MBHC_HS_V_MAX; cfg->num_btn =3D WCD934X_MBHC_MAX_BUTTONS; - cfg->micb_mv =3D wcd->micb2_mv; + cfg->micb_mv =3D wcd->common.micb_mv[1]; cfg->linein_th =3D 5000; cfg->hs_thr =3D 1700; cfg->hph_thr =3D 50; =20 wcd_dt_parse_mbhc_data(dev, cfg); =20 - return 0; } =20 @@ -5888,6 +5850,8 @@ static int wcd934x_codec_probe(struct platform_device= *pdev) wcd->sdev =3D to_slim_device(data->dev); mutex_init(&wcd->sysclk_mutex); mutex_init(&wcd->micb_lock); + wcd->common.dev =3D dev->parent; + wcd->common.max_bias =3D 4; =20 ret =3D wcd934x_codec_parse_data(wcd); if (ret) diff --git a/sound/soc/codecs/wcd937x.c b/sound/soc/codecs/wcd937x.c index b78f37c582ca..5c8faff3976d 100644 --- a/sound/soc/codecs/wcd937x.c +++ b/sound/soc/codecs/wcd937x.c @@ -21,6 +21,7 @@ #include =20 #include "wcd-clsh-v2.h" +#include "wcd-common.h" #include "wcd-mbhc-v2.h" #include "wcd937x.h" =20 @@ -85,6 +86,7 @@ struct wcd937x_priv { struct wcd_mbhc_config mbhc_cfg; struct wcd_mbhc_intr intr_ids; struct wcd_clsh_ctrl *clsh_info; + struct wcd_common common; struct irq_domain *virq; struct regmap_irq_chip_data *irq_chip; struct snd_soc_jack *jack; @@ -93,9 +95,6 @@ struct wcd937x_priv { s32 pullup_ref[WCD937X_MAX_MICBIAS]; u32 hph_mode; int ear_rx_path; - u32 micb1_mv; - u32 micb2_mv; - u32 micb3_mv; int hphr_pdm_wd_int; int hphl_pdm_wd_int; int aux_pdm_wd_int; @@ -872,15 +871,6 @@ static int wcd937x_enable_rx3(struct snd_soc_dapm_widg= et *w, return 0; } =20 -static int wcd937x_get_micb_vout_ctl_val(u32 micb_mv) -{ - if (micb_mv < 1000 || micb_mv > 2850) { - pr_err("Unsupported micbias voltage (%u mV)\n", micb_mv); - return -EINVAL; - } - - return (micb_mv - 1000) / 50; -} =20 static int wcd937x_tx_swr_ctrl(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, int event) @@ -1481,7 +1471,7 @@ static int wcd937x_mbhc_micb_adjust_voltage(struct sn= d_soc_component *component, cur_vout_ctl =3D snd_soc_component_read_field(component, micb_reg, WCD937X_MICB_VOUT_MASK); =20 - req_vout_ctl =3D wcd937x_get_micb_vout_ctl_val(req_volt); + req_vout_ctl =3D wcd_get_micb_vout_ctl_val(component->dev, req_volt); if (req_vout_ctl < 0) { ret =3D -EINVAL; goto exit; @@ -2436,22 +2426,14 @@ static const struct snd_soc_dapm_route wcd9375_audi= o_map[] =3D { { "DMIC6_MIXER", "Switch", "DMIC6" }, }; =20 -static int wcd937x_set_micbias_data(struct wcd937x_priv *wcd937x) +static void wcd937x_set_micbias_data(struct device *dev, struct wcd937x_pr= iv *wcd937x) { - int vout_ctl[3]; - - /* Set micbias voltage */ - vout_ctl[0] =3D wcd937x_get_micb_vout_ctl_val(wcd937x->micb1_mv); - vout_ctl[1] =3D wcd937x_get_micb_vout_ctl_val(wcd937x->micb2_mv); - vout_ctl[2] =3D wcd937x_get_micb_vout_ctl_val(wcd937x->micb3_mv); - if ((vout_ctl[0] | vout_ctl[1] | vout_ctl[2]) < 0) - return -EINVAL; - - regmap_update_bits(wcd937x->regmap, WCD937X_ANA_MICB1, WCD937X_ANA_MICB_V= OUT, vout_ctl[0]); - regmap_update_bits(wcd937x->regmap, WCD937X_ANA_MICB2, WCD937X_ANA_MICB_V= OUT, vout_ctl[1]); - regmap_update_bits(wcd937x->regmap, WCD937X_ANA_MICB3, WCD937X_ANA_MICB_V= OUT, vout_ctl[2]); - - return 0; + regmap_update_bits(wcd937x->regmap, WCD937X_ANA_MICB1, WCD937X_ANA_MICB_V= OUT, + wcd937x->commmon.micb_vout[0]); + regmap_update_bits(wcd937x->regmap, WCD937X_ANA_MICB2, WCD937X_ANA_MICB_V= OUT, + wcd937x->commmon.micb_vout[1]); + regmap_update_bits(wcd937x->regmap, WCD937X_ANA_MICB3, WCD937X_ANA_MICB_V= OUT, + wcd937x->commmon.micb_vout[2]); } =20 static irqreturn_t wcd937x_wd_handle_irq(int irq, void *data) @@ -2630,31 +2612,6 @@ static const struct snd_soc_component_driver soc_cod= ec_dev_wcd937x =3D { .endianness =3D 1, }; =20 -static void wcd937x_dt_parse_micbias_info(struct device *dev, struct wcd93= 7x_priv *wcd) -{ - struct device_node *np =3D dev->of_node; - u32 prop_val =3D 0; - int ret =3D 0; - - ret =3D of_property_read_u32(np, "qcom,micbias1-microvolt", &prop_val); - if (!ret) - wcd->micb1_mv =3D prop_val / 1000; - else - dev_warn(dev, "Micbias1 DT property not found\n"); - - ret =3D of_property_read_u32(np, "qcom,micbias2-microvolt", &prop_val); - if (!ret) - wcd->micb2_mv =3D prop_val / 1000; - else - dev_warn(dev, "Micbias2 DT property not found\n"); - - ret =3D of_property_read_u32(np, "qcom,micbias3-microvolt", &prop_val); - if (!ret) - wcd->micb3_mv =3D prop_val / 1000; - else - dev_warn(dev, "Micbias3 DT property not found\n"); -} - static bool wcd937x_swap_gnd_mic(struct snd_soc_component *component) { int value; @@ -2848,11 +2805,7 @@ static int wcd937x_bind(struct device *dev) wcd937x->sdw_priv[AIF1_PB]->slave_irq =3D wcd937x->virq; wcd937x->sdw_priv[AIF1_CAP]->slave_irq =3D wcd937x->virq; =20 - ret =3D wcd937x_set_micbias_data(wcd937x); - if (ret < 0) { - dev_err(dev, "Bad micbias pdata\n"); - return ret; - } + wcd937x_set_micbias_data(dev, wcd937x); =20 ret =3D snd_soc_register_component(dev, &soc_codec_dev_wcd937x, wcd937x_dais, ARRAY_SIZE(wcd937x_dais)); @@ -2920,6 +2873,8 @@ static int wcd937x_probe(struct platform_device *pdev) =20 dev_set_drvdata(dev, wcd937x); mutex_init(&wcd937x->micb_lock); + wcd937x->common.dev =3D dev; + wcd937x->common.max_bias =3D 3; =20 wcd937x->reset_gpio =3D devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW); if (IS_ERR(wcd937x->reset_gpio)) @@ -2939,7 +2894,9 @@ static int wcd937x_probe(struct platform_device *pdev) if (ret) return dev_err_probe(dev, ret, "Failed to get and enable supplies\n"); =20 - wcd937x_dt_parse_micbias_info(dev, wcd937x); + ret =3D wcd_dt_parse_micbias_info(dev, &wcd937x->common); + if (ret) + return dev_err_probe(dev, ret, "Failed to get micbias\n"); =20 cfg->mbhc_micbias =3D MIC_BIAS_2; cfg->anc_micbias =3D MIC_BIAS_2; diff --git a/sound/soc/codecs/wcd937x.h b/sound/soc/codecs/wcd937x.h index 49e5dce6f8c9..0f96b7108a7e 100644 --- a/sound/soc/codecs/wcd937x.h +++ b/sound/soc/codecs/wcd937x.h @@ -550,21 +550,21 @@ int wcd937x_sdw_hw_params(struct wcd937x_sdw_priv *wc= d, struct snd_soc_dai *dai); =20 #else -int wcd937x_sdw_free(struct wcd937x_sdw_priv *wcd, +static inline int wcd937x_sdw_free(struct wcd937x_sdw_priv *wcd, struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { return -EOPNOTSUPP; } =20 -int wcd937x_sdw_set_sdw_stream(struct wcd937x_sdw_priv *wcd, +static inline int wcd937x_sdw_set_sdw_stream(struct wcd937x_sdw_priv *wcd, struct snd_soc_dai *dai, void *stream, int direction) { return -EOPNOTSUPP; } =20 -int wcd937x_sdw_hw_params(struct wcd937x_sdw_priv *wcd, +static inline int wcd937x_sdw_hw_params(struct wcd937x_sdw_priv *wcd, struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) diff --git a/sound/soc/codecs/wcd938x.c b/sound/soc/codecs/wcd938x.c index f8d7bf27a6ed..c8b6e543986d 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -22,6 +22,7 @@ #include =20 #include "wcd-clsh-v2.h" +#include "wcd-common.h" #include "wcd-mbhc-v2.h" #include "wcd938x.h" =20 @@ -155,6 +156,7 @@ struct wcd938x_priv { struct wcd_mbhc_config mbhc_cfg; struct wcd_mbhc_intr intr_ids; struct wcd_clsh_ctrl *clsh_info; + struct wcd_common common; struct irq_domain *virq; struct regmap_irq_chip_data *irq_chip; struct snd_soc_jack *jack; @@ -169,10 +171,6 @@ struct wcd938x_priv { struct gpio_desc *us_euro_gpio; struct mux_control *us_euro_mux; unsigned int mux_state; - u32 micb1_mv; - u32 micb2_mv; - u32 micb3_mv; - u32 micb4_mv; int hphr_pdm_wd_int; int hphl_pdm_wd_int; int aux_pdm_wd_int; @@ -1974,15 +1972,6 @@ static void wcd938x_mbhc_micb_ramp_control(struct sn= d_soc_component *component, } } =20 -static int wcd938x_get_micb_vout_ctl_val(u32 micb_mv) -{ - /* min micbias voltage is 1V and maximum is 2.85V */ - if (micb_mv < 1000 || micb_mv > 2850) - return -EINVAL; - - return (micb_mv - 1000) / 50; -} - static int wcd938x_mbhc_micb_adjust_voltage(struct snd_soc_component *comp= onent, int req_volt, int micb_num) { @@ -2019,7 +2008,7 @@ static int wcd938x_mbhc_micb_adjust_voltage(struct sn= d_soc_component *component, cur_vout_ctl =3D snd_soc_component_read_field(component, micb_reg, WCD938X_MICB_VOUT_MASK); =20 - req_vout_ctl =3D wcd938x_get_micb_vout_ctl_val(req_volt); + req_vout_ctl =3D wcd_get_micb_vout_ctl_val(component->dev, req_volt); if (req_vout_ctl < 0) { ret =3D -EINVAL; goto exit; @@ -2067,10 +2056,10 @@ static int wcd938x_mbhc_micb_ctrl_threshold_mic(str= uct snd_soc_component *compon * voltage needed to detect threshold microphone, then do * not change the micbias, just return. */ - if (wcd938x->micb2_mv >=3D WCD_MBHC_THR_HS_MICB_MV) + if (wcd938x->common.micb_mv[2] >=3D WCD_MBHC_THR_HS_MICB_MV) return 0; =20 - micb_mv =3D req_en ? WCD_MBHC_THR_HS_MICB_MV : wcd938x->micb2_mv; + micb_mv =3D req_en ? WCD_MBHC_THR_HS_MICB_MV : wcd938x->common.micb_mv[2]; =20 return wcd938x_mbhc_micb_adjust_voltage(component, micb_mv, MIC_BIAS_2); } @@ -2975,28 +2964,16 @@ static const struct snd_soc_dapm_route wcd938x_audi= o_map[] =3D { {"EAR", NULL, "EAR PGA"}, }; =20 -static int wcd938x_set_micbias_data(struct wcd938x_priv *wcd938x) +static void wcd938x_set_micbias_data(struct device *dev, struct wcd938x_pr= iv *wcd938x) { - int vout_ctl_1, vout_ctl_2, vout_ctl_3, vout_ctl_4; - - /* set micbias voltage */ - vout_ctl_1 =3D wcd938x_get_micb_vout_ctl_val(wcd938x->micb1_mv); - vout_ctl_2 =3D wcd938x_get_micb_vout_ctl_val(wcd938x->micb2_mv); - vout_ctl_3 =3D wcd938x_get_micb_vout_ctl_val(wcd938x->micb3_mv); - vout_ctl_4 =3D wcd938x_get_micb_vout_ctl_val(wcd938x->micb4_mv); - if (vout_ctl_1 < 0 || vout_ctl_2 < 0 || vout_ctl_3 < 0 || vout_ctl_4 < 0) - return -EINVAL; - regmap_update_bits(wcd938x->regmap, WCD938X_ANA_MICB1, - WCD938X_MICB_VOUT_MASK, vout_ctl_1); + WCD938X_MICB_VOUT_MASK, wcd938x->common.micb_vout[0]); regmap_update_bits(wcd938x->regmap, WCD938X_ANA_MICB2, - WCD938X_MICB_VOUT_MASK, vout_ctl_2); + WCD938X_MICB_VOUT_MASK, wcd938x->common.micb_vout[1]); regmap_update_bits(wcd938x->regmap, WCD938X_ANA_MICB3, - WCD938X_MICB_VOUT_MASK, vout_ctl_3); + WCD938X_MICB_VOUT_MASK, wcd938x->common.micb_vout[2]); regmap_update_bits(wcd938x->regmap, WCD938X_ANA_MICB4, - WCD938X_MICB_VOUT_MASK, vout_ctl_4); - - return 0; + WCD938X_MICB_VOUT_MASK, wcd938x->common.micb_vout[3]); } =20 static irqreturn_t wcd938x_wd_handle_irq(int irq, void *data) @@ -3200,37 +3177,6 @@ static const struct snd_soc_component_driver soc_cod= ec_dev_wcd938x =3D { .endianness =3D 1, }; =20 -static void wcd938x_dt_parse_micbias_info(struct device *dev, struct wcd93= 8x_priv *wcd) -{ - struct device_node *np =3D dev->of_node; - u32 prop_val =3D 0; - int rc =3D 0; - - rc =3D of_property_read_u32(np, "qcom,micbias1-microvolt", &prop_val); - if (!rc) - wcd->micb1_mv =3D prop_val/1000; - else - dev_info(dev, "%s: Micbias1 DT property not found\n", __func__); - - rc =3D of_property_read_u32(np, "qcom,micbias2-microvolt", &prop_val); - if (!rc) - wcd->micb2_mv =3D prop_val/1000; - else - dev_info(dev, "%s: Micbias2 DT property not found\n", __func__); - - rc =3D of_property_read_u32(np, "qcom,micbias3-microvolt", &prop_val); - if (!rc) - wcd->micb3_mv =3D prop_val/1000; - else - dev_info(dev, "%s: Micbias3 DT property not found\n", __func__); - - rc =3D of_property_read_u32(np, "qcom,micbias4-microvolt", &prop_val); - if (!rc) - wcd->micb4_mv =3D prop_val/1000; - else - dev_info(dev, "%s: Micbias4 DT property not found\n", __func__); -} - static bool wcd938x_swap_gnd_mic(struct snd_soc_component *component) { struct wcd938x_priv *wcd938x =3D snd_soc_component_get_drvdata(component); @@ -3295,13 +3241,15 @@ static int wcd938x_populate_dt_data(struct wcd938x_= priv *wcd938x, struct device if (ret) return dev_err_probe(dev, ret, "Failed to get and enable supplies\n"); =20 - wcd938x_dt_parse_micbias_info(dev, wcd938x); + ret =3D wcd_dt_parse_micbias_info(&wcd938x->common); + if (ret) + return dev_err_probe(dev, ret, "Failed to get and enable supplies\n"); =20 cfg->mbhc_micbias =3D MIC_BIAS_2; cfg->anc_micbias =3D MIC_BIAS_2; cfg->v_hs_max =3D WCD_MBHC_HS_V_MAX; cfg->num_btn =3D WCD938X_MBHC_MAX_BUTTONS; - cfg->micb_mv =3D wcd938x->micb2_mv; + cfg->micb_mv =3D wcd938x->common.micb_mv[2]; cfg->linein_th =3D 5000; cfg->hs_thr =3D 1700; cfg->hph_thr =3D 50; @@ -3457,11 +3405,7 @@ static int wcd938x_bind(struct device *dev) wcd938x->sdw_priv[AIF1_PB]->slave_irq =3D wcd938x->virq; wcd938x->sdw_priv[AIF1_CAP]->slave_irq =3D wcd938x->virq; =20 - ret =3D wcd938x_set_micbias_data(wcd938x); - if (ret < 0) { - dev_err(dev, "%s: bad micbias pdata\n", __func__); - goto err_remove_rx_link; - } + wcd938x_set_micbias_data(dev, wcd938x); =20 ret =3D snd_soc_register_component(dev, &soc_codec_dev_wcd938x, wcd938x_dais, ARRAY_SIZE(wcd938x_dais)); @@ -3550,6 +3494,8 @@ static int wcd938x_probe(struct platform_device *pdev) =20 dev_set_drvdata(dev, wcd938x); mutex_init(&wcd938x->micb_lock); + wcd938x->common.dev =3D dev; + wcd938x->common.max_bias =3D 4; =20 ret =3D wcd938x_populate_dt_data(wcd938x, dev); if (ret) diff --git a/sound/soc/codecs/wcd939x.c b/sound/soc/codecs/wcd939x.c index 85730ae40c2c..59c920c50c00 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -28,6 +28,7 @@ #include =20 #include "wcd-clsh-v2.h" +#include "wcd-common.h" #include "wcd-mbhc-v2.h" #include "wcd939x.h" =20 @@ -191,6 +192,7 @@ struct wcd939x_priv { struct wcd_mbhc_config mbhc_cfg; struct wcd_mbhc_intr intr_ids; struct wcd_clsh_ctrl *clsh_info; + struct wcd_common common; struct irq_domain *virq; struct regmap_irq_chip_data *irq_chip; struct snd_soc_jack *jack; @@ -201,10 +203,6 @@ struct wcd939x_priv { u32 tx_mode[TX_ADC_MAX]; int variant; struct gpio_desc *reset_gpio; - u32 micb1_mv; - u32 micb2_mv; - u32 micb3_mv; - u32 micb4_mv; int hphr_pdm_wd_int; int hphl_pdm_wd_int; int ear_pdm_wd_int; @@ -1919,17 +1917,6 @@ static void wcd939x_mbhc_micb_ramp_control(struct sn= d_soc_component *component, } } =20 -static int wcd939x_get_micb_vout_ctl_val(u32 micb_mv) -{ - /* min micbias voltage is 1V and maximum is 2.85V */ - if (micb_mv < 1000 || micb_mv > 2850) { - pr_err("%s: unsupported micbias voltage\n", __func__); - return -EINVAL; - } - - return (micb_mv - 1000) / 50; -} - static int wcd939x_mbhc_micb_adjust_voltage(struct snd_soc_component *comp= onent, int req_volt, int micb_num) { @@ -1969,7 +1956,7 @@ static int wcd939x_mbhc_micb_adjust_voltage(struct sn= d_soc_component *component, cur_vout_ctl =3D snd_soc_component_read_field(component, micb_reg, WCD939X_MICB_VOUT_CTL); =20 - req_vout_ctl =3D wcd939x_get_micb_vout_ctl_val(req_volt); + req_vout_ctl =3D wcd_get_micb_vout_ctl_val(component->dev, req_volt); if (req_vout_ctl < 0) { ret =3D req_vout_ctl; goto exit; @@ -2021,10 +2008,10 @@ static int wcd939x_mbhc_micb_ctrl_threshold_mic(str= uct snd_soc_component *compon * voltage needed to detect threshold microphone, then do * not change the micbias, just return. */ - if (wcd939x->micb2_mv >=3D WCD_MBHC_THR_HS_MICB_MV) + if (wcd939x->common.micb_mv[1] >=3D WCD_MBHC_THR_HS_MICB_MV) return 0; =20 - micb_mv =3D req_en ? WCD_MBHC_THR_HS_MICB_MV : wcd939x->micb2_mv; + micb_mv =3D req_en ? WCD_MBHC_THR_HS_MICB_MV : wcd939x->common.micb_mv[1]; =20 return wcd939x_mbhc_micb_adjust_voltage(component, micb_mv, MIC_BIAS_2); } @@ -2895,28 +2882,16 @@ static const struct snd_soc_dapm_route wcd939x_audi= o_map[] =3D { {"EAR", NULL, "EAR PGA"}, }; =20 -static int wcd939x_set_micbias_data(struct wcd939x_priv *wcd939x) +static void wcd939x_set_micbias_data(struct device *dev, struct wcd939x_pr= iv *wcd939x) { - int vout_ctl_1, vout_ctl_2, vout_ctl_3, vout_ctl_4; - - /* set micbias voltage */ - vout_ctl_1 =3D wcd939x_get_micb_vout_ctl_val(wcd939x->micb1_mv); - vout_ctl_2 =3D wcd939x_get_micb_vout_ctl_val(wcd939x->micb2_mv); - vout_ctl_3 =3D wcd939x_get_micb_vout_ctl_val(wcd939x->micb3_mv); - vout_ctl_4 =3D wcd939x_get_micb_vout_ctl_val(wcd939x->micb4_mv); - if (vout_ctl_1 < 0 || vout_ctl_2 < 0 || vout_ctl_3 < 0 || vout_ctl_4 < 0) - return -EINVAL; - regmap_update_bits(wcd939x->regmap, WCD939X_ANA_MICB1, - WCD939X_MICB_VOUT_CTL, vout_ctl_1); + WCD939X_MICB_VOUT_CTL, wcd939x->common.micb_vout[0]); regmap_update_bits(wcd939x->regmap, WCD939X_ANA_MICB2, - WCD939X_MICB_VOUT_CTL, vout_ctl_2); + WCD939X_MICB_VOUT_CTL, wcd939x->common.micb_vout[1]); regmap_update_bits(wcd939x->regmap, WCD939X_ANA_MICB3, - WCD939X_MICB_VOUT_CTL, vout_ctl_3); + WCD939X_MICB_VOUT_CTL, wcd939x->common.micb_vout[2]); regmap_update_bits(wcd939x->regmap, WCD939X_ANA_MICB4, - WCD939X_MICB_VOUT_CTL, vout_ctl_4); - - return 0; + WCD939X_MICB_VOUT_CTL, wcd939x->common.micb_vout[3]); } =20 static irqreturn_t wcd939x_wd_handle_irq(int irq, void *data) @@ -3186,37 +3161,6 @@ static int wcd939x_typec_mux_set(struct typec_mux_de= v *mux, } #endif /* CONFIG_TYPEC */ =20 -static void wcd939x_dt_parse_micbias_info(struct device *dev, struct wcd93= 9x_priv *wcd) -{ - struct device_node *np =3D dev->of_node; - u32 prop_val =3D 0; - int rc =3D 0; - - rc =3D of_property_read_u32(np, "qcom,micbias1-microvolt", &prop_val); - if (!rc) - wcd->micb1_mv =3D prop_val / 1000; - else - dev_info(dev, "%s: Micbias1 DT property not found\n", __func__); - - rc =3D of_property_read_u32(np, "qcom,micbias2-microvolt", &prop_val); - if (!rc) - wcd->micb2_mv =3D prop_val / 1000; - else - dev_info(dev, "%s: Micbias2 DT property not found\n", __func__); - - rc =3D of_property_read_u32(np, "qcom,micbias3-microvolt", &prop_val); - if (!rc) - wcd->micb3_mv =3D prop_val / 1000; - else - dev_info(dev, "%s: Micbias3 DT property not found\n", __func__); - - rc =3D of_property_read_u32(np, "qcom,micbias4-microvolt", &prop_val); - if (!rc) - wcd->micb4_mv =3D prop_val / 1000; - else - dev_info(dev, "%s: Micbias4 DT property not found\n", __func__); -} - #if IS_ENABLED(CONFIG_TYPEC) static bool wcd939x_swap_gnd_mic(struct snd_soc_component *component) { @@ -3252,13 +3196,15 @@ static int wcd939x_populate_dt_data(struct wcd939x_= priv *wcd939x, struct device if (ret) return dev_err_probe(dev, ret, "Failed to get and enable supplies\n"); =20 - wcd939x_dt_parse_micbias_info(dev, wcd939x); + ret =3D wcd_dt_parse_micbias_info(&wcd939x->common); + if (ret) + return dev_err_probe(dev, ret, "Failed to get micbias\n"); =20 cfg->mbhc_micbias =3D MIC_BIAS_2; cfg->anc_micbias =3D MIC_BIAS_2; cfg->v_hs_max =3D WCD_MBHC_HS_V_MAX; cfg->num_btn =3D WCD939X_MBHC_MAX_BUTTONS; - cfg->micb_mv =3D wcd939x->micb2_mv; + cfg->micb_mv =3D wcd939x->common.micb_mv[1]; cfg->linein_th =3D 5000; cfg->hs_thr =3D 1700; cfg->hph_thr =3D 50; @@ -3444,11 +3390,7 @@ static int wcd939x_bind(struct device *dev) wcd939x->sdw_priv[AIF1_PB]->slave_irq =3D wcd939x->virq; wcd939x->sdw_priv[AIF1_CAP]->slave_irq =3D wcd939x->virq; =20 - ret =3D wcd939x_set_micbias_data(wcd939x); - if (ret < 0) { - dev_err(dev, "%s: bad micbias pdata\n", __func__); - goto err_remove_rx_link; - } + wcd939x_set_micbias_data(dev, wcd939x); =20 /* Check WCD9395 version */ regmap_read(wcd939x->regmap, WCD939X_DIGITAL_CHIP_ID1, &id1); @@ -3613,6 +3555,8 @@ static int wcd939x_probe(struct platform_device *pdev) =20 dev_set_drvdata(dev, wcd939x); mutex_init(&wcd939x->micb_lock); + wcd939x->common.dev =3D dev; + wcd939x->common.max_bias =3D 4; =20 ret =3D wcd939x_populate_dt_data(wcd939x, dev); if (ret) { --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 9F200309F1E for ; Fri, 5 Sep 2025 15:44:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087089; cv=none; b=Y/V3xuNZw600d8YZvMKrBQW6umn+3uHD3UsNxNXuQB536ClipJZmOBEuW363dW5qCzykYrOoSFw38ILmXLvg7hAIpfG4EQCfWzaeCDzNLn0l1Qv/xa3MfxlHFkM1sWlBkvGsn+AUP2xHxhAt73meqC8WUpHlk9bme61vxP6MSZc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087089; c=relaxed/simple; bh=MQs2U7/x/Nh7YK4/KyFeP2f0Q5Ku0GwTfwlYesxR27g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=myN7DZoa05C7R8nLiGCxj75qt4yiZEfbBR3N9F7vyVZXvV6n36pkec5dW7jbsyOWAodPEYNjkOTJcM19ygpMQQReT1l9BmAJU28zGMr0f9D/sPPw6vnXNNkD41e2+8jynC0IkBNY9ah7LgZ8EtfXcDyCJ72My+nJeTo++nsaMDw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=bNCLMgyx; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="bNCLMgyx" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 585DZh7o018533 for ; Fri, 5 Sep 2025 15:44:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=pmkxQz9CST9 MkZTUVQiyP1vROVnsh4cHHXEC/rF9c9I=; b=bNCLMgyxDdgoDRMGUshFXbJ5x/X m0Yn02UrZW0JD6pwVn1DmlQBgCDNvNJCpmaebM8YTnC1wPF3rVBWHmSmei3jODvl PjDFUhVkxFVUJlnkNNK1KRtyJ8dRnoGHuv4VLeVOZ/CAD3PTQk1H0SoN73rguNOG 7XePzahV+s/CWj9ZPSxRROwNFO71Fub+wBlOJ304msZ+wFZQAgLFODQFF7vxX8iy 46GEHSbjxzBgWHr1SndevJA30NSZU6E2rQgi3ei4UhjX6LIuX6+nfhUvKKqiSg6F U+UvYfBIqjVTfkSKVxHF8bPtokZ9nGgeXQGnyc1Tpd0bxI0YWfLfc8Lrglg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48yebuufmy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:46 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4b32fe42b83so38345361cf.0 for ; Fri, 05 Sep 2025 08:44:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087085; x=1757691885; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pmkxQz9CST9MkZTUVQiyP1vROVnsh4cHHXEC/rF9c9I=; b=mFv1eY29vI1BU537AUjpy1meUEP/tp+KVO3HP4Y0feTi4q/gnlpw2YUs/EVykj82Bf EFZvmCsh8u8R0OWOVNrY4k7nMwhBK0Ih4NAbJiGUBa8uWAWgZ9mvRmAj6XYmOCoA3uBI PrLz/KRPAdsZnJbg9INt+/uyLaS3hwrxFcMGwbVAPWu6sT6NgL3A/tal2isEzcLayQAQ Zn99PIROQC2/c6BDPEVudLEA+bKGJVV+uAVtHHayACxz0xK7JPrv1i/ZesSKKUF7YZwk F1GeEkFVUp5ipkkR0p85qPxLizu50QX2RwCuF88WSz3OLBo6eucB7rrAGn161ddMVzJR afsQ== X-Forwarded-Encrypted: i=1; AJvYcCX9Z9EMr4TmCpl7KhCyg1jLuBl5+TOLuviijF+/nxfYbiNNpUTYVLEA1Mqxeme43NYVl9iYuFfmPVetcjs=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8BBhVBi+I1tPn51peNGXZa/9LxeUTiJv39F+iP+RnJNttNRbb bOMUIn5ofUHBN/1IzxDWJRjOJUQtFAQWv5DFElZo19jlOlNibAYYDakSP7gvPkVSQxZNmlTfHoZ JKEsAk49lx/qoEaQe6G2vJFABjHHtyRtJMZng9buS4T/An413wb4liJaDYhLub5zsiiQ= X-Gm-Gg: ASbGncuuX+o0FQOyeg5kqS3kF7f0BP2S9WUj+oHHL6lMSAI9XBqtfxrPHy1CBp4JFBe ip759sJdbYt8cTuLJh5V8ZLaKUbVvTG9p0AFumcbvGpNqATvfJvoKkCHxqtv2DoucfwFOxlZGFW 0cShOjqFgmLuHecBxW0n7n99aV/WkY7ybZJc8XQ/mrIfpET0K5WsN4t7fyGCJess5+2Dqrk6zrV 2SC6JOhd9gGnm+CQv1nLSUId9lDtSxKZTZv41iEiReeIk70mBA9+fB6l3x5QOA1ZuNuqCIxoQvH ydWfrVQfIMncolZmsD0A9PUsNlRqziWp9n3b+saYsNRhRu5eDWQtJw== X-Received: by 2002:a05:622a:1f17:b0:4b5:f27c:8609 with SMTP id d75a77b69052e-4b5f27c8f1fmr21958841cf.39.1757087084280; Fri, 05 Sep 2025 08:44:44 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH8hsfpkVlm8ZrxP6bgwyelwGF6nP3Wdf1ratliIOWQYNhrjGFviQyG4trTRWCOgThLbdNLAA== X-Received: by 2002:a05:622a:1f17:b0:4b5:f27c:8609 with SMTP id d75a77b69052e-4b5f27c8f1fmr21958321cf.39.1757087083645; Fri, 05 Sep 2025 08:44:43 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:43 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 07/12] ASoC: codecs: wcd-common: move WCD_SDW_CH to common Date: Fri, 5 Sep 2025 16:44:25 +0100 Message-ID: <20250905154430.12268-8-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 2yVIkbJZMaC4DrxS5WLv4Fy8oCO4AOI0 X-Authority-Analysis: v=2.4 cv=X+ZSKHTe c=1 sm=1 tr=0 ts=68bb056e cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=OwgFr5RAyVMftm7_PUYA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA0MDE2MyBTYWx0ZWRfX0ql3+p1CUxOX xC14ELKaYm/ImsiQDCE7W5tKZdB6JaafZvywN/B3hoGn556u92ayo+vIss2NRX7+UIb7PxZcGGH Gh8bDhf/JyacKFSmH1do/X4pLZfkUAFdZBSI6g1u4hAkiOCH4p0aZvVcm+HlF932LNC9Duf5wcw acyD4rUI4DM8AxPfhxvxQqmU97WpAzmqXzs7ylp8Dae+8C7Tejn21uqiBiNILwd+DpqQALBO+yH U48qD0lNfUN+YZS/NpsqGiaRCSlDwiWW61deGooUv9/puoipmr68gtecFW3Y2A4okiIs6UFDx7S lZH5VYWXaaPpZrNYf31FHcmjSBK/uu2qrVXhnCmvD2uKc8Vc5sRKnIyP5tPqDtG/vvqJk2UpXD9 sLxMww1o X-Proofpoint-ORIG-GUID: 2yVIkbJZMaC4DrxS5WLv4Fy8oCO4AOI0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 malwarescore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509040163 Content-Type: text/plain; charset="utf-8" sdw_ch_info and WCD_SDW_CH macro is duplicated across wcd937x, wcd938x, wcd939x soundwire codec drivers. Move this to wcd common driver to remove this code duplication. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/wcd-common.h | 11 +++++++++++ sound/soc/codecs/wcd937x-sdw.c | 4 ++-- sound/soc/codecs/wcd937x.h | 16 ++-------------- sound/soc/codecs/wcd938x-sdw.c | 5 +++-- sound/soc/codecs/wcd938x.c | 2 +- sound/soc/codecs/wcd938x.h | 13 +------------ sound/soc/codecs/wcd939x-sdw.c | 5 +++-- sound/soc/codecs/wcd939x.c | 2 +- sound/soc/codecs/wcd939x.h | 13 +------------ 9 files changed, 25 insertions(+), 46 deletions(-) diff --git a/sound/soc/codecs/wcd-common.h b/sound/soc/codecs/wcd-common.h index 42d84e42d40f..ca602718c9ba 100644 --- a/sound/soc/codecs/wcd-common.h +++ b/sound/soc/codecs/wcd-common.h @@ -14,6 +14,17 @@ enum sdw_slave_status; =20 #define WCD_MAX_MICBIAS 4 =20 +struct wcd_sdw_ch_info { + int port_num; + unsigned int ch_mask; +}; + +#define WCD_SDW_CH(id, pn, cmask) \ + [id] =3D { \ + .port_num =3D pn, \ + .ch_mask =3D cmask, \ + } + struct wcd_common { struct device *dev; int max_bias; diff --git a/sound/soc/codecs/wcd937x-sdw.c b/sound/soc/codecs/wcd937x-sdw.c index e7cc699bd8bc..8f2819163527 100644 --- a/sound/soc/codecs/wcd937x-sdw.c +++ b/sound/soc/codecs/wcd937x-sdw.c @@ -19,7 +19,7 @@ #include #include "wcd937x.h" =20 -static struct wcd937x_sdw_ch_info wcd937x_sdw_rx_ch_info[] =3D { +static struct wcd_sdw_ch_info wcd937x_sdw_rx_ch_info[] =3D { WCD_SDW_CH(WCD937X_HPH_L, WCD937X_HPH_PORT, BIT(0)), WCD_SDW_CH(WCD937X_HPH_R, WCD937X_HPH_PORT, BIT(1)), WCD_SDW_CH(WCD937X_CLSH, WCD937X_CLSH_PORT, BIT(0)), @@ -30,7 +30,7 @@ static struct wcd937x_sdw_ch_info wcd937x_sdw_rx_ch_info[= ] =3D { WCD_SDW_CH(WCD937X_DSD_R, WCD937X_DSD_PORT, BIT(1)), }; =20 -static struct wcd937x_sdw_ch_info wcd937x_sdw_tx_ch_info[] =3D { +static struct wcd_sdw_ch_info wcd937x_sdw_tx_ch_info[] =3D { WCD_SDW_CH(WCD937X_ADC1, WCD937X_ADC_1_PORT, BIT(0)), WCD_SDW_CH(WCD937X_ADC2, WCD937X_ADC_2_3_PORT, BIT(0)), WCD_SDW_CH(WCD937X_ADC3, WCD937X_ADC_2_3_PORT, BIT(0)), diff --git a/sound/soc/codecs/wcd937x.h b/sound/soc/codecs/wcd937x.h index 0f96b7108a7e..3d0ba3cc0ee6 100644 --- a/sound/soc/codecs/wcd937x.h +++ b/sound/soc/codecs/wcd937x.h @@ -7,6 +7,7 @@ =20 #include #include +#include "wcd-common.h" =20 #define WCD937X_BASE_ADDRESS 0x3000 #define WCD937X_ANA_BIAS 0x3001 @@ -507,26 +508,13 @@ enum wcd937x_rx_sdw_ports { WCD937X_MAX_SWR_PORTS =3D WCD937X_DSD_PORT, }; =20 -struct wcd937x_sdw_ch_info { - int port_num; - unsigned int ch_mask; - unsigned int master_ch_mask; -}; - -#define WCD_SDW_CH(id, pn, cmask) \ - [id] =3D { \ - .port_num =3D pn, \ - .ch_mask =3D cmask, \ - .master_ch_mask =3D cmask, \ - } - struct wcd937x_priv; struct wcd937x_sdw_priv { struct sdw_slave *sdev; struct sdw_stream_config sconfig; struct sdw_stream_runtime *sruntime; struct sdw_port_config port_config[WCD937X_MAX_SWR_PORTS]; - struct wcd937x_sdw_ch_info *ch_info; + struct wcd_sdw_ch_info *ch_info; bool port_enable[WCD937X_MAX_SWR_CH_IDS]; unsigned int master_channel_map[SDW_MAX_PORTS]; int active_ports; diff --git a/sound/soc/codecs/wcd938x-sdw.c b/sound/soc/codecs/wcd938x-sdw.c index 8bcd8396f375..1dc13b6fabfa 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -18,10 +18,11 @@ #include #include #include "wcd938x.h" +#include "wcd-common.h" =20 #define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m)) =20 -static const struct wcd938x_sdw_ch_info wcd938x_sdw_rx_ch_info[] =3D { +static const struct wcd_sdw_ch_info wcd938x_sdw_rx_ch_info[] =3D { WCD_SDW_CH(WCD938X_HPH_L, WCD938X_HPH_PORT, BIT(0)), WCD_SDW_CH(WCD938X_HPH_R, WCD938X_HPH_PORT, BIT(1)), WCD_SDW_CH(WCD938X_CLSH, WCD938X_CLSH_PORT, BIT(0)), @@ -32,7 +33,7 @@ static const struct wcd938x_sdw_ch_info wcd938x_sdw_rx_ch= _info[] =3D { WCD_SDW_CH(WCD938X_DSD_R, WCD938X_DSD_PORT, BIT(1)), }; =20 -static const struct wcd938x_sdw_ch_info wcd938x_sdw_tx_ch_info[] =3D { +static const struct wcd_sdw_ch_info wcd938x_sdw_tx_ch_info[] =3D { WCD_SDW_CH(WCD938X_ADC1, WCD938X_ADC_1_2_PORT, BIT(0)), WCD_SDW_CH(WCD938X_ADC2, WCD938X_ADC_1_2_PORT, BIT(1)), WCD_SDW_CH(WCD938X_ADC3, WCD938X_ADC_3_4_PORT, BIT(0)), diff --git a/sound/soc/codecs/wcd938x.c b/sound/soc/codecs/wcd938x.c index c8b6e543986d..e495f98972f1 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -394,7 +394,7 @@ static int wcd938x_io_init(struct wcd938x_priv *wcd938x) =20 } =20 -static int wcd938x_sdw_connect_port(const struct wcd938x_sdw_ch_info *ch_i= nfo, +static int wcd938x_sdw_connect_port(const struct wcd_sdw_ch_info *ch_info, struct sdw_port_config *port_config, u8 enable) { diff --git a/sound/soc/codecs/wcd938x.h b/sound/soc/codecs/wcd938x.h index 54ee56b7fbd6..c18610466d7d 100644 --- a/sound/soc/codecs/wcd938x.h +++ b/sound/soc/codecs/wcd938x.h @@ -587,17 +587,6 @@ =20 #define WCD938X_MAX_SWR_CH_IDS 15 =20 -struct wcd938x_sdw_ch_info { - int port_num; - unsigned int ch_mask; -}; - -#define WCD_SDW_CH(id, pn, cmask) \ - [id] =3D { \ - .port_num =3D pn, \ - .ch_mask =3D cmask, \ - } - enum wcd938x_tx_sdw_ports { WCD938X_ADC_1_2_PORT =3D 1, WCD938X_ADC_3_4_PORT, @@ -649,7 +638,7 @@ struct wcd938x_sdw_priv { struct sdw_stream_config sconfig; struct sdw_stream_runtime *sruntime; struct sdw_port_config port_config[WCD938X_MAX_SWR_PORTS]; - const struct wcd938x_sdw_ch_info *ch_info; + const struct wcd_sdw_ch_info *ch_info; bool port_enable[WCD938X_MAX_SWR_CH_IDS]; int active_ports; bool is_tx; diff --git a/sound/soc/codecs/wcd939x-sdw.c b/sound/soc/codecs/wcd939x-sdw.c index 477d6cf27d32..97a829e3ce4f 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -20,10 +20,11 @@ #include #include #include "wcd939x.h" +#include "wcd-common.h" =20 #define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m)) =20 -static const struct wcd939x_sdw_ch_info wcd939x_sdw_rx_ch_info[] =3D { +static const struct wcd_sdw_ch_info wcd939x_sdw_rx_ch_info[] =3D { WCD_SDW_CH(WCD939X_HPH_L, WCD939X_HPH_PORT, BIT(0)), WCD_SDW_CH(WCD939X_HPH_R, WCD939X_HPH_PORT, BIT(1)), WCD_SDW_CH(WCD939X_CLSH, WCD939X_CLSH_PORT, BIT(0)), @@ -36,7 +37,7 @@ static const struct wcd939x_sdw_ch_info wcd939x_sdw_rx_ch= _info[] =3D { WCD_SDW_CH(WCD939X_HIFI_PCM_R, WCD939X_HIFI_PCM_PORT, BIT(1)), }; =20 -static const struct wcd939x_sdw_ch_info wcd939x_sdw_tx_ch_info[] =3D { +static const struct wcd_sdw_ch_info wcd939x_sdw_tx_ch_info[] =3D { WCD_SDW_CH(WCD939X_ADC1, WCD939X_ADC_1_4_PORT, BIT(0)), WCD_SDW_CH(WCD939X_ADC2, WCD939X_ADC_1_4_PORT, BIT(1)), WCD_SDW_CH(WCD939X_ADC3, WCD939X_ADC_1_4_PORT, BIT(2)), diff --git a/sound/soc/codecs/wcd939x.c b/sound/soc/codecs/wcd939x.c index 59c920c50c00..a414cd99b946 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -413,7 +413,7 @@ static int wcd939x_io_init(struct snd_soc_component *co= mponent) return 0; } =20 -static int wcd939x_sdw_connect_port(const struct wcd939x_sdw_ch_info *ch_i= nfo, +static int wcd939x_sdw_connect_port(const struct wcd_sdw_ch_info *ch_info, struct sdw_port_config *port_config, u8 enable) { diff --git a/sound/soc/codecs/wcd939x.h b/sound/soc/codecs/wcd939x.h index e70445b1a4bc..ca6353222ea0 100644 --- a/sound/soc/codecs/wcd939x.h +++ b/sound/soc/codecs/wcd939x.h @@ -844,17 +844,6 @@ =20 #define WCD939X_MAX_SWR_CH_IDS (15) =20 -struct wcd939x_sdw_ch_info { - int port_num; - unsigned int ch_mask; -}; - -#define WCD_SDW_CH(id, pn, cmask) \ - [id] =3D { \ - .port_num =3D pn, \ - .ch_mask =3D cmask, \ - } - enum wcd939x_tx_sdw_ports { WCD939X_ADC_1_4_PORT =3D 1, WCD939X_ADC_DMIC_1_2_PORT, @@ -909,7 +898,7 @@ struct wcd939x_sdw_priv { struct sdw_stream_config sconfig; struct sdw_stream_runtime *sruntime; struct sdw_port_config port_config[WCD939X_MAX_SWR_PORTS]; - const struct wcd939x_sdw_ch_info *ch_info; + const struct wcd_sdw_ch_info *ch_info; bool port_enable[WCD939X_MAX_SWR_CH_IDS]; int active_ports; bool is_tx; --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 78E46313267 for ; Fri, 5 Sep 2025 15:44:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087090; cv=none; b=g6KBX1iYzOU4+8/7xO+U4Mw5M3CSjg7aZnnBn2v00S2856Oe4A2/sLYAMkxsF3AsAslrCAWIPkqcnTaFxiMA5MDwuH0gSC9nOHR0JxY24wK7SdInNrGEBll8L70i5aaNfh0ThxDeeEKYULuiW5tRBF3pvVSS4bbntTDTWh8yVTE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087090; c=relaxed/simple; bh=+lRquaM51dxX8JXB+bAfJaVIJHFdA0SHDaYrJorpboE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uPxe/ILeFr4azpdGCpj6uP/g37RZuqAeSiOWg2tSNIzS4BMn1ku53MlnYVIocASB0BKiVbceKYT4rDrwGg2+fG+a0+3WoDDGJsSLvCRLSG7HoeGH+UIz3m4nMmwJgZBYLXFGEbTxgwT7eek9k+Cax2tp91L5TgN+4EJrT4fG8Co= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=OIrXD5DU; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="OIrXD5DU" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5857LlQb008288 for ; Fri, 5 Sep 2025 15:44:47 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=cI7DDVHRTaw wq/wL1fsHHzj2jmP533uEbcYvxWbbLHU=; b=OIrXD5DUwZO7axT8T6m9eIAnKNh 2/hgi7GAdPwnlGRzKqKwXwUHtdbVu30ICGt+8r7vj1QQE9zo/T+aKpkrzdDUSMyP tljD60+0psdfBKGXuMg28d55Q1sJO5/Mr6JwERAhG5Ak49ePhPplr1f23wbjW7U7 hApyc7OCI1P65XXWpC0NxlMks1x/T60jWXsZ+McJsErY68Wga4sK0sPdlONy7rh3 H0eJ0OawHJQ1GU6cbrdgtx7QqZb30T2LgFXLvOt90wWgIv9NZF4RAK1X3132xzSn XyGBQHD7w20fi7PdUrS8uL4SYwUDkHtcufBxNnaBWRyYzDK1+R/5dQTl7fA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48urmjujbq-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:47 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4b30cb3c705so68514011cf.3 for ; Fri, 05 Sep 2025 08:44:47 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087086; x=1757691886; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cI7DDVHRTawwq/wL1fsHHzj2jmP533uEbcYvxWbbLHU=; b=YV3V3/NwVMpbSpATm92QLpUAR4MMmAsbOStfocFBpYYTOqSgv0MZu5mxg139gGB7vq ichtUdrGSi+HAcvGJLQyNoX95MEOS67pYcVYsnr5JPoAuhp6rwJP9PV1ZdxjL+K09ZP0 y1lfWVBOhYeOl4hIeull90GYlKd/NOwM+GTyRa/UutqqDMtbXn9MpOo1GfOXtY6yRVwV 6AiGDTZHi2Z2LTlvtWvzWUBFfDaankirmAEYJyxibCQCxfTk5ZMF1xbaKBAZvEpTxgKB WI9eCq8rUD49SWE3aIy/lVU/bhrLSxqn4RZALrIus96i6tBkwonQFX0fCm8LxOHDa6AD EYaA== X-Forwarded-Encrypted: i=1; AJvYcCVcXRDT+SRP5K64mGc7PI9EvcJ9nPH32h+jBK1Dmm+i15bhGK7RD0Rq/5gf8apPd0BPlnylsSmTZwlhcJM=@vger.kernel.org X-Gm-Message-State: AOJu0YzuG/IOURKbFVouvEJCsPqXgrrtaXXru2IIWkA/HCl/iDFxosEw Qx2n7JhOQBMIitAjqs+PLAbzWV7Kb7ijI7vIf3fkFqy+ZD2v+JdMug6/qG444DHXL0ucMsNd9xi ZvRz5zacMlop/TVLfml/UcHFQZIllZgIgrX7uG5zGXXAOfwgM2aId8C4yRrW4FtVLIs4= X-Gm-Gg: ASbGncvLLqmdhRiBUN9rWJc4nDwMSo9NEpOpKpoa7yuML3xtCsCTlMfzUYrQS4APO79 N9XUALmo7JvZ4Kq3EFxKHOkVLxWiwSXRRLV/weaFg4s0+iDbWsb8npERkjgi0w4oScSEyBPm8KZ D6YECPSCGwGVLRz74bf7fMne5l5sm/4Xax/37biu24Q4l/XrAm2zXbTk7Zw4vHskojeoSvXjCBP qMOUqESSVceXngKoXoIgEZXCe9c/n2+Vfir/Ugrhmj13wOP1YlXRCvMv2I//g6u/qzQAMilfsOg nawcKysmOwLK38A0ARpu2i2IyAVYMdDNTEaKzgIehCayqQPxuGPtnw== X-Received: by 2002:ac8:570f:0:b0:4b5:ed9d:7bcd with SMTP id d75a77b69052e-4b5ed9d7e9dmr30935921cf.16.1757087085640; Fri, 05 Sep 2025 08:44:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF4WvMUoDvxSAN603DuIaOljtHSUjPhwERnfhL6Um8GJkFedqQolzxDTxosGub2VKLwajiEsg== X-Received: by 2002:ac8:570f:0:b0:4b5:ed9d:7bcd with SMTP id d75a77b69052e-4b5ed9d7e9dmr30935391cf.16.1757087084920; Fri, 05 Sep 2025 08:44:44 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:44 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 08/12] ASoC: codecs: wcd-common: move component ops to common Date: Fri, 5 Sep 2025 16:44:26 +0100 Message-ID: <20250905154430.12268-9-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=OemYDgTY c=1 sm=1 tr=0 ts=68bb056f cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=eQjB__F64b99YC4tFhYA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-GUID: S8v7oQRxmj0kVS954fByqOk5AwuzafOY X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAyNCBTYWx0ZWRfX3dL5NePZrOta qis+Ld4v3HmM41YxI6deicNjcV5+LFAIkVzfUVES4uxVMwUt6kgGC50Eylqts+SZSd3JJMUDHRs tkWFBcscfyJ0rYLrKt7wYDTfGpf6WIlw/NJUoL7fYmA2ldNCbZp1wzQ9hFGgVB7nslUJdCpDR0g aN5VAu/8ldv2WKSJ/RALkZ4CYGxOn7GdVk1YFO0ZpZ8rhisNo86FDZkhh9ECVfvcNdxFddn40Xf W2R3pMeUjiWJkqRcNz60vwONnZ4nrnSAMFpnhp2TtRzTfjWoy1TrdqWWCV5fh2DXdyKuZaxaDZs WwreE9gUmzcH73nC9XAutPf/NjrRaph51crXghTsGI6Yz8BPh3bP4fuEjxANWT2xRENACfk7wyZ V78kQezA X-Proofpoint-ORIG-GUID: S8v7oQRxmj0kVS954fByqOk5AwuzafOY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 spamscore=0 bulkscore=0 priorityscore=1501 adultscore=0 clxscore=1015 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300024 Content-Type: text/plain; charset="utf-8" component_ops for wcd97x, wcd938x, wcd939x soundwire codecs are exactly identlical, move them to common driver to remove this duplicate code. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/wcd-common.c | 27 +++++++++++++++++++++++++++ sound/soc/codecs/wcd-common.h | 1 + sound/soc/codecs/wcd937x-sdw.c | 29 ++--------------------------- sound/soc/codecs/wcd938x-sdw.c | 20 ++------------------ sound/soc/codecs/wcd939x-sdw.c | 29 ++--------------------------- 5 files changed, 34 insertions(+), 72 deletions(-) diff --git a/sound/soc/codecs/wcd-common.c b/sound/soc/codecs/wcd-common.c index 25c0a48ff858..585d3e036900 100644 --- a/sound/soc/codecs/wcd-common.c +++ b/sound/soc/codecs/wcd-common.c @@ -7,6 +7,8 @@ #include #include #include +#include +#include =20 #include "wcd-common.h" =20 @@ -66,5 +68,30 @@ int wcd_dt_parse_micbias_info(struct wcd_common *common) return 0; } EXPORT_SYMBOL_GPL(wcd_dt_parse_micbias_info); + +static int wcd_sdw_component_bind(struct device *dev, struct device *maste= r, void *data) +{ + pm_runtime_set_autosuspend_delay(dev, 3000); + pm_runtime_use_autosuspend(dev); + pm_runtime_mark_last_busy(dev); + pm_runtime_set_active(dev); + pm_runtime_enable(dev); + + return 0; +} + +static void wcd_sdw_component_unbind(struct device *dev, struct device *ma= ster, void *data) +{ + pm_runtime_disable(dev); + pm_runtime_set_suspended(dev); + pm_runtime_dont_use_autosuspend(dev); +} + +const struct component_ops wcd_sdw_component_ops =3D { + .bind =3D wcd_sdw_component_bind, + .unbind =3D wcd_sdw_component_unbind, +}; +EXPORT_SYMBOL_GPL(wcd_sdw_component_ops); + MODULE_DESCRIPTION("Common Qualcomm WCD Codec helpers driver"); MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/wcd-common.h b/sound/soc/codecs/wcd-common.h index ca602718c9ba..85e5818b9b0c 100644 --- a/sound/soc/codecs/wcd-common.h +++ b/sound/soc/codecs/wcd-common.h @@ -32,6 +32,7 @@ struct wcd_common { u32 micb_vout[WCD_MAX_MICBIAS]; }; =20 +extern const struct component_ops wcd_sdw_component_ops; int wcd_get_micb_vout_ctl_val(struct device *dev, u32 micb_mv); int wcd_dt_parse_micbias_info(struct wcd_common *common); =20 diff --git a/sound/soc/codecs/wcd937x-sdw.c b/sound/soc/codecs/wcd937x-sdw.c index 8f2819163527..59c353cafd31 100644 --- a/sound/soc/codecs/wcd937x-sdw.c +++ b/sound/soc/codecs/wcd937x-sdw.c @@ -983,31 +983,6 @@ static const struct sdw_slave_ops wcd9370_slave_ops = =3D { .interrupt_callback =3D wcd9370_interrupt_callback, }; =20 -static int wcd937x_sdw_component_bind(struct device *dev, - struct device *master, void *data) -{ - pm_runtime_set_autosuspend_delay(dev, 3000); - pm_runtime_use_autosuspend(dev); - pm_runtime_mark_last_busy(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); - - return 0; -} - -static void wcd937x_sdw_component_unbind(struct device *dev, - struct device *master, void *data) -{ - pm_runtime_disable(dev); - pm_runtime_set_suspended(dev); - pm_runtime_dont_use_autosuspend(dev); -} - -static const struct component_ops wcd937x_sdw_component_ops =3D { - .bind =3D wcd937x_sdw_component_bind, - .unbind =3D wcd937x_sdw_component_unbind, -}; - static int wcd9370_probe(struct sdw_slave *pdev, const struct sdw_device_id *id) { @@ -1093,7 +1068,7 @@ static int wcd9370_probe(struct sdw_slave *pdev, } =20 =20 - ret =3D component_add(dev, &wcd937x_sdw_component_ops); + ret =3D component_add(dev, &wcd_sdw_component_ops); if (ret) return ret; =20 @@ -1107,7 +1082,7 @@ static int wcd9370_remove(struct sdw_slave *pdev) { struct device *dev =3D &pdev->dev; =20 - component_del(dev, &wcd937x_sdw_component_ops); + component_del(dev, &wcd_sdw_component_ops); =20 return 0; } diff --git a/sound/soc/codecs/wcd938x-sdw.c b/sound/soc/codecs/wcd938x-sdw.c index 1dc13b6fabfa..92714aef09d5 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -1182,22 +1182,6 @@ static const struct sdw_slave_ops wcd9380_slave_ops = =3D { .bus_config =3D wcd9380_bus_config, }; =20 -static int wcd938x_sdw_component_bind(struct device *dev, - struct device *master, void *data) -{ - return 0; -} - -static void wcd938x_sdw_component_unbind(struct device *dev, - struct device *master, void *data) -{ -} - -static const struct component_ops wcd938x_sdw_component_ops =3D { - .bind =3D wcd938x_sdw_component_bind, - .unbind =3D wcd938x_sdw_component_unbind, -}; - static int wcd9380_probe(struct sdw_slave *pdev, const struct sdw_device_id *id) { @@ -1262,7 +1246,7 @@ static int wcd9380_probe(struct sdw_slave *pdev, pm_runtime_set_active(dev); pm_runtime_enable(dev); =20 - ret =3D component_add(dev, &wcd938x_sdw_component_ops); + ret =3D component_add(dev, &wcd_sdw_component_ops); if (ret) goto err_disable_rpm; =20 @@ -1280,7 +1264,7 @@ static int wcd9380_remove(struct sdw_slave *pdev) { struct device *dev =3D &pdev->dev; =20 - component_del(dev, &wcd938x_sdw_component_ops); + component_del(dev, &wcd_sdw_component_ops); =20 pm_runtime_disable(dev); pm_runtime_set_suspended(dev); diff --git a/sound/soc/codecs/wcd939x-sdw.c b/sound/soc/codecs/wcd939x-sdw.c index 97a829e3ce4f..6aecad2a28aa 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -1378,31 +1378,6 @@ static const struct sdw_slave_ops wcd9390_slave_ops = =3D { .bus_config =3D wcd9390_bus_config, }; =20 -static int wcd939x_sdw_component_bind(struct device *dev, struct device *m= aster, - void *data) -{ - pm_runtime_set_autosuspend_delay(dev, 3000); - pm_runtime_use_autosuspend(dev); - pm_runtime_mark_last_busy(dev); - pm_runtime_set_active(dev); - pm_runtime_enable(dev); - - return 0; -} - -static void wcd939x_sdw_component_unbind(struct device *dev, - struct device *master, void *data) -{ - pm_runtime_disable(dev); - pm_runtime_set_suspended(dev); - pm_runtime_dont_use_autosuspend(dev); -} - -static const struct component_ops wcd939x_sdw_component_ops =3D { - .bind =3D wcd939x_sdw_component_bind, - .unbind =3D wcd939x_sdw_component_unbind, -}; - static int wcd9390_probe(struct sdw_slave *pdev, const struct sdw_device_i= d *id) { struct device *dev =3D &pdev->dev; @@ -1466,7 +1441,7 @@ static int wcd9390_probe(struct sdw_slave *pdev, cons= t struct sdw_device_id *id) regcache_cache_only(wcd->regmap, true); } =20 - ret =3D component_add(dev, &wcd939x_sdw_component_ops); + ret =3D component_add(dev, &wcd_sdw_component_ops); if (ret) return ret; =20 @@ -1481,7 +1456,7 @@ static int wcd9390_remove(struct sdw_slave *pdev) struct device *dev =3D &pdev->dev; struct wcd939x_sdw_priv *wcd =3D dev_get_drvdata(dev); =20 - component_del(dev, &wcd939x_sdw_component_ops); + component_del(dev, &wcd_sdw_component_ops); =20 if (wcd->regmap) regmap_exit(wcd->regmap); --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 BF5A731328E for ; Fri, 5 Sep 2025 15:44:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087092; cv=none; b=sH7ic+HKtbK/EF93Ym4MnRuwYuqlq60jAkKV7wdOQxH1xOhtaELuUq2MdgGX7CbApO54rYMOf06tvLj9yCmhn/34+D3DZMbkUiUFtJ1zXFrp9Df8krV8khPBgewgtpae4BBgunjS4yqunTKP3NnWscVDmnzPjVmcdQEmvOMti9c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087092; c=relaxed/simple; bh=akR3Yzvusad4i+UCHWyqsSQvBIYsdFkmvXNaMfYcDRs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D9/F2+8PgW/ihWHiOGyIzFrHaqNc+f0XhYtdNjE5vb1/nkpjQ0cR1n81+Gik1Tg2XF5THrLTwy9a+hgRdcjzyfitkXnFbzC/VA+w8OyXpcor9BFK3PKz0KUekB0Bl3YSDmiKN2AP/UGWOM4xiwWl/g5eQPht/JSavAHIjtRieKk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=hfH3DnsX; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="hfH3DnsX" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 585D8H5j018660 for ; Fri, 5 Sep 2025 15:44:50 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=lZRvyA2vNm6 fxL6Jok3NTa76zr2CFM+a5QQAwIqtQn0=; b=hfH3DnsXfaYQYAQaxk3qaca9ABp YyqyLU2Bx6rQwCqlMYz2UejRjwX7TKcKbnDBdVZZg01VhbLY/UOVcQKZxZIcBqUs 6BXzvgQjLKRl09J2pw7wifQBYRTqWdX8as1bh01AL12BZWLrOO5hBhfKQSc9nZA+ hFPgoSXeP4X9zVJSUgFz8/63pq9z//buhoLTnHT88FJ86AFJ4k1KTVU/fB+A7vZJ oZo79sU9b1PD4FEw7cEfpWs79jmAcRqwaQHOlLTpraWeXWdWCPj0kor7MMzKvN8B iz7xRbOb+tbV7SEKkvRgIrAjwYRYGrcyMPiAntGXQPzb+8aPQAqZfa4y4bA== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48yebuufnc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:49 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4b5e91fb101so33984751cf.0 for ; Fri, 05 Sep 2025 08:44:49 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087089; x=1757691889; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lZRvyA2vNm6fxL6Jok3NTa76zr2CFM+a5QQAwIqtQn0=; b=aHTnL6+0UvcPEZ7eF+ZpVFT1yB8DXptyY/UlEiVCB+62RRuRsHcNuOMHhYMWCTqKYl 9sFTIjfoT2OC7EoL5PODkOiHWyxVXutSLUG/fpgMNY8QOMDOaEqnVhv7vIJgMLurfXQQ I/FteHcsYD78zsDClUZ/vctmIPPJLi/1eMD6AZrZ42Z6D1Vj5bQLOwLgyDg0qyxH7Pp1 jE2dObydIvFqSYySmiuRPJFU+DP/kd6DJqqoM10haOO7u198Q/gJDuasJIx6i/dipWN+ 2ODodtIhzbneGBzusezIvYbbJYCrJS5zRMagC+BPoISJsoADvnh707UTL4rkKHV4ufWf IC5Q== X-Forwarded-Encrypted: i=1; AJvYcCXtYzeczxPywiwd0ZeKi/85eNDmWz4E7Kr2HQ5xHc8QZ+6fvwuSezXNxlmvr8KvIMueO3JqxT5GUlB8qko=@vger.kernel.org X-Gm-Message-State: AOJu0Yx9VXoQPXARLZZyvGOXqGParhbUlEJW7RR1LL6RdPNM6og1SBV8 fCLX0DhCcFcjA6tm7fXm3QjwW/4RlvPtnkY93ScOAFKrBT7E3ERElSZuOTu1/oCngcksMnQfqAC e+jBgpATR6GJDn0icWeBnWP3farABUZgMWaY7nomu5Q8pJiH+r8pT1BTuJWh4/s1q24E= X-Gm-Gg: ASbGncvJS5x6nue1ROPDBXs+x5DXMTXUYwQRB+dtq05V1Zen81ltcY71Ed8NuidVAeI ypSJZ0Qwhh8iYyM2qenn+8vNu37ILYmGZpIDJiy9IBUD+gpDfdXuCd6FL3TeEvzsF5CuNqhKIOs hg5umPgONkzJ6NNUBJoH6+BLjiZxHefzDDhFiP3722nl8YuVAFaX6bLmEAGEch75jEzu9RUr5Q7 9KpUhWRN5MGw879MxgSy7yBj8oqkN+QHorsVO9QM+8lqTClrS4u5gf34X+EBupXvF9ESZIM7ZwP dqYOkplQ2bab59W+nGFnkwF+Ks/71kh0aqdcE/f/NPVwYEruldDU9g== X-Received: by 2002:a05:622a:a953:10b0:4b4:91f8:3b13 with SMTP id d75a77b69052e-4b491f83e49mr109615631cf.63.1757087088726; Fri, 05 Sep 2025 08:44:48 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHSG0XGNMp/AQ4ikUx9DdF4h05Yh44/Dzm6gF3o/VyuLO/Ifik/KWlx9cIobfmm9FA2GXcPwQ== X-Received: by 2002:a05:622a:a953:10b0:4b4:91f8:3b13 with SMTP id d75a77b69052e-4b491f83e49mr109615291cf.63.1757087088181; Fri, 05 Sep 2025 08:44:48 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:45 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 09/12] ASoC: codecs: wcd939x: get regmap directly Date: Fri, 5 Sep 2025 16:44:27 +0100 Message-ID: <20250905154430.12268-10-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: Fc99BvvlXXs_4cVuwIhNBu874WF9U3jL X-Authority-Analysis: v=2.4 cv=X+ZSKHTe c=1 sm=1 tr=0 ts=68bb0571 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=jWMDT5uzmWzhJut3sAYA:9 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTA0MDE2MyBTYWx0ZWRfX188n1WShW1LO Y9qebZivPbxYSTGul6yX7jbUd1MldPSQCL1fKiVJ08iwNvicTr/nCk0YJ/jgyBgb8Ln63d2/Hph CxOrXlOjwfiMyXfKGb78w+0DfOZSvPMCOl9fKlNi1kPYY/+w58LZZWHKzNnDlBOgN5UwgwDlRyp afSxYudMn8IaYoDFdDtEzGKTwqq9qbApoN5o9r/Xmeb4SCWOfuZNXJAgKWlzH+/073K6nKfraDP c2UjEIM58POqgR+o4fXW0t/I54IPL9VlnStuqZuLqV1Y4pHtmKyoFMZusLnkEOaChkJziWaWlIG Gm2MnLJqHWQofFvrFKflqbOu1WmALbK1eTtaq8dCyqpgACHf1mMYkVGlUxf59ShoICq8GPnSvhz gXjXhO3A X-Proofpoint-ORIG-GUID: Fc99BvvlXXs_4cVuwIhNBu874WF9U3jL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 clxscore=1015 impostorscore=0 phishscore=0 malwarescore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2509040163 Content-Type: text/plain; charset="utf-8" for some reason we ended up with a boiler plate for dev_get_regmap in wcd939x codec and started exporting a symbol for this. Remove this redundant wrapper and direclty get regmap. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/wcd939x-sdw.c | 9 --------- sound/soc/codecs/wcd939x.c | 6 +++--- sound/soc/codecs/wcd939x.h | 6 ------ 3 files changed, 3 insertions(+), 18 deletions(-) diff --git a/sound/soc/codecs/wcd939x-sdw.c b/sound/soc/codecs/wcd939x-sdw.c index 6aecad2a28aa..38da706d80be 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -187,15 +187,6 @@ int wcd939x_sdw_set_sdw_stream(struct wcd939x_sdw_priv= *wcd, } EXPORT_SYMBOL_GPL(wcd939x_sdw_set_sdw_stream); =20 -struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd) -{ - if (wcd->regmap) - return wcd->regmap; - - return ERR_PTR(-EINVAL); -} -EXPORT_SYMBOL_GPL(wcd939x_swr_get_regmap); - static int wcd9390_update_status(struct sdw_slave *slave, enum sdw_slave_status status) { diff --git a/sound/soc/codecs/wcd939x.c b/sound/soc/codecs/wcd939x.c index a414cd99b946..e74e6f013131 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -3374,10 +3374,10 @@ static int wcd939x_bind(struct device *dev) } =20 /* Get regmap from TX SoundWire device */ - wcd939x->regmap =3D wcd939x_swr_get_regmap(wcd939x->sdw_priv[AIF1_CAP]); - if (IS_ERR(wcd939x->regmap)) { + wcd939x->regmap =3D wcd939x->sdw_priv[AIF1_CAP]->regmap; + if (!wcd939x->regmap) { dev_err(dev, "could not get TX device regmap\n"); - ret =3D PTR_ERR(wcd939x->regmap); + ret =3D -ENODEV; goto err_remove_rx_link; } =20 diff --git a/sound/soc/codecs/wcd939x.h b/sound/soc/codecs/wcd939x.h index ca6353222ea0..6bd2366587a8 100644 --- a/sound/soc/codecs/wcd939x.h +++ b/sound/soc/codecs/wcd939x.h @@ -918,8 +918,6 @@ int wcd939x_sdw_hw_params(struct wcd939x_sdw_priv *wcd, struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai); - -struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd); #else =20 static inline int wcd939x_sdw_free(struct wcd939x_sdw_priv *wcd, @@ -944,10 +942,6 @@ static inline int wcd939x_sdw_hw_params(struct wcd939x= _sdw_priv *wcd, return -EOPNOTSUPP; } =20 -struct regmap *wcd939x_swr_get_regmap(struct wcd939x_sdw_priv *wcd) -{ - return PTR_ERR(-EINVAL); -} #endif /* CONFIG_SND_SOC_WCD939X_SDW */ =20 #endif /* __WCD939X_H__ */ --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 B2AD1313293 for ; Fri, 5 Sep 2025 15:44:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087094; cv=none; b=f4FEbPq7SkRpvP/rHGmum7eY+MSj9ko9u6l2+8P7WKgQ03UNCbPAaCDtZ4Md5eM2d1GIUNkU+9kcM+Qy57G8oNnuTyNbDxqI/aLVu6IHjzBBERLluUL+fPylUjWiVwFKTYdxHiE4eQwLGnAl/NpV1O9l4Nj/NsZrt7qGdib7pRs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087094; c=relaxed/simple; bh=PPCnT4+/UjE7beMeYgyhQF55hZMGq11H4hwr+tBfo2M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SXLy8zpEM3rQYGvz8uzCKUb/g7jrPUA7J2nYsF/dmeoGX9ep/Dz66CQgwdpijCeLdv9o/1Xm8LPokCXBWZLPIVlmTNri1D0KpmxX6cHsGchVOP0pjKPtRUQ+xowwG8ch/iyzcZvf8CfkTLEmuRFQYJ/+KM2CVo5veBtQBAeprOM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=npD7r6xD; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="npD7r6xD" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5857SsHQ031977 for ; Fri, 5 Sep 2025 15:44:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=H0joPrmWAzQ FyLXYkYTfG1C6Z6lxgTGnKdLzru7jbe8=; b=npD7r6xDXX6/p7sIQxVeiGJosN8 r3LLvyAZq/Pr1wLS8OCrs8w/WZa6cSl1O54OvOGICD12S5LGXTz3g19pq8XONW3o Ya8RqykH6Y4lc6YrzA81LlJmFvs25QLkaK2pd02hYd+1TKpgRKWrY0fMgw3IzN/0 6G9X/4A0ZOmROeegn0XGvyzv2nthseTd00Lr9Jtk5nPOlgnW/CcJRIsEfTPnDgXp qqX95IBegf+ldOFZ/kpd44O1zGRCqLugOHVq3ZbBjTWKTGnAnpU4wSecL/0WgwSM EiLhuJylbMo4NHFVZgSPM4zBMTGFi2zmdsUTUOTD7S4PA/EuX07koAfJubQ== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48urw0bnx5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:51 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4b5f112dafeso12542901cf.1 for ; Fri, 05 Sep 2025 08:44:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087091; x=1757691891; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=H0joPrmWAzQFyLXYkYTfG1C6Z6lxgTGnKdLzru7jbe8=; b=SAk9/JojWNAEz/pNP8TlGVYApCgwT+dC4H1HywMsmRzYxepAy34XwwqH6YCZPvdeD6 UmNeiCwYT40oQ4mtruB5kZCyRswvLatLdzoRNt7U7JB+7tMYYS0J6EQZ6AjeWBGjhaUi sZYGSLmCVoeMKxKksL1TI9n+zUu7YQUnQIvnSyAM7Z/qVLeBCC+nZlwkhPli2InYmlmD fUF/HIvX8ldjWvNlBitFQo+Y10ngKFYWdo4OH1D/xr7aei5D63cnGoBRcD4TPcSSnS4u qIZ3U3LUGLYBXPbOalA474NO22JRumVIbNud00JtvCB8jrGHUOW1C2soRkZ1yipsnPNW MxJQ== X-Forwarded-Encrypted: i=1; AJvYcCWEPGkvZeAymOX8v/eGo8T9srmGW3ErhrnBUIouI3yWcFwliB17qE1hN8WSZgg4Sck3mBTtiZRGieXwO98=@vger.kernel.org X-Gm-Message-State: AOJu0YxR2hcvsfvtzKdHPHNin9dpFNmDk3A0zMS9WjE6c8jw4sP/DkGG sXrD6VQdyPulwUesB5HzQFa+nPOOnoRYwvqnbaSJGVhdJ1VSQzTMbFxPnEM0Bk8WLOeF3Qv5ixN sQCWVIRNa6lueGscOd20crhU9EaVJtsCxObUSGjcZtYP4B/PaOikVW2KNFoG9dyILvYk= X-Gm-Gg: ASbGnctbR215BoUwrA5IPxhDtMBcq45m53x4OD9ZcYduQbpX374sXJHMyZqVV4BjZS2 djr4g+FHqYUBXou52TI6hiEfh8we8fA3/8FbcTlf0NscPdAs2NDA9u552Qg+sFQm0ugMkI06/c1 uY6lUaE3czzyh83ej34RCbK7OK3hjqWFEWYwj4IevB10fJzRHVbN24B/c13Z9hnVAncK5dR41ZL W84dBirXRA9PFZrf0TRxXQwzZiBzcMJyThIx2Z8NPem1YusWmViLFk0w33wkjZgk7Mmbj5emetM X1Vd5rsueHU0o1H9U7k9/AprcZvZrsMwTwg9+EFAdSe/0zxVk0lxgg== X-Received: by 2002:a05:622a:a13:b0:4b5:de12:4c34 with SMTP id d75a77b69052e-4b5de1250c6mr59824011cf.75.1757087090532; Fri, 05 Sep 2025 08:44:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHgmamiKdfpxGgwl8PZbDfmu8tMOYi1WuWxDIqz7Xspu99/7mmyGnLvR1GMvKJQF2Us5kfOeA== X-Received: by 2002:a05:622a:a13:b0:4b5:de12:4c34 with SMTP id d75a77b69052e-4b5de1250c6mr59823671cf.75.1757087089976; Fri, 05 Sep 2025 08:44:49 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:48 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 10/12] ASoC: codecs: wcd-common: move status_update callback to common Date: Fri, 5 Sep 2025 16:44:28 +0100 Message-ID: <20250905154430.12268-11-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: WAirvWHBDS4msIj0QxcxwCJw2VTvajU8 X-Proofpoint-ORIG-GUID: WAirvWHBDS4msIj0QxcxwCJw2VTvajU8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAyNyBTYWx0ZWRfX3/b0vzMQpKfJ RJJAfYIc+YKsz6xCvcl31TX3gdfv1AlW6jyvXP0Vs33YBnCwLRAGrb/tSfxdBNz1qzbxhMkSkIz R++cN/lGnjouLlVAxHiGWcpla3UcbzPCelBvDiDafJcyoiHPVv20WNZFEaKhVBAGIfbAh7gkoho NiJYEviJeLuKB3KCYH1WnmnJAPeDKXNLI5gc4TQEj6WrN01OjHV8k8uAqf3yhSXa+R/cgJjl+3f cg0o9tsVHloUD6kYroMoCMv1z3t08EMk4NLjMe9v0Wvu/6o1IqZWtWcnZUZtzPyHJbh1cXkwqV0 QktxTAaXBQUGZVpbKcg/2HMcoS1/lHH6FxPDnuKyjdN1FQckYVtLByDryPwpNLc6IJ8C2DejBit e6clGpNK X-Authority-Analysis: v=2.4 cv=NrDRc9dJ c=1 sm=1 tr=0 ts=68bb0573 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=sWKEhP36mHoA:10 a=EUspDBNiAAAA:8 a=lLZ5r3BOYuU-AXZT-04A:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 suspectscore=0 malwarescore=0 priorityscore=1501 phishscore=0 impostorscore=0 spamscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300027 Content-Type: text/plain; charset="utf-8" Soundwire update_status, bus_config and interrupt callbacks for wcd937x, wcd938x, wcd939x soundwire codecs are exactly identlical, move them to common driver to remove this duplicate code. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/wcd-common.c | 46 ++++++++++++++++++++++++++++++++++ sound/soc/codecs/wcd-common.h | 5 ++++ sound/soc/codecs/wcd937x-sdw.c | 28 +++------------------ sound/soc/codecs/wcd938x-sdw.c | 41 +++--------------------------- sound/soc/codecs/wcd939x-sdw.c | 42 +++---------------------------- 5 files changed, 62 insertions(+), 100 deletions(-) diff --git a/sound/soc/codecs/wcd-common.c b/sound/soc/codecs/wcd-common.c index 585d3e036900..6aaa6e2c955a 100644 --- a/sound/soc/codecs/wcd-common.c +++ b/sound/soc/codecs/wcd-common.c @@ -9,6 +9,9 @@ #include #include #include +#include +#include +#include =20 #include "wcd-common.h" =20 @@ -16,6 +19,8 @@ #define WCD_DEF_MICBIAS_MV 1800 #define WCD_MAX_MICBIAS_MV 2850 =20 +#define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m)) + int wcd_get_micb_vout_ctl_val(struct device *dev, u32 micb_mv) { /* min micbias voltage is 1V and maximum is 2.85V */ @@ -93,5 +98,46 @@ const struct component_ops wcd_sdw_component_ops =3D { }; EXPORT_SYMBOL_GPL(wcd_sdw_component_ops); =20 +int wcd_update_status(struct sdw_slave *slave, enum sdw_slave_status statu= s) +{ + struct regmap *regmap =3D dev_get_regmap(&slave->dev, NULL); + + if (regmap && status =3D=3D SDW_SLAVE_ATTACHED) { + /* Write out any cached changes that happened between probe and attach */ + regcache_cache_only(regmap, false); + return regcache_sync(regmap); + } + + return 0; +} +EXPORT_SYMBOL_GPL(wcd_update_status); + +int wcd_bus_config(struct sdw_slave *slave, struct sdw_bus_params *params) +{ + sdw_write(slave, SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(params->next_bank), 0x01= ); + + return 0; +} +EXPORT_SYMBOL_GPL(wcd_bus_config); + +int wcd_interrupt_callback(struct sdw_slave *slave, struct irq_domain *sla= ve_irq, + unsigned int wcd_intr_status0, unsigned int wcd_intr_status1, + unsigned int wcd_intr_status2) +{ + struct regmap *regmap =3D dev_get_regmap(&slave->dev, NULL); + u32 sts1, sts2, sts3; + + do { + handle_nested_irq(irq_find_mapping(slave_irq, 0)); + regmap_read(regmap, wcd_intr_status0, &sts1); + regmap_read(regmap, wcd_intr_status1, &sts2); + regmap_read(regmap, wcd_intr_status2, &sts3); + + } while (sts1 || sts2 || sts3); + + return IRQ_HANDLED; +} +EXPORT_SYMBOL_GPL(wcd_interrupt_callback); + MODULE_DESCRIPTION("Common Qualcomm WCD Codec helpers driver"); MODULE_LICENSE("GPL"); diff --git a/sound/soc/codecs/wcd-common.h b/sound/soc/codecs/wcd-common.h index 85e5818b9b0c..a844908de433 100644 --- a/sound/soc/codecs/wcd-common.h +++ b/sound/soc/codecs/wcd-common.h @@ -35,5 +35,10 @@ struct wcd_common { extern const struct component_ops wcd_sdw_component_ops; int wcd_get_micb_vout_ctl_val(struct device *dev, u32 micb_mv); int wcd_dt_parse_micbias_info(struct wcd_common *common); +int wcd_update_status(struct sdw_slave *slave, enum sdw_slave_status statu= s); +int wcd_bus_config(struct sdw_slave *slave, struct sdw_bus_params *params); +int wcd_interrupt_callback(struct sdw_slave *slave, struct irq_domain *sla= ve_irq, + unsigned int wcd_intr_status0, unsigned int wcd_intr_status1, + unsigned int wcd_intr_status2); =20 #endif /* __WCD_COMMON_H___ */ diff --git a/sound/soc/codecs/wcd937x-sdw.c b/sound/soc/codecs/wcd937x-sdw.c index 59c353cafd31..1878d67e3fa1 100644 --- a/sound/soc/codecs/wcd937x-sdw.c +++ b/sound/soc/codecs/wcd937x-sdw.c @@ -112,19 +112,6 @@ int wcd937x_sdw_hw_params(struct wcd937x_sdw_priv *wcd, } EXPORT_SYMBOL_GPL(wcd937x_sdw_hw_params); =20 -static int wcd9370_update_status(struct sdw_slave *slave, enum sdw_slave_s= tatus status) -{ - struct wcd937x_sdw_priv *wcd =3D dev_get_drvdata(&slave->dev); - - if (wcd->regmap && status =3D=3D SDW_SLAVE_ATTACHED) { - /* Write out any cached changes that happened between probe and attach */ - regcache_cache_only(wcd->regmap, false); - return regcache_sync(wcd->regmap); - } - - return 0; -} - /* * Handle Soundwire out-of-band interrupt event by triggering * the first irq of the slave_irq irq domain, which then will @@ -135,18 +122,9 @@ static int wcd9370_interrupt_callback(struct sdw_slave= *slave, struct sdw_slave_intr_status *status) { struct wcd937x_sdw_priv *wcd =3D dev_get_drvdata(&slave->dev); - struct irq_domain *slave_irq =3D wcd->slave_irq; - u32 sts1, sts2, sts3; - - do { - handle_nested_irq(irq_find_mapping(slave_irq, 0)); - regmap_read(wcd->regmap, WCD937X_DIGITAL_INTR_STATUS_0, &sts1); - regmap_read(wcd->regmap, WCD937X_DIGITAL_INTR_STATUS_1, &sts2); - regmap_read(wcd->regmap, WCD937X_DIGITAL_INTR_STATUS_2, &sts3); - - } while (sts1 || sts2 || sts3); =20 - return IRQ_HANDLED; + return wcd_interrupt_callback(slave, wcd->slave_irq, WCD937X_DIGITAL_INTR= _STATUS_0, + WCD937X_DIGITAL_INTR_STATUS_1, WCD937X_DIGITAL_INTR_STATUS_2); } =20 static const struct reg_default wcd937x_defaults[] =3D { @@ -979,7 +957,7 @@ static const struct regmap_config wcd937x_regmap_config= =3D { }; =20 static const struct sdw_slave_ops wcd9370_slave_ops =3D { - .update_status =3D wcd9370_update_status, + .update_status =3D wcd_update_status, .interrupt_callback =3D wcd9370_interrupt_callback, }; =20 diff --git a/sound/soc/codecs/wcd938x-sdw.c b/sound/soc/codecs/wcd938x-sdw.c index 92714aef09d5..add907cb2706 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -20,8 +20,6 @@ #include "wcd938x.h" #include "wcd-common.h" =20 -#define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m)) - static const struct wcd_sdw_ch_info wcd938x_sdw_rx_ch_info[] =3D { WCD_SDW_CH(WCD938X_HPH_L, WCD938X_HPH_PORT, BIT(0)), WCD_SDW_CH(WCD938X_HPH_R, WCD938X_HPH_PORT, BIT(1)), @@ -142,44 +140,13 @@ int wcd938x_sdw_set_sdw_stream(struct wcd938x_sdw_pri= v *wcd, } EXPORT_SYMBOL_GPL(wcd938x_sdw_set_sdw_stream); =20 -static int wcd9380_update_status(struct sdw_slave *slave, - enum sdw_slave_status status) -{ - struct wcd938x_sdw_priv *wcd =3D dev_get_drvdata(&slave->dev); - - if (wcd->regmap && (status =3D=3D SDW_SLAVE_ATTACHED)) { - /* Write out any cached changes that happened between probe and attach */ - regcache_cache_only(wcd->regmap, false); - return regcache_sync(wcd->regmap); - } - - return 0; -} - -static int wcd9380_bus_config(struct sdw_slave *slave, - struct sdw_bus_params *params) -{ - sdw_write(slave, SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(params->next_bank), 0x0= 1); - - return 0; -} - static int wcd9380_interrupt_callback(struct sdw_slave *slave, struct sdw_slave_intr_status *status) { struct wcd938x_sdw_priv *wcd =3D dev_get_drvdata(&slave->dev); - struct irq_domain *slave_irq =3D wcd->slave_irq; - u32 sts1, sts2, sts3; - - do { - handle_nested_irq(irq_find_mapping(slave_irq, 0)); - regmap_read(wcd->regmap, WCD938X_DIGITAL_INTR_STATUS_0, &sts1); - regmap_read(wcd->regmap, WCD938X_DIGITAL_INTR_STATUS_1, &sts2); - regmap_read(wcd->regmap, WCD938X_DIGITAL_INTR_STATUS_2, &sts3); - - } while (sts1 || sts2 || sts3); =20 - return IRQ_HANDLED; + return wcd_interrupt_callback(slave, wcd->slave_irq, WCD938X_DIGITAL_INTR= _STATUS_0, + WCD938X_DIGITAL_INTR_STATUS_1, WCD938X_DIGITAL_INTR_STATUS_2); } =20 static const struct reg_default wcd938x_defaults[] =3D { @@ -1177,9 +1144,9 @@ static const struct regmap_config wcd938x_regmap_conf= ig =3D { }; =20 static const struct sdw_slave_ops wcd9380_slave_ops =3D { - .update_status =3D wcd9380_update_status, + .update_status =3D wcd_update_status, .interrupt_callback =3D wcd9380_interrupt_callback, - .bus_config =3D wcd9380_bus_config, + .bus_config =3D wcd_bus_config, }; =20 static int wcd9380_probe(struct sdw_slave *pdev, diff --git a/sound/soc/codecs/wcd939x-sdw.c b/sound/soc/codecs/wcd939x-sdw.c index 38da706d80be..d369100a2457 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -22,8 +22,6 @@ #include "wcd939x.h" #include "wcd-common.h" =20 -#define SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(m) (0xE0 + 0x10 * (m)) - static const struct wcd_sdw_ch_info wcd939x_sdw_rx_ch_info[] =3D { WCD_SDW_CH(WCD939X_HPH_L, WCD939X_HPH_PORT, BIT(0)), WCD_SDW_CH(WCD939X_HPH_R, WCD939X_HPH_PORT, BIT(1)), @@ -187,29 +185,6 @@ int wcd939x_sdw_set_sdw_stream(struct wcd939x_sdw_priv= *wcd, } EXPORT_SYMBOL_GPL(wcd939x_sdw_set_sdw_stream); =20 -static int wcd9390_update_status(struct sdw_slave *slave, - enum sdw_slave_status status) -{ - struct wcd939x_sdw_priv *wcd =3D dev_get_drvdata(&slave->dev); - - if (wcd->regmap && status =3D=3D SDW_SLAVE_ATTACHED) { - /* Write out any cached changes that happened between probe and attach */ - regcache_cache_only(wcd->regmap, false); - return regcache_sync(wcd->regmap); - } - - return 0; -} - -static int wcd9390_bus_config(struct sdw_slave *slave, - struct sdw_bus_params *params) -{ - sdw_write(slave, SWRS_SCP_HOST_CLK_DIV2_CTL_BANK(params->next_bank), - 0x01); - - return 0; -} - /* * Handle Soundwire out-of-band interrupt event by triggering * the first irq of the slave_irq irq domain, which then will @@ -220,18 +195,9 @@ static int wcd9390_interrupt_callback(struct sdw_slave= *slave, struct sdw_slave_intr_status *status) { struct wcd939x_sdw_priv *wcd =3D dev_get_drvdata(&slave->dev); - struct irq_domain *slave_irq =3D wcd->slave_irq; - u32 sts1, sts2, sts3; - - do { - handle_nested_irq(irq_find_mapping(slave_irq, 0)); - regmap_read(wcd->regmap, WCD939X_DIGITAL_INTR_STATUS_0, &sts1); - regmap_read(wcd->regmap, WCD939X_DIGITAL_INTR_STATUS_1, &sts2); - regmap_read(wcd->regmap, WCD939X_DIGITAL_INTR_STATUS_2, &sts3); - - } while (sts1 || sts2 || sts3); =20 - return IRQ_HANDLED; + return wcd_interrupt_callback(slave, wcd->slave_irq, WCD939X_DIGITAL_INTR= _STATUS_0, + WCD939X_DIGITAL_INTR_STATUS_1, WCD939X_DIGITAL_INTR_STATUS_2); } =20 static const struct reg_default wcd939x_defaults[] =3D { @@ -1364,9 +1330,9 @@ static const struct regmap_config wcd939x_regmap_conf= ig =3D { }; =20 static const struct sdw_slave_ops wcd9390_slave_ops =3D { - .update_status =3D wcd9390_update_status, + .update_status =3D wcd_update_status, .interrupt_callback =3D wcd9390_interrupt_callback, - .bus_config =3D wcd9390_bus_config, + .bus_config =3D wcd_bus_config, }; =20 static int wcd9390_probe(struct sdw_slave *pdev, const struct sdw_device_i= d *id) --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 6AA252FB0B8 for ; Fri, 5 Sep 2025 15:44:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087095; cv=none; b=LkvGOVAOLLjSO1zKP9FSG+1qfqwX0O0KfRN3+EAhF/wVMZ3hnuwYLN5AhwxWqmZkhHHX0osiyINRRlI9XJQ75qGcwCrqy1bKmb1au1xa5Nv9fKE2+/klrYnnxffnPAm3vh1J2HOso0SxdH1OIh7QNDt8/na8eKc9TFzaLkkWwHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087095; c=relaxed/simple; bh=/U9W3w4dsWi5IE5LjHFEmTpr8qAztaXo6eOJbgusxX0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kCrRYGBkFffykN9dSwv9YxtUPu4ppv/kE1wwJopRSnHW8czH2ZUmsusN0XeX0l/vNCvVrYUn1IHoli90VDYb/Viura7lAjrbBEAD9Z35w78AJHCKtil1f+RSsmYmTzqukt+xQ0MPUrrh+wlI3BJ7jdn+8uPUuNSjvW1WQjwAlK4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=HjY//Ajo; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="HjY//Ajo" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5858WYAQ018519 for ; Fri, 5 Sep 2025 15:44:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=LsCJ17/WHR/ P2iA3/0CFtxLbSANoJEOEN/h40JqWb6g=; b=HjY//Ajor+K/hp0gZpYsBs/g62J JpYUd55yBAjbWpkzmDjo/ddA67RvUOh/egBlasYdSAqFfRVzMh1eLQ5dGP1Mdk2e EMaqi+g+hUYlqXqYNSR4UFeLoVsdE5LLdTR0Voh3MMHgTo/J8U40ZlwjSceaA5j5 tsAp+IX8wyGGRQq7udkjHPrT76FFSRtDYZwh58DA7mt0Sy88A0cNFf5joSnb5YoW hFg9B90uG6m8q1P5tsUCaNPQK2xwbHkGy20yoJujTpCrm7KFhXjumoia0nvpEHHg SBI9RCX8dtZvjMx/vx11kVpRLa8kamYtCCNGmeTivvQpdFvEFUdwxVH4ujg== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48upnpkrc6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:52 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4b34c87dad0so53007461cf.3 for ; Fri, 05 Sep 2025 08:44:52 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087092; x=1757691892; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=LsCJ17/WHR/P2iA3/0CFtxLbSANoJEOEN/h40JqWb6g=; b=XysMoeR5DZF+UUsTwyamVvALwiFFQfT6xZp3Q8ZETd4mxmckw4tX/AQjM/vnoGIQ0Y +EloBm8R3x9HcSvHh+AixnJgvC0uNLRtdNMtP9nN3haV3aPtMOUCmXFirse7KXiCIUOU DkwGBIrHUxsaA6X6Se1rHY6qRL3+u+NIgHzqtuOqXOJMpnlrLUz7wot6ZyWh92MCubh1 KV0gDENGURtAlqrOWW/B9klDpLUt2T3gIF9LFMtfAoNo2iJRdXNbiJ7hxlVYm3mp5IWo zbIsPeKISHSIAxi8/J9hiBW8ontq7kypP506Di0/fxA7zcTOSbjAdNcLZkIB5ch/d3EJ kFJQ== X-Forwarded-Encrypted: i=1; AJvYcCXT2cVDq+lQrHJvGNk3OyY37YmcBXWrkLMtmVvNL0PceEBwnxrop9V93Ith+gHICEps3GJSbuStnQ6xZPI=@vger.kernel.org X-Gm-Message-State: AOJu0YzGPmd648sIjGfTxywKkDkiMnS1xUFvdqCXa0Z8s7fWjV2BVGKx 6iVMmJggeky5m3TiYD1ra7sQ0E2vM6gxC9FkDdEooQN33kz/m4BjrnBEgT2AW7eQgBcsf+OT0ZI nCpyfHqek64A0Jhwls5EP4cmYWvm6x1bNs9BsakGtNS5Mqhi1AhfXhCtciBu+GtS8xD4= X-Gm-Gg: ASbGncsiMBl62UsnMLjacFfqGQtbXXgdbXGlYUrIP/aJpHkwq3P2yDc7mbkr6A7wvZO tsf7MOb7tvMs9HZHBgKUSlqypPNn5WARSdG8lXxEtJSRCxnRRI3PJK6SZ0cFm8wLVjVxpUDAACb 0g2DyzU6XxgnEnbA0/xJPmrf5CgVQ99+j5OPg1B+Su97bft6uD7q6vbI/QsQBU16WHZi1ZmqhOp yR516+Otu/yLGSIkgNqwQXP4+Vo4skQmelTt5l1szN7eNhmy/0Qh8Iw5FXD8Qy66tor3SaNqNXF 389vbypGUvP8n6aiMbNd1wSd7ZsYoxO3MJVHdPVPCKsPL3f5I0Eg8w== X-Received: by 2002:a05:622a:1f0a:b0:4b0:7d41:df7a with SMTP id d75a77b69052e-4b31db65fa6mr319517591cf.56.1757087091529; Fri, 05 Sep 2025 08:44:51 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFdhep6GikAkazf0l6t8i2x3f5Z70bfCZ3Bnt13gdUl0CJAAIC5jV9yr7/tdMQ8sW4u617haQ== X-Received: by 2002:a05:622a:1f0a:b0:4b0:7d41:df7a with SMTP id d75a77b69052e-4b31db65fa6mr319517011cf.56.1757087090929; Fri, 05 Sep 2025 08:44:50 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:50 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 11/12] ASoC: codecs: wcd938x: get regmap directly Date: Fri, 5 Sep 2025 16:44:29 +0100 Message-ID: <20250905154430.12268-12-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 2dDFOfZTC4_wn1V6xQ-eiUDNboxmNsXp X-Authority-Analysis: v=2.4 cv=Jt/xrN4C c=1 sm=1 tr=0 ts=68bb0574 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=AeW90Tct3s7Q8B8mPpwA:9 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-ORIG-GUID: 2dDFOfZTC4_wn1V6xQ-eiUDNboxmNsXp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAwMSBTYWx0ZWRfX1P2T8raM58i2 CWl7Iupm8cPlMsCk+ke2cPvjtlJ72bozsfABb1/OoCa5T5XS1DkpeUL37TiIQCy/bqxyKyxCcJ5 MkwtHQ1o5Bm4k/e9C1Bg27h0kmvN3g9McFdyIkzTkWylK1dNnmtzVCCJjD9xmlG0x6lgSMSCqeg ps1VuW/7G3H2Ue9qpn4JcuUGgHs9qQhF3P7EtrLofvYd193I1O1XUWNV5LI+JlPTbTZcVsrzuFI 2UdXMiE7FgteIIZ1bWzYlB+n/LgA0f0o5trWz9g8c4nDzdEGvw9BgR/b3i2K28w9MJaabAWurEI UbEW3lBeFwb6QZfGywcMVHgFXnPjwrEOvlpxo0vDHwjol+TH26DHLIfhhgiz2VS1Gq6ewqdtjIv 2JaDVOwj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 priorityscore=1501 clxscore=1015 bulkscore=0 impostorscore=0 spamscore=0 phishscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300001 Content-Type: text/plain; charset="utf-8" Remove usage of dev_get_regmap, as this its more efficient to directly reference the pointer. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/wcd938x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/wcd938x.c b/sound/soc/codecs/wcd938x.c index e495f98972f1..e1a4783b984c 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -3389,7 +3389,7 @@ static int wcd938x_bind(struct device *dev) goto err_remove_tx_link; } =20 - wcd938x->regmap =3D dev_get_regmap(&wcd938x->tx_sdw_dev->dev, NULL); + wcd938x->regmap =3D wcd938x->sdw_priv[AIF1_CAP]->regmap; if (!wcd938x->regmap) { dev_err(dev, "could not get TX device regmap\n"); ret =3D -EINVAL; --=20 2.50.0 From nobody Wed Sep 10 05:39:07 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 6A48C302166 for ; Fri, 5 Sep 2025 15:44:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087096; cv=none; b=D4LmazzcFBivfK0I+g5s4a4AscqZGAOozG9F3fsygEdpz/S9yslEYsvJVabjOLgkS7wWGKvG/UmvdLA4bLecROPuE87GifWOtkpKKIPf4ECGqpDKV3khTt/gbz+HyVZJCv1SEfje56V/bevLrFFeO729aCBbjL2e1oJj0oszt9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757087096; c=relaxed/simple; bh=/5tS1Na4bhQKzK4q//dUm4k/XvEXFSaGVZ5qLzvaXmc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=M6mSW11VsukgkzysF1v0LNscMH9X8Xf5hkJ48SXQMnFPdLKvL6uajoyfKRr+bL55rJi6M/4dvbbLADiEfuT32C3ix4LPbL1XPtSyJlSzazgg/MVmJJ/gaBKQMRXwN8tyvU7BbXMF1GUPhQDwekq2P+8XjTRy6KgpOX8CPS8ClBc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SExit0Tb; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SExit0Tb" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 5857K1ED007609 for ; Fri, 5 Sep 2025 15:44:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=mTLagKpBc2r L9dFOYPZ/ZlF6mHj5oBgr/ydkac/ztb8=; b=SExit0Tb+n8lSToMlcDLLokZP/u nk7QXrzUVMxnKsqKUC51rQgeHqTohoAPqOk1ZIknTxdwxFNQxCq8Tj4DrXGKxuOx aiRLouO2APKuJu3DGnLdi+7u1CyKljrzUw20rR0D/y1HA8RXFmCd2VUOf12+DsqX /NCC04/Q2NpWWGCVNQ9ZmYkHw06CprVC2ZWuT5FLx3p+xBMrBFWfcg3XoTC6Yjkk qUjvYFdjwUbo+0gq5i0l65ffVmvI/hvdaaMExRD04wIcjQmXSOHvzvNjDSIH/HLb i56QHD37Ms03boC2uhDB9aU2JWM7wfUJklGbQCAaVsQMpxb3+Q5yTAYZbhQ== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48ura93fx4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 05 Sep 2025 15:44:53 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4b47b4d296eso52456341cf.1 for ; Fri, 05 Sep 2025 08:44:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757087093; x=1757691893; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mTLagKpBc2rL9dFOYPZ/ZlF6mHj5oBgr/ydkac/ztb8=; b=FgDos7xkGAhgfsUKtitPLd/zVtGdRLtsK4Djp5iP/93DLGocck4oafkbrwp1202SoK QU/ycNo4OF9iS97nizTFUvXawt3qa6JeBwRVKvY+HzYgle2YfI+aNt6ekYBkz7VRb7of bLGF5J9qv1vMs7j+CU5gJJNdq5TfZ9iwO2gSqpD4OevtL/2v8qShh4dL0cCaG539Ypom 6BXOwxEZ8hxZDmCv66/1Hc1eyhtuIB038NGhPzX8GO8v07x/VELw0a+Ixm6d/PnNYT1d j1SMVXfZlZFP97cEJ7efw/YJ16g19FRb5QY8l9/shFDv/6rHE/fgqRXb8LUrD96T0CJ6 Jqaw== X-Forwarded-Encrypted: i=1; AJvYcCVXopDBEq/ezg/HXuPkIyz2ccg9isoMUgiyAooi6OVyNGmGFMwbapTKEjb4p3dlNFYmgdMqyzPdjYdhfus=@vger.kernel.org X-Gm-Message-State: AOJu0YxLu2ro2z9uRVCsUimBvkQFwDR8V1CM3GKUOzFEyPZYVcc3dcfq 7uWyMarI9Fp7lmg/h+vZdXOhjVY7+q+Hsx1Snc4NCrGLDdG+9zQC1Gt1gLjDbeAvmrk5qbf0mrf sDaFM7OcU21h5jx8oW9LrMXyNSXa/GY7IXNL/sT30ujgRAWmVQup7+g1h2iNGpRphqVQ= X-Gm-Gg: ASbGnctusVTZSRQNo1dzzFB4d0RPh4/w9GeiE109IAuMCSZSkuU4yIf46wJRWtMWi2h v+R8NsNQhY1CGnzR0oGc4dEUk2zBlQdz9eYMl6BEeMCeNOLcQqYYuorgt7Z30gsB2LbDr9Vhsmy K2UXKTt7iJX/Uhi2Jn3HsQJQKkJbB1MMnX3EjmUtnKJhtOz97rj3naiae7ouQuIfYs8/MVRlWX5 jLKkeVjIIgImbBxlyvu3TxkBol9Gqy1GJcrqqx7e8KO/jq8+JZtnESX1YEmt/c17zxc6ZE/PJSV RPGkoZXQGgMaBdhEd7JhxcBjidlpovJ/1p8oHxY4zOENEGIJn5cJbA== X-Received: by 2002:ac8:7d02:0:b0:4b5:ee26:5367 with SMTP id d75a77b69052e-4b5ee265a2emr30882541cf.76.1757087092584; Fri, 05 Sep 2025 08:44:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGaXM5xYiTB//e6nEVW8d4V0nDzBo53JeNS4CwOwWnvV1IpsnA01PjZg8fUI8yb7yuS5+Sj9g== X-Received: by 2002:ac8:7d02:0:b0:4b5:ee26:5367 with SMTP id d75a77b69052e-4b5ee265a2emr30882001cf.76.1757087091954; Fri, 05 Sep 2025 08:44:51 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b9bcda91dsm165716585e9.6.2025.09.05.08.44.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Sep 2025 08:44:51 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: lgirdwood@gmail.com, tiwai@suse.com, vkoul@kernel.org, srini@kernel.org, yung-chuan.liao@linux.intel.com, pierre-louis.bossart@linux.dev, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, neil.armstrong@linaro.org, krzysztof.kozlowski@linaro.org, dmitry.baryshkov@oss.qualcomm.com, linux-sound@vger.kernel.org, Srinivas Kandagatla Subject: [PATCH v3 12/12] ASoC: codecs: wcd937x: get regmap directly Date: Fri, 5 Sep 2025 16:44:30 +0100 Message-ID: <20250905154430.12268-13-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250905154430.12268-1-srinivas.kandagatla@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: 5U_7__djnUEFyQYxrtLzfzyzX1xFXFaG X-Proofpoint-GUID: 5U_7__djnUEFyQYxrtLzfzyzX1xFXFaG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODMwMDAyMCBTYWx0ZWRfX+m3n7A2+m0rx uaP11UqldeJYcbyQHvlnhmVSpO3KS94rc/PYc/ri0kHTES+d1C1ynHP56SZ9+SlbmnTAyJ6cbxB MpIM1SiMJsu9o07B6kNRDpSyO/bFa1NWBiBVZx7kyFp7TzXSjmpriw8VMhLgE48POE0ZCy3ceb4 X25YWXZXCda+15aQ6glNvkkui0ocNoaggfh1vhvgpkfa6A5nN6cmVbmZDKxE4rSDapauBgbks/m ZAuezlpLA4tz00g71NzbvaF4iFV2sAf0dQguMbyzz2XQgFRT1d6Vz7X0Bj06TGbrbOLiMe660Bo 0tXZ6DJVU7O9IHo3AswxvOoltRr1RByvvllpz//jvG6YVjgRn9lW6a5ryRmTlCd9I92dht7uDLY LkhrwO/P X-Authority-Analysis: v=2.4 cv=VNndn8PX c=1 sm=1 tr=0 ts=68bb0575 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=yJojWOMRYYMA:10 a=EUspDBNiAAAA:8 a=5pqs-Pqnn3KeH4UlXPsA:9 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-05_05,2025-09-04_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 impostorscore=0 malwarescore=0 bulkscore=0 clxscore=1015 adultscore=0 priorityscore=1501 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508300020 Content-Type: text/plain; charset="utf-8" Remove usage of dev_get_regmap, as this its more efficient to directly reference the pointer. Signed-off-by: Srinivas Kandagatla Reviewed-by: Dmitry Baryshkov --- sound/soc/codecs/wcd937x.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/codecs/wcd937x.c b/sound/soc/codecs/wcd937x.c index 5c8faff3976d..2064d707ab0a 100644 --- a/sound/soc/codecs/wcd937x.c +++ b/sound/soc/codecs/wcd937x.c @@ -2790,7 +2790,7 @@ static int wcd937x_bind(struct device *dev) return -EINVAL; } =20 - wcd937x->regmap =3D dev_get_regmap(&wcd937x->tx_sdw_dev->dev, NULL); + wcd937x->regmap =3D wcd937x->sdw_priv[AIF1_CAP]->regmap; if (!wcd937x->regmap) { dev_err(dev, "could not get TX device regmap\n"); return -EINVAL; --=20 2.50.0