From nobody Fri Oct 3 23:01:38 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 A79262F6167 for ; Fri, 22 Aug 2025 10:49:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859776; cv=none; b=oKRhF/4BRNf/yBIwqKoP2K/4yLdQF4nZ+rXC7InmT/ZeVOcTP0AStNhZN8CgW75TA8Hw2OnMQjrE5RSOAFdbH6WYts5LEEzjWf3ArzPgC25+db1phxXBcSRY6eV0yT+jJvMpGf0kSOsO5BHDKJYGAqkoM8OezbL56KxgClLzF9E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859776; c=relaxed/simple; bh=93GrgaiWaZtCKjuG5PPu0kwmkEEb4zw1zaJIOqGGrto=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Nw7u97133epn2BszizoXR4fXFFTluTyeHghPhgChTM/PK7jJCTsYDmMRvjgNi3ZAnx8QlmMu2NmRY3fVyLdl0LL4ooLJKOzRrKRPlHi5iE0dGIz4ou8i0x2yD4censK8wRBNuf0BGQVCcKLma0BV2EqH3onzcPRsOOqdGcES1cs= 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=MoQLVjHq; arc=none smtp.client-ip=205.220.168.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="MoQLVjHq" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57M8UIMN021761 for ; Fri, 22 Aug 2025 10:49:33 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=QvpftBrG1J9 rWY0MKQPnpSUD1XG+6hxhXllVH2PX48o=; b=MoQLVjHqPjkyopWKBLC3dq1QiUB bjU++ATNVu/1tzImZ5zGWI889QWaBH9BdDTyrOT/PYzUfqCL4PWycN5unJzbZFEm H5VUGZV+hkdCfnmWxLD3rOawdXiyhMS5dXRfGHxwZXAr8Gl/StMD+FcBBoMXtgvS ug6+3MyNgBVx5puAA3hCTOeFXIEY61NfVWHcZPfqxuSqKvHIMHtt3wTMNGvSuBXb gZpyAue4ePnbXGZoxqFmfotWH371E+HQG4JgAkRMu22VXNP34FuSOMUTh4tAyoiF CuGnl4UIB0UWgGwhh3JIrGl0btQcI8x1QyfaM5Xl+kF5f+ETC5NxErA1Ouw== 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 48n52a8yjk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:32 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4b109c8804dso56090261cf.3 for ; Fri, 22 Aug 2025 03:49:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859772; x=1756464572; 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=QvpftBrG1J9rWY0MKQPnpSUD1XG+6hxhXllVH2PX48o=; b=EnJ1xbwutYZRqFXBgfXIt9bCjcT18XT0oYxZh4YYlbmlDuog9R8Ggc9y46zmb4bvGJ 60RBYXFQ2byWrDybYgmiC7cfGyfPEOH+mV4YilZ3Dkx5xCHrcb9+7NYM8juu7tDp4op2 RFnAnPWy5i28XzTvsiNvvXV7yINy6FHL6YDFaPrqb6CiQvfBacVek3YL2QrxaTqNkQTp Ow26IjIcVpmAROSnV7PwCmmK0fsr4EvA5Up1agpClUnNUB/n49v9yZf3L+g165kxrI0l e6+f+/WKBJXoY6l0RvFIbhS8N2AHrb/PLN49DiV6tsSKXWb4umjDr3TMHX72DvcdEabC 80Qg== X-Forwarded-Encrypted: i=1; AJvYcCWjSaNDkA5w8NNsOA0RScO3D1eyR2UVHfW2s5nPXBLq4JtjgAHtO9DcCHBqrl5ND8PfbkGlS7lR1rOL3ag=@vger.kernel.org X-Gm-Message-State: AOJu0YyCgJcb+9TOXK+6brUC2ixwB8drfiHpFHhhDAc5lAjJDNNO3gOZ 5cK8VbntDwhEs5UOQeTa/aTizXn9mduncWSyLRsovR5pSkwmH3zbAOMbBCXcmBh28mcg9BN6c49 U4jAslhp4XD20m66PvgnF5GQYqc7I1leUOlClab4fDCk+16g1htEWx4fJhvvOQ11lHEA= X-Gm-Gg: ASbGncuHIp1yt85RalLqO4Kf0OVViWRiOwxDrhMKGnRZzEBLpxzrcYOTi1z5CbOFwIV NHwjqKaVTStGr+vomTocrslIk+28MwTtAe/vJ8G9zljDil6mY7kXgkQtOi5Zou7azP0ZV7JYKjK Y7oaxuo1CLDzyeYgWsHPmtTVvpJmTeYNiSsqyvXnmMCGT8MNFKs8LZCPEcfhH3bp3+0AZ2zJ1UG JkkMycK3bPFCItJnagJuJotj7ML2f1ndDdDFiyPULvrmbGVRf1xW1BHavsuu7Gm72txuSPzYxZe NNmBQbjseHl4v/odoTDut1Jnof3GD/EG4Gs3rg7eD+tF0JDjyKqSsg== X-Received: by 2002:ac8:5947:0:b0:4b0:7f2c:b27d with SMTP id d75a77b69052e-4b2aaa2b808mr22572001cf.22.1755859771405; Fri, 22 Aug 2025 03:49:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IES7Jy1nhGpx6D+85CwxK+Qgiqo2P4/BsEinxs93B/f9dsv/inAUbbS1wWDEuY9P9oa8wJ9Pg== X-Received: by 2002:ac8:5947:0:b0:4b0:7f2c:b27d with SMTP id d75a77b69052e-4b2aaa2b808mr22571871cf.22.1755859770819; Fri, 22 Aug 2025 03:49:30 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:30 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla , Stable@vger.kernel.org Subject: [PATCH v2 1/8] ASoC: codecs: wcd937x: set the comp soundwire port correctly Date: Fri, 22 Aug 2025 11:49:20 +0100 Message-ID: <20250822104927.2621866-2-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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=feD0C0QF c=1 sm=1 tr=0 ts=68a84b3d cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=0i9YUgi2cL8IzqKwLzsA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: tdbk05PU4JDOT5fcMQw_VOPBORhqYQM_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIwMDAxMyBTYWx0ZWRfXxji2wjICxnPs Jdatl5LirZvorg5WDmlHKRLX4o+2ClNqynflMErqz7uvwncrZEhCkjOeEnNiH+r+DGPSvtuinf/ mmvCNvE2CQMOV8a9eBxAw/WYDBH5FNY7OPuKNZR+yrN9GVQmz8yhHBKykJz0UbmDN/gZQexXIX9 Uz/M8kEqU3IPiERd4koFF032iJoaGXzG1b/Mw4bxRgG67X2RvkH9jQbjzpATguQbqrRpf/MfLJx F12bqq5N5b1yBbvLiGJlBNIy00KdDf7BQsM25NGCi3/mtnw6K+Ry9JdvUoDGFNmi5/TefMcNUqK lpqT3cV3/qIlkqc7zSY+qR4OR2hbqslcLJ1NXUptZ+1p6QxycGaSDXcf93FoKQLVGS5SAARMpoc DA9unav5fxTkdMp3ZeRFBjF1eWZDIg== X-Proofpoint-GUID: tdbk05PU4JDOT5fcMQw_VOPBORhqYQM_ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200013 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 ccd542033967..b78f37c582ca 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 Fri Oct 3 23:01:38 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 C3CBC2F90E2 for ; Fri, 22 Aug 2025 10:49:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859778; cv=none; b=EEf3I9gcelLwmsgIpptBSrL4XFNpdE/i7BxoXQqDCRu4zBm1fq/+C1fMnwzyrZPsbF77SWOt0sfiFC6Z8J9pCa3mR/mB2aG3bsFESvzYS/tRJXVKD01gfEyM8nGIDERRlYAEVtOQOOCqLJLB1GbKv5l4KAggtWwWYfbT0nsZxZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859778; c=relaxed/simple; bh=3flbEGAO2D/K+6LGudhp2wibfu47tX5VrVpPUqtmkgE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JCSPvb+VK9i1U7O5AWTnAgn+FaBv52M7JrLwYStqyINjdolX3KAPAu8cHjJpQVEdWkSLgzwKEExs7slc9kxURKDHqv6zmQVfAoOJZcTcVTzt92g9SoeTsaLF5OByM3H7BPCDe5yxfdgp8IkjQdnodtXMrKeOoLsKTxaYVJb2hnc= 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=Ku7oX+ME; arc=none smtp.client-ip=205.220.168.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="Ku7oX+ME" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57M8UMeo001094 for ; Fri, 22 Aug 2025 10:49:35 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=H7kL8BoKCuZ ke5IvvMrdrVeeFy5dmIj3Oh/eMtOzVoc=; b=Ku7oX+MEgrSUhuZu8Nw7Jp4DuiX 2miElBruirS/Jqq1RUK+jIZ5uk7PV6U7BRu7JdsLVETwdYiS29XVyeQA95GaMPh+ 6AB7g33ndSuykQNBvR10akL+mj8KjFdjcxwf6J/VlrI844DhZ3qsSi3ZloJ4r2F0 A+IMoywq6wQdiNpRnGv0YpzQjU+/Ioyz9d6KWCCqkefXtlyBZ2tva23V5f+NjEOh M1I9Xs5c3MFFcG0bRmFBMt1etsOU6F0wFYP+5tPnTApmG85t9iPFi7WpdZ0Qa6CA uI4lp5E1Wo2gqYsm9nvVFSouZl7m5fD2BYy1r5vzmSVQlN7n+K9dJxZYSBw== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48n5298xwh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:34 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-70d9eb2ec70so2490606d6.0 for ; Fri, 22 Aug 2025 03:49:34 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859773; x=1756464573; 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=H7kL8BoKCuZke5IvvMrdrVeeFy5dmIj3Oh/eMtOzVoc=; b=EcKr9evGlFNYV/v4ANejj0CKdgg+jVeisb0at1jjvdiVvHFe8sLUd+xdzXU6Y9sQBJ DYs7/AVqqspp/RQDEFMwBRkxyp/CD6vxJ3W+r2PU02ZPsnjL9FEB1LE5ISIdRgb/okIp gKenukv12Udw50E0hQ2G+eHDhMoTXjpO3o2FeaNhdjfZk3Gjkuqp3n9CaPjoRceidVvg APZ1N6/gqVePo9cgfVHg3W86LErvszwOJDWCG8P5Q6L2VhTTIODdPGGcRk2usFwK3jo9 5wL1DffKYpwijnNN+nB9UaFKae+ufnglF2QI1/ai8mY+9YmLH1womXP5PLVDlzH+zZjO njVw== X-Forwarded-Encrypted: i=1; AJvYcCUJjguRYYJBHQVdvsFuy6fvKmkhQ5a+DOu5boGLPdmKIBxjTqa/mRO47VZaf7sDeFgtDrUOFWa8+iwb1is=@vger.kernel.org X-Gm-Message-State: AOJu0YxsFZweFKF4g/R29Ex6x21i1//m1NIW4WdB3H3xaP/x5uaVHTFo vvnufEvPNXkmZgmAN2GuUmeFnb8REkDi7ZLlw3BZM1qbkoogJUzw9jovVotI9B/bodeOw5AAG29 OOvcICShBCmHwIK3FOHkg44SceOOL3Ijjn4wRGZaUTacwglzuacmzK8iUQCApvPPTF9o= X-Gm-Gg: ASbGnctKx2jQRMfojSvGavFw4fckFy+/flDCYV2YCDe2cRKSmA7cgAnpR0aHsgpjhNw vFhfxD+JigAKUCwVyilqZ8wEtl/+tVQY5ackxYzqrJVuZax34pfYZJoTFS3W2CTgW2LRKyuKD2R UAQDB7HqqLBCpmxf9434Geivupe6opJ0Of+NgLR+TuUDnrW9Y8una0UPRbvqk92FObI4NQn9Ej3 bJxMsjn2CqDgfZgpxzlN0lHjwSNi7T8lcsHxB9JF7z867FlgEZlkmlQztVAmbkyCaEWiEwevJN5 EmJ6LkDmRlgqu6pfRSzZu/h0TiJ+SLeLrLXo3j8dJbVQm9veW3uRyA== X-Received: by 2002:a05:6214:411c:b0:707:1dd2:a47d with SMTP id 6a1803df08f44-70d972d7739mr34833316d6.28.1755859772834; Fri, 22 Aug 2025 03:49:32 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGW9IG7LQK2ggWC4b5IL7KWMF85spAEG6RShorJbfyiLkMxuf5AvM3r40hh6aMbPM78NLd90g== X-Received: by 2002:a05:6214:411c:b0:707:1dd2:a47d with SMTP id 6a1803df08f44-70d972d7739mr34832886d6.28.1755859772019; Fri, 22 Aug 2025 03:49:32 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:31 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla Subject: [PATCH v2 2/8] ASoC: codecs: wcd: add common helper for wcd codecs Date: Fri, 22 Aug 2025 11:49:21 +0100 Message-ID: <20250822104927.2621866-3-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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: SsMSV9SfBQF3Z1ydT9euEtHSNvFKeErX X-Proofpoint-ORIG-GUID: SsMSV9SfBQF3Z1ydT9euEtHSNvFKeErX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIwMDAxMyBTYWx0ZWRfX770GXwfXJvAO HpiNYmUAh4fQjgL2rMJlxWvox2vGlkIXgR7zaqS40psAP1g5H57ZssNp7YhUFhgV6cOrSuIru6+ k80R5visqoXxxlJ6okty+GgwFcVfZK6n1ZRKCr8TwJwSMFQN76kaDnxNRYzyiMiOvbIyMp0MFkd ktzqthZiOYe32bdcl6umqvTwTozLQsUwbK7NqQV4lnyIUDXP4IIzM2DhA5DNWjjVIBOWpxu0Cs7 wxzUrrfGBk0hUkGmaDVwcVPg+91H8jrasvvZfQRafU2qRg2D8WhTT5IqOVbVK6JqLKUu/9YLaue GXdh6abjxBx4J6RSX/5tGIKaq7idvpeGXC5+YoMXIM6/ilDHVat5brqJ6hjTAlG7r4wO+hLth3N 0olfpZo9/PleZBW68q+vc5cTpyrRDw== X-Authority-Analysis: v=2.4 cv=SPkblOvH c=1 sm=1 tr=0 ts=68a84b3f cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=wa_gl3HYg-BSzEidaMMA:9 a=sbBvEVo_xVyyD6Se:21 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 priorityscore=1501 bulkscore=0 spamscore=0 phishscore=0 impostorscore=0 adultscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200013 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 patch 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 --- sound/soc/codecs/Kconfig | 8 ++++ sound/soc/codecs/Makefile | 2 + sound/soc/codecs/wcd-common.c | 66 ++++++++++++++++++++++++++ sound/soc/codecs/wcd-common.h | 24 ++++++++++ sound/soc/codecs/wcd934x.c | 82 +++++++++----------------------- sound/soc/codecs/wcd937x.c | 75 +++++++---------------------- sound/soc/codecs/wcd937x.h | 6 +-- sound/soc/codecs/wcd938x.c | 87 +++++++--------------------------- sound/soc/codecs/wcd938x.h | 1 + sound/soc/codecs/wcd939x.c | 89 +++++++---------------------------- sound/soc/codecs/wcd939x.h | 1 + 11 files changed, 176 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..dffb0431a48c --- /dev/null +++ b/sound/soc/codecs/wcd-common.c @@ -0,0 +1,66 @@ +// SPDX-License-Identifier: GPL-2.0-only +// Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved. + +#include +#include +#include +#include +#include +#include + +#include "wcd-common.h" + +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..08c8e7ce9814 --- /dev/null +++ b/sound/soc/codecs/wcd-common.h @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#ifndef __WCD_COMMON_H__ +#define __WCD_COMMON_H___ + +#define WCD_MIN_MICBIAS_MV 1000 +#define WCD_DEF_MICBIAS_MV 1800 +#define WCD_MAX_MICBIAS_MV 2850 +#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..6d77cbcafa70 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -155,6 +155,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 +170,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 +1971,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 +2007,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 +2055,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 +2963,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 +3176,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 +3240,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 +3404,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 +3493,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/wcd938x.h b/sound/soc/codecs/wcd938x.h index 54ee56b7fbd6..a6fda63d7f98 100644 --- a/sound/soc/codecs/wcd938x.h +++ b/sound/soc/codecs/wcd938x.h @@ -3,6 +3,7 @@ #define __WCD938X_H__ #include #include +#include "wcd-common.h" =20 #define WCD938X_BASE_ADDRESS (0x3000) #define WCD938X_ANA_PAGE_REGISTER (0x3000) diff --git a/sound/soc/codecs/wcd939x.c b/sound/soc/codecs/wcd939x.c index 85730ae40c2c..ef8def695219 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -191,6 +191,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 +202,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 +1916,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 +1955,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 +2007,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 +2881,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 +3160,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 +3195,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 +3389,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 +3554,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) { diff --git a/sound/soc/codecs/wcd939x.h b/sound/soc/codecs/wcd939x.h index e70445b1a4bc..f587cf22f86f 100644 --- a/sound/soc/codecs/wcd939x.h +++ b/sound/soc/codecs/wcd939x.h @@ -8,6 +8,7 @@ #define __WCD939X_H__ #include #include +#include "wcd-common.h" =20 #define WCD939X_BASE (0x3000) #define WCD939X_ANA_PAGE (0x3000) --=20 2.50.0 From nobody Fri Oct 3 23:01:38 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 0991E2F90E9 for ; Fri, 22 Aug 2025 10:49:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859777; cv=none; b=UwqzVgm4q67QbTJxqGYJS59agKAA26stmrMkrJB8wByGdxgAL9HsgB4bwjxD+CL11/DgM+FRKrjay9OSimTFa9K+WlJGNeIUkuW0ICwRKC6vT2XtqBZMgHRlYfXrdThlkI8Mb69MJsVaUzUa0EpYGi1gL7dz1IJJ+0mc0Kv3pwA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859777; c=relaxed/simple; bh=eb1++42vJtab/bRoZe1IgHIlej0YZe+avuEdhyeK5EQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Qs5VlSWXHo0pikspQd/BCmIUnRVuMCPJp7uRAcbt0vjH+mRSO8ps+SpG7WHdBGh93y3YCBzYftk2QCCOwLU3TS7PDqfi4Eh5/df05J7VoP+EKNvwYd1BV6nY6g49BwDfohFnPYhK5aVShVwB8+7GCvOcHNkXdZ+fbMmYdLtZVXM= 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=jh1nLFur; arc=none smtp.client-ip=205.220.168.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="jh1nLFur" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57M8UKNa028630 for ; Fri, 22 Aug 2025 10:49:35 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=qXANymfI6Y2 KCwlYYSn+zbhAwc6YettxatxPwC+mh5Q=; b=jh1nLFurjaqVTSVK+fOJOqF/EVX qoa9jQ0zBtlW+GX2HxLIdqVKO1vcT55M18Tb/5UUYLm1r0yn9rkzLxqQG+Kr+tza Kl34/u1/ZaqWf7/tgQX9sBXxK6OIlHanC1Kvc4dxeZ1ZEJx7OIUUFAzCYnVOhLPE M6RPOxBxAAFXHlIaVXLJ7q7cxZ71TNiCEtLaGr4152v+QI0oXKGUB4HiQBgJeHTb jeqKOH6JzuA80vl/spA4CN0X8AoL3EpIHkdai3zlqi++ifeIaDZ/iBM4fJlGpM3t 4KvDsKwS9HlJ2IdfS8jwo5GTIZ4gZNnLh9ECgHKs5LkSIJ5/QQeVCeNpa+Q== 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 48n52crx4c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:35 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4b109c7e901so43670371cf.3 for ; Fri, 22 Aug 2025 03:49:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859774; x=1756464574; 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=qXANymfI6Y2KCwlYYSn+zbhAwc6YettxatxPwC+mh5Q=; b=PhDNlqppMkiW2sFxI4nvfnXe3I0e+0Xk9wSyyUzHsgBOmbtfLQercP9aLpwTr3L/13 3xUf50vbAdT4TG09AHvHD1743Kp+lUF6gZ7RZVwzr+xstBiGZQwBLpHPjt7u9dpI+Pgl 61j38OM7lY1zvrWt2J2tdgIynfCAOIYB29wE4xeUedOAarniatFoMDhrJnCSu2t69ASR cB+LInO5tWqezpandAjhw/1jd8XS2na58pNBvlLotUkUfW3+Cu+kYFjSj7Ux0S9ePnYS r7RZMoQ+4345STyG6PXq1V8xkbLBp7Ad/A2alaAvJojonUb2MamFhWjmh492lZ4pEsoI idKg== X-Forwarded-Encrypted: i=1; AJvYcCXg9aDJnMX81jx2JB7T4oJ9RKc/ERd4USTozCuMdFiZ7ZQdFyOBecHqEw3J9KQyGlwnxV7g4DoN57ERs0U=@vger.kernel.org X-Gm-Message-State: AOJu0YzRnD+um+uyA+6yoAO2FIaQW70WHHgMh/M5qUWrmmWXkVYRuLPO QO01OgT+72anb/+HkkgWKO9kdMGTF3jQ5TRLLHmSZMGlGI9NPFhD8fo8zNTKu9eCNR78OFZ8mjC oYSeDN23e/qVsRxlmfSdEBIz7+oiiFQf6asOwtRzdNKgfOoGlpmi8MlXUf3k/CI3umRM= X-Gm-Gg: ASbGncvbyls1K2AlJf3kumwAk/MurerCG25GTHLSKqT1Z5APCOkyDIDxDX/EXTZhrDj hiXkWu5ehWupfdUloK55aBmkaTJKZU20mIY6OZNVLFb7ZX56A2L5EYrcFIfhYUPCgaBaAerjnZg URCJCuZkWJqP/XYpadAxacKLbGtRjLXt6cu2ojP59/FQV7i8Yvpf93+3vRg/Z02FxCyQUwQvI8P vwbNdQezJ9uREGq36MqTrEfJ/sPPZ6dbKX+kXy0Boe0aW36UQOnbi9s4JJ9Eh47NzFXmUnYxNx3 oYz80TP1xGzWIBNAaPHXnQUSTNPhNQs2c3+f/9zORY8BvGtNr7K4uQ== X-Received: by 2002:ac8:5791:0:b0:4af:1712:acc9 with SMTP id d75a77b69052e-4b2aab3dbdcmr32627811cf.38.1755859773761; Fri, 22 Aug 2025 03:49:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG3+e2gNtbKC+jqpuzA+86WI5aL4wGrGXR7knhAcPNPO1KrFKtvHax4kAeIbXuuHCS6TDpo+g== X-Received: by 2002:ac8:5791:0:b0:4af:1712:acc9 with SMTP id d75a77b69052e-4b2aab3dbdcmr32627471cf.38.1755859773123; Fri, 22 Aug 2025 03:49:33 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:32 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla Subject: [PATCH v2 3/8] ASoC: codecs: wcd-common: move WCD_SDW_CH to common Date: Fri, 22 Aug 2025 11:49:22 +0100 Message-ID: <20250822104927.2621866-4-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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: S3LqG1UxnSER6mkKOJic9RKxDmhPqdSD X-Proofpoint-ORIG-GUID: S3LqG1UxnSER6mkKOJic9RKxDmhPqdSD X-Authority-Analysis: v=2.4 cv=Xpij+VF9 c=1 sm=1 tr=0 ts=68a84b3f cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=AbvtZVZmey0OcoHPdAYA:9 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIwMDAxMyBTYWx0ZWRfX57WMhBnsIMts vzpjSPg2kYgh67frotlvmFiQS6EXIDy/GosXSSzANkOxPsNbYGY9KdmhFMCSqtrQuKDsRKf6Umz i3BtdyyFGe4mhDfvmUxdWHucTVOzXvIK2Ute9Og/kiOTDXBWBlnqQezR/Kmdxlw5v2Vsnjf7t8B cVdSBp5ZS+pZ8rAnxTzAx8XztkINpXbYqwtrTvfq70HDhiPcYWMFiTHtNDX8gE5QNQVECQ0foTf LQFfgIvEZVdhEsBctNdk/n78XzERW1SZ7zoVGy1MSwhSE/shxN7YQtW7a/U/9GUE11jwwlWfcSQ 9HXeEWr3wIbqvd14g2nvZXQH88qnFXnzEh1UeOzLA9S6SXakYU/sUnumYb5IcUFKldd+T4d5rV+ BaXJYgOhff9Ts3JVOCb3QGdSCMe0yg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 lowpriorityscore=0 bulkscore=0 impostorscore=0 adultscore=0 spamscore=0 phishscore=0 malwarescore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200013 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 | 4 ++-- sound/soc/codecs/wcd938x.c | 2 +- sound/soc/codecs/wcd938x.h | 13 +------------ sound/soc/codecs/wcd939x-sdw.c | 4 ++-- sound/soc/codecs/wcd939x.c | 2 +- sound/soc/codecs/wcd939x.h | 13 +------------ 9 files changed, 23 insertions(+), 46 deletions(-) diff --git a/sound/soc/codecs/wcd-common.h b/sound/soc/codecs/wcd-common.h index 08c8e7ce9814..ee101f8547d5 100644 --- a/sound/soc/codecs/wcd-common.h +++ b/sound/soc/codecs/wcd-common.h @@ -11,6 +11,17 @@ #define WCD_MAX_MICBIAS_MV 2850 #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..40c6896eb781 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -21,7 +21,7 @@ =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 +32,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 6d77cbcafa70..678e4052a255 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -393,7 +393,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 a6fda63d7f98..a37962c4cef1 100644 --- a/sound/soc/codecs/wcd938x.h +++ b/sound/soc/codecs/wcd938x.h @@ -588,17 +588,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, @@ -650,7 +639,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..b5a35c3b22e1 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -23,7 +23,7 @@ =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 +36,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 ef8def695219..6bbdfa426365 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -412,7 +412,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 f587cf22f86f..0ee0fbb49ff9 100644 --- a/sound/soc/codecs/wcd939x.h +++ b/sound/soc/codecs/wcd939x.h @@ -845,17 +845,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, @@ -910,7 +899,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 Fri Oct 3 23:01:38 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 2CD9A2F999F for ; Fri, 22 Aug 2025 10:49:37 +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=1755859779; cv=none; b=XuaW9r3m+y6QdacEvakf5vfsIHOjLjl3/kn8uFgUSiI5kLaI0VYgLa3nGJSRY0CYaujXiFYm25sTtlSGg6rbsRVzHzWM6XvC5/z4akVK0hZ6F8l6gOUrfwovF/JEsADqHT2/9Apu1+fwI/LfRe28hG4QaOVnBwaJnsQUJZGxP1E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859779; c=relaxed/simple; bh=rX6mbFXmiWuR0WOt4Gj3YwAIPY62xld35Tev0r7nSXI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PjpVxNo4lktTauAYEPktw64+luqEaWrWiPNIztrgbyGCpth3HX5v4wqvTJN5DVFFhNApkaRHrjLXu/e7GpQ+mvPxmQQ2R6NbrrQ+S+BhhiCkfXPn6TZ5sG+0Onm8sKppMaO44XMHN8eXQ9okoacFHsC+YSrlaMZRyqWQUZlhQS8= 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=hWPMesvr; 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="hWPMesvr" 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 57M8V5Ou012445 for ; Fri, 22 Aug 2025 10:49:36 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=Gvkamk2QPbU UrJhmFkaZd6WzufgyMIG+rGpkmfH8iS0=; b=hWPMesvrUH7zsF/L/V7pDx09rdL mVNbIHRzAqMBMAioMeJf0Q/azFsqX1SbwEy/g7BaU6KbRExI6H/rAkZVM+HxB37w Ne4am9z+JEp2xMMWrmsyQqbC31Uwa5B2qoBw7szpbqkP4FfRTGoAJbeFTpucqKoA 0r0FN5TWRUxVE+/MF+f/5vLR1ON1tPeGRenKUngUb5fCaSapLRKkHpCyyH5uMrgJ +pS7DZMtveF10OBe1cJWccKEXyYCmxRIE0G4+9T0GYXoQjOA8NB+2IpmD4QtDWVh UwdEhGSVyL9YrV+dxOrVoOCrP8zBCZ4o53cnY0oj2giZB0OOVQpmKDoi0WQ== 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 48ngt8er7s-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:36 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-4b0faa8d615so78790901cf.1 for ; Fri, 22 Aug 2025 03:49:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859775; x=1756464575; 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=Gvkamk2QPbUUrJhmFkaZd6WzufgyMIG+rGpkmfH8iS0=; b=uAdttOGZ0SF5SFii9B1nscZupxX/vx/oO4sNspTmFjNGLQC7c8KRo0oYoHtKL36ASZ QpRr0siESR77g6+L0R6rT+LeY4DRfNjPS52kcJL0/VlUMy4DQMpNXzDXSWP+evoOSsHI LH+M0fzXJD3V4pUf4h9//sdP0YjppSglg441hP1KtMUeSCxA5iU8hNjh2dR3Qr2rqvcw 4+d1nWpHEed+9r+b2r00ngDRydfoJomYQlz1kwaLlvaVJJ/t70AQDkna6GqHTB1IyzRF X/eBP7tKoOegksoollTs0wZAFiFNaxEIJUwWUDODD0q99Htsy884G/A7RxLb2xjlcpNo tgiQ== X-Forwarded-Encrypted: i=1; AJvYcCWsqsvCvFxm060YE0bpB9JpaoRsHG75NxRsrJDByfZltEPauXW1oSDtRjoXpAbVy0NmlpKaocPBTcs+gIo=@vger.kernel.org X-Gm-Message-State: AOJu0YzpBuMwOn9iaUyCkxKBuc6jfsaMLXXtSTkvUWN4X0wsqWtp1TSO ngRXHTsj7CefmUnHpDGRIWk4Q9JIXq6tDYnbcDNzsIB6OMG05duMC4IkyoHXYzgXcdyX77aIvYF 6092M4xTGNHouFMm+/uDlSbat3Tc0IZuuLCPIDAYhP1yOnDf3X3Czl7fgyfrnpzUuCoO+wF64pG A= X-Gm-Gg: ASbGncuBsC8+ivj9tmGWyn5Vo2p4EfBF902aHMXy01QRceFIPER5fsI1BfaejPvYH5c J2932gGgRfhqBu3emXhKgg0H7DvWxSYXovY9r3VLwpAn9lFUTtVjsDKcXdFeuUuT14Lx1iRX40D wET1WsiMS4kDk8D28ivjP9hJHwmehcLTBWk8g0a345lEMReewqkhXf2wnTfRjdg3oRZT+w5WT85 RfA77kueSVYzm8F2uIAGTH7+b5/UpCh7e4w7v9MdiABBHE7LNEK1ICU3YrSK8tMxcb+eidQVA2u L8y5KGWcLPWEQVNcOInttlnadkwpeBW3fFdpvYpZse3XsU17aLx+ZQ== X-Received: by 2002:a05:622a:1990:b0:4b2:8ac4:f098 with SMTP id d75a77b69052e-4b2a00fcd7fmr70271931cf.34.1755859774961; Fri, 22 Aug 2025 03:49:34 -0700 (PDT) X-Google-Smtp-Source: AGHT+IENBCYO+zCaK9Vfrzu0+xJ+X0RKS1I+T3xKBx/Int59QuZRo62XPmjlOPh9t3n87N6dEP7Cuw== X-Received: by 2002:a05:622a:1990:b0:4b2:8ac4:f098 with SMTP id d75a77b69052e-4b2a00fcd7fmr70271751cf.34.1755859774351; Fri, 22 Aug 2025 03:49:34 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:33 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla Subject: [PATCH v2 4/8] ASoC: codecs: wcd-common: move component ops to common Date: Fri, 22 Aug 2025 11:49:23 +0100 Message-ID: <20250822104927.2621866-5-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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-Spam-Details-Enc: AW1haW4tMjUwODIwMDEzNCBTYWx0ZWRfX86eBe0d3MN1+ aFJmb0YTTrbR2Xt7ndicdUyEa3CaYu98k0QnGYM4vkB+ou10yhVMU6OSjZH99d3MAarGTZrC7gK SUoGa3j9SP9UXoTN84x+vH2BWVHEQkH41BDKr06wDL46ePU1ZYhlOXL0f+S12WF1bAqTJNnZZ20 1H2J8AScfunOU7aJ8r/C/p/+oCWQ2MEHUOVPYId/TZUXdoUYhjsN+LPNRW0CLMRvl2ZpMJobvrz hqglhvtto3O1ufVJGF9+i+esjE1oOyAL2ydrpqP55Aasy9rk5/zhNuRh0pAoe+xyntBbXquERAu A6C3pK4us3YKINEjIw0NUUvpE5n5NxGHS5ufxlDMNofBcr+LXOUBm63bxPxU4iFKXBY5/RR9O3b 5UC2pnNhqdpsfowfX9I5A6Szdgg6zQ== X-Authority-Analysis: v=2.4 cv=c/fygR9l c=1 sm=1 tr=0 ts=68a84b40 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=eQjB__F64b99YC4tFhYA:9 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-GUID: o7aGWv9viIGaamxMbnDABaJGMb6TxSwg X-Proofpoint-ORIG-GUID: o7aGWv9viIGaamxMbnDABaJGMb6TxSwg X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 priorityscore=1501 bulkscore=0 lowpriorityscore=0 phishscore=0 spamscore=0 impostorscore=0 clxscore=1015 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200134 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 dffb0431a48c..0c1ffa015403 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 @@ -62,5 +64,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 ee101f8547d5..deb78241236b 100644 --- a/sound/soc/codecs/wcd-common.h +++ b/sound/soc/codecs/wcd-common.h @@ -29,6 +29,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 40c6896eb781..e43d6ac1c913 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -1181,22 +1181,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) { @@ -1261,7 +1245,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 @@ -1279,7 +1263,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 b5a35c3b22e1..df71d7777b71 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -1377,31 +1377,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; @@ -1465,7 +1440,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 @@ -1480,7 +1455,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 Fri Oct 3 23:01:38 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 D07092FA0D3 for ; Fri, 22 Aug 2025 10:49:37 +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=1755859780; cv=none; b=e+9QqzsnpW3sIAOopSKMJWGYG6YlRv1HfJCYJbXx3ZrIc0yXKyAXUaqhrItJk7vxFGV1M0Mz3adn9TOICftD8R3FUiCsqcFe1+w7MKmJbXna3eoLPbkDClAN+RrcDUIzSRodL3ELWjJu87jNmhVu9UYLdlkj/vdRpQu2cWrV85k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859780; c=relaxed/simple; bh=asxvysqqAjgkKstONlIrpBzxu2GRO9SXusBJVqCmX5s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uxHZhSiMlS6jq8oIsSPbLmNYtaxG7IOxcM1aEOQDIbhy0e0Ke+TzVuROzJ6/L1MqIZ6V4bg5ghxy8G2gM8516uBzO+Q4L5I+fexWetfLqXl9u46QOr1MpKSlT7dyRA5E+NFsjYw7xT//fwktScp8gAAdQZPX+8PMClPwc5w+AQM= 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=hO9XTDjW; 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="hO9XTDjW" 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 57M8Uh6Q006837 for ; Fri, 22 Aug 2025 10:49:37 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=WCblndB5WM/ 7lEa4Lxpv6vxarG8aRPyFWHgtcjT569A=; b=hO9XTDjW1Eq/ynBaonlnvuT/TGr Lo/up7YFycRVngRSwP5vC211CGfK5jE5zLxNggmmdfGN29m9NZmEcRASQcxyEt1J 7G+seHnBPib6twNe16KSOePt7La0pNzw354AHv3oLGK5MCEPCq9DbWCsByZz4Fe5 QVh4jmia8xUbeUZWfbuK5VNDQyYKpV9K6Liel6PTIDci9TT6vSWB0cdf8SiKt8/L CjWJ+X3JitWdmRoYQw5fmQUzQWb0cqfINxMwVqgW8lyv3xOHbX4VeFyhZCKtzTWu fGylvbqfjTdXz+fyQByTfoj3Hg+lNPF3FvD1voNY7HMNf/krumTZD6+s6mw== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48n52dru52-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:36 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-70a9f562165so63115886d6.2 for ; Fri, 22 Aug 2025 03:49:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859776; x=1756464576; 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=WCblndB5WM/7lEa4Lxpv6vxarG8aRPyFWHgtcjT569A=; b=B37qBesBj7JFE+gwMs48Iizr0l+UzbvE+M/gQATdJF5hZmsu2ehYo2mDyiDqBZKJS0 tbuG1Hr1S4EebW/rCzPmg0AAFC6itx1xTp1V1vz5AWa2puSyIxU1r8y3QEQaO7dCXAMV lnXZKY29A2vfO+vFqQZW/Yor7ZKORQUk3y3LUGKiIpmVzrCY/Z1RHXKtEMyxm9+DiyjM NCAnyUu3ohzzBq1+viREMnNCTG5bdN2G2KBGr3X0RuZi3IXToUcQal1ZCvOOMEabJ4M1 g8ks0d5Ho7lbJuJ3Y5OF9+j4fJ/B/aRd+N+Nd6LSoqMskhgt109sr5GRdiPF8063sFNs QbPA== X-Forwarded-Encrypted: i=1; AJvYcCXI0ofc6shiOBGaH/UAU6lxLgneCrMvmW2ve5+xCHq5wj6ApY20vt6oMJCeSFFaZcCf1vNS1/8GaX0iSy0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz4NM4uMVkbxOUO77bMssRfPzDcjn7zJvgCGFpACytN765SR1DW NWqXRSMhnUBGDl2XFk+eYxtgBH8/Gpf0oxr7bfyCmj+vgXAfJ4P3aDklHFyBt97O4scAmOJ76sz DrRNT5SiXLazppx3bqrrfBTfzIMl5tnZQED0ksd+7IocxT8FUQHQQkJE8AytCP/ity+E= X-Gm-Gg: ASbGnctlxawtqN2gooUjWxxZrpuO8S0qmkeUYt4Bn/qpDkCtNG0T5qcPzf//yEYFWQG yHAjvpn50CDYHK8gjMcBRSFJomn/46YyV6eHGL9O2Gj/bxDwlek4wYAEFh+uvUI6aCbdPtFAFD1 k+U/SuzhZTkH74is5KA82w9TmMRiLEjbvdRTwxvudH9POcQ7REMPocrOnqZ9j9X/xuKiXt1Eglg Xy/WBtsyV0q4X/opHaIx7t9qzjXmwaxonRkw20BPhNxRffwXtUC6fvEQY9dCqML8/LfyYC3BPP3 jhbL3dW6x9jCQeAm/LhFPu2i9DEJ/wh4BSh6apeg86BGkb9fJ6pK0g== X-Received: by 2002:a05:6214:500d:b0:70d:6df4:1afb with SMTP id 6a1803df08f44-70d97259921mr28591376d6.57.1755859776104; Fri, 22 Aug 2025 03:49:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG1sltVyJoaXvdkN/CS1sTPSfuTTarGRljY+oqL1ag+7erN2DvvnbX/OYAcjAovJ7/4cO1sLA== X-Received: by 2002:a05:6214:500d:b0:70d:6df4:1afb with SMTP id 6a1803df08f44-70d97259921mr28591146d6.57.1755859775540; Fri, 22 Aug 2025 03:49:35 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:34 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla Subject: [PATCH v2 5/8] ASoC: codecs: wcd939x: get regmap directly Date: Fri, 22 Aug 2025 11:49:24 +0100 Message-ID: <20250822104927.2621866-6-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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-Spam-Details-Enc: AW1haW4tMjUwODIwMDAxMyBTYWx0ZWRfX6tNDO/tyFTg9 ufz1itayerrRqocqrIvONRxA3Z0CnhNEorWtI06AtTdimvKdCPBF8qL8fxJ43agEt8lkx5l709U gSVDKEp/PpqBnM6TNmqsrRz68IwP2jNuX7izQXXNK5BXK9vHUSy1AA90l2lIA49VZ6ErCJIPUp3 JjtowLyxiQVqOxG5CCFyK3/hqYTVi4ySkUA7g1Aj7+Zh3dYqzWYbIZN0ywJmK0C60P4fIwhn180 ueWWNj6jF6IR6sU8mOuAa0oTcKGK80/Ee50N8rFD0n/IMikKW8G6tSwbLxDGtsKSGH+D7MNDtw9 7T683wGTS3XmVz8Fd50iLXuQEnhNjz46JPKbuWurfFnFt18xCP/sZ5q1tVFloX0c5wzWMv1xMFt h+B4H+vFsr/iF2g8Oluqbq7VyuEtfA== X-Proofpoint-ORIG-GUID: NzcmNHdGcUqIs5Kuu_SO8dgLEss4yqFY X-Proofpoint-GUID: NzcmNHdGcUqIs5Kuu_SO8dgLEss4yqFY X-Authority-Analysis: v=2.4 cv=SoXJKPO0 c=1 sm=1 tr=0 ts=68a84b40 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=lWraB9NP_8A8gAq8GzkA:9 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200013 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 --- 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 df71d7777b71..2b0aa2108f33 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -186,15 +186,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 6bbdfa426365..ac45699ec067 100644 --- a/sound/soc/codecs/wcd939x.c +++ b/sound/soc/codecs/wcd939x.c @@ -3373,10 +3373,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 0ee0fbb49ff9..eba8205cdd0d 100644 --- a/sound/soc/codecs/wcd939x.h +++ b/sound/soc/codecs/wcd939x.h @@ -919,8 +919,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, @@ -945,10 +943,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 Fri Oct 3 23:01:38 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 7A82E2F90C5 for ; Fri, 22 Aug 2025 10:49: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=1755859781; cv=none; b=Tae31wIBECjWiMZcmNDLDNaLuOchlIhTrlhbob6fgdRRrOtmtlh5k/BgW+5JdLNABGv0fkqOLPjtWF8RtXF8TdaXI9GviqqHq0pTmUdRj3VHa/Ywf/5ko1zwqkyQJHm4dmbwnMr2T0txQspxCPE+2ZEPFvOhP32YY8lwXk08Nhk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859781; c=relaxed/simple; bh=gU1SLqaAPQRfFwDFQT/0V3tOXM0o/jut7U+hyYSnWMk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Hc3WPUT/Uix/Bu/UWulLBptR7Y7rrneHiu9W1DGlFSb5XBWVb1gs6bpnKzc0Lua94JjZCw6Q3Vf1BgUyfES3XyLf0aKRdD/rlY6xCfKhbOSPd2PZaeSbI4wDiQHaivm+HKPC70qVy/oPBP2X5UI5rqmP3sXN7oR1q61z4BnUznk= 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=aMjPWodC; 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="aMjPWodC" 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 57M8UKWm020877 for ; Fri, 22 Aug 2025 10:49:38 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=6WRdE5pc/KU 3jHiPoKjTCr5CuURCFbTk+NT8Fmcx9DA=; b=aMjPWodCF7ZKc5OmI3YvA2Ofc+Q +OYVAX40t9pQt9jHjpBtej5NAfkfVKIjb5pSLIbMUJdfrjNF9Qd6lB/tLiLuX/ik BDve64AgXauPewmaaOlBZL9NX3LB/pUqTvVkZy4/5JyH3HyvsVSmXljn7lv9tdRG oP2kEeosShVUf5/VBkhXKSqVV1XT3tgkSYOySOzTlpMNbwx42JXjavwE1F2bOCpj o7J0yNV7l05dsdVf3ZQq454365IQpBJxNKRFsdvL6RqvmcYOBepNyy7/+9n3FDpJ wZmuGLCnnSvlOyRCrgbtPIYYSHj7X2nO6SUU3scF3qg/lImF4jDo1VeMDhQ== 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 48n5290xu2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:38 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4b109c7e901so43671321cf.3 for ; Fri, 22 Aug 2025 03:49:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859777; x=1756464577; 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=6WRdE5pc/KU3jHiPoKjTCr5CuURCFbTk+NT8Fmcx9DA=; b=cW85N+mn/nvljmAQyiUalQdaNqHzNz/G4Ds8AGpfDXuAqImQfCdxANrmYpcC6aa6U7 bPcMyXqLz26IP/AFVVgACFz4USnkAQwTZHvGVyB5XOWpVfgDH39amOxjl0XEBIBbg1Pn heJQ6ySzUbabiMYts1F7tbtuCCYjsPALGMm+md/0zQoXYH4Au/2R11GzW8qtyF471PCa QRoUG9jnMWuHYvMAo2UUKdWG8EMPKpK5X5uQYli2iHldVr3AqLUmg9NEtGROd0ihYXnu 1Ua3JVUA45sE74NQMsGHDbYYnt0wVkBcxXXRC3EI/wcj/9hLKMXXh63eQQ5MHoA5wVZK tCIQ== X-Forwarded-Encrypted: i=1; AJvYcCXvjewD9jWxbj8Zkjs6td4Nmex9OI7VRfgVWBb0gt46MnS/dFkUULvEo5pfDRL/LLecbK20JLDZLWq0dyw=@vger.kernel.org X-Gm-Message-State: AOJu0Yz7pI1S3XxG8qo+4NnKADhQnu4BF94sMyDBfDBhEcYhVu4rGm5C mZZgX6GjVggsdzdVy2iWlsNk45jISKlXXTbtHUB2yeXim7CjZLL7Tg4pB/JIDOKPCUvcEOvClP4 G14TXIs9sE/MnJMuYH3/Mc7Mh9ngjLWCYgKgh8oGYSTmP2+iVJo8QZDnV0u4yqOj6RVM= X-Gm-Gg: ASbGncvTz5pYmSAJ/1AjDLf9VP2AKXc1iCK3YN9KcSNKyncdCRCKqiZFYAgXjZ8fp7Y hYbtRQIMhAzcyhrW7XpJKi1CAHZKce/JDEzTUsHQz1W+nTs68z+ObImrAFdyViktYn/nvd8VLuO G48kKqlJpjBBp97lTZux3VoIoi+QeK3ZV8hE5TSLcglKd3tB2BNtR4uqgnN58yv4gZNkD0ReS9w F5ePGpraAHOPlZoLdntKlgFvA500ilaXz1RYjIqYJugnOgeNbjiPvIYSuKHxmIktRLgJEUWCLF6 lgYy0U5pL/Y2E9ekd35339He5V8eVHIdDk0h8oRdDaOJX33Pe9WBIA== X-Received: by 2002:a05:622a:30a:b0:4b0:e934:85e5 with SMTP id d75a77b69052e-4b2aaa57331mr27169811cf.5.1755859777313; Fri, 22 Aug 2025 03:49:37 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG8VNQp2/fHLYaDtt2DLbF2OoVMMyeBHVbV4cL2dGx0c/0Y2wkJo8wG88KZ1GiCYbiuBkfeFw== X-Received: by 2002:a05:622a:30a:b0:4b0:e934:85e5 with SMTP id d75a77b69052e-4b2aaa57331mr27169471cf.5.1755859776637; Fri, 22 Aug 2025 03:49:36 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:36 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla Subject: [PATCH v2 6/8] ASoC: codecs: wcd-common: move status_update callback to common Date: Fri, 22 Aug 2025 11:49:25 +0100 Message-ID: <20250822104927.2621866-7-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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=I4c8hNgg c=1 sm=1 tr=0 ts=68a84b42 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=sWKEhP36mHoA:10 a=EUspDBNiAAAA:8 a=lLZ5r3BOYuU-AXZT-04A:9 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-GUID: Tp-iSAzdR51fHEUqdqJ1-IFF7T3qdtbo X-Proofpoint-ORIG-GUID: Tp-iSAzdR51fHEUqdqJ1-IFF7T3qdtbo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIwMDAxMyBTYWx0ZWRfXxkn7IgUt5x8X ntk0p0UIjIZoiJxBkF1zzqNTcORQKRGMcHq3389RyNSXvuAj+Id3NRCYte7RcMnTgtst4z5Sr5x J6C4RVnZ71zHB4Fk8UxZP8hrIMkBwfzjTfiG+9BR3N6FbqbxgXnQCjZeKM0Y2KRayQsLRhiJ1y6 yLBX1KimQBI+kT6pVz/HADfh/0Cj/0kP9pHQHBNMgGlIoAN0Kbd9djfCuCArmBXKgc2Ys7NK0Oa c8hLDKmZOrWgacwOMVNRLYGEzG0/FrcaM/D/NW5gfprk+lR0Vbnb2tUu00PuiUDVNVT4g1lDmtB 8tW+PxtEBt+4cIjh8H6RbTz7LxiWfDgkcHtW2tu1OQ3GIN6UzE27aZNXp1D3FxygMa4RedyFD99 l4M8gia/n4ylutfjxkXFpfxseZnyiQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 clxscore=1015 malwarescore=0 spamscore=0 priorityscore=1501 lowpriorityscore=0 phishscore=0 impostorscore=0 bulkscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200013 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 --- sound/soc/codecs/wcd-common.c | 46 ++++++++++++++++++++++++++++++++++ sound/soc/codecs/wcd-common.h | 10 ++++++++ sound/soc/codecs/wcd937x-sdw.c | 28 +++------------------ sound/soc/codecs/wcd938x-sdw.c | 41 +++--------------------------- sound/soc/codecs/wcd939x-sdw.c | 42 +++---------------------------- 5 files changed, 67 insertions(+), 100 deletions(-) diff --git a/sound/soc/codecs/wcd-common.c b/sound/soc/codecs/wcd-common.c index 0c1ffa015403..2592e8ed2d13 100644 --- a/sound/soc/codecs/wcd-common.c +++ b/sound/soc/codecs/wcd-common.c @@ -9,9 +9,14 @@ #include #include #include +#include +#include +#include =20 #include "wcd-common.h" =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 */ @@ -89,5 +94,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 deb78241236b..0cb6365bea4b 100644 --- a/sound/soc/codecs/wcd-common.h +++ b/sound/soc/codecs/wcd-common.h @@ -6,11 +6,16 @@ #ifndef __WCD_COMMON_H__ #define __WCD_COMMON_H___ =20 +#include +#include + #define WCD_MIN_MICBIAS_MV 1000 #define WCD_DEF_MICBIAS_MV 1800 #define WCD_MAX_MICBIAS_MV 2850 #define WCD_MAX_MICBIAS 4 =20 + + struct wcd_sdw_ch_info { int port_num; unsigned int ch_mask; @@ -32,5 +37,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 e43d6ac1c913..9636501c90ac 100644 --- a/sound/soc/codecs/wcd938x-sdw.c +++ b/sound/soc/codecs/wcd938x-sdw.c @@ -19,8 +19,6 @@ #include #include "wcd938x.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)), @@ -141,44 +139,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 { @@ -1176,9 +1143,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 2b0aa2108f33..8bc89401beb9 100644 --- a/sound/soc/codecs/wcd939x-sdw.c +++ b/sound/soc/codecs/wcd939x-sdw.c @@ -21,8 +21,6 @@ #include #include "wcd939x.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)), @@ -186,29 +184,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 @@ -219,18 +194,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 { @@ -1363,9 +1329,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 Fri Oct 3 23:01:38 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 DC2842FB600 for ; Fri, 22 Aug 2025 10:49: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=1755859782; cv=none; b=UWrQ2opUdf5xScWHuUa2ugqGigXPWKplnuAwBIk8qYS6oMg+bUx1RTMefvmZr2c5Os9GtiX14Bca6Pz1jyVEGmjaasf90uNP3+pK/G/sQA3qSPpub/vGIzMQNiTcGUmp+Q1SkV7USRIk5WCDeYJmFGYgkocQxMQcU/F/F7bsbX4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859782; c=relaxed/simple; bh=ZKAlgxst8/m0craC1V7C11GB9Q3nugJsZw+QLPl6edw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Rt8aYZQnSfLrn/U5q7DOXJq2mERGcrAU6LyCivEyfqkxn6D7JwfP/imdmerJquew/pRikCCllqKEsGq3zIoq+sQJYD0CoamvOTCXYeuvr0jCPD5JkRvmHhMvMjHx9FF0Jfk2CNbXt1oYbRndFe03WDEOu1wzykv7qCHMynQJ+qg= 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=pGBb3j3L; 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="pGBb3j3L" 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 57M8UTAE018096 for ; Fri, 22 Aug 2025 10:49: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=ITmsHBmmXeJ H+4FSSoYGod19htesPhZ3ltd5XDG2GGo=; b=pGBb3j3LEe8rzER7Oik/zqH0Tyf jPeT1pQ8yT5msGcifOR2Csn8zL0noadBg5zvJ2F5LfdCv/OZkEAwmR7mLZmhji8t j9iMdBPR6GNlRlkyIl5iL2AVOnT9BR0LJaDFzhs0SpMzl/v/jjS3/tisWOs2YwQG mdY/TQTJIml41iaymUHIyF3eH/Sfsr8XewrggE0M6jZZquNlI5RiZ3h2FscrgnAe 2Ow69qOiGHRK0/gqda5OrxsRPRybcpLo/ZfQvW7dwGWniDWeMOL+8ZML1uLWkBVy HfNSyvNfC+Ji723BGvCsc7cDLsew944Hj96nch15uHCfhKD7tMTt3l4UrvA== Received: from mail-qv1-f69.google.com (mail-qv1-f69.google.com [209.85.219.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48n52b0st9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:38 +0000 (GMT) Received: by mail-qv1-f69.google.com with SMTP id 6a1803df08f44-70d93f57c42so20736696d6.1 for ; Fri, 22 Aug 2025 03:49:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859778; x=1756464578; 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=ITmsHBmmXeJH+4FSSoYGod19htesPhZ3ltd5XDG2GGo=; b=YGTXAakmRsa7JPCL9g6JfYnMPAH5sZvU86NCaSsFdfB/OFggDXR0B9CiF1IkpORcCW rQJ/wRhdwgFoGnU23el0MP1KrIkj/yndTHiu1XEatNZiwPhvGnv7MOlBKoJgAjJVbfrp Qxm5DgA7ZQNX+oASXQWi6uPcHlFoUBmQFmJ/sRSycUCK58ORXdJh7RXI5P6SC6MlEK04 bwYSmEIHuBni/pevAVPkeVq7A9/yKcSyce6zbx2EW/e3sApgZOzCjxKMKhNcRpRjaL2x YLL8/Ts/F0O5GOxv/bqLEn3lIv6/bf25f6u3Ul2fYDCrZogX2HWM9tT68tSeOG76/+p9 4ShQ== X-Forwarded-Encrypted: i=1; AJvYcCXKDccVl++LrUsXx4jhwXaaRcebwJ7gBX/B+m5uCY+ere7QEv75H7tYRG//qoTc8qBJk6QXYEH/TeelgHg=@vger.kernel.org X-Gm-Message-State: AOJu0Yzy0joSSpBx2qeTcCq3x+7h8Ozh0LPAf7UObv4phcDfwy3qquhP WkYyEpY1l/dqWG05Pmmnaf2C1njznLmZNpKB3MIOFcuZZtCiI2elxUrT5OiPLneuuCSlUGdaGje +4En01Jmxzg4EdXVhMIzldFTS5OV78jU6zEJsi/4yU+3OmcA0tT2bUR+gOK+0d9LL/fs= X-Gm-Gg: ASbGnct0QVpnb9rJsqlq9Hqws7rZ6F8Iov6zBjKA2hG9t42gqQBYzKwG4AHRBRvPojC L19ZnqmfOjFkq3Od6RSzTuc+jsLS5pGE7K0lrFweHtvUkhIdVxCpQOu/gQ/qXxBCk5ntL/fmfoO gdUE1i9ko5jEvD+ZVMp4G9HFIXx4YvAhIeghDIkWII60xPGSEM9UrsXAsrUgXtEgYXmKPwR8/8z QSWQo/BNVafbUupQMCoAlpWu3IcrvEtmckGRMmP+EX/S0pmiqM/FxZcSIvPlQy/7a0ixMYU+W5R 6Hhro8ERbr1QIlYLmtchouL+jYoJcArDJkNe5yL6xIpjQWCczh8Yog== X-Received: by 2002:a05:6214:4505:b0:70d:9951:32f with SMTP id 6a1803df08f44-70d9951052cmr21887246d6.17.1755859778142; Fri, 22 Aug 2025 03:49:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFriKc6/N6ckQKdexpGrJyZySwTpjJo/jdMFtdFzr5N1m+sNgwNkRxbxRR0ZytSIN41749mWA== X-Received: by 2002:a05:6214:4505:b0:70d:9951:32f with SMTP id 6a1803df08f44-70d9951052cmr21887016d6.17.1755859777555; Fri, 22 Aug 2025 03:49:37 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:37 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla Subject: [PATCH v2 7/8] ASoC: codecs: wcd938x: get regmap directly Date: Fri, 22 Aug 2025 11:49:26 +0100 Message-ID: <20250822104927.2621866-8-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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-Spam-Details-Enc: AW1haW4tMjUwODIwMDAxMyBTYWx0ZWRfX0WCvBG///kXv u9eAu2BSknxHb/xdG4hUT6Q5KKyg1jF+dr3r0F90HKeJNm2C3oK7PafE4/JNUUX8xfSXXLiLVpE Ld8Y1sVUIUNcOpN8TPKTPWcMe22i26pZvNQtt7VzEbHxkR/8ATWWSwNV+I6IkiPBMoYFhXIaFvT RkSgRcLNPMu9teEV49A8ykKLQWZ3oLdVcbNjW5FsAkdFUqzCRfnTkzqCzeXvFikjTV5bM+ubyC5 /gAXksL4pDGANYtEI2qvGmyU1ixPxj9B9SkCxtTnfawqFscSp4AIf2T7xXXL7xOD6Y4XkYqf9iC 2tK2++H6aQVl+b8OzP9NjANMjPWThYY3qUY3EcrP/+0/oAIWaTav6f9ZayFkWT0MumaTNKZ+jpf +gKP5Bzs5opI0ryCbVinyxafw4SWrA== X-Authority-Analysis: v=2.4 cv=TIIci1la c=1 sm=1 tr=0 ts=68a84b42 cx=c_pps a=wEM5vcRIz55oU/E2lInRtA==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=AeW90Tct3s7Q8B8mPpwA:9 a=OIgjcC2v60KrkQgK7BGD:22 X-Proofpoint-ORIG-GUID: 0lPEYF64xXjsY9KexaYUVStrWbCOdciu X-Proofpoint-GUID: 0lPEYF64xXjsY9KexaYUVStrWbCOdciu X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 suspectscore=0 priorityscore=1501 clxscore=1015 phishscore=0 bulkscore=0 impostorscore=0 spamscore=0 malwarescore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200013 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 --- 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 678e4052a255..70302de904dd 100644 --- a/sound/soc/codecs/wcd938x.c +++ b/sound/soc/codecs/wcd938x.c @@ -3388,7 +3388,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 Fri Oct 3 23:01:38 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 84A3C2FB63C for ; Fri, 22 Aug 2025 10:49: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=1755859783; cv=none; b=KX/98GDb3ogzTFt9r2c4BWUkDVo+lDCuJs+6oXJHVom6wkMcH0tKfpa9IdmIWDOPPG+nFslCVGy0OSWPOAcPdC+iEmK5hDvtN3nZ0o6JS+Q5PPHoS6dnEPcRrz1EB3TDE11nJJMR/R0pp07SSXqjN2RtM4+FdrJUW8n7VOM0m6k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755859783; c=relaxed/simple; bh=/5tS1Na4bhQKzK4q//dUm4k/XvEXFSaGVZ5qLzvaXmc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Qcfkmvns0hnMy7yeyx8r3y+3yRVZZN3uoBiZmLczcbvP9YKav9SFqzSs0Zrcn39y34FXJP94mqWojZO1nWibMWE7yt+4KdYwqbVawHpM1IJq5nabr+nc2mtg/NZYYGhgGW2ZjZPgPcb3h28T26GYqvXTZChjmCfmO8XjzlnZGcw= 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=DEAQ/hzc; 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="DEAQ/hzc" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57M8UbxN006819 for ; Fri, 22 Aug 2025 10:49: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=mTLagKpBc2r L9dFOYPZ/ZlF6mHj5oBgr/ydkac/ztb8=; b=DEAQ/hzc5IuuC1J0CWynQFpe+K6 GfZwe/49TGEvWBu9NmyRhCVeiL1zHStnGwQ541DwTVKBAfYPQo1mkk5T7TA8H5a0 JWeP5SgXQnoF84nJ1WuI9MiQg4m91hdthwqSAox8kC5Wo4ms7F8sQpM9/W/5kn9E t+2d+zCgJQnyP0FAJyqsS9AVGFqiMNmZEbj2b/ViSVl3qbXZOxWsk+PfTXVcqUlk DlyGOzExVIVJpp/i/ervIIuMJbB3vjeiDj3JAWGPmaXEYo+/Dh+1R2LKmEZaF4Rm wei7ShHDF1KWjpegQLkYYn5K+NPydZPF3b/ktqrYtSoiZ3uq3e21OmVDigQ== Received: from mail-qv1-f70.google.com (mail-qv1-f70.google.com [209.85.219.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48n5290wrt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Fri, 22 Aug 2025 10:49:40 +0000 (GMT) Received: by mail-qv1-f70.google.com with SMTP id 6a1803df08f44-70d9eb2ec70so2490906d6.0 for ; Fri, 22 Aug 2025 03:49:40 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755859780; x=1756464580; 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=XUyuZFn7l09XwKtOhbCkI0dAs3O+B5sdkqbwIeCJVxpxdZaiYCBmOC2IK2vyGIViA0 w5MwpyJUEx5C40j0whSx70SzITVRZRt81J7LFrxfSkf0RngMrRioJJelyzSdno+TrxAr R873Z31xPdEGgGTwtrcDJwLV6T4ANsfAF9/47muAS0RKXVw+ErfA2PVbqZgGTBpBvmE7 0/2qhPvqO3SLjeDbW91ZU7oHeN5TnaGmOmIgpMzEDkg7Ti+iOhVOzp1DetlAU2xqTlBX mzFnWp0UY8kEkdA0fINdE6ZP8LJjUyFrTuqOY0rv8jZS6lVyc8YNZzgGg5HTA2cQKsYP 4i6Q== X-Forwarded-Encrypted: i=1; AJvYcCVlAzGPrefVWFDYGTOpwRpjDSaPzAb9zaTuHw3s0zt3Uh0SL/IiOBT9UkDuTKa+WoNC1astUr7Dlrtz5AM=@vger.kernel.org X-Gm-Message-State: AOJu0YwGIFxutgwVyoRTFhyerN+v5v4SNOKwqWwYyXfvrGXgRZ5qAa3/ njCY1SUEweP+7FWPeoVMjlWpzLGawMqjpSU42/Cr/hyejvSTn0M09kaca2x5vAideVOWM1gzT8s r/rV/xmbsTZlMXl9/KEni5ln51FHt+8o1xYqlrS4zUfSsxRW5SE1Txr+z1DFo8jSmuow= X-Gm-Gg: ASbGncsBwTKEDmoTe2d8fyDalfWzGoWicKSeiI4TtGK0eDSVuETiuX8yJ3fIOVcyps0 w5NjpGmunh5gbIzfUFTmHgm3umzXe9lTXzQxuHHL7WNk64pQWhtcO6papfx2Wwo0DxbSPYe9T5L 8xaNeSnXoMmZH4ow5FVe9pFkv7OSr0eze8v4f5K/yS2tsoZ+Jx8sv8bBZ4qoJIXfprxGWZLxFWS 1yVxUI4SDH+XEf3RuHieR6FNTrfUsbijkZJUZ3ezobf4lseowHaLX/SF6EteqLJFW541idwcClG Tp3S3xfy3Xt06ueea3wBXu5SIiCd9dLVr8OQf9qOqS4xML5mOxZvoQ== X-Received: by 2002:ad4:5bc5:0:b0:70d:749f:177 with SMTP id 6a1803df08f44-70d9738f13cmr22244186d6.33.1755859779919; Fri, 22 Aug 2025 03:49:39 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEq8uCn1ut3eJy6YOI6AW0csMB8mZIwD16SLQFg3+7MgJapILlN9oofWVuaked14v2/lFDKjw== X-Received: by 2002:ad4:5bc5:0:b0:70d:749f:177 with SMTP id 6a1803df08f44-70d9738f13cmr22244096d6.33.1755859779504; Fri, 22 Aug 2025 03:49:39 -0700 (PDT) Received: from debian ([5.133.47.210]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b50e4249bsm31367155e9.25.2025.08.22.03.49.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Aug 2025 03:49:38 -0700 (PDT) From: Srinivas Kandagatla To: broonie@kernel.org Cc: perex@perex.cz, tiwai@suse.com, srini@kernel.org, lgirdwood@gmail.com, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, krzysztof.kozlowski@linaro.org, neil.armstrong@linaro.org, Srinivas Kandagatla Subject: [PATCH v2 8/8] ASoC: codecs: wcd937x: get regmap directly Date: Fri, 22 Aug 2025 11:49:27 +0100 Message-ID: <20250822104927.2621866-9-srinivas.kandagatla@oss.qualcomm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250822104927.2621866-1-srinivas.kandagatla@oss.qualcomm.com> References: <20250822104927.2621866-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=fpOFpF4f c=1 sm=1 tr=0 ts=68a84b44 cx=c_pps a=oc9J++0uMp73DTRD5QyR2A==:117 a=ZsC4DHZuhs/kKio7QBcDoQ==:17 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=5pqs-Pqnn3KeH4UlXPsA:9 a=iYH6xdkBrDN1Jqds4HTS:22 X-Proofpoint-GUID: WtiEd3lxciCe5zzHTnSwqgPMTavzjXEZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODIwMDAxMyBTYWx0ZWRfX66morVH/nbS4 /xeiKz+zT8NVMBjL5/3Ad1SvuHA+KkvET85/46KWVTuFOKDN6LBooeItZTFll/3Sb8aUJEeHHpU e/jtHPCCb37umMjHNCRBlgAepYqt2OUGEZec32Bme+4l/eSZeaJ31fxsYO8o/lRkjdvIPvHcgUH XQNQELYOI87uBFtwdRwMV1RG2US9DNacz28k1ttkyHCQY5vzlkSsSB6hAmLDk8hZoaL7hvn6ZSw rVnS2uC+pMHYYhx6yCYYa78R4zaTqd4ji5DAtq3no9ziEQrmxM0pAqzpNDditUsobOPpdD+SXZ3 4P/6USEUmHwfEqXktRytZclBszdubUDbQlMxAwUjSLcrp5uAyPOK2qdHAyFPNpxy/E2uP+KjuHO psNGqvA72lyrPzcAm/fwzUPWn6pd0w== X-Proofpoint-ORIG-GUID: WtiEd3lxciCe5zzHTnSwqgPMTavzjXEZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-22_03,2025-08-20_03,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 spamscore=0 clxscore=1015 adultscore=0 suspectscore=0 bulkscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2508110000 definitions=main-2508200013 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 --- 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