From nobody Sat Feb 7 04:47:01 2026 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 B0C6B41325D for ; Fri, 6 Feb 2026 17:41:32 +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=1770399692; cv=none; b=ch1CzSwk40BjDJXtHeuW8Y3+eEGlc2pZH21C7tK0GV9YYe6Co7ZHPg1rNQLG8ml7mSZojllew7Do494CW2vaeCmSvg1exjOeuL9qJ3rpJrBYW3hcrGtfxFoyPxRKET/+vMiW0KBfW+W3uKm81M2Zo1wu+IGmx70mEUJ3i3FIKy4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399692; c=relaxed/simple; bh=Eck/D6KmwOrBysTJIIaZmSoFBAq/RlW1moTUSu+Xl3I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WCW4QVH/5l7rPwkLCjt2KPmpJ9TELnECqe15kCYwo4xSSEBM9ZwqnZfipEbbK7h3ZNuEA/GCh4sQT9VDYUi9E8kV4OSzcmnYjljMSYd1Cj5fqOcNDEBRrBeJ7TB5JMjr6mMdTQjyouVoZf1SJSGqfcmfv2wFManU5dlChTNsbxM= 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=nAzfPwn/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jh00MLDl; 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="nAzfPwn/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jh00MLDl" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616H5P5Z695342 for ; Fri, 6 Feb 2026 17:41:31 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=KnpiwG0d//X /Doe7m+7TdtdTnhg6HQ3OqoiGCkLu8T8=; b=nAzfPwn/nwc85nk9AjCU7xRDEWB VpP+SDat/vQvWsVKF3D2qi71cA1E7HNqHnm4nEt6KMTvAoLTafs9VY5v7W0AnaX0 XcxmortcqPPsaFZvn2OV2mrthnrVkdsuMW4sFH86hCLUnBm+z/1ujsqNbL9gJ41y ZbhVj4sN1Qcc3V3nxLYGZlud6+s2YSVQXUYw+v1UO+RZNiRwjM+9/tAaJNNfq2Nb R6hwOlDBtRxjjM2xw23xSpcJjHiD3fxn4waAmAsneumbC4yTfePCGP57GNXaxDUt UIkTdMuo8cufRhb3wJiiLoKmpaHo3OP/hEqayU5NqMEz/Izh5nbZdyEYKTA== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c53qvbcpm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:41:31 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-34c2f670a06so1850323a91.3 for ; Fri, 06 Feb 2026 09:41:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399690; x=1771004490; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KnpiwG0d//X/Doe7m+7TdtdTnhg6HQ3OqoiGCkLu8T8=; b=jh00MLDlQVPpI88DL5X4vBZRcJCrnAcjMS6eWb8ys9nDimzx0OL2ac5tFQvk0LbWln VKwLfVhJHdHX6BZLl15dPADYS0Q2AC9jHSQAIYtd7VcTJXX16eo6KM0/XV9gjHNq940E V5o8g7/WydSs6gklf5CsJkhKEi8MHyds8s8jSMHZ2HPkPdHfjMyWD53lLH8Fr0J67m2c uLBtByWZJQQzN5zxntqHrlwB6HEBExnBGwUIWxy6q6CyhZnLRAOiguYVZJzkXz/15FLp 6x+cs1Wbx59Howc/5fzh9YsEK0Doc+fsksgpBFGRB5N2Rvcuzknr63etS1Al8kjNQ1B6 rztQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399690; x=1771004490; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KnpiwG0d//X/Doe7m+7TdtdTnhg6HQ3OqoiGCkLu8T8=; b=NTwCYK8A9ozn+5PcxO4u96k1xNtiMP30W4M50wBgxbVf/F2AvX1cd/2DepOzNdshNw o1D5CQTlr/khlmU1JE4nri9UKOOmKhCNA5+/FIVKsRgyvynTH5JEzL3/XMirKDiz7X8P VRybzxoErZbwIh8mFpEoysfChb5JTMalDG0JrMm8+BnaG0KsMMomQ9PDXithd+Zji8lr OLw9XwS4we2SSTPuF31p8suB/VO9YSjSsmOS1QbWeHYqt+UMolTSSFJ6ervb6pdKEa5n F7TzqG/OyDyndpRovpV/vMIVdVT9xzsow4okZmuf/KImqBLIfq2wOXfkHM0iFSvP9LrG yjsg== X-Forwarded-Encrypted: i=1; AJvYcCWqiHkhm4mkdnPujSLGvqpHfkJd6Hut2LyJjCnUKFaSK677pUMWLl6Ehj2rs9DTQEJ17ttyjRczsA6xBbU=@vger.kernel.org X-Gm-Message-State: AOJu0YxsVaV31vHKoI5YBqNeQG5u8mI9qKL+tESRzukd27KjHF+SM95q raq56/tCewHx6wUPSiAkoSpKPlA1mzueFIhNaQ9cyL3Uq6mWU5nh9pWBet16Rn3G9E63pRDuFZ6 6YMq0eEn6HfkFrau7kM5gbE7E9DBfKeu1XXLn1lB8MSTXRaXYmJ2UQRnLjkt9+PebpcRsDrufhI 4= X-Gm-Gg: AZuq6aLEHB4ygPzeb5LkSmobfaYLqRKQAT7BbTo2vTrRWEj3zrgIGzU+bEb7/kBAfdp jMxmrSSSvB4Aely7+Wwk+6q7GV4Uen5PhyZrUk69mfzw6ZcCfjCp46EBOk6A9gv5LPTWuDvOsC7 IRjQida1mxGDbMayo0KJt4th/6TRc7aAXIIAgNttZECbWrmDeYdL1n+Znc4jTdpMJNpVEITH/Am g5rh/Xwx9VQNzfmJTkxpRftmTQO+QmpmyGL1vznUFnpDzF/5ihbaKFzgM+BQyGJZ2/FswyyKslQ TkCMaRWIS9NwMXdwc7q1yi/cvvR4MG0LNTUSOsCgm90QK7LQ8cktPeoGy+3OGaqIefBLP4YQo0a 6PhKlFw/+1Yev2mIq2DiKoJ6N4G7qmb8AeT/W/KXBn3c= X-Received: by 2002:a17:90b:3a4b:b0:321:9366:5865 with SMTP id 98e67ed59e1d1-354b3e6c957mr3013289a91.33.1770399689917; Fri, 06 Feb 2026 09:41:29 -0800 (PST) X-Received: by 2002:a17:90b:3a4b:b0:321:9366:5865 with SMTP id 98e67ed59e1d1-354b3e6c957mr3013250a91.33.1770399689320; Fri, 06 Feb 2026 09:41:29 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.41.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:41:29 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 01/13] soc: qcom: geni-se: Refactor geni_icc_get() and make qup-memory ICC path optional Date: Fri, 6 Feb 2026 23:11:00 +0530 Message-Id: <20260206174112.4149893-2-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=TsPrRTXh c=1 sm=1 tr=0 ts=698627cb cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=Wptve8LSCQjy2B8HgooA:9 a=mQ_c8vxmzFEMiUWkPHU9:22 X-Proofpoint-ORIG-GUID: Bwh6OgCi5-0zoBXBXChgqPPOAqOR_TMV X-Proofpoint-GUID: Bwh6OgCi5-0zoBXBXChgqPPOAqOR_TMV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX6urAw+PZMqbj eaVvHx7Eu2+MVYF2bn3A1X0Xssmhsafu3jQZtUAo3BlIvC9yVtBWW5XnEKi+3h8xxnwOpvLo0l8 8wPLlJ3V2uLlFYVfAsuZL/7FZBXb//5RvisI2/El9lk3ssQZ4q0Jyhhx1rcM45jXfusMArp0Tk4 hWh6tjAoBUpkD39aXJjouxnPq4spMxzfFUToLXHMj+zRlLWVZLnJ200YAYNC3GQi/ct0pUbnVte A39J0rlZBh+G31PIPjaJMXxPfhZlOrjsKGM+3QKHvET52Du4H8kLBjMKWTGqLncR4oF9bVMDGOt nMO3sJMz0tS3XFjyPga+aMytLB7/CWNiqk9aazXoA/bO7W12QAYBLrnJ/kpn6jsKGNQ8yVWZL6Y iQeeVPkQVal05h9jWKbvmjIaK/ZyaOtYFCKUld4rd1ksnb9FW/yXyz/p00u691o1WAibXOSpNT0 uAtIBSU7bZJ+Ya+rwCg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 bulkscore=0 spamscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" The "qup-memory" interconnect path is optional and may not be defined in all device trees. Unroll the loop-based ICC path initialization to allow specific error handling for each path type. The "qup-core" and "qup-config" paths remain mandatory and will fail probe if missing, while "qup-memory" is now handled as optional and skipped when not present in the device tree. Co-developed-by: Konrad Dybcio Signed-off-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v1->v2: Bjorn: - Updated commit text. - Used local variable for more readable. --- drivers/soc/qcom/qcom-geni-se.c | 36 +++++++++++++++++---------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index cd1779b6a91a..b6167b968ef6 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -899,30 +899,32 @@ EXPORT_SYMBOL_GPL(geni_se_rx_dma_unprep); =20 int geni_icc_get(struct geni_se *se, const char *icc_ddr) { - int i, err; - const char *icc_names[] =3D {"qup-core", "qup-config", icc_ddr}; + struct geni_icc_path *icc_paths =3D se->icc_paths; =20 if (has_acpi_companion(se->dev)) return 0; =20 - for (i =3D 0; i < ARRAY_SIZE(se->icc_paths); i++) { - if (!icc_names[i]) - continue; - - se->icc_paths[i].path =3D devm_of_icc_get(se->dev, icc_names[i]); - if (IS_ERR(se->icc_paths[i].path)) - goto err; + icc_paths[GENI_TO_CORE].path =3D devm_of_icc_get(se->dev, "qup-core"); + if (IS_ERR(icc_paths[GENI_TO_CORE].path)) + return dev_err_probe(se->dev, PTR_ERR(icc_paths[GENI_TO_CORE].path), + "Failed to get 'qup-core' ICC path\n"); + + icc_paths[CPU_TO_GENI].path =3D devm_of_icc_get(se->dev, "qup-config"); + if (IS_ERR(icc_paths[CPU_TO_GENI].path)) + return dev_err_probe(se->dev, PTR_ERR(icc_paths[CPU_TO_GENI].path), + "Failed to get 'qup-config' ICC path\n"); + + /* The DDR path is optional, depending on protocol and hw capabilities */ + icc_paths[GENI_TO_DDR].path =3D devm_of_icc_get(se->dev, "qup-memory"); + if (IS_ERR(icc_paths[GENI_TO_DDR].path)) { + if (PTR_ERR(icc_paths[GENI_TO_DDR].path) =3D=3D -ENODATA) + icc_paths[GENI_TO_DDR].path =3D NULL; + else + return dev_err_probe(se->dev, PTR_ERR(icc_paths[GENI_TO_DDR].path), + "Failed to get 'qup-memory' ICC path\n"); } =20 return 0; - -err: - err =3D PTR_ERR(se->icc_paths[i].path); - if (err !=3D -EPROBE_DEFER) - dev_err_ratelimited(se->dev, "Failed to get ICC path '%s': %d\n", - icc_names[i], err); - return err; - } EXPORT_SYMBOL_GPL(geni_icc_get); =20 --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 8661D3EDAA5 for ; Fri, 6 Feb 2026 17:41: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=1770399699; cv=none; b=lIUnCuH9svm4xATZfyErRHXwxyAuZioJn3k5coJY9VcNrTnTKf9ahpAJDjiwV+1iKfbnd0kfFBnduFg6X89m3tAB4769trLenh405oUeEz5PxVqYgQCvUz3WosW2QltBQW+tVbSNI8hcWqgtMMstr+peCHia157R0zudXUoZ1b4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399699; c=relaxed/simple; bh=85mnIBih5TefJNp/bHk7qTk7tspz31Q1DwJ4d0ufNMs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ngk9zUpt1REUenWtNT/AK0XEWUA/U9uvdWf4x0yu6Uhnc5pJwDLPZTP04sHZGvopjqPYrHbFUBnkzFg6ZfqztDadotFEJQFlZ3X0sLMLrFc4qrwbUnpTFbiNTe6A0xoXmaI95e5OJ4sqKShup06jckibUAcZKaEQhOitokSawZM= 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=PxT89Rws; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HKwGvyhH; 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="PxT89Rws"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HKwGvyhH" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616C7jh63011932 for ; Fri, 6 Feb 2026 17:41: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=GkgK+E57psN HC9wkY83ywNIDVuH2SOJteZ2XuiMuHCw=; b=PxT89Rws7YMT1YLT2mfavkWPCrb 1yOK9dRKKuWLQnSc8S1hn67RlNQPty+vKgafSvbyCu9V7tPnKqTrF1wqHeQBkqwy RtFJDVXSpee4mg6dcynUfi7eR7VLBBhplHBvDYh75StxacRZrA8HgpQ8LgiiPKg6 q9YI5AuWrL91gkgdciLVlM4jDOas4EFhqhktlj2GkR5MDw69/PET/KePceVJuWtZ R78hHxIWszluHEOolL9QDCMt31n+4wjnkGs8bqobxDeT8vSP7oUBAW8cogmyTqno 9UvNecGdrzQGlWJ5fGcMVlWIX6NdXGhMVCpQU5iDldeh6pcRs5s4YKuXEPA== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c59ukj7ys-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:41:38 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c61dee98720so576485a12.0 for ; Fri, 06 Feb 2026 09:41:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399697; x=1771004497; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GkgK+E57psNHC9wkY83ywNIDVuH2SOJteZ2XuiMuHCw=; b=HKwGvyhHN1spm/g0zLwBcKERNQmqcj1FVD7wNlUkxPi2CHRwY4bW+DlaM+ZciJV0bh SvygjDmbFrzkGTsfWOBKI4cGmAZ8c35FRSBk5qkdqY3Li26WEDvkPte2vgJfwx900sRY efN54Ey5+BKnIrLJ4HuwB8Su5wHtaEpBh/ZXxuvFkMarH9ngaUhw5KhdVVPXYvbQKFa1 JC1CSqQ+mZuLXOqvC1bZ7s37jpDmDMDpB9YupnVSDFn3X0KVpNZMCzoilETe92f40bH3 shbT5A32VWmfu5Tfq2F0MWY4wJ9M5ZoNdfmUgvTvIbWaeS8xU/ETXiAceYzku2pmrE1y A3TQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399697; x=1771004497; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=GkgK+E57psNHC9wkY83ywNIDVuH2SOJteZ2XuiMuHCw=; b=MExvMfuliQf6Z7S+J8TeEIy8oArOmd4eHn4LOwxnbH3XRMRlQSNDzkt+y6tW//Plwi jqMcfKJQpYOMt9XjLfJMGxQP/VUijHm1SoGlzea4gLsEAGdRFEFaWMnK/aM9/T2ccV9x xJUTZJjVbx2D2fQ3t9rdb/w5HNhaMF8qlveW6QoSpvu/6Z+zb+EzyBl9V9gikb7ZiCta cANRiQajViTYxELSIE0aI3Bs3B57C1mP9YzNfsaAfU36FuLTkrRIhxrztjr4vhr3Vsd5 RVTbW9ZpCqb9y6IfezGz64yH2NA7ts4a3tJFlHEGIw8A1UpUB4pp7WRepugz6ZE0eUbk H5kQ== X-Forwarded-Encrypted: i=1; AJvYcCXQZNQ1QmDCDF0Kkgg7iuFghh1vxUzy7Wq4GUbbCTt9KNo1mkYOKcQG6gSQym80IpneMzUxq9i34vtTIwQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwLKpECq5r9qOpvcS2TM0iEHlCDShmJDtO71FP1bACjb/pCnLSJ i1h9CbKIZ1MTJHhkZ+YYPcoZXiy4vqXwHCBjYwfA0pBbbfu12wefAWitev1lXFZ11+3rxPHW37a 707i/xEWWfMCpcwuud736f7QWkrAZP5aYtOBNz/JbuWicISy8EsGAeSkjTHnCL9ntxaM= X-Gm-Gg: AZuq6aI6ATFImwdHjXdRMq1nVGqRYF6BC88rhO6GpSvX5g4QSrS5I0yeDSS3aqn+Mt7 Ot2DPuGhI4IUxqx9Os6jjI9JnnBueASGjGOUuDMfrgRbrpC04kvO6LZ5SC0DtDn9klpQqzkKeh0 sbIDaIlUDmW64MqfnvG5FpEOaerla5lpaQhKWqrWzQGR5Uo64eWyzCOcDhITWnHi/4bIaDNoOmL sS8MlDfaLzZ9DoIwgCkjhmqxmlkUWki8whuPnCBrsE3OLpHoRd+JO0zMygt9Y5mqO+UL045c7Jj 0ACHwS2jFNARIDnAHr2J6MyKUDB33q0UMZodDZQoEOZ65l+Vz/TyHC/lohp0N956667+gOND5/y d9mPO15r2ioFNJB1EvGiVN39mRKc7KY4zmpnZsAbBm3c= X-Received: by 2002:a05:6a21:6d9b:b0:38e:9ae0:3d5f with SMTP id adf61e73a8af0-393acfd32f7mr3821810637.17.1770399697274; Fri, 06 Feb 2026 09:41:37 -0800 (PST) X-Received: by 2002:a05:6a21:6d9b:b0:38e:9ae0:3d5f with SMTP id adf61e73a8af0-393acfd32f7mr3821776637.17.1770399696631; Fri, 06 Feb 2026 09:41:36 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.41.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:41:36 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 02/13] soc: qcom: geni-se: Add geni_icc_set_bw_ab() function Date: Fri, 6 Feb 2026 23:11:01 +0530 Message-Id: <20260206174112.4149893-3-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=OM0qHCaB c=1 sm=1 tr=0 ts=698627d2 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=BVB3BO4C9w_THQaB-9MA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX4mPMhJ13mUXl m84JtRZqBFFP+KKJtu7veh3gPV7veLaQhJcmCjwr39krT40qOeE44aRQFB/GnQOzbCixN/yQOzx HUjr1ueUEhOWlL71s+pZA3FGgv8XAsjtvFslnJkJqDJX5ODN9K2HHbFQh2ie8QM5jI8YrH4fKIn Cn1Kc3pSVM5QvcNk/dT5WBjvAH1lbnETKwmO4Gf3Nro1LsjwiWlAS0Bj6+doiTkJWvYXrwqfhMr 5XdxlpZcVYU9RmKEYAJk94cHYNGuXgUWbCixXYavacLAuw9WSiT4bEQ2OfzQEJ4DrqhCEj0WntQ o0TMbo0P/0xNtXiUeVwdmH11ibXDhXG8T01LjrxwJAZ2oaEgOZBieh42BwOkWPCjHZCK7Om19sw GwcBhpoLpueCQrB/okSsCBkb+o4ytpASnRLArKc330SRzXY7zpqZUcUqPxTyC/pxAhYbaAWDdyT sjQduXpv/Jr6cBQmUug== X-Proofpoint-ORIG-GUID: 9yq_JEWQCx5REakGs3YDIE9kUHRgaaCf X-Proofpoint-GUID: 9yq_JEWQCx5REakGs3YDIE9kUHRgaaCf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" Add a new function geni_icc_set_bw_ab() that allows callers to set average bandwidth values for all ICC (Interconnect) paths in a single call. This function takes separate parameters for core, config, and DDR average bandwidth values and applies them to the respective ICC paths. This provides a more convenient API for drivers that need to configure specific average bandwidth values. Co-developed-by: Konrad Dybcio Signed-off-by: Konrad Dybcio Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 22 ++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 1 + 2 files changed, 23 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index b6167b968ef6..b0542f836453 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -946,6 +946,28 @@ int geni_icc_set_bw(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_set_bw); =20 +/** + * geni_icc_set_bw_ab() - Set average bandwidth for all ICC paths and apply + * @se: Pointer to the concerned serial engine. + * @core_ab: Average bandwidth in kBps for GENI_TO_CORE path. + * @cfg_ab: Average bandwidth in kBps for CPU_TO_GENI path. + * @ddr_ab: Average bandwidth in kBps for GENI_TO_DDR path. + * + * Sets bandwidth values for all ICC paths and applies them. DDR path is + * optional and only set if it exists. + * + * Return: 0 on success, negative error code on failure. + */ +int geni_icc_set_bw_ab(struct geni_se *se, u32 core_ab, u32 cfg_ab, u32 dd= r_ab) +{ + se->icc_paths[GENI_TO_CORE].avg_bw =3D core_ab; + se->icc_paths[CPU_TO_GENI].avg_bw =3D cfg_ab; + se->icc_paths[GENI_TO_DDR].avg_bw =3D ddr_ab; + + return geni_icc_set_bw(se); +} +EXPORT_SYMBOL_GPL(geni_icc_set_bw_ab); + void geni_icc_set_tag(struct geni_se *se, u32 tag) { int i; diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 0a984e2579fe..980aabea2157 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -528,6 +528,7 @@ void geni_se_rx_dma_unprep(struct geni_se *se, dma_addr= _t iova, size_t len); int geni_icc_get(struct geni_se *se, const char *icc_ddr); =20 int geni_icc_set_bw(struct geni_se *se); +int geni_icc_set_bw_ab(struct geni_se *se, u32 core_ab, u32 cfg_ab, u32 dd= r_ab); void geni_icc_set_tag(struct geni_se *se, u32 tag); =20 int geni_icc_enable(struct geni_se *se); --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 D7D6E41C2EE for ; Fri, 6 Feb 2026 17:41:45 +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=1770399706; cv=none; b=dDjwL3PIrAOfjvAF16DR2xfKzZm7rAqeb4B8kPmschXRtSvVrhSbcW5rIYO7JrBlHXPH6vIcZgNkOKgsn2b/Zc+1gSyHHEoHm0UdDuxS2Bi1rvkeHBYzNWCqQ5hk/UcCSiYjtv6gBPp8ihmnJTjc/thuvpNkHmPrM+xO2XyS7CI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399706; c=relaxed/simple; bh=ugzI2X4T4Eu6du95zdaOBWO3+LJFBYSONj4KCG0BUk8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mJJtelUsqIKQOc4nSPt+nsmfv2UbAvvyXQyuExYGPdWouXp2yXxXJBbAl72tcyTe09v1lXBF7gnAkwbWt7K3O1Qj2GtiloeEOKZx3I86UcpyRVlJ7z6pVJ6ghettiSOaOvsmPDwNxqsNMEX3VHc1LYLDKpY65OfAGLymVB5aQ40= 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=K7YKkf7c; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CyPGBzov; 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="K7YKkf7c"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CyPGBzov" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616GKm642314345 for ; Fri, 6 Feb 2026 17:41:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=slQCzeC9waI 6hA1xDFtb4CgPu+7qSKt+eKegC+Sl/tk=; b=K7YKkf7cErmTavUwI7SKaJQ9v/D QQkQGBhiXb1/ldL41nvpjRelbComZ1GsQo22ZtuRBA7l+TlkPMYOt3fPjvLnBCud x2rAH4CwiSrBlmHDBqyekg8EfYeec4ZMzjBeAkikpHEjENljh2AX0Tmt0eZud6Qg DCm7IHslIkUDuviuhSlE6KTvOLooe82eUMo+89BO74fNBGhPozb1H+CkBXIutlS3 DUjrz0ohSdA8++FO0hTs/WqRvgH+CF7rDF0wcM39CldjfrWoaFJFXnoUGIaTf5GI FtTGki7kui3mKUtJqoJ2gy0nTiZJYD6rScxh/kpzjDrbxSjjOAXXW2Vu9kQ== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c52mrkr5h-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:41:45 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c6b1b22b134so1400977a12.2 for ; Fri, 06 Feb 2026 09:41:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399704; x=1771004504; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=slQCzeC9waI6hA1xDFtb4CgPu+7qSKt+eKegC+Sl/tk=; b=CyPGBzovAvAPdyvgiHCtdUSEDKJAG7Av3qG0K0cAQoFuzYVobDAs7T+Wy3E64each+ VcL3om384uMm7UWMWoolSM0Z5Wx9vh824/GzxUe4UYYzH892uWbUzsgSe9iZnACDTUFS NHCRxdzsx6dgf0xfnhXTpbkGFbaM1xr4gCuRg7w4riqEEKzJT9bTFKeiKKatdqmdmHLk /pXBo7cEzje5Lwm93DKLrtg8GirP7VZQN0za44JIxJXXmpiS5xhDUWX9hOKLOEzIWuHp KdTVF08VgI0YRvbE4F1P5VQsDCBHn70zq+rxX5qdvryaHxN0zf4oNV6HpUq19VP1eQUC VFxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399704; x=1771004504; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=slQCzeC9waI6hA1xDFtb4CgPu+7qSKt+eKegC+Sl/tk=; b=X9/UvNHNkDCUI4WDQlyihV4a+CfJs76WyEkT5E0EmIVB8mh3AAjKby31rzSG+I4KaC xqqj0K1/ze6Bsnclrj3gmmHr/DaKZXAw4seq7Ke7o3UvbuOPR/6m9+MB5u98MQ5wInU0 f+GfIKJeTAL56ruZH9TOl6AA1BKpGdP29/5mcMOgoU3xuYiFUb632pxry/zpVfqKjXRK TSePiDrCZIVV8GMNAC3tZWJ1HL0YzPQrjaNeqsLP564Bslcm/D/kfv/zXTX/w4cecssT wxsXuXjUdrvxW9nnBpZz6L3m4EtcGBx+r/oBLGicNQlxNT6Y3z6CKny14YMCCSajk0Ks yVcA== X-Forwarded-Encrypted: i=1; AJvYcCUvVuReUFyTiaY2G03bq7uHkAUu2rGLCyjSp1Hc/JMcIBkAHOyELFtY6GDmzMCXL8Cl7QPxjU5pNwDswGE=@vger.kernel.org X-Gm-Message-State: AOJu0YzwDeoSmCVsV0qnjONzCXblWiWwmGrN4TjAH79sKIsmywE2LAU7 RkuHOkxGv0sdNL9wDV30szWB/TRmMXOCb7rsmLf0uCmGxw0EifEO6g+az99lbfgnJzkYVcKQhe1 mXcBNAmhgbJKzNPaFahmVuLKCzi3EgEw8w/bA48/PjyYGgB9l16+8clwXvh6D/BvNRhY= X-Gm-Gg: AZuq6aKl5S0qkZg6dLe9ywvHN0oWEMnE+4hz70ANHCO6er9TYVl2W0S3iyQoJLmROTi 6bjxdkEKJ86U3QOpU8n/Yyz5tHu069dVTHe8nIe+xpHEZM/6BRncVr+cXmDcwwtOTYWwx2fI/YZ 63jiURtaKQBCn/2Z4/LN/P7TSxNvsPowiwaenzivsXUtSAzBa8bCHo5CmhCu2v+moy4OiTId3hp h9UdAmI82DK5PryCgMUQorEGPE9pjhoo/PUwZSzg7hfp4o0ZAHnh/8+SCD9ZBqK/hHIM8Ury9xK o0R7lvpdMmGOKehIZIcWAQ8cBuPAR0ADd5ztkz9wKAXZO/eyeuSgJ6wWmIKcv49mN/WNSCsor6Z 6oug0nbzMTMtT18KaxNwlpic0BvfUurRkeLUUaOOTLtI= X-Received: by 2002:a05:6a20:2586:b0:392:e81f:6711 with SMTP id adf61e73a8af0-393acfb10aemr3598660637.8.1770399704391; Fri, 06 Feb 2026 09:41:44 -0800 (PST) X-Received: by 2002:a05:6a20:2586:b0:392:e81f:6711 with SMTP id adf61e73a8af0-393acfb10aemr3598642637.8.1770399703828; Fri, 06 Feb 2026 09:41:43 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.41.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:41:43 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 03/13] soc: qcom: geni-se: Introduce helper API for resource initialization Date: Fri, 6 Feb 2026 23:11:02 +0530 Message-Id: <20260206174112.4149893-4-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX84oZRUewgcaW /iRQqCNFKQYj+UcTad/GEDTz3erR8GKRUzh9163FXkrLEVtDEPfI/1OiWKVvCIoWYMjcAj2BS28 I95AROJKGYriA9D2EFN3p8LLuUbeUkt9s+9M/hPElqKEAP0wTXSJO6Rg9i43l0rLUeynmUe0Xkp m+Wls9W5fdG392If7OCXT6mWjx7q9S6U9Z6b2ycnwfIlre6JWMkppEOaaUlbxic96RfWt9H2yIF 9N5MH3+o9UJKzvj9rCu4duNv8AOh/ynJmVaybSjYswoLKTi+NxORQGVWDzXv1wrTGvVMQHphQxO u6kaypdQM3Xn3lo6K7ms7eALcRmnwWshdiA6dDrY4yWxva0ignKGZ8y/Zyir7IPPW/OMEWtKAH7 hMhpOXj3fHAT9o2ht+aFKp4NUJzWQ3/cp/bf+0/LiSf6WfS5z3hMp69fFOixndxfp+KlOh1HVEe 6mcJC2pnW6veGWbWg8A== X-Proofpoint-GUID: Q_wTG2YNL-Ev2sH12RDjAyrMkFUryvc8 X-Authority-Analysis: v=2.4 cv=e4kLiKp/ c=1 sm=1 tr=0 ts=698627d9 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=OYYzyx7XpuDNtx8IVW4A:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: Q_wTG2YNL-Ev2sH12RDjAyrMkFUryvc8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 clxscore=1015 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" The GENI Serial Engine drivers (I2C, SPI, and SERIAL) currently duplicate code for initializing shared resources such as clocks and interconnect paths. Introduce a new helper API, geni_se_resources_init(), to centralize this initialization logic, improving modularity and simplifying the probe function. Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v4 -> v5: - Added a Reviewed-by tag v1 -> v2: From kernel test robot - Updated proper return value for devm_pm_opp_set_clkname() --- drivers/soc/qcom/qcom-geni-se.c | 47 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 6 ++++ 2 files changed, 53 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index b0542f836453..75e722cd1a94 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -19,6 +19,7 @@ #include #include #include +#include #include =20 /** @@ -1012,6 +1013,52 @@ int geni_icc_disable(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_disable); =20 +/** + * geni_se_resources_init() - Initialize resources for a GENI SE device. + * @se: Pointer to the geni_se structure representing the GENI SE device. + * + * This function initializes various resources required by the GENI Serial= Engine + * (SE) device, including clock resources (core and SE clocks), interconne= ct + * paths for communication. + * It retrieves optional and mandatory clock resources, adds an OF-based + * operating performance point (OPP) table, and sets up interconnect paths + * with default bandwidths. The function also sets a flag (`has_opp`) to + * indicate whether OPP support is available for the device. + * + * Return: 0 on success, or a negative errno on failure. + */ +int geni_se_resources_init(struct geni_se *se) +{ + int ret; + + se->core_clk =3D devm_clk_get_optional(se->dev, "core"); + if (IS_ERR(se->core_clk)) + return dev_err_probe(se->dev, PTR_ERR(se->core_clk), + "Failed to get optional core clk\n"); + + se->clk =3D devm_clk_get(se->dev, "se"); + if (IS_ERR(se->clk) && !has_acpi_companion(se->dev)) + return dev_err_probe(se->dev, PTR_ERR(se->clk), + "Failed to get SE clk\n"); + + ret =3D devm_pm_opp_set_clkname(se->dev, "se"); + if (ret) + return ret; + + ret =3D devm_pm_opp_of_add_table(se->dev); + if (ret && ret !=3D -ENODEV) + return dev_err_probe(se->dev, ret, "Failed to add OPP table\n"); + + se->has_opp =3D (ret =3D=3D 0); + + ret =3D geni_icc_get(se, "qup-memory"); + if (ret) + return ret; + + return geni_icc_set_bw_ab(se, GENI_DEFAULT_BW, GENI_DEFAULT_BW, GENI_DEFA= ULT_BW); +} +EXPORT_SYMBOL_GPL(geni_se_resources_init); + /** * geni_find_protocol_fw() - Locate and validate SE firmware for a protoco= l. * @dev: Pointer to the device structure. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 980aabea2157..c182dd0f0bde 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -60,18 +60,22 @@ struct geni_icc_path { * @dev: Pointer to the Serial Engine device * @wrapper: Pointer to the parent QUP Wrapper core * @clk: Handle to the core serial engine clock + * @core_clk: Auxiliary clock, which may be required by a protocol * @num_clk_levels: Number of valid clock levels in clk_perf_tbl * @clk_perf_tbl: Table of clock frequency input to serial engine clock * @icc_paths: Array of ICC paths for SE + * @has_opp: Indicates if OPP is supported */ struct geni_se { void __iomem *base; struct device *dev; struct geni_wrapper *wrapper; struct clk *clk; + struct clk *core_clk; unsigned int num_clk_levels; unsigned long *clk_perf_tbl; struct geni_icc_path icc_paths[3]; + bool has_opp; }; =20 /* Common SE registers */ @@ -535,6 +539,8 @@ int geni_icc_enable(struct geni_se *se); =20 int geni_icc_disable(struct geni_se *se); =20 +int geni_se_resources_init(struct geni_se *se); + int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); #endif #endif --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 6AF5140FDB3 for ; Fri, 6 Feb 2026 17:41:54 +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=1770399714; cv=none; b=XSC7v/YzQfQ0SSu0SAIBNF65dejggdNsnWFonlZCIjwFT7aLGI+rB/TcSka7pWab7R+4XZEUo0C6WVcl6fiePKDFeB1ZSL/YhsUJtk3GIxakW2FEmjvDWUQ18Of++uGOCnVin9ileNuoQXjI9UpUYRYvxPU57mK5oVKeKILtQwQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399714; c=relaxed/simple; bh=vinpJK3AdlE6QuECVjsA4xyKYusB2fCdpA1B0h1Sv7E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GWB1ODlf1XmIaJayQQUB24fmIhIgua74z0DyrM3acVPOvu1UGBLUsBKyju9pVtH4h1cd8jn2nrNUgIL0sX9ebX68hGr5l2RivFx29alaU/5bsVyOIP0W6aX/4Yoq2z70GCLOGxuRu+iAJyDSTpUHNvgdcf/wq0udSb18gfXxtpk= 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=MIgtPWhP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Q4ys4HuJ; 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="MIgtPWhP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Q4ys4HuJ" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616F37qO1853178 for ; Fri, 6 Feb 2026 17:41:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=iEGuO6CekKn dAjKBDhzD10xpNyXSXQXlYftFADS5L1E=; b=MIgtPWhP1cB88SA9xggokBWzRX5 rX6lduVj09Kktz0Dt60q8ul9cFQCZZd4Xs2ZGaVHkRZ/PZud7fy7d3eawJ8Dy0Px YuMND4PVzf2nxL4irND+grUbzMUtQzofAf0i+XI1P1vXsWvSzACYxzyY1EQkPq1z wltk3Cofzv7No0wAbfgS+tjb46o5DZry1cjtMFVaxdeoQcVWro+g/0AwJsQ7xy+6 CgAfLkctMq+8nwysVak/dccvpXRVtZxQe8A49/46vrcdrvanTIz7S+TxoByfpdIo pcBJb7++BuHQ4FVufMJ+xwUd0oQCKzF3BXdAu6kNeqiNpjMXjUIOckde/nQ== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c5c149t3y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:41:53 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c5e56644646so2524829a12.0 for ; Fri, 06 Feb 2026 09:41:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399713; x=1771004513; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iEGuO6CekKndAjKBDhzD10xpNyXSXQXlYftFADS5L1E=; b=Q4ys4HuJNF8u7jrx9qspgnjLabRD++vfzTJnCcnomL+j19OLfFFKMMtMohF76a3yY5 m/4L2AFRM0R8otaRVitPtJ+SV0axETGpq64SO/1Ok7b0YG9G8FJ7iAz0ut4HOtvNuyd7 i6Zp/RYcmJXrDVXO26xIbzKiKDgejLaTw3Chv0jSeWTqMoyZ5l7U3V8LEnnnDJoLV0sU pTgLDNQROt4el6V7YWOWkEfXZxM6YtPcPqkgLyLl9L4gp7I3HnZxFZ+/zldMtLLLOGrR sVB9+HZz2nLNO5mmcMUR3wBsTCoVUI/G32Is8JYkojUzmf3P23QQ6W8SmNwrBACZ59X4 2wNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399713; x=1771004513; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=iEGuO6CekKndAjKBDhzD10xpNyXSXQXlYftFADS5L1E=; b=BNixdO20ShejClaa6oZlmC/JbufTTdUBI/F9PNghw2OWi1jwDiUJ06lFb8J1UIA0Ws PHHGx9+hFw5CR1vLNVmGaBNkGZ3dp57HKs88Sd099IRaGd7kjACICkUg7vMQCC6BqvbW u7wMAXj7Zgwj1GoWmvjIWnwygkrAywU26mElSbI+yv1cwAEm890bXwL1kF/dDU0MetdB 1vTeJPn73EyHoOd9BkApTbO5JYtAzHBv0k+0GBpYrDEir9T3qPLKReNj0rEkz/Hh/SsM uQiWddZ8scPi3Mp2CYGYihdPYcXQctR35sw8vsPyzLuiob2fN7YfneGwf6q4h8qGVVc7 DoJw== X-Forwarded-Encrypted: i=1; AJvYcCXK4ZJFHOtdBCl1POhv0gMmkcDt9BGZguwmMqoOHVAvndu0LXVi4g2gXiwEJYhTJz/Lu2go0vhUUGstU2Q=@vger.kernel.org X-Gm-Message-State: AOJu0YzgyDt6tnePS8aTh/JeL+4D2PSFLUQPSk34WNC3XRhUKuK4byJj R5YNEkRh7IDpztzuhc0U1+y/mLhnhRy1vyNtSbxKClUOgPsedKqjrX0h/CCVOW1QZDKfaC2Vk0Y ndvzt2BblixotFw72vxstFE2FlACincSwp7p58PlnYrjCKm9+Hq/Pbkkbsw0PkI+1UHE= X-Gm-Gg: AZuq6aKjm27NjvC4lbssilch7PxqtXpCR/5jeiyQPw3OQrOzIK58TTdEOZaHZOpb1kb PH/M7yHW7sF76JvsW1JjlYBDsLs+k8eM4bnOHIGbKYVi7fVd1rbUVrDHlgvCgllwb9X0P1bbhdA XOOuYhjCQreeoARJknyuW+dXzCeXdFf5NAF+rnq67Tp01+98Pc5LqRE0pw3uCMPZkgUQnMvyBb8 tlAWhIcYBsco4TPa2IvKev01vEGzJpRXyMx8hkS4PyjQe7f0x2iv1QRdmuV9qTMywrLOhqehvPE jVr6npZTXgcF+ZTTVlqt+b3lVyCbT0pIyknotzXfd692cIZ1ZzwoUtd6or5boqrnSWW1kVvbHCj iKzlCsPODV1kOm19jtqJk5YKJMQ3FCGK7nsr0G0DZU3M= X-Received: by 2002:a05:6a20:429e:b0:375:4503:ef0e with SMTP id adf61e73a8af0-3938f9a2322mr6550397637.14.1770399713024; Fri, 06 Feb 2026 09:41:53 -0800 (PST) X-Received: by 2002:a05:6a20:429e:b0:375:4503:ef0e with SMTP id adf61e73a8af0-3938f9a2322mr6550362637.14.1770399712392; Fri, 06 Feb 2026 09:41:52 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.41.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:41:52 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 04/13] soc: qcom: geni-se: Handle core clk in geni_se_clks_off() and geni_se_clks_on() Date: Fri, 6 Feb 2026 23:11:03 +0530 Message-Id: <20260206174112.4149893-5-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=P5k3RyAu c=1 sm=1 tr=0 ts=698627e1 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=fzsqq50RfsZR9heXkngA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX5CP8OlM7tlRh sor/ZnsL/pwc1IcVIsPuAw6VkI9TxcsOSA2qy4Ty4JwOVjMVEUUssfKT/1qLdZFn2OyvMfhcZzt S0dDDoy3gbGT3aVsUr5szEllopmKbyTFUo5/D8mY96IVaT53EJV0OIVYbUQrFIsRsZ4J9+0rEoc BXZrobG0ZhJW116zH4F0Hz1J7cOenwfMsuG6wl9zlddlcgcrdfiOGCFVcldQqZUqgTIAdEtCIMc 8dHcWl4jcEkvMZBronwJMOmb+dRas2LCnhQJCgXbkJRfkviknDFM1Ld+OxCL9570nqbMSbB+o6K XLtjtaO6vS7LhQ3MHVV7cR2BhOaSuJhVIxo9zl/Vx42N+HMfKNFlyCELL7ve2LkYmyI8T00nrCB EjLncDkcd1c4s2hzPP4jkj1EXk1dg1Tj66Py3J/vvu97KjRhgdjI84i8VaWz9PCOvAmoz0mrFCB b1aahFUN779KOkDy4EQ== X-Proofpoint-ORIG-GUID: Ai1kVi4T51Wzcewbx4Fd2hIUeCLQ2Kp6 X-Proofpoint-GUID: Ai1kVi4T51Wzcewbx4Fd2hIUeCLQ2Kp6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 bulkscore=0 priorityscore=1501 phishscore=0 suspectscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 spamscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" Currently, core clk is handled individually in protocol drivers like the I2C driver. Move this clock management to the common clock APIs (geni_se_clks_on/off) that are already present in the common GENI SE driver to maintain consistency across all protocol drivers. Core clk is now properly managed alongside the other clocks (se->clk and wrapper clocks) in the fundamental clock control functions, eliminating the need for individual protocol drivers to handle this clock separately. Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v4->v5 - Added a Reviewed-by tag --- drivers/soc/qcom/qcom-geni-se.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 75e722cd1a94..2e41595ff912 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -583,6 +583,7 @@ static void geni_se_clks_off(struct geni_se *se) =20 clk_disable_unprepare(se->clk); clk_bulk_disable_unprepare(wrapper->num_clks, wrapper->clks); + clk_disable_unprepare(se->core_clk); } =20 /** @@ -619,7 +620,18 @@ static int geni_se_clks_on(struct geni_se *se) =20 ret =3D clk_prepare_enable(se->clk); if (ret) - clk_bulk_disable_unprepare(wrapper->num_clks, wrapper->clks); + goto err_bulk_clks; + + ret =3D clk_prepare_enable(se->core_clk); + if (ret) + goto err_se_clk; + + return 0; + +err_se_clk: + clk_disable_unprepare(se->clk); +err_bulk_clks: + clk_bulk_disable_unprepare(wrapper->num_clks, wrapper->clks); return ret; } =20 --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 C2C5F3126D6 for ; Fri, 6 Feb 2026 17:42:01 +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=1770399721; cv=none; b=kxMnCvXpvX2+azNUsmDV37ugXjEHMgvSDJFmP8SET/hEQBvDFWfzCoS2o6hlq/O2XGmtW7nUnO+a/Mi7yYG29inuv102g2Q6RGcT7IBJrvnBoeHcxzrgqvHYDLGhaVIV4PuKM/yFK2MOpJPSq//5X28StiHlYzsGV2xa7R8AbKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399721; c=relaxed/simple; bh=YvDpB7qQYZYVOQXO85zT2NahDMXsH90zbRqny+QJ8yM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oPdMba7oiuUKeEkcDDdTAB4a7z6dth1URDqtgFNJGUWE/gOyUjitk9EOqgZbVxGhBH3c5IhByaYtVSpNg9nx/RRpeq4KyLHj0APkLdqPNxLRcG6Fw7ykJeAQWzN9N0pNIcbcpF5GzVzExx8TeDFV587u8Kh55Gfn+sEumZeYC+g= 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=ZQWxAZP0; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=iii8MRWV; 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="ZQWxAZP0"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iii8MRWV" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616FSh3p4041993 for ; Fri, 6 Feb 2026 17:42:01 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=kKXwW780GCF A4P65AgkdepAec9RfmiOIRknJ6nGTg7I=; b=ZQWxAZP0koHBDPLSKgclgZp8riw frHqIU9vF7WrB/at3EInHp4hh5mn8FzS6COVVr6h9p7xpqX4ExSkw9QAWdsBtFn2 YkZVw9cvZiHAbxC6EdaziPWrnpDXtNYDgQ6VQTI0OLWjFGOlF/97kpJoNKgREavQ UDu+IlX+4NX6zey0XaI7JnZlzTMIRLTLfJRHOzhI4sjVIfXemMZHJjdN/PcH08J8 O8IKVXjHdUK7PTpbPQnwLL1wblPnZDix9efWmQVDtybnQStO9mBY7MvIfL14KFOe adLTM/uIIqbQgI4/6qVoYQ+1hZthFTpwBXSkzZFhgRTSGOU+aehd5yO/d+A== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c5c2w1u3q-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:01 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c52d37d346dso1454830a12.3 for ; Fri, 06 Feb 2026 09:42:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399720; x=1771004520; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kKXwW780GCFA4P65AgkdepAec9RfmiOIRknJ6nGTg7I=; b=iii8MRWV2Y5HP1he40oV2QrmG9L4R6szsIJK15VUs7orSS6XOuBWCkaf6BzNElP7ru rexIDI2urTeNy0SuM8pMbYm+c7WA0lmh3odYE9nSxBDNssTiQ36yk/lnp3MsSQNIRtGo 14KeOVqyAH9iKCyAE28UJDblfYyOFmgX7jRQ17PBnW8RYyMB0N2bmZkj7czGNuLA5AtD ORopEDjhdvh/olIZ9N5YMOEQfygNg4pPhpOllI7uZnoGUh0Ba7vSBD0oaIzkZqacAlzb F+DE8D7/wk69u8poz8Jd2I0z6Nej3mLC7Nc5My0sMwIH4kaBaIR6LRkwmTzXxGlC5bGs WVag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399720; x=1771004520; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=kKXwW780GCFA4P65AgkdepAec9RfmiOIRknJ6nGTg7I=; b=kB1TDe2pvZ4YQfE541PZPx4froP9WzSuJyCGxL8zluoigYtLK2BehXhY3fGN8UvWfq j4GXq8dFMNoSeIAv/2xV6/IuwQMxoJLN3r1k1yqU0rQ7fpRLHLV/0jOG4XLq8Bak4b/i lHc8d0I787JxO9GK/geGUu5Pjw8zCQ7A7pjByJ9bpNtrlWSgwxl+8GB3m2TKFwZX2yyp lwlNJYEf7S7Erx+evzpmnAsShhT1MQIMUD7+8JVhMW5PAukUDrUgsRwEBdPCHO6iAhn9 iloi+ARgri4JWADoMPdZj7EUWX80mLPuKuig/IWckMObSn5PlFylEBP69f7DvHkaryZr qpOg== X-Forwarded-Encrypted: i=1; AJvYcCX81+mPc5FHw40e6nrwi8yq1heN1+5bOiJUZJJ4uIPzSubweAvP601zj1OWSnc7Tu7Om8PlIQqN9grQj8g=@vger.kernel.org X-Gm-Message-State: AOJu0Yzhca9gn6TP32GsKkrpwLVrtMBY28n/IN+icDa/bqKhnS0++Lg4 cKhetDY+QYqAaqwY6AkiOLhHGdwMxNFvkvPT8lb4kDc6N3oiE5aMgw8lKD+GNq2ZY8FxP+NLbTm GhUchQxeaZWjDGcAtTrkfoSDmSQnRRGc3XI5OBz7hzwO3hWjlzXeilQym1OBg1vcYNvk= X-Gm-Gg: AZuq6aLC/F1rS+PROEtXhOlQdoe0BJhnHUsEqrB/YLAwTbRBMogUC64gel3EJ4nQDFa 5+w7ouvDn7HprfKStpoVIG57fsO9NjjgfSk0g/pr698WoPJjTNuE69nLnH8tLikixNY4rKexEdU iT7SWx9hj2iz0xiG8Lm6PFfgXJ9hfQiCi4hHZLMLOseKC6zryxx+7EgjMFeH7B+T7lKO/LZOlPf NIXR0Y7ErPOMW1sjn3vXQ6fVA/5gpo7ZEIe2jQ/vuKjkKpxVU+h29TlDK+jPxmf9zQHDIMp+vDo 4BSOIn/abvLq+JpV3R+2FkiMiYETAo52HD6DNqC3NJik6G2RQupuEwwgvGZNRvBPfdUsBEoe89H oVICUK0RPS7Eb+VCEF1UKpehFdDOSW5p71TjE7R7wGeQ= X-Received: by 2002:a05:6300:2206:b0:366:14af:9bd2 with SMTP id adf61e73a8af0-393ad3a27aamr3800630637.72.1770399720274; Fri, 06 Feb 2026 09:42:00 -0800 (PST) X-Received: by 2002:a05:6300:2206:b0:366:14af:9bd2 with SMTP id adf61e73a8af0-393ad3a27aamr3800600637.72.1770399719672; Fri, 06 Feb 2026 09:41:59 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.41.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:41:59 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 05/13] soc: qcom: geni-se: Add resources activation/deactivation helpers Date: Fri, 6 Feb 2026 23:11:04 +0530 Message-Id: <20260206174112.4149893-6-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX8R7Fm2WWouSQ gnYlFrIoCTIrgdPxsWME/4u2EzyW6lOPc6GPDl6rcw6Sd3+jSqemHxLaWqDJvIjrWXfagYduapH 61i5iaS74c9m01krhfqK5o005HQPuzHRmFdaRWkfIbCivUQXIiIgDkzIl+Soso+7OYvX81ROwcw GXyAgmyLr8kp8/ZBYEjIrs5IfYHp2V2YbvTKAjUPTc+s/tJJgMWyBj1oBvTVR4f/95WgoT25+GI a8U59p9K5Pe6xgFvS0B5DAkDbKKSZZ00Hod4zxsTjrtJ4UvP7BBjyczEBX3FXO41TJpnXaXQBDB h1em0DoYElGTc3grZC3YlHoSr28UApXwqbunOjBvq+s10N31qFzoakOJagB1FbqUqzxvcAfLkJb hSVIlzT6nyeOmDR5Co0/XPVc6ixTqQkqR7cF6iZLmu0kfGIs5uCJEP3Q8OTnJiFMZwgzso9ZMdo QCu89JwNjDJ2x5B+W4Q== X-Authority-Analysis: v=2.4 cv=Wtom8Nfv c=1 sm=1 tr=0 ts=698627e9 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=KBRiQYpxJDLEvAb9SdYA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-GUID: Ta7Cmpu4R4qr0qU7j8zf6UxymzX2ztGG X-Proofpoint-ORIG-GUID: Ta7Cmpu4R4qr0qU7j8zf6UxymzX2ztGG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 impostorscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 clxscore=1015 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" The GENI SE protocol drivers (I2C, SPI, UART) implement similar resource activation/deactivation sequences independently, leading to code duplication. Introduce geni_se_resources_activate()/geni_se_resources_deactivate() to power on/off resources.The activate function enables ICC, clocks, and TLMM whereas the deactivate function disables resources in reverse order including OPP rate reset, clocks, ICC and TLMM. Signed-off-by: Praveen Talari --- v4 -> v5 Konrad - updated return value as 0 for geni_se_resources_activate(). v3 -> v4 Konrad - Removed core clk. v2 -> v3 - Added export symbol for new APIs. v1 -> v2 Bjorn - Updated commit message based code changes. - Removed geni_se_resource_state() API. - Utilized code snippet from geni_se_resources_off() --- drivers/soc/qcom/qcom-geni-se.c | 67 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++ 2 files changed, 71 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 2e41595ff912..4bd4fce33ea4 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -1025,6 +1025,73 @@ int geni_icc_disable(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_disable); =20 +/** + * geni_se_resources_deactivate() - Deactivate GENI SE device resources + * @se: Pointer to the geni_se structure + * + * Deactivates device resources for power saving: OPP rate to 0, pin contr= ol + * to sleep state, turns off clocks, and disables interconnect. Skips ACPI= devices. + * + * Return: 0 on success, negative error code on failure + */ +int geni_se_resources_deactivate(struct geni_se *se) +{ + int ret; + + if (has_acpi_companion(se->dev)) + return 0; + + if (se->has_opp) + dev_pm_opp_set_rate(se->dev, 0); + + ret =3D pinctrl_pm_select_sleep_state(se->dev); + if (ret) + return ret; + + geni_se_clks_off(se); + + return geni_icc_disable(se); +} +EXPORT_SYMBOL_GPL(geni_se_resources_deactivate); + +/** + * geni_se_resources_activate() - Activate GENI SE device resources + * @se: Pointer to the geni_se structure + * + * Activates device resources for operation: enables interconnect, prepare= s clocks, + * and sets pin control to default state. Includes error cleanup. Skips AC= PI devices. + * + * Return: 0 on success, negative error code on failure + */ +int geni_se_resources_activate(struct geni_se *se) +{ + int ret; + + if (has_acpi_companion(se->dev)) + return 0; + + ret =3D geni_icc_enable(se); + if (ret) + return ret; + + ret =3D geni_se_clks_on(se); + if (ret) + goto out_icc_disable; + + ret =3D pinctrl_pm_select_default_state(se->dev); + if (ret) { + geni_se_clks_off(se); + goto out_icc_disable; + } + + return 0; + +out_icc_disable: + geni_icc_disable(se); + return ret; +} +EXPORT_SYMBOL_GPL(geni_se_resources_activate); + /** * geni_se_resources_init() - Initialize resources for a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index c182dd0f0bde..36a68149345c 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -541,6 +541,10 @@ int geni_icc_disable(struct geni_se *se); =20 int geni_se_resources_init(struct geni_se *se); =20 +int geni_se_resources_activate(struct geni_se *se); + +int geni_se_resources_deactivate(struct geni_se *se); + int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); #endif #endif --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 3BCD04219E8 for ; Fri, 6 Feb 2026 17:42:10 +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=1770399730; cv=none; b=VmpqbkVrwZ7F/IccNBfS47bavlunN7rVyQu7s1/SiyN4KP9uT2JXmrP2YvVirnCX+ywMi68HyR0UbSMLo8LYOUHUxxroNDefAAtJV7PrB5kqiM93U5ml/hEZ8gJn/75AAh+AXLGDYEUyRwSYJBMxhNH8yvMAqNnziR+w3+lP+3A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399730; c=relaxed/simple; bh=ga6zv2X08xWdzWRz3TuiP7Yq07BTW+J17Yasvwfw7GM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=um999RjQM8z00JIUHSE9xYUTKqPSC+LNisXGIAqb2Ei2eT87GajCpiwdvwrd4ogKqjRO+krTjluAHmC7kK1fAqcf4bkfzoA86BYzQJYPKVp0+CtSn/kmDM4AsPQwYRMDhEBkk2KvYDzcKWv1pMluHCbRna0esQhE5WX1l97MGC0= 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=dS0HqYh8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Cu9v9dEW; 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="dS0HqYh8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Cu9v9dEW" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616FknJ42490662 for ; Fri, 6 Feb 2026 17:42:09 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=6g1n4zS8IqK CO/ZoCH8PjgZhBqCIfpcPG7bciUpyApU=; b=dS0HqYh8o0eJs/EnS0cBl0I5WEx cnBp3ZngbaUQpnxMkkTKmcYGXCu6aLFaMotHWb0zWnRdaXZvFL6dlSZLGFuotKYc s4NI15/1ZQDuWTEJkVY6/g50py/DWvzQP9walvPz1LJH1WdgnnLqUuLZPpLJPTt+ RV4k+dRgduWyOHQ9Rs39b9pQ3spnCpBzZH3zNmMyUkxr53HtTdngpswW8HUv/fhI Yhzj1sSNrN9Co84C8VtQz9+SuWciCiC0OYCW8+ZhBIa5yqkLxTROdW/mtkpbf+7S ZjQp0H6xMTBnMbWDr/3yU0Fr9Fdbf4R2Kj7l2XCEjueplS5UFYWsw0mvzmw== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c5c9c1rpx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:08 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-354c0eb08ceso805829a91.1 for ; Fri, 06 Feb 2026 09:42:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399728; x=1771004528; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6g1n4zS8IqKCO/ZoCH8PjgZhBqCIfpcPG7bciUpyApU=; b=Cu9v9dEWtpoYAm+IVuxr09914bNS1wBHoV8ZMyrqRtgP2qHyTiGrw/Ur6x0LLgUAsV ftfIJDdIebvhEIF/3CYvsKzvMfTnktD3Ue9SIKrGavcRahKnhBPoIWdJFB8xr1t+lLzm M8uUse59ssEh6Ft4ksoEwGIyjlDgEHrl8iLoBSDFwrtg+ZJMWZNKwRWqGnqTTV4F6xBK /0n7WgIEU65uCkP4REu+7LprJTDc1N6uIbCPGc+3cYPw7TOg706llveqsdQ6QozR/HG/ tWwQXqD+g2+2darjJDiVZDcGmEwhLJVwz3Q+NXa9Jj5YBB/YL11Fh2cbNFikUFlrTejf 9Otg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399728; x=1771004528; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6g1n4zS8IqKCO/ZoCH8PjgZhBqCIfpcPG7bciUpyApU=; b=lx7S3C/x+WaPfGzpP1GA2KKjW64wrd8fmXlURBrc7oZxzsaBTZgVSnph9RdIvU3fY/ YazqjWDUJr4n7WioHbY/PngTcken4SSaUT1Hgu7flZ4zAoX+Z0ODqxPVJXEdhQ9fQIMG qa2znrhyd6y98B8S6NMo3XhNpngqWAyc6j497nZQ262r8qwhIHNG5vFMgZBXwVqg8VCo sksB0Fym1Jd9cIf9WlWGW1jAWf423k76WqGRRXZ1zvhHGVGEy4fGjmQy8he+Jqk76fCz UPVPymT65SpGZ6RQbXKiDnRYRr+R9DeYiBGYY6FVVoGS5g8f3K84oDdgfanEAZvFQx0g 7rpw== X-Forwarded-Encrypted: i=1; AJvYcCWEamdl+PbRVNMdumgjBOtl1+MDi2t84tjdRBdfrUOyaC0W4oUxKwMW7EWE0VUem++7AjNNdC1OB4vkxYg=@vger.kernel.org X-Gm-Message-State: AOJu0YynWQ1E69gsIa3pW4BLlze97AH7OyC6+XavyOP9QY8KJCoRqSyl gREwe5eV7OCWXsgsZyp2mL7XOZ+423uQ5fc7iBGQJn0Pe7LwLEO4jthLB2daZn2H9pRrnX55kud qqRBjbD0geSXrB4VyEo2nAbjocEw5ULRaG0mRd2C6kjb3CP9SUU2ZSbiP18qzG3rXb0k= X-Gm-Gg: AZuq6aJToB2dbfcbIWrwZl/afdY8Q4K8yW69D/UCwj+lz6OGC7thcJIcZxofpiimmig fPqS7+0FClKR0fIB2KYucLI4kz85ifupmdUG6O8WJd8Nu2Z45rNdPqvvttXCX5chNejJmNEJhrb H8JeRVhaSYO0pRBPJZW1lcqwo1HIVc3aGhhOSYIRrZnmC0iikE/ccji+mhWot1RqEY8VmqbYHsZ OldN45XXkarJcDG6ce9UoHKJXP278EgLeTa2QqFGlpSOzbNXvou5bPod35dyQiFbDchaSVOhU6T Lpvua0y8eTrziXnn1W6UlwLCmOYob/QMzQKGxTkdRx/LhKasmZFgY9PrQslh0Qz6XkUcLyhwwLP AkhuQk52JDrXDrKb9TphHdDDP0TyhXvefh2ekExsEwOY= X-Received: by 2002:a17:90b:2cc7:b0:32b:c9c0:2a11 with SMTP id 98e67ed59e1d1-354b3c41887mr3034796a91.4.1770399727530; Fri, 06 Feb 2026 09:42:07 -0800 (PST) X-Received: by 2002:a17:90b:2cc7:b0:32b:c9c0:2a11 with SMTP id 98e67ed59e1d1-354b3c41887mr3034767a91.4.1770399726839; Fri, 06 Feb 2026 09:42:06 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:06 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 06/13] soc: qcom: geni-se: Introduce helper API for attaching power domains Date: Fri, 6 Feb 2026 23:11:05 +0530 Message-Id: <20260206174112.4149893-7-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=BbzVE7t2 c=1 sm=1 tr=0 ts=698627f0 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=WUWHbvwt6nHlCWk_UTEA:9 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-GUID: dOlIjho107zbErVO83pXxBJSiXd2hc_C X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfXxRwwYs5Dtcfh CSpZ2S9hMfLVpYQZ+0DW1SPA0d4XPtOg7JTMHIdWHh++GeaiBS65wXv87Q0YWGLU9Fu0uAwz/WK 4H3JIFIPKU6tDwFmEQIH+vJ+U+Sx7h4Q0akveM+auJmfJTR7IsoNwua4BzKB2BWeAmNNuCavHnw AXekHXBmpqm6xUIraum07o3+t20rjsl9VcGk19Q1b02PeQ1cjTkxOXMcxRBl7ufMz1PlmyCXsGI wt+38QUo0yjh5sfAupmKRGGYH+TGn8WUlqsBR/OBIE10DTmnxyEah9pjlz4Fx/L2qBJTg8r0l21 sW42Fp939H0q/3UJfwaeptvwWOYbTheraNATWMjLN43huclPmydtb1PDJZX12VZlZJdBEzHZcVv 29PT+j5U/sEs5OD4i5URI9f6L+5U0p4m0rHNtjBic0R/WQjgw+yYh56/1h/KNAd/SuAwxMpMyEk IZWvlKflomGFwFL+lfg== X-Proofpoint-ORIG-GUID: dOlIjho107zbErVO83pXxBJSiXd2hc_C X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 spamscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" The GENI Serial Engine drivers (I2C, SPI, and SERIAL) currently handle the attachment of power domains. This often leads to duplicated code logic across different driver probe functions. Introduce a new helper API, geni_se_domain_attach(), to centralize the logic for attaching "power" and "perf" domains to the GENI SE device. Signed-off-by: Praveen Talari --- v4->v5 Konrad - Used devm_pm_domain_attach_list() v3->v4 Konrad - Updated function documentation --- drivers/soc/qcom/qcom-geni-se.c | 29 +++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++++ 2 files changed, 33 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 4bd4fce33ea4..ecac9006acdd 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include =20 @@ -1092,6 +1093,34 @@ int geni_se_resources_activate(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_se_resources_activate); =20 +/** + * geni_se_domain_attach() - Attach power domains to a GENI SE device. + * @se: Pointer to the geni_se structure representing the GENI SE device. + * + * This function attaches the power domains ("power" and "perf") required + * in the SCMI auto-VM environment to the GENI Serial Engine device. It + * initializes se->pd_list with the attached domains. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_domain_attach(struct geni_se *se) +{ + struct dev_pm_domain_attach_data pd_data =3D { + .pd_flags =3D PD_FLAG_DEV_LINK_ON, + .pd_names =3D (const char*[]) { "power", "perf" }, + .num_pd_names =3D 2, + }; + int ret; + + ret =3D devm_pm_domain_attach_list(se->dev, + &pd_data, &se->pd_list); + if (ret <=3D 0) + return -EINVAL; + + return 0; +} +EXPORT_SYMBOL_GPL(geni_se_domain_attach); + /** * geni_se_resources_init() - Initialize resources for a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 36a68149345c..5f75159c5531 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -64,6 +64,7 @@ struct geni_icc_path { * @num_clk_levels: Number of valid clock levels in clk_perf_tbl * @clk_perf_tbl: Table of clock frequency input to serial engine clock * @icc_paths: Array of ICC paths for SE + * @pd_list: Power domain list for managing power domains * @has_opp: Indicates if OPP is supported */ struct geni_se { @@ -75,6 +76,7 @@ struct geni_se { unsigned int num_clk_levels; unsigned long *clk_perf_tbl; struct geni_icc_path icc_paths[3]; + struct dev_pm_domain_list *pd_list; bool has_opp; }; =20 @@ -546,5 +548,7 @@ int geni_se_resources_activate(struct geni_se *se); int geni_se_resources_deactivate(struct geni_se *se); =20 int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); + +int geni_se_domain_attach(struct geni_se *se); #endif #endif --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 C7FAA421EFB for ; Fri, 6 Feb 2026 17:42:16 +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=1770399737; cv=none; b=IGz+SKLPjmsZ5cY8FQ6R1z7ILftc91cs85sqTvj/QwJk7DKiXqRJVZ3DHWPi5TIyUVhaNcXSUbym3sHFCCa6KSfnhf5fuY3OJgY96q3uBYXEi7VS26BXLTyF45lqd8j5SasbojmlbxQsrw+HbqzPNe9FSmJW5EVUvsR4ZQhzuXI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399737; c=relaxed/simple; bh=zt3e66ncyjicUlmXDGBlHp+YASgZdIcC8U/UEbDetkw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qaRlkSTNkDi29ICBkPSjtqMVA6JfLGu95M5gdjK5Y8CN4K1WRIs3y9WetesJg/JG33AWlmYPgQyF+Xs2oEn9zjBQQJIxOUfBLlktK1TCtL8YO7m2XGcXQDUTIJ+V5F2FKcKoPnoz4/qMozSswmcp41ek57eQXOFmBCBU2fXVYCQ= 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=B6Uyb9tJ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Hv8nWaRt; 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="B6Uyb9tJ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Hv8nWaRt" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616HaFfx695363 for ; Fri, 6 Feb 2026 17:42:16 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=v03HhZj39wv EYDoOJkcbNMB4ICiMOzjVN5b8IxJ2P4k=; b=B6Uyb9tJfQToSbFaaJ06iUO01i1 rnMTwyeXuu2Jv9R9jHN8HOgX7GpWnzGrtW1H6vTxhJVaEBI4NqiIDd0dj+tjFpqD LI/vJ8DFhR6JULhdlZkFBArbvR9eKbPZ9edke5yvP+Ya/DxfP7aEWeEuinpG5tmG FC5HFrFiF646I0nhLs6vk1SL1LH9iDDlwoYCNdUv8jsBJFbcply9r+i4kdO3yV3f WWhwyy+b1/MsIFm+ruOEwUNo4hccaZTjcIK2LdaDt/+HVSczBhF+4n4FVdhONFw1 f2MximB0RzrAjNmNKHPe4xRjlpB53QgJoFs7Sx2OAUzC5U8udEQe9wc0eIQ== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c53qvbcs9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:15 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2a945ba5553so9422315ad.0 for ; Fri, 06 Feb 2026 09:42:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399735; x=1771004535; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=v03HhZj39wvEYDoOJkcbNMB4ICiMOzjVN5b8IxJ2P4k=; b=Hv8nWaRt7c6GH2d+R8+ioFS8RfG4yeV3QoTZN4HwnHJh2mSFDbLhZo5Q0DmIcyLFUm 1BNR+5eT525j/ok2jYTt1Z84rh5le4hBkpcUp+SJCQwUOO8QkAk+e8PBL0t68elzpxx0 nNqGXrl/qyP7gslZi4vsPhnjk4MpUL3oOgVkZ72JSTLDxuMz4U6peJnZmWhG+Rbcb1a/ PtPxGTivdsBrbPpuSGIfxLfqPqWXOFy+GWTfeL7OhRS9TyD0mEYuguRAi1pYbUtfq41Z h1PcAG28gsKFOJKofx6/Fwtd0frA1fN9B8P5NNftYNXFzV/ykM/8++zrCYLn+dYpjK5T ijjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399735; x=1771004535; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=v03HhZj39wvEYDoOJkcbNMB4ICiMOzjVN5b8IxJ2P4k=; b=Urv680AihjQyBJpj639ZNR4penIqGFKmftitFvklLW6LONadm0IAxcOKEoKW7dQC6l tPBTxZoZ3v+CfNpBibDVkL9lBVQU5ausFEMPOQoNNBUgKHIrNCu7+AsrAdGLG62p2+mS ux0WId9/gm9bkh/RDXoEhLobehoDxtHWvVTKEe+rG7uoG6kxerALvhdnXDYOgBqpxPV+ w6bT67qc8OkOqme4a1A3iwLq3mkzrS1/6keNgX3ZKLstOBZr5PhNA0kMqZ30oZSvJ6V/ bLyO8PM7/dXls2EXYk+DxN4JY2yDsaqHsV+Np8p39Q0YZPsY4CindZn68wfpPFfJPH1I iKkg== X-Forwarded-Encrypted: i=1; AJvYcCW+GksXyB2TObDsF2m44Psk4Atf+XyD4kLGe1AEInrwOe6MrdCFIW/1oMA/my1kneBmui5Y/uR96U3ppHM=@vger.kernel.org X-Gm-Message-State: AOJu0YzD1BJV0gm/jkL9Qq5etBEhFvNhsTGn3wCHKeNqeySCWVKwNKWy Bdn9uwThCN2/KVfHYewVVwmtD+rrO1eatc3RBc+RPp5Fd3EtRzutAjDzpdrzxJxOWSnXt2lXhgI 4rIAfdtAAX5k8Icm24HDFNYFqb6pjzAVOcsHlvVXVY+yvO5bXboEaVG9BTO2NdyD3QFw= X-Gm-Gg: AZuq6aIQwdlWz7WPYgm5ROFpw/VoJ/+zuWNd8U9I3/alTKQGEclYQLKFltYVazCTw9F muaerv5xJYDzCN0z0v2IbjRwXwW6Vwc4sPnU0iARnP7IdW5X8Q6h/+k6ZgrJlgSDGHvTjEAgaNV EGjzd73S25xkOsciq3yuQiZjtoEa5CVQICJOXOYzc9iwTmstOHDnyKfzpz49UsRqCIbFROsPcDN TH7WOX2qANdlTeLJuAqwAQlHoLP+vJkXBpvhfxEzbCw5wg6tNNfK+ysTV2LXhWY5FUMBZ5OQKeQ PNhL3vq0nbdjV2xcEPK4O9sYG8D371nC6cvWqubO0yrKN9k0DOs/k+0NH70b9fgI+274D9GUN/s INb9lE3ccG7Xfy+FQJHfyYSYL5IutXUlFd/RMJ1Ciw8s= X-Received: by 2002:a17:903:120d:b0:2a7:b039:4b52 with SMTP id d9443c01a7336-2a951633beemr32647585ad.1.1770399734592; Fri, 06 Feb 2026 09:42:14 -0800 (PST) X-Received: by 2002:a17:903:120d:b0:2a7:b039:4b52 with SMTP id d9443c01a7336-2a951633beemr32647305ad.1.1770399733983; Fri, 06 Feb 2026 09:42:13 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:13 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 07/13] soc: qcom: geni-se: Introduce helper APIs for performance control Date: Fri, 6 Feb 2026 23:11:06 +0530 Message-Id: <20260206174112.4149893-8-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=TsPrRTXh c=1 sm=1 tr=0 ts=698627f7 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=NwCh5GMA9Nt760FYQHkA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: u5CGndoSe4oQET6-_hXGelQEbp_pqr38 X-Proofpoint-GUID: u5CGndoSe4oQET6-_hXGelQEbp_pqr38 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX/Ti4ECg8aFOC AgsQ0KJSZKph4xDn2sZ0Bk+DkWjKi2fEDaA4rSbvXel1cgUGuzUqcPpYslGSAswWwPtWz2wfBAf GuVYTOCTpP8B2pQNXinbuy7fh875f6jAsdfL2Vc9PjH+PhTnzZt8CrNYdeZGh3YL3heYpNFIkNS 5qaJjvqGrtUG3xjRXoJSlQ0Jn8eak2NMaWJfxJxRAea0uajFVIYrP4tvyMKyIGoUOPcV/EH5srJ NzWRlo7nOC98Sfu2lxcIm0ZlOLCulbboUaXY1ieCtmUkjiW6Xf8db6Jtst4LDNIeOE+8V/k+fbX 0UH8apREkZW2k+Y4ctwK8xW0wUB+KOFD8ITVqiDTd/V/Hs3KJryDJ8M+EBTHIrvL8j932fQL8ID PfrzMxta5UYNpT0vib+IyZKW/vnQffkmCm1m3c46bKB7Vx1nfHCr0oXSwlpzxdQOM5ltbTRVwpn hWKiUUv50RQwL4+gNUg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 bulkscore=0 spamscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" The GENI Serial Engine (SE) drivers (I2C, SPI, and SERIAL) currently manage performance levels and operating points directly. This resulting in code duplication across drivers. such as configuring a specific level or find and apply an OPP based on a clock frequency. Introduce two new helper APIs, geni_se_set_perf_level() and geni_se_set_perf_opp(), addresses this issue by providing a streamlined method for the GENI Serial Engine (SE) drivers to find and set the OPP based on the desired performance level, thereby eliminating redundancy. Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 50 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 +++ 2 files changed, 54 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index ecac9006acdd..18ba5f9bbea5 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -282,6 +282,12 @@ struct se_fw_hdr { #define geni_setbits32(_addr, _v) writel(readl(_addr) | (_v), _addr) #define geni_clrbits32(_addr, _v) writel(readl(_addr) & ~(_v), _addr) =20 +enum domain_idx { + DOMAIN_IDX_POWER, + DOMAIN_IDX_PERF, + DOMAIN_IDX_MAX +}; + /** * geni_se_get_qup_hw_version() - Read the QUP wrapper Hardware version * @se: Pointer to the corresponding serial engine. @@ -1093,6 +1099,50 @@ int geni_se_resources_activate(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_se_resources_activate); =20 +/** + * geni_se_set_perf_level() - Set performance level for GENI SE. + * @se: Pointer to the struct geni_se instance. + * @level: The desired performance level. + * + * Sets the performance level by directly calling dev_pm_opp_set_level + * on the performance device associated with the SE. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_set_perf_level(struct geni_se *se, unsigned long level) +{ + return dev_pm_opp_set_level(se->pd_list->pd_devs[DOMAIN_IDX_PERF], level); +} +EXPORT_SYMBOL_GPL(geni_se_set_perf_level); + +/** + * geni_se_set_perf_opp() - Set performance OPP for GENI SE by frequency. + * @se: Pointer to the struct geni_se instance. + * @clk_freq: The requested clock frequency. + * + * Finds the nearest operating performance point (OPP) for the given + * clock frequency and applies it to the SE's performance device. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_set_perf_opp(struct geni_se *se, unsigned long clk_freq) +{ + struct device *perf_dev =3D se->pd_list->pd_devs[DOMAIN_IDX_PERF]; + struct dev_pm_opp *opp; + int ret; + + opp =3D dev_pm_opp_find_freq_floor(perf_dev, &clk_freq); + if (IS_ERR(opp)) { + dev_err(se->dev, "failed to find opp for freq %lu\n", clk_freq); + return PTR_ERR(opp); + } + + ret =3D dev_pm_opp_set_opp(perf_dev, opp); + dev_pm_opp_put(opp); + return ret; +} +EXPORT_SYMBOL_GPL(geni_se_set_perf_opp); + /** * geni_se_domain_attach() - Attach power domains to a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 5f75159c5531..c5e6ab85df09 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -550,5 +550,9 @@ int geni_se_resources_deactivate(struct geni_se *se); int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); =20 int geni_se_domain_attach(struct geni_se *se); + +int geni_se_set_perf_level(struct geni_se *se, unsigned long level); + +int geni_se_set_perf_opp(struct geni_se *se, unsigned long clk_freq); #endif #endif --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 3ADC93EDAA5 for ; Fri, 6 Feb 2026 17:42:24 +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=1770399744; cv=none; b=bDEk+v7Hs6tgdCnBUnMKN18jLHofBEw1MfQzLWbu4VeTRBRzHgTxcz41OqoczI0dJCDWFulhwPvXyCfwc3Bl3il5JQk93w+UmAkUj2SLosw7kA9sra+pKu/n86sZpGGr+p678iQN0KBKRk21uZtcju/xDV4QEzlj2sn4pIweQS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399744; c=relaxed/simple; bh=fLcHXdKV5/hDu2wr6i98ZasPwufFwNkdfF36wyuIx94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WTaPR8awwEXcNRyun7NaJHhQ1jBf1nhbgfnHM9N36Td78mD3CGRfQh47lEbgHuAlJbMDwZZQM03xVOCQ/5cxMPWxF5APwEKfoiksCQpR7vHugxQoJysFk/yF/CmhiYirlSkE3YlGgZGJlLJOrDJp49I3MeGjgNwCQYHxRXfOdM0= 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=o1kqzbJL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CsFbvJOK; 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="o1kqzbJL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CsFbvJOK" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616FxwVB2490642 for ; Fri, 6 Feb 2026 17:42:23 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=cbpTgWXazdO AfAdL49uExcjxZu696DCuIHbDLPHFMMY=; b=o1kqzbJLc04defYumiA4PLD9h1S d4ri8ROZjCkoh/xtpB6J0aMbwN71MJcZ6nEhSiaqxwkaAcpOfb8zc4k27cvQ7jhF 7UIZOh7Hbr/hc+TzfkjpSahcj0t5f8Th/QLUxOut3R54RWApCXSAbFty3rmJLeWu Ze1Civy32XpHEolUlZrPKS1KA8v+u5wMOK0Zm/LVUteENe9HhKdR1W5Y3aoNzCPt RV3268fKsTkqWGkMv8XxbaQK6uhR9+NiYxL4RtP8oV9BX9qVelXGDhnCqC3zwdZL jsvHeoo0UMGU5BIgphKHmMckhTYrrqbb75REElzPbgPHDelcY94P5YwoYHQ== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c5c9c1rqx-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:23 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c634b862fcfso1488353a12.2 for ; Fri, 06 Feb 2026 09:42:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399742; x=1771004542; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cbpTgWXazdOAfAdL49uExcjxZu696DCuIHbDLPHFMMY=; b=CsFbvJOKo2uS3hZnPFdryrNe+TypWH+5w9PaqaXQgPylPSMHqTB7Hql1XbtLyfXNOa fGkVT6l3Gr/CndFnQLmQ/XNWQfN5KizHwz/1CC+gEwrxrT+vgoY1R8jVSiA+uQNuJ7zv JWsSijC0cEEzBBMQmSn9TCbxNi/Wod/UnE9nRFQVKbBZBOO1BzB5Z+ciBOg+azx7rIxu yaGW54d/j6IQuAlAuAWnFZ3QDTO7BgaMV1CtfH+OyYQ0SJBgQ5sHQYUdI30hUuROxPSf 4IUYBAHxG4+r3zwTPGKOxuMHERJ/QSrZv0+WLRj9KEUNgrcalPHLGrLFPrm/3mF9OwQ2 c4GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399742; x=1771004542; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=cbpTgWXazdOAfAdL49uExcjxZu696DCuIHbDLPHFMMY=; b=JQmDDR6B7gFLHMhoGe8wjVcnT/Ym0oEBf0FyC9aqcOgx5g4eUF3kxejl8Ids2PpzS9 vgkalL28WgiUhRk3PaOmNkfYtW13ZWSkN1HxCWJVvGLenmaxbHF+bMIGP2AFvUoJ3zGI iNPm/dxm5ZY8vmHx401VWw720o5Xgi6oCbXrZ8gHzK3l7KnnJlIbDKKNckPvBem36hP4 jC4Xr+IUgOdbXEZ4xpwvCWN43TqJCPq0tcGgmG7k33tz5AjwrrAE4ZcDxL0nQ8y3Nlz2 lLzDP9XD6eB2KnZKcjm6BDimHwsOnKDAyfqDSrxeaBxHLmSccjvKbeMi0iJgj24sflmb MkBg== X-Forwarded-Encrypted: i=1; AJvYcCWIcXkLTRWVen11QjfNSlMs9h6MBIGlyeKBe9Q8srRvbSotklR/VoxkOVGx6S35QW4nAaTrg86RXpwCvJE=@vger.kernel.org X-Gm-Message-State: AOJu0YxwnhBFHvdBTLzklbBnZleoqzSVhbsjesZUVKUQoYUWmSx4JSs1 7NHIgWlJQjgP0fmYKx2JEyTL4ECUXLZI4TH20hzOrC6nD3qnjlrhipmEiCMspDo8VU1Cn0Lkj9b svb4EbWdV1Val7fR014bqGsJiQ7vp9LhXJubs1CfDz0cJZeP8f88w38jYbWKEFJ2R9Fg= X-Gm-Gg: AZuq6aKy/yi9UyDRwFloVhBjYZIgc5hVsC9SiRI7FuJ5OVC1YKGK43thjRxPxWSX2Yh pe0F53rvOMSucM1LmqFsqwALOhAo0lsdtYt6L9XWXPRW6rxaIHH70J2YrpOkXScVuj3JPKSnTuv G+Vg9Ha3f4WNuhrjL+eAlyFT9ZXsFTz51Bawl31GvD62xEcJGOAfNR5eLO2iuO3qZB62nJUZG4P MJuAgYiYnplHpVsI1V+yLpGyqwVkTb17OOdQcz4niEpisLmFb2IH9EnFHJFLwxpS4tDUG2AMvN9 Y5xLy0nV23lI+K/E+RIJl9eWZAEYFWgoh1AOXQB1cmKKsCGpyELDpMLl/jOw0AFrWFKmxZhZ81j DUme8ChtqeJtrgJkpjH1Ph7zH2erNot7Db+hBiU8xHSo= X-Received: by 2002:a05:6a21:6d85:b0:34e:be9b:b67f with SMTP id adf61e73a8af0-393af0c8639mr3577351637.49.1770399742192; Fri, 06 Feb 2026 09:42:22 -0800 (PST) X-Received: by 2002:a05:6a21:6d85:b0:34e:be9b:b67f with SMTP id adf61e73a8af0-393af0c8639mr3577330637.49.1770399741631; Fri, 06 Feb 2026 09:42:21 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:21 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com, Krzysztof Kozlowski , Nikunj Kela Subject: [PATCH v5 08/13] dt-bindings: i2c: Describe SA8255p Date: Fri, 6 Feb 2026 23:11:07 +0530 Message-Id: <20260206174112.4149893-9-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=BbzVE7t2 c=1 sm=1 tr=0 ts=698627ff cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=COk6AnOGAAAA:8 a=apMzWF-kzHp83YoYYzAA:9 a=3WC7DwWrALyhR5TkjVHa:22 a=sptkURWiP4Gy88Gu7hUp:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: bMmkPBiCo-m5vVhhtqLXnFt9QPczLv1m X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX3TvLdAfLOrLt 4g0s3kjiE2r/+70+HzHs09mfMeokF1Mq5T4S+HTzNurNspYUToHKuzylS946stuyNmGlhpqnjuo 6nAOvWBTdz9cT6hfwBLbrMvz3iVaMIBzlNTBTr6yM3vSqlj2lmhToU6FdxZQV0yQhRi7kV1LyIh zssLzNjKYWmDaRzhFG6llrjk0rzEEvaqOvpXOnERtjWLetueTvmdCla+Cw3xsHB9LHmkCdEuAby bncoTxYJC15t4rewk4P4sfZQqKAMgPKmpzAltyB6+ZAyshBcEwl7zsZnmrJa85UU1YnqLsIHrau /k/xJ0bS5e7nOG6JnAAlcRMUfR2Tnzp3ucxaJrfhDjWGUSiMLYLCg/Z+h013QfnvnB5CDhjv98d 3dRxhWpjoFUTq4V0CWGYru9Iaq2H2yfsv08c++4NlhlgwhGL3uTDWCrbcJHRhSzfBWU1iA1/NgY gF0aaJPvZXJWCTjDs7w== X-Proofpoint-ORIG-GUID: bMmkPBiCo-m5vVhhtqLXnFt9QPczLv1m X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 spamscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" Add DT bindings for the QUP GENI I2C controller on sa8255p platforms. SA8255p platform abstracts resources such as clocks, interconnect and GPIO pins configuration in Firmware. SCMI power and perf protocol are utilized to request resource configurations. SA8255p platform does not require the Serial Engine (SE) common properties as the SE firmware is loaded and managed by the TrustZone (TZ) secure environment. Reviewed-by: Krzysztof Kozlowski Co-developed-by: Nikunj Kela Signed-off-by: Nikunj Kela Signed-off-by: Praveen Talari --- v2->v3: - Added Reviewed-by tag v1->v2: Krzysztof: - Added dma properties in example node - Removed minItems from power-domains property - Added in commit text about common property --- .../bindings/i2c/qcom,sa8255p-geni-i2c.yaml | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni= -i2c.yaml diff --git a/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.ya= ml b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml new file mode 100644 index 000000000000..a61e40b5cbc1 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/i2c/qcom,sa8255p-geni-i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm SA8255p QUP GENI I2C Controller + +maintainers: + - Praveen Talari + +properties: + compatible: + const: qcom,sa8255p-geni-i2c + + reg: + maxItems: 1 + + dmas: + maxItems: 2 + + dma-names: + items: + - const: tx + - const: rx + + interrupts: + maxItems: 1 + + power-domains: + maxItems: 2 + + power-domain-names: + items: + - const: power + - const: perf + +required: + - compatible + - reg + - interrupts + - power-domains + +allOf: + - $ref: /schemas/i2c/i2c-controller.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + + i2c@a90000 { + compatible =3D "qcom,sa8255p-geni-i2c"; + reg =3D <0xa90000 0x4000>; + interrupts =3D ; + dmas =3D <&gpi_dma0 0 0 QCOM_GPI_I2C>, + <&gpi_dma0 1 0 QCOM_GPI_I2C>; + dma-names =3D "tx", "rx"; + power-domains =3D <&scmi0_pd 0>, <&scmi0_dvfs 0>; + power-domain-names =3D "power", "perf"; + }; +... --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 BD13842188A for ; Fri, 6 Feb 2026 17:42:31 +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=1770399752; cv=none; b=u3cT1wnvKwRmyl9CY1SjLITgFP9cbC9fIJ0NtLZmma5+4m19fHw6RxSP25bxOgWQ9oq4sWMeCX7FteTO0JIVs0ES+JkD/a2LjrawCkhE2bChy8uf2kzPTruSWZvwZp7ghfJ/YDkJRidkyCTdoxIGSlv1EqPwrqkbD9COpOlKGuU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399752; c=relaxed/simple; bh=sDUm9Xydq3403YULfrfZBE49cHQPZ/UiIqAzox6BoBM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=i/xImzrBtIpkknLvxgWvtagbJCD9uv25cR8RdazCWUE+CNQz4jr6efmzpWUc+MTS8G7mb2aYufQQHxbuc94ncfBcg1XeE3CsW+/47H1stKn5gzeionb+gG1eayaxGoglF4thPe2SQV2MKwItfp7h6n7gWKDgJqG9u2FWJRqAfgs= 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=XROZyVqL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ACyaXTx+; 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="XROZyVqL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ACyaXTx+" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616H54iD695346 for ; Fri, 6 Feb 2026 17:42:30 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=tZXS0ryzuuo eAsGptKjaEuILlyf9UBevXtHQPKJSvt0=; b=XROZyVqL1eptJRLEbnARPhaaDnf K/v1rAvMmyLNf3aqjL6bw52BgkXPuZN7hGUslnUDC48+gOlj6pyJz9yZ2csjrwFd ksbJk7KZJCGulaakadajhvxXTiJDUhD84404hacNA1XjCdJVAn8pF4+xGu841V1L 8YjUsV1FGHSHrRVb01Blqc3kAU1JfwQAJIcPbn1BnImSSGdk4pLpBluNMLFrIyiU 7ZJB6GvcwH48lLH3vm3BsfGY4UaVfjeOcLwomri4yAuZ0ivQVZlAVRPnAvFJigRM RDraEyTfw1mt0yFGeTcDS4bebMDgpj/zMmsFjado+2xODIN7ha5vavwuq9A== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c53qvbcsy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:30 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c5291b89733so1381843a12.0 for ; Fri, 06 Feb 2026 09:42:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399749; x=1771004549; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tZXS0ryzuuoeAsGptKjaEuILlyf9UBevXtHQPKJSvt0=; b=ACyaXTx+8uDH5Xno5c9MTO7ycl6zb5gk6yQ4coU/WkqqhhqLSwTpYvVVg0zexXLlqX pW8XNIqXZ2pHYKpNM6Pri8pta90Hx15gdAwFwn+naqo32TpoR44UYXlQgen6qQ5QRbj1 +52QO8va5T3ODQf6zRY2Bzxdwsh8GXrhZsJYJL4Y/0/LXt2YPiQy93OTVM1GC2lx0qzn 8gHP+COZ/x1hTB6EMFlOQ63TycsZFr3vT5MtQqgSu4BIzK1nlmITfaADNlg7zqxvQwru vMA6JhWOVb64wPFIcLekTcIgh79qoNARsRye40B8ViwUoSh2kWQkTbAxe9O6E2/DblA3 DD3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399749; x=1771004549; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tZXS0ryzuuoeAsGptKjaEuILlyf9UBevXtHQPKJSvt0=; b=Le8SOZv5J7kF1JYQ0Y2sChcWW2Lw7GdSzKCbrypPfJXBBkiEUUoonuGP3Dz0mYcZSk 1+EL/X1fRCcx/GaG0kEFTdgZ0KF6LwTZZl3BJ4d0QOiC26+KeGfLF+D8+0KFjpWQghSU nuoIkr8M90HbzFWi2YyTALZdABBKYDrRr9Cna11caXP7Qcy1vWvIZMOEDZViRkU+x8Ye vO2mQcPbn7j15bAotgX5gKAdwx39xbreB6KgVvMYoPAjxYA+J03MHpYsSTNz1wrNOFVZ X7UkaLm/n0Bve4v1St8GYOsHsryrQx15BDq4Cg7JSMQlVkUKw2CQxwX0+kE6bNhh0kBx D4zg== X-Forwarded-Encrypted: i=1; AJvYcCWeBlav9HqxfEwh/XAZa2CxVk1nwW4dj1OcEnq4RFwtVdnNkX5Cq7hWtVWFFS+VMp1d6WDf9lYkKRgyBa8=@vger.kernel.org X-Gm-Message-State: AOJu0YzOgcg8QpZPd8GSjA64N7sgydbPIxoWjQQUJ+CdH2zFHNFpAzpy DN6UWbcQcPl595Za1EupM047UK308H0rG4ULpmowTVmJLm49D4FlK9dzqJ4tmz1VYxNq/7eqBYp IZBO38aTrEdjrOe2WzmjS5Jzy07TYAVPbNaPgk6C/SbV5Z2gspHreq9BR3+TnyRCindw= X-Gm-Gg: AZuq6aKdHLSo41xp6EMclAcNBrTTVletSc0BUfzWMLEVhdw+T6acG5FZNc81RWeSEm9 RcXXvcqDPPvYsuK1L60b6j8I7d984/a3H3I5KtvO9hSFW1fz1ZjgIN+HEFVSL7TLlc0Af+uq4Qh YuhLfFPk4XjXjnOOe2f88TW9A4oiCQ1NMLIFg+doxKLBdhF0ue4CHu1CY++WQ2q3hGKdSwhEgyh MQCtVA9ArenINIm63QlFFwm6xatxfLadK8mx/SswUnDCOtUgpWu1lxgjgphgs2l+NcDpvDbP3/Z Dbfv5/QEox2dOFZyXjtmWvP/lm+U3yN7T3T1adHNZoqedl1H8wJ8Uh88zVDoUPCyARb5a1L6l3z Fuw1LRjnzSWPG2LWo/jDp3k19qSIIXR9pz/XeqJKSjiM= X-Received: by 2002:a05:6a20:d12f:b0:393:c4d:be50 with SMTP id adf61e73a8af0-393acfb104fmr3213281637.16.1770399749526; Fri, 06 Feb 2026 09:42:29 -0800 (PST) X-Received: by 2002:a05:6a20:d12f:b0:393:c4d:be50 with SMTP id adf61e73a8af0-393acfb104fmr3213243637.16.1770399748923; Fri, 06 Feb 2026 09:42:28 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:28 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 09/13] i2c: qcom-geni: Isolate serial engine setup Date: Fri, 6 Feb 2026 23:11:08 +0530 Message-Id: <20260206174112.4149893-10-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=TsPrRTXh c=1 sm=1 tr=0 ts=69862806 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=6GPvvr__t7aM35KwLhsA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-ORIG-GUID: fVaa9DgCaAJylZGEXQTrWtgbDmMczcgb X-Proofpoint-GUID: fVaa9DgCaAJylZGEXQTrWtgbDmMczcgb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX1GvfgyifQQAq YJZR/hqOSRELr5RAFBwgg267Q9/E3UafNQlLh/E14EIhDlH4b+uNycoC4Idf/HjSMce2lJUe82L 76jNXLnCrc53WsL7LsiKTt+w0zCrvBftrGQYndFwLOXKhZ6JLWH/cszt87Ytix4Xpc244AgXU1g O6YxL3sY9RSmKqEXVozNMkTKMUFXCS4qlyVWXJDHu4d1Mnjc4nHBK61cgQDB0dexfT3S9E5PItg uuqfwyr6BOrJQ4aNcOoWr5YubwdJAJWlbKj3U0xuwi5ZdHURG3Oj5clloWgMDNfbG2mbnp21LRW 7waFTn9AVuwGHvJq8cD4wR+EB/lmO09y5abtBSMFaol/dMnvikavsIQnKOsvjT26cV5m6+RkCPx niiHxbtP2VGWaUuosGBIRCg1oMIl7eywXWuMj5JEKu6T7GkyUzOOpdGzBHB296n1BOPWqaNye4t qo7NoItd6+XrNeEh9mA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 bulkscore=0 spamscore=0 clxscore=1015 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" Moving the serial engine setup to geni_i2c_init() API for a cleaner probe function and utilizes the PM runtime API to control resources instead of direct clock-related APIs for better resource management. Enables reusability of the serial engine initialization like hibernation and deep sleep features where hardware context is lost. Acked-by: Viken Dadhaniya Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v4->v5: - Added Reviewed-by tag. v3->v4: viken: - Added Acked-by tag - Removed extra space before invoke of geni_i2c_init(). v1->v2: Bjorn: - Updated commit text. --- drivers/i2c/busses/i2c-qcom-geni.c | 158 ++++++++++++++--------------- 1 file changed, 75 insertions(+), 83 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index ae609bdd2ec4..81ed1596ac9f 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -977,10 +977,77 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_init(struct geni_i2c_dev *gi2c) +{ + const struct geni_i2c_desc *desc =3D NULL; + u32 proto, tx_depth; + bool fifo_disable; + int ret; + + ret =3D pm_runtime_resume_and_get(gi2c->se.dev); + if (ret < 0) { + dev_err(gi2c->se.dev, "error turning on device :%d\n", ret); + return ret; + } + + proto =3D geni_se_read_proto(&gi2c->se); + if (proto =3D=3D GENI_SE_INVALID_PROTO) { + ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); + if (ret) { + dev_err_probe(gi2c->se.dev, ret, "i2c firmware load failed ret: %d\n", = ret); + goto err; + } + } else if (proto !=3D GENI_SE_I2C) { + ret =3D dev_err_probe(gi2c->se.dev, -ENXIO, "Invalid proto %d\n", proto); + goto err; + } + + desc =3D device_get_match_data(gi2c->se.dev); + if (desc && desc->no_dma_support) { + fifo_disable =3D false; + gi2c->no_dma =3D true; + } else { + fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; + } + + if (fifo_disable) { + /* FIFO is disabled, so we can only use GPI DMA */ + gi2c->gpi_mode =3D true; + ret =3D setup_gpi_dma(gi2c); + if (ret) + goto err; + + dev_dbg(gi2c->se.dev, "Using GPI DMA mode for I2C\n"); + } else { + gi2c->gpi_mode =3D false; + tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); + + /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ + if (!tx_depth && desc) + tx_depth =3D desc->tx_fifo_depth; + + if (!tx_depth) { + ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, + "Invalid TX FIFO depth\n"); + goto err; + } + + gi2c->tx_wm =3D tx_depth - 1; + geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); + geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, + PACKING_BYTES_PW, true, true, true); + + dev_dbg(gi2c->se.dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); + } + +err: + pm_runtime_put(gi2c->se.dev); + return ret; +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; - u32 proto, tx_depth, fifo_disable; int ret; struct device *dev =3D &pdev->dev; const struct geni_i2c_desc *desc =3D NULL; @@ -1060,102 +1127,27 @@ static int geni_i2c_probe(struct platform_device *= pdev) if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->core_clk); - if (ret) - return ret; - - ret =3D geni_se_resources_on(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning on resources\n"); - goto err_clk; - } - proto =3D geni_se_read_proto(&gi2c->se); - if (proto =3D=3D GENI_SE_INVALID_PROTO) { - ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); - if (ret) { - dev_err_probe(dev, ret, "i2c firmware load failed ret: %d\n", ret); - goto err_resources; - } - } else if (proto !=3D GENI_SE_I2C) { - ret =3D dev_err_probe(dev, -ENXIO, "Invalid proto %d\n", proto); - goto err_resources; - } - - if (desc && desc->no_dma_support) { - fifo_disable =3D false; - gi2c->no_dma =3D true; - } else { - fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; - } - - if (fifo_disable) { - /* FIFO is disabled, so we can only use GPI DMA */ - gi2c->gpi_mode =3D true; - ret =3D setup_gpi_dma(gi2c); - if (ret) - goto err_resources; - - dev_dbg(dev, "Using GPI DMA mode for I2C\n"); - } else { - gi2c->gpi_mode =3D false; - tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); - - /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; - - if (!tx_depth) { - ret =3D dev_err_probe(dev, -EINVAL, - "Invalid TX FIFO depth\n"); - goto err_resources; - } - - gi2c->tx_wm =3D tx_depth - 1; - geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); - geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, - PACKING_BYTES_PW, true, true, true); - - dev_dbg(dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); - } - - clk_disable_unprepare(gi2c->core_clk); - ret =3D geni_se_resources_off(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning off resources\n"); - goto err_dma; - } - - ret =3D geni_icc_disable(&gi2c->se); - if (ret) - goto err_dma; - gi2c->suspended =3D 1; pm_runtime_set_suspended(gi2c->se.dev); pm_runtime_set_autosuspend_delay(gi2c->se.dev, I2C_AUTO_SUSPEND_DELAY); pm_runtime_use_autosuspend(gi2c->se.dev); pm_runtime_enable(gi2c->se.dev); =20 + ret =3D geni_i2c_init(gi2c); + if (ret < 0) { + pm_runtime_disable(gi2c->se.dev); + return ret; + } + ret =3D i2c_add_adapter(&gi2c->adap); if (ret) { dev_err_probe(dev, ret, "Error adding i2c adapter\n"); pm_runtime_disable(gi2c->se.dev); - goto err_dma; + return ret; } =20 dev_dbg(dev, "Geni-I2C adaptor successfully added\n"); =20 - return ret; - -err_resources: - geni_se_resources_off(&gi2c->se); -err_clk: - clk_disable_unprepare(gi2c->core_clk); - - return ret; - -err_dma: - release_gpi_dma(gi2c); - return ret; } =20 --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 CD1A24218A8 for ; Fri, 6 Feb 2026 17:42: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=1770399760; cv=none; b=LdTMMXDUPWN860nEl6s8POA0ZV/LQScWeZfiqwCmpQBVK/AnOPqOK+f0Q4Rs88SVCRDD3UVN44eIFDnQkUuZ9oAqqZRNWmo8Mx17ppHEfHprJqhxRfJb1EAQmlFawNBlL/ffYc1ce0ENaqoZ041KrYO77rvpvRvbp56eLU/liZQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399760; c=relaxed/simple; bh=9fl8bfjYxtflTrpwQ+JEsijZ7KkoNEhoY7/L5W7VcgE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=NfJmacsxZ6Ntux26oPUTFmwAyO7gPNKO2xu3p5ReZO44C4L1yHx8XqyzT0ZrTXH+bSNTzyieAGkyoU2EdqUMJfBsqJkGkntdI6eRm6SCFGWHh6TJfef4OiDj6zn6WK6gI2v0I/dHXpZKXOWXfQg1y/jJ3Z0y/E3gysqxe8p2zmg= 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=hIEQ/jv+; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bbXHqWwI; 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="hIEQ/jv+"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bbXHqWwI" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6169QQCe2228092 for ; Fri, 6 Feb 2026 17:42: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=eq1swinsB23 3N5IrjE+XE6BW0OuGc5vycgIlzP3MrF4=; b=hIEQ/jv+dToj7p+dn9SfH2dyODr kv+F5qk5SxsjRWamieih51Z+414NVJ0stADfNad8YNBZAT35cZT1X01jfeOtP6U0 QQnPrv15Sy0QhAfVzZZLC+SJpNsJHdPFjbS21fTNKy0W0rKvYRnximz3a0eB3PAT W1WTyhBSvFVOwOe3ipI57IhXE7IYxBFwWqioP1ONYS5i0Ot1M/7Bq/aT3OQ7QB5u dvRzX5mDfVWi66sPwrpouaskxg6RuKFMPkB30AtzzfosDovSlRpKzA/93GtkR3N6 R61+/L2uDCVGHhAuhyJBJVGfekylltVlhUEUyYR3H5QZJ3aEZQL4fKzFdpg== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c5dnyhdhp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:38 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c61dee98720so576920a12.0 for ; Fri, 06 Feb 2026 09:42:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399758; x=1771004558; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=eq1swinsB233N5IrjE+XE6BW0OuGc5vycgIlzP3MrF4=; b=bbXHqWwI9j917j9VEqT042F5maucyPH4tbn2neeyoeCh72eDxSMEiajZkmqWSKtFn/ 1yInq9UikfzM6AR5KngOkQ9uGPFPIcUjw3SgO+++zjE7IN2+cCXGVh9cxxdgeLR2U4SX fhjLtRoMUCJh+Okex+FWTkP2PqzpTxYQnkMcBKE56Z+ceAZqF6p7rRtV7NYqgKTDaUOd 03x3xvzVq06Xv9NzvGK4i+ohYB94rZHAPaAanoyU14HEogFcg0Q7Ey/2bjvlDj9pjQTg aH9AjC/J88GUGsDoBrlCdX5dXPXxBqZrCtRM9Qj4PhWBlw3q32qpVeTXQC5QPukko0/M oeZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399758; x=1771004558; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=eq1swinsB233N5IrjE+XE6BW0OuGc5vycgIlzP3MrF4=; b=ms1I/NsODuHnxRHzADDmL2AoCCCrPRQnseh4eUKR5WS0hqpniVvwACBV3BQ4TPdQMQ f0jWa4dx6mS16sVHdFAekT6xjNz6E2rSrl3eulfeAdsJzPlteocYdOXNOm+FjHeNS+Ia g3Q3CTtgyLGPkTLM+9L2JWzXiiigu/8VXGVycZKIQxjIjZCwBIVkMLSy2/3t9FB+oJ3t +Z0JwlXQvHXird96Hcp7mjouvykevcENL1HuFWU2Edw9YBXmbIpKuzuNPtsk8nc4TE8a 9AAKPjgHN/Xz9IHATM58NHckFOisn0ate5vF0YSAdZ7F08Hgz5cP3mCAU+xL/G9di9HV TMTA== X-Forwarded-Encrypted: i=1; AJvYcCUMoQ/WcLZEuGkjibTnuDsIwuVrLQsCZfWIr40kqHQb1EDfMb7fneW3Pk0jgJJ0TVzsPdJjvhapJ2iekDM=@vger.kernel.org X-Gm-Message-State: AOJu0YyBkox20uNACQM364P8FGYOYXHBtrO+zXkdPB/TIQaIzm7ZOQha jrWkTFyH/5XjcuGD6IwbFPudUlSYz8j6bYpcO6txSk02m6uk/vtUzWvPKBkMoZ//ZwtPwZC+p6Y mxfbA+YBXvh8h8TCQo0/QqbYdjVaz4Pe7+FPibXO4oKG61g6JS804X2usiLTwPGiM+nU= X-Gm-Gg: AZuq6aK44B5p5YdeH/wjEkCaVmWcwXAuiJJKwXyfmlGsN3VrcOkvxd/IBPgkswxWRNo jjVwABWB56he4wbDuxSuNqOEROTGf/F/H54512s0V01wwohggtwFhunYoY+9+zey66dl+RjOorA tb4tKwk+H9PY+D1NdChFYl5Pxi0+SKUBh1MvMk/Q/AlSqyk1e1FQUJ8jr8mFVNxD8pPBxgvVIdH ihex4dG2ZoFsDb1iv3WV9fw1EbC0DJ3MrRS8PYPMM8b/VHqUKP/E1+5hv6kSl2i9rRzi73sGi/t 1Nm/BP+sLHRdRYO11Dor0WCMXw+kPbRc5foJluKTlcv6MwBC4A3NhZW5I/E+s5eBgfpPVRcbu22 HrOQSnwVfBRJKKdJrEnD9Du5/MpedlIxips9P0DtNxD4= X-Received: by 2002:a05:6a20:d526:b0:38d:e674:b60a with SMTP id adf61e73a8af0-393ad029dc7mr3808100637.36.1770399757492; Fri, 06 Feb 2026 09:42:37 -0800 (PST) X-Received: by 2002:a05:6a20:d526:b0:38d:e674:b60a with SMTP id adf61e73a8af0-393ad029dc7mr3808056637.36.1770399756714; Fri, 06 Feb 2026 09:42:36 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:36 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 10/13] i2c: qcom-geni: Move resource initialization to separate function Date: Fri, 6 Feb 2026 23:11:09 +0530 Message-Id: <20260206174112.4149893-11-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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: upcjYO9Nzkpfa8unHr0HvVHLcgj--XCx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX/aoV1eLT8a3d 45HTME0Q8wOgNQYPWVaZsx6LKxSg8gaLaxtfSws4evB+5++yumqCpniJbpY4Gs6MGO77oFkAwx9 Qm76QFU5ft+OX3/QKoE1UqUXM5Z+Ep18VnxWtFuX+eE2CKvgJWtXGub0g5+XUDkO4ATo6z5fqfS SDagQlYKJpQQ5p6TVcTvbVtA3GgU4ZI0l7MnxhzJaP2U1zGOKGeUKcXvxEuKDvCCv28ugVWVp43 wjnwjueYfK94XYLX4j0HOF9hex1XR+IjPEB9dOzYyj/mxCpBWqdTON4SvQmSw6x1Ivd9Vy8CSfY QAGW68TfWvXmBpKVcMhWJ23elrBAF7gdiKTN5gF9kOx7RL6iAVj06InehiqWLg/VsUIChtOXqP9 loCiX1jj02uZPNZ0Goz7vgmXQUIEG8Mr0H6At62uguEYPMuR9B/izEaFXbtw8W2Nd+Iuam2q+a/ aCDSr3S4wIS++4c1sig== X-Authority-Analysis: v=2.4 cv=C73kCAP+ c=1 sm=1 tr=0 ts=6986280e cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=T4QVXHuY6bPIseVWQ88A:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: upcjYO9Nzkpfa8unHr0HvVHLcgj--XCx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 malwarescore=0 clxscore=1015 impostorscore=0 phishscore=0 adultscore=0 lowpriorityscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" Refactor the resource initialization in geni_i2c_probe() by introducing a new geni_i2c_resources_init() function and utilizing the common geni_se_resources_init() framework and clock frequency mapping, making the probe function cleaner. Acked-by: Viken Dadhaniya Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v4->v5: - Added a Reviewed-by tag. - Removed core clk, has_core_clk and icc_ddr variable. v3->v4: - Added Acked-by tag. v1->v2: - Updated commit text. --- drivers/i2c/busses/i2c-qcom-geni.c | 64 +++++++++++------------------- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 81ed1596ac9f..05f5705b0319 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -107,7 +107,6 @@ struct geni_i2c_dev { int cur_wr; int cur_rd; spinlock_t lock; - struct clk *core_clk; u32 clk_freq_out; const struct geni_i2c_clk_fld *clk_fld; int suspended; @@ -125,8 +124,6 @@ struct geni_i2c_dev { }; =20 struct geni_i2c_desc { - bool has_core_clk; - char *icc_ddr; bool no_dma_support; unsigned int tx_fifo_depth; }; @@ -1045,6 +1042,23 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +{ + int ret; + + ret =3D geni_se_resources_init(&gi2c->se); + if (ret) + return ret; + + ret =3D geni_i2c_clk_map_idx(gi2c); + if (ret) + return dev_err_probe(gi2c->se.dev, ret, "Invalid clk frequency %d Hz\n", + gi2c->clk_freq_out); + + return geni_icc_set_bw_ab(&gi2c->se, GENI_DEFAULT_BW, GENI_DEFAULT_BW, + Bps_to_icc(gi2c->clk_freq_out)); +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; @@ -1064,16 +1078,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) =20 desc =3D device_get_match_data(&pdev->dev); =20 - if (desc && desc->has_core_clk) { - gi2c->core_clk =3D devm_clk_get(dev, "core"); - if (IS_ERR(gi2c->core_clk)) - return PTR_ERR(gi2c->core_clk); - } - - gi2c->se.clk =3D devm_clk_get(dev, "se"); - if (IS_ERR(gi2c->se.clk) && !has_acpi_companion(dev)) - return PTR_ERR(gi2c->se.clk); - ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); if (ret) { @@ -1088,16 +1092,15 @@ static int geni_i2c_probe(struct platform_device *p= dev) if (gi2c->irq < 0) return gi2c->irq; =20 - ret =3D geni_i2c_clk_map_idx(gi2c); - if (ret) - return dev_err_probe(dev, ret, "Invalid clk frequency %d Hz\n", - gi2c->clk_freq_out); - gi2c->adap.algo =3D &geni_i2c_algo; init_completion(&gi2c->done); spin_lock_init(&gi2c->lock); platform_set_drvdata(pdev, gi2c); =20 + ret =3D geni_i2c_resources_init(gi2c); + if (ret) + return ret; + /* Keep interrupts disabled initially to allow for low-power modes */ ret =3D devm_request_irq(dev, gi2c->irq, geni_i2c_irq, IRQF_NO_AUTOEN, dev_name(dev), gi2c); @@ -1110,23 +1113,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) gi2c->adap.dev.of_node =3D dev->of_node; strscpy(gi2c->adap.name, "Geni-I2C", sizeof(gi2c->adap.name)); =20 - ret =3D geni_icc_get(&gi2c->se, desc ? desc->icc_ddr : "qup-memory"); - if (ret) - return ret; - /* - * Set the bus quota for core and cpu to a reasonable value for - * register access. - * Set quota for DDR based on bus speed. - */ - gi2c->se.icc_paths[GENI_TO_CORE].avg_bw =3D GENI_DEFAULT_BW; - gi2c->se.icc_paths[CPU_TO_GENI].avg_bw =3D GENI_DEFAULT_BW; - if (!desc || desc->icc_ddr) - gi2c->se.icc_paths[GENI_TO_DDR].avg_bw =3D Bps_to_icc(gi2c->clk_freq_out= ); - - ret =3D geni_icc_set_bw(&gi2c->se); - if (ret) - return ret; - gi2c->suspended =3D 1; pm_runtime_set_suspended(gi2c->se.dev); pm_runtime_set_autosuspend_delay(gi2c->se.dev, I2C_AUTO_SUSPEND_DELAY); @@ -1183,7 +1169,7 @@ static int __maybe_unused geni_i2c_runtime_suspend(st= ruct device *dev) gi2c->suspended =3D 1; } =20 - clk_disable_unprepare(gi2c->core_clk); + clk_disable_unprepare(gi2c->se.core_clk); =20 return geni_icc_disable(&gi2c->se); } @@ -1197,7 +1183,7 @@ static int __maybe_unused geni_i2c_runtime_resume(str= uct device *dev) if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->core_clk); + ret =3D clk_prepare_enable(gi2c->se.core_clk); if (ret) goto out_icc_disable; =20 @@ -1211,7 +1197,7 @@ static int __maybe_unused geni_i2c_runtime_resume(str= uct device *dev) return 0; =20 out_clk_disable: - clk_disable_unprepare(gi2c->core_clk); + clk_disable_unprepare(gi2c->se.core_clk); out_icc_disable: geni_icc_disable(&gi2c->se); =20 @@ -1248,8 +1234,6 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { }; =20 static const struct geni_i2c_desc i2c_master_hub =3D { - .has_core_clk =3D true, - .icc_ddr =3D NULL, .no_dma_support =3D true, .tx_fifo_depth =3D 16, }; --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 CBC3941C2EE for ; Fri, 6 Feb 2026 17:42:45 +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=1770399765; cv=none; b=SjinpXIwugjnk8c1ob6U1CPDR4M6diYYBUh/zHsoydsyYakYwY2xdutFgpRaJVAq/uZHoKVt3MMK0WeLQv3f/lfWfXrxpocTZKS5T3dqGZ0HFyVIjkUI6KZj0g8R0Dyj8r4aecrIld3uODlNhrcj83i9dJ1CoZrcKnWXn4Lr7i8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399765; c=relaxed/simple; bh=INGstpgJLmbXtSQabWLbgnYYayWnJH8f7H+COx7b8d8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=CdoAGxnn2/MNPoJ+ZN8O/r0HDoHZg3H9rXiOLvPOlSawlgDqmBnMYGGuQmJULCJwM8em2xTBCnX89a0qO/YgIEu6YhKYF34omQCRjiPkBH4mfpflEEL3c9BipMFG3I05Yyj/4xo5rZ6TKM/Q90GzWnD8uTZc/1MvVn/pOvHMv7c= 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=cgMXsDSv; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ApzYFOhX; 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="cgMXsDSv"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ApzYFOhX" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616B2nHE2938835 for ; Fri, 6 Feb 2026 17:42:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=WwOaKjslk41 m/3sPlhy3wTfRdNt9ldvgK3Mn5lILziQ=; b=cgMXsDSvVDF+BrT7dY/t2F1V2PW AMGcVPcSr334O4cIH6ccS/YV6EvY5m/xlz7cIdeG7Xzn65/0r2MfhzbCmkfH7ENG BZ548M6nibpNAYLLMfQQz38t8ERIuXGWAJGhiLGlcaoruHaUV9gm0f02XQA1UFsj Y9qxEXfUB5FkWrUqZZacLq0TLwJGrEEccnhVdqBDotGeQrynvZ9R2VDbJ6XBoN+h C6y3/3IeGLKVYL4gYOrEuSaevaHrSsyXvnuZvzhUkwlTimPli9Oy4MS/atOz2h70 R0cbsqux2Ll40ESXu2W9/hXe+XMNaF6pMu+a9mvEdSCS48Gw0vteeQPTu5g== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c5f35s4ku-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:45 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c68b97b7316so643180a12.3 for ; Fri, 06 Feb 2026 09:42:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399765; x=1771004565; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WwOaKjslk41m/3sPlhy3wTfRdNt9ldvgK3Mn5lILziQ=; b=ApzYFOhXaIyRECKPCtL9xHJbZFeVFqkNvzUpUdJ/wcd+0iMK71S4vnxb9W9zUlpQ5t +3vG0kGYQT6gb0z544Kk6xsMIjAF449C2vJXexbIMX+XHJnEt62CfVVXYu4AUopDmYZj GXOqMh3km90yFCbev3fzsa69BhHQwRBxbnJAFtK/5CE7XGDya2sds3g7aXO54PuJTEpD 9J+aAisPLveIPTdLGiRkkuEp4lzx0dKEMK7zkNGGZ+xKTuQrz/KjJNFhyhGl55TjBCzA CiMQxMo5ztZ5mCN8ZSRL4AhdlF78z1AQpaharUsSXwdrpWaX6WSP0qU8rTxE2wQAtiYm yfOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399765; x=1771004565; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WwOaKjslk41m/3sPlhy3wTfRdNt9ldvgK3Mn5lILziQ=; b=hvPIOVfQtRHtMqmQQ72eotWh0gqdsHJlKv6K5rq/6MttGFXf+Lw+rNwy1E4hkCFJpq Ix+aHBgXREQq77qI0wANrw8wYUr86wTK9ZB88/zOURoMWDxE2iV3T39fdvl1CTCBdNTI N8Wl6Suj0AtpuXnNDhowfoT51iReeAev48R2atzgzm2LCwcmADZJ9aoAC1PHXyjoFAbT vNPs7/y/sqQhciPsSRT+f5UousZxRzruFeeKgYDSpLmfwfNADQyj7+X87xWONOf3I7EG 282VCT2upM3LlKjNEhvAfTh2E9xBvkdHhOH1ijpkX0Qx0pORm9RKBuJ2JDK1sX8OCVTi Xkww== X-Forwarded-Encrypted: i=1; AJvYcCWevtyfZVTfnR+cX6OkWCvedtJ3Mht5DXEf61JHa6ey9OfSOwKfr/h8xiXfK4utlkdl0bDgdSa7nPnwaTY=@vger.kernel.org X-Gm-Message-State: AOJu0YwyZ2Mq7TeY6jHXSjjkJ/Lqshg84vQAdn+TNkbupBw1KwNEt9P1 aL70cgY9CUWsq8tY+kskEsFHIhk82F9SxG3Uphc8jwY00dnwuAgoTwnS0HfNyJoi8m+TxtUTyKk sccsK1TQ4ZgLFLHi6ofhgfDagEPiom+CTxvWYZGl2lc7xdETgDXImqh3Twlc/To0Vdc8= X-Gm-Gg: AZuq6aJdcngdZwd4b9DIMScR+QysOuAkf5vpI9CCbVZ574uvhfmSvr7RSg1t3aFIUGg jPyQrGRoGs0edeUzkY3dLcIbQGbW3hO8IG31nw/CYq2K83r4ccLBEsGe6KyvCZVEyu5eeGG2dcm WTDY+Ff6/C5gvEVzsrtG8/C+l4O6iySXkGaUlVXQxHHuYhz3D/acw0kLGfNYFJlnGT+wcfZppYC l8Ucsd0DqVmYQ7nnfp9hve1A0HNG/PDt7jk/lDxhH4MheP1Ucbmbw9vXCCKbILg4OBp/QB6moRQ XqbDDtFsQODLr4fN3UQbxECWldChVxTIwLB1cel+u7uNxBXOY3+D9YZlNawOcn3VVLqeCYtjDr8 fCxJlcHMeBZ0tW3WHWGmzMi36v+/KGjH14NQKza49nPw= X-Received: by 2002:a05:6a21:6f09:b0:38e:9ebe:5267 with SMTP id adf61e73a8af0-393ad366d21mr3564244637.57.1770399764541; Fri, 06 Feb 2026 09:42:44 -0800 (PST) X-Received: by 2002:a05:6a21:6f09:b0:38e:9ebe:5267 with SMTP id adf61e73a8af0-393ad366d21mr3564217637.57.1770399763929; Fri, 06 Feb 2026 09:42:43 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:43 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 11/13] i2c: qcom-geni: Use resources helper APIs in runtime PM functions Date: Fri, 6 Feb 2026 23:11:10 +0530 Message-Id: <20260206174112.4149893-12-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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: 1nD8cEwOCgVyIEy1MYXZ7A-oyQBj3QnK X-Proofpoint-ORIG-GUID: 1nD8cEwOCgVyIEy1MYXZ7A-oyQBj3QnK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX5c+4wLbagRBB Plqp5bcwE/CKvClo1NREEsw04eLyvpU38sCkItw2PMkMbvmWvnxQqTV/sdT/4IIAxBmewu5moDF A6O3fYX3FtN4Sykt6DTIxElb/XUU+uzXs532YremE50S8tRLOptk+XkJxSfz40ftST/gujWKu1j 27i8Eqg2/yIVfLr8nuS8KTk1EjO/gdTFC6VTccM0H4kKhzGfw4Y+OmuhdOtSlO41L5bbbVTv5xa brT4OMVm+Hh96PdSGo2NAdzFICcxm1Ne+7I7OoDio/n0pA6rXvAVOCXKI3yjkow3dhk9Z7wkNOQ SW4FCbT+IZKkR6JvW4Y0G77ZrCA6XLp5WABUxwJoKGXeLG2jvgw/LOHte9IdK7qiphfhSu96kcW ZWVkEzjR8ana4Z2gKNGmEBSeBtmrqXYHiE4aYqAsjecs6JHmb64hI8nXaClqBhwQqtJ48KVyzCW cL7bv+3oA2+d/923eJA== X-Authority-Analysis: v=2.4 cv=ApnjHe9P c=1 sm=1 tr=0 ts=69862815 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=3PeDo36KSfG0vlEF63sA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 bulkscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 impostorscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" To manage GENI serial engine resources during runtime power management, drivers currently need to call functions for ICC, clock, and SE resource operations in both suspend and resume paths, resulting in code duplication across drivers. The new geni_se_resources_activate() and geni_se_resources_deactivate() helper APIs addresses this issue by providing a streamlined method to enable or disable all resources based, thereby eliminating redundancy across drivers. Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari --- v3->v4: - Added Acked-by tag. v1->v2: Bjorn: - Remove geni_se_resources_state() API. - Used geni_se_resources_activate() and geni_se_resources_deactivate() to enable/disable resources. --- drivers/i2c/busses/i2c-qcom-geni.c | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 05f5705b0319..0ddfeef6d1b2 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -1160,18 +1160,15 @@ static int __maybe_unused geni_i2c_runtime_suspend(= struct device *dev) struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 disable_irq(gi2c->irq); - ret =3D geni_se_resources_off(&gi2c->se); + + ret =3D geni_se_resources_deactivate(&gi2c->se); if (ret) { enable_irq(gi2c->irq); return ret; - - } else { - gi2c->suspended =3D 1; } =20 - clk_disable_unprepare(gi2c->se.core_clk); - - return geni_icc_disable(&gi2c->se); + gi2c->suspended =3D 1; + return ret; } =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) @@ -1179,28 +1176,13 @@ static int __maybe_unused geni_i2c_runtime_resume(s= truct device *dev) int ret; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_icc_enable(&gi2c->se); + ret =3D geni_se_resources_activate(&gi2c->se); if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->se.core_clk); - if (ret) - goto out_icc_disable; - - ret =3D geni_se_resources_on(&gi2c->se); - if (ret) - goto out_clk_disable; - enable_irq(gi2c->irq); gi2c->suspended =3D 0; =20 - return 0; - -out_clk_disable: - clk_disable_unprepare(gi2c->se.core_clk); -out_icc_disable: - geni_icc_disable(&gi2c->se); - return ret; } =20 --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 CC0BD42189B for ; Fri, 6 Feb 2026 17:42:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399774; cv=none; b=OGRvSct726xlKGuOVVzl+/gmN0Yml7+4KBHOLNGSKJFxugXf6LFD32KDTFASqV4+5cUST7yf96dSS0rY2CRmJjBbUTE4tNNx3UeWL9XgwIJSa1xCZldf9a/+duOxOdPC4v8OQLtwhv9vZo7OaC6xq1AQyhFu2J8FBdRiBIEBFkA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399774; c=relaxed/simple; bh=BbBD5tNkBQrd31zYVx7NjYHcGjoQsLjnUX+bRHK0MRM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=qhJmmQZ6iTHxZfk7c4d5Yc2TudSbvi/RE+03sQkYJwlQITvjrfCYkkE6oP1LU/+XYtW+LuCum3wyn0JE49xi2j9Lz1Fe6xqpG9RdoqyzAdNDAnf4R3OXKRWPS0peOzdOA4SmfkeHNMWsRyMjXt7xx31oL8sXMhalJKrRDHf0H04= 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=oHEAzNIX; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=acEcr2x1; 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="oHEAzNIX"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="acEcr2x1" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616CEXa43011797 for ; Fri, 6 Feb 2026 17:42:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=2xdIWjPvFPu WeaF1ghJotVpCXxOBg3ohkTZp+i91ty8=; b=oHEAzNIXXfYjfDDZC5U+wj2rtj8 FxziysDKKFears/mcM2gzH2YRQ27n/JjVN7irbCH7emZh+Pz5D3FJY7FxkjfAvI4 UplIwCvJMyis1f2++BPtzApetx2P7i1RGPEjYV1e9a9k6su1Nnzmyvg60I9oTTUe aq058mqVpooKCFST6lD+5dB/mjVVqr2bH+dd+cbQcLpcjbrgDn46capIT6MHYbeO Z3yUuqBX2FNkz69E7qQdl+OhqUeEIi73RzsDyYmXFdVHZK++4PEL+qRDFvycyVlT 1TUV3O8+I2Jt9fLMoB0Wza4ogkLMlGS1q9yeg0AE5ppxBkMEf+hyys7TB7g== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c59ukj84c-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:52 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-c634b862fcfso1488624a12.2 for ; Fri, 06 Feb 2026 09:42:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399772; x=1771004572; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2xdIWjPvFPuWeaF1ghJotVpCXxOBg3ohkTZp+i91ty8=; b=acEcr2x1ofCvwftyacNsPPt0SAgFIAU6LfpTYytkD7OboMIZiZW+dhc9P/91Pfogn4 P803X6fMGWRHvWRAfcwlkIIJhW0qSynphBTMWgt39vewkIpbaG90VEtLkk+uBQKOFDUG eK9KoCTpdpyY/Mn74+EdighDHm/Xfi6I72zU9pUIwhnOamEtLwmVOCeetBp1pUNQ2Usl /bwmcEvCaZ7w8fYu7OCRtyzNAqcuFdyxN7iVkOEBwigtbM2FQKUDSxwRYa2sn38iOHc2 6a+/TJtpVh23lhZkIRVqtfb/epv8SxICoDTg9v1x9cF6jU42a5TcNcBcyDGppXRH+MoI CiVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399772; x=1771004572; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=2xdIWjPvFPuWeaF1ghJotVpCXxOBg3ohkTZp+i91ty8=; b=hShbq7Qz/d4Xa6fJj8UE+88NGDlCrMCb5l/OBaATqvtmRQVakcjAvRvra2kxHS/hFQ 94BgZm9DASMkJuQ+xtWSnRtYa03TRXNbw8jsdvIs37g3rHHnzaimb/kVutWt4BvJe960 Gg1YuhE5rfch+6aUrPiZxLB/gLkaKY3NP/Y+kXD8PscXvmA3aJQxP0dsIlbeyyjqGxI4 aA1S6q8efdHtwRqv1Gqm5Obii7MFFBPU6UKp0SyKf5EhoY5MTrurUrl7/j1l8IMekICj S0+vpxd7EbACIjb8Wu2Hq9aTj7fR34piVzJUwZcOZdtCC3XWtCvUlciBWOVXnV23X1+e xB6g== X-Forwarded-Encrypted: i=1; AJvYcCWyTmESXp54sBm3AftvUMGy7yDkej7ZohqtfLLCOGqp5pz9oy6c3EkvUMPbuC1eD1R5MnmW15ATvc/fJUo=@vger.kernel.org X-Gm-Message-State: AOJu0YykNvbeJwpprg5XBUodnLb8Zy/ucUotaDdURpRX6gu2Sq7g8Xnk J7LEkEn69o1IydyZ5z2e0pbRuSjYMLPSWDE6P9TIitfo1WUk7dLFEVMT7+n+iDOQ68kl+KcVsuB Vb7oOpCL7XzSJFQZPhLJBFeYAUQZT5fzawnmOLbauUfMCjBr3af3DL5NzPA2fLGVk2Yo= X-Gm-Gg: AZuq6aLGu5pCojTuzoJArm5354vg5eAw2ok1qva2pHss+aNCPUh9tovZamMeF7pDvIE frEkZYMMIYRmZadxmxxzIdiSEXCh3S6H06nXWuFdVj7mbQxu23rEqSNcWeffA3xHOV9k0oSlz9V r9ROwiV/dYUimMqxzmK9oMdZYmOGi6Z0ptxAHj098qJ2SwA+iTVbH7O9tQF1U9Lbh8NQuCzCMiT DXmkNn46GQ9i95kmRt9QjjIKZWpHvSy3JthPhkMqFYYyymWIfGmvCkpH/A20chmGafkbpkHFE2a Q6T5Vc2qWp0LkbLEfAt/SjGyNS1r4sdQ5lqAY8mMlQvGo/Ug2tn5pj9AGKe7KrDEi3laGBpIM6g F6xRAVW91YUxaU93dqnka+22q5yAm3l05dUlA8JNg2Ys= X-Received: by 2002:a05:6a20:5481:b0:38b:e55a:97c9 with SMTP id adf61e73a8af0-393aef57a70mr3241490637.28.1770399771683; Fri, 06 Feb 2026 09:42:51 -0800 (PST) X-Received: by 2002:a05:6a20:5481:b0:38b:e55a:97c9 with SMTP id adf61e73a8af0-393aef57a70mr3241454637.28.1770399771109; Fri, 06 Feb 2026 09:42:51 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:50 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 12/13] i2c: qcom-geni: Store of_device_id data in driver private struct Date: Fri, 6 Feb 2026 23:11:11 +0530 Message-Id: <20260206174112.4149893-13-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=OM0qHCaB c=1 sm=1 tr=0 ts=6986281c cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=VoGDZ86lKm6tgvVT7R0A:9 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX4BY+flwLC3ZT nOCBfXlRJ16rP6fpJhHr1zS/GjGQBY3vZ2LuKfsiQABvPwlabgRQchJdqAcVx10GN4i44JeXptL 8txYd7toIaOo6UJHBZfAe6xvCfIDG02hB4OlEISe18hJT/8ZtZ90WFAr2y3qmkZI3sqXnd49bdR SuDvosjtauMRIObrBM/z+/5WuQKPENP/ZGxTh+gdkSubv9etIjIuw6iIUs5BGMo4UnoYDN7Cm3W NqgMxtM0ittctPo/oMetPEtjV2qTJgLlGhY+k7/dY0gHQlb/jc+6ayOcktODpX/rXh+7iDfcq17 WH+g2E5wDRPAw8DvIQlZS1plQJ75+5xcStKzAoCUM3eXeWfGlVbLwt6jwUJyzCATsTpw0dQOnMF NJnvDSqGHmsXzRyczIf+eKSfbkxFzPbyNsMJp1neQDs2v2YOqyXeAmKMT2xNQfwHFcat/tqSqEV 8b2ffKHBHkBPqVhMfRg== X-Proofpoint-ORIG-GUID: _sx2hoCn9DXuAfJJQn8h9xybWhlPnkDi X-Proofpoint-GUID: _sx2hoCn9DXuAfJJQn8h9xybWhlPnkDi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 clxscore=1015 priorityscore=1501 adultscore=0 lowpriorityscore=0 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" To avoid repeatedly fetching and checking platform data across various functions, store the struct of_device_id data directly in the i2c private structure. This change enhances code maintainability and reduces redundancy. Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari --- v4->v5 Konrad - Added a null check after platform data struct. v3->v4 - Added Acked-by tag. Konrad - Removed icc_ddr from platfrom data struct --- drivers/i2c/busses/i2c-qcom-geni.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 0ddfeef6d1b2..9045187ad0b5 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -77,6 +77,11 @@ enum geni_i2c_err_code { #define XFER_TIMEOUT HZ #define RST_TIMEOUT HZ =20 +struct geni_i2c_desc { + bool no_dma_support; + unsigned int tx_fifo_depth; +}; + #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 =20 /** @@ -121,11 +126,7 @@ struct geni_i2c_dev { bool is_tx_multi_desc_xfer; u32 num_msgs; struct geni_i2c_gpi_multi_desc_xfer i2c_multi_desc_config; -}; - -struct geni_i2c_desc { - bool no_dma_support; - unsigned int tx_fifo_depth; + const struct geni_i2c_desc *dev_data; }; =20 struct geni_i2c_err_log { @@ -976,7 +977,6 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) =20 static int geni_i2c_init(struct geni_i2c_dev *gi2c) { - const struct geni_i2c_desc *desc =3D NULL; u32 proto, tx_depth; bool fifo_disable; int ret; @@ -999,8 +999,7 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) goto err; } =20 - desc =3D device_get_match_data(gi2c->se.dev); - if (desc && desc->no_dma_support) { + if (gi2c->dev_data->no_dma_support) { fifo_disable =3D false; gi2c->no_dma =3D true; } else { @@ -1020,8 +1019,8 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); =20 /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; + if (!tx_depth && gi2c->se.core_clk) + tx_depth =3D gi2c->dev_data->tx_fifo_depth; =20 if (!tx_depth) { ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, @@ -1064,7 +1063,6 @@ static int geni_i2c_probe(struct platform_device *pde= v) struct geni_i2c_dev *gi2c; int ret; struct device *dev =3D &pdev->dev; - const struct geni_i2c_desc *desc =3D NULL; =20 gi2c =3D devm_kzalloc(dev, sizeof(*gi2c), GFP_KERNEL); if (!gi2c) @@ -1076,7 +1074,9 @@ static int geni_i2c_probe(struct platform_device *pde= v) if (IS_ERR(gi2c->se.base)) return PTR_ERR(gi2c->se.base); =20 - desc =3D device_get_match_data(&pdev->dev); + gi2c->dev_data =3D device_get_match_data(&pdev->dev); + if (!gi2c->dev_data) + return -EINVAL; =20 ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); @@ -1215,13 +1215,15 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 +static const struct geni_i2c_desc geni_i2c =3D {}; + static const struct geni_i2c_desc i2c_master_hub =3D { .no_dma_support =3D true, .tx_fifo_depth =3D 16, }; =20 static const struct of_device_id geni_i2c_dt_match[] =3D { - { .compatible =3D "qcom,geni-i2c" }, + { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, {} }; --=20 2.34.1 From nobody Sat Feb 7 04:47:01 2026 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 3762042189B for ; Fri, 6 Feb 2026 17:43:00 +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=1770399781; cv=none; b=MR8MEVDj4r12LNdD8XJ1RohFkEnQPa9TEc3aNeMzWiOWVqjr1nfT84NhJ0GGUNFt9F9m+ow1jMVbsK4Vuug/bgZujPrPkXYNwVCgDMtkZ7M4ZV5wzbz7eC0iDRdL9UJ0cgF09J+t2EFZYqMyVaBzUBhbdLHnT3Imm/ihOiYANFY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399781; c=relaxed/simple; bh=vLJsaTbwLSxqS35M14DCmMeySl42SBb+4n+kKoraVRE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AKk18QwAHxp1tigq0z1Xjxq/GSvR3Z/k7HU4uJ3Geju+ZcQqOTISPYNbfOc+SbdixgNjQokdRJMJ2ZmSUzS4JFuIiCUHXh4qMc7a8Clm79zuz9o6/h6tQcviJcAZh/lr+CeTooVbUg0Gl24xuJarGcDMILlFWmY7tUjMIfyPWzY= 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=FYBpiziP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bSPebR3N; 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="FYBpiziP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bSPebR3N" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616FxwVI2490642 for ; Fri, 6 Feb 2026 17:43:00 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=JdbbozLruhe G7fmmV59QuHISGYrAXtPnLDfWr1IiNvs=; b=FYBpiziPoG2ziU+D3kD3JAkOW++ ghsXw4Z+MZ6d+zhsE2IYY+cBbgSEcprlx0qk1XVR37hJVUJAlzUZPv0QOkDRd/uq pVBBzszFKs2pupH5ohb4jgc9WGqu7Dvbn61PRT58qXWzsvTxSk4zXM+5M9UieyaA c2tWZM1oE6a5Wa7EpASmLAVlanpq73fXT54HbRGmyU1MgfhKOlsrL6HpR2aXfnnz y52aMULyRcjmevMUB21m6UCmwtjqLJcEzDZhRFtUvMoJ8pCiljrOM5vHtc5zrWHq sLNrElTF0eaw7F0CuZnvvkQiguyaaHwKgTe6A7aK+X7CI0WLgwfSCp4vT2A== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c5c9c1rt4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:42:59 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b6ce1b57b9cso552760a12.1 for ; Fri, 06 Feb 2026 09:42:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399779; x=1771004579; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JdbbozLruheG7fmmV59QuHISGYrAXtPnLDfWr1IiNvs=; b=bSPebR3NlObwsE61fbrt6xAMltXRCQ6TEnnWimCiBQhlfBiVHQdCwABlzeIyvtJiEn /KYkPfTPu3QASc9ByVj8Wq5MX7Xubqxnpx8kQ0XjVBPp6ZZ6b/t6Po8UZUj/za/Vs2Kc E7ddCP1Tm31wg1trCSAc174k+QHSNsrIVwD3Qam+v9DTVhrkJNJu2TLEvUROkj2UyI9M yHRl91GJCgXjZ1dGYb2tjioT1mT1fEnFZQrzPkXQLd+aaq1y1N0Nj2uHxAN9Q3dpvFXL TpjAmb3bugfxE228goIO2KozNnhE+gZq03vAJGs87bRnx6htKBOcLBfhkjJirLJJBMWE tcRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399779; x=1771004579; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JdbbozLruheG7fmmV59QuHISGYrAXtPnLDfWr1IiNvs=; b=Xpxiyg97mjKl4kS0s0BWu9K4b+zw1l9iGygZmb46W8JdY+/FaIetfJif2D3VfRN49g Hov9gDYbZmO4/tK91TDqinTawm+r/IxAWmL3aKU8Ditn6JEoHVaCjSQJ+qWCPWfmPbNh Ghq3hrV9MSx490W7QbwRxz+wus8emtVXOTikvfOSBkX10EL9/CJYS1c07VNbqpYKXfSf nFUc33un20pKhntjJm2s/+khhBKT5b9g7iaCxUWvvlFILMtdl5foKMDtvRnZm01y4UtY R42P/lW4bzveORaXe9owKfQhBZ+p5Mh2z70JlOUyfMY0AkMBfw+JzAabs4azMe/EBknv pRUQ== X-Forwarded-Encrypted: i=1; AJvYcCW3hh3jz4GbUwHoN+WFUyt5lTip9tjZrlbbBcvYEa65/aIl3YDb5gZ+YbVTJxSfgovP48cVfGL0b9QbWpY=@vger.kernel.org X-Gm-Message-State: AOJu0YzKxiD1o6iiu5eXaeIijC49rQ9y8PFkhFhWv6GraQWbst0eBpRg 4dgBugiKDmut6EsKZoiXJ+85g+mPtoN5gR5bVlV4WzxNts6RVn9h9W2YoQEDxeiTghcmY94wNN7 di7mryOosLRFJokkZFt3vwvFzXtb8jL63eEEMARNPkICIIRdFximQ9uV2ytave9dY2UU= X-Gm-Gg: AZuq6aKBA8lskg2SyeULCpVCCom5Gow67MI+D5t6GmM/2vLxcNSFbwGM9gY4E6dWiDI a5fbFr0+JBiE1VOJvOoArU+4RJw7botsK7ZMglU971yE2pGB+TQqHOwJfJbEqiAp9GnzDLkfBAZ HOcBmmx5Y+Nhg/HtlIBgMgPAwVXyR/JFKb049wUZSL63dk0p4JdoOeHOpuZi+EoCsJ9pUISdoqU vjFy4GhchGN3rawY+RzuhXbvq9q4z1JLSSdZfb59wr/67QYYEsIhsm3TuWGCbga3/azFdcf8MQn msHtwJXu+CHlkqtBSrFMsq0gr4VFrPJUugsgQM48R3ejAq6A4B4WczGho2eGRc6hVAAP1z5vqHw H/OXD9bbK1F0iNCJt+IqsYJ6ty8jhADEE1XsZhfPDpds= X-Received: by 2002:a05:6a21:1fc1:b0:38d:f405:709f with SMTP id adf61e73a8af0-393ad33a8cemr3428819637.48.1770399778892; Fri, 06 Feb 2026 09:42:58 -0800 (PST) X-Received: by 2002:a05:6a21:1fc1:b0:38d:f405:709f with SMTP id adf61e73a8af0-393ad33a8cemr3428782637.48.1770399778305; Fri, 06 Feb 2026 09:42:58 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.42.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:42:57 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 13/13] i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms Date: Fri, 6 Feb 2026 23:11:12 +0530 Message-Id: <20260206174112.4149893-14-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@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=BbzVE7t2 c=1 sm=1 tr=0 ts=69862823 cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=zgZzUwpPmSg69XYvEVoA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-GUID: vPpLFMEquv0Z_WOA6Cxl-nPGUsexGZPT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX9bLhIhD/OGCd CivNC87LbWTEcfmVif0Mn7OJg1KKXWak1thoERJoETJD9ooQP/mQa5DlVAL/62aAeDhaLigc6wi 8oC9vMpJS+be+kSTVeFNOdZmY0Gsx1c4Ztzl3KHQYlIt3/8bwBkXqGl8YzuGGb+3tGSw25WQnHy COl5RFoeHy3yhpB8GahMQEihEye9tCpzt216dq8xhVttC2XfFUCZIcHXwzlkUvgtlL4tQqzss9F oYZen5K5Qy/vcZ0UKhOKlj2Vrpye123bVfdjsCyuGOBVvIkxc5Jgb5Y+T3BHt61/jpMdalwdcyo EbKq3PG0ctjqrSQT4ix0HLPCt3Xe4gSn0v9EGQkFDtDxb2mJUFTZBgj0Z3BBEwKTiCcjhjsuS9n yICmXA8Uj+Uj2UEOAMW0wxDLfHGdyB9rHhMa3uXGq0rgXFmXQ2w7+WDLG5SNv+w0Cf7RYlolCX7 NDa4tkhd9m/Wd4KJffg== X-Proofpoint-ORIG-GUID: vPpLFMEquv0Z_WOA6Cxl-nPGUsexGZPT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 spamscore=0 suspectscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" The Qualcomm automotive SA8255p SoC relies on firmware to configure platform resources, including clocks, interconnects and TLMM. The driver requests resources operations over SCMI using power and performance protocols. The SCMI power protocol enables or disables resources like clocks, interconnect paths, and TLMM (GPIOs) using runtime PM framework APIs, such as resume/suspend, to control power on/off. The SCMI performance protocol manages I2C frequency, with each frequency rate represented by a performance level. The driver uses geni_se_set_perf_opp() API to request the desired frequency rate.. As part of geni_se_set_perf_opp(), the OPP for the requested frequency is obtained using dev_pm_opp_find_freq_floor() and the performance level is set using dev_pm_opp_set_opp(). Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari --- v3->v4: - Added Acked-by tag. V1->v2: From kernel test robot: - Initialized ret to "0" in resume/suspend callbacks. Bjorn: - Used seperate APIs for the resouces enable/disable. --- drivers/i2c/busses/i2c-qcom-geni.c | 56 ++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 9045187ad0b5..6b936c7552c9 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -80,6 +80,10 @@ enum geni_i2c_err_code { struct geni_i2c_desc { bool no_dma_support; unsigned int tx_fifo_depth; + int (*resources_init)(struct geni_se *se); + int (*set_rate)(struct geni_se *se, unsigned long freq); + int (*power_on)(struct geni_se *se); + int (*power_off)(struct geni_se *se); }; =20 #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 @@ -201,8 +205,9 @@ static int geni_i2c_clk_map_idx(struct geni_i2c_dev *gi= 2c) return -EINVAL; } =20 -static void qcom_geni_i2c_conf(struct geni_i2c_dev *gi2c) +static int qcom_geni_i2c_conf(struct geni_se *se, unsigned long freq) { + struct geni_i2c_dev *gi2c =3D dev_get_drvdata(se->dev); const struct geni_i2c_clk_fld *itr =3D gi2c->clk_fld; u32 val; =20 @@ -215,6 +220,7 @@ static void qcom_geni_i2c_conf(struct geni_i2c_dev *gi2= c) val |=3D itr->t_low_cnt << LOW_COUNTER_SHFT; val |=3D itr->t_cycle_cnt; writel_relaxed(val, gi2c->se.base + SE_I2C_SCL_COUNTERS); + return 0; } =20 static void geni_i2c_err_misc(struct geni_i2c_dev *gi2c) @@ -906,7 +912,9 @@ static int geni_i2c_xfer(struct i2c_adapter *adap, return ret; } =20 - qcom_geni_i2c_conf(gi2c); + ret =3D gi2c->dev_data->set_rate(&gi2c->se, gi2c->clk_freq_out); + if (ret) + return ret; =20 if (gi2c->gpi_mode) ret =3D geni_i2c_gpi_xfer(gi2c, msgs, num); @@ -1041,8 +1049,9 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 -static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +static int geni_i2c_resources_init(struct geni_se *se) { + struct geni_i2c_dev *gi2c =3D dev_get_drvdata(se->dev); int ret; =20 ret =3D geni_se_resources_init(&gi2c->se); @@ -1097,7 +1106,7 @@ static int geni_i2c_probe(struct platform_device *pde= v) spin_lock_init(&gi2c->lock); platform_set_drvdata(pdev, gi2c); =20 - ret =3D geni_i2c_resources_init(gi2c); + ret =3D gi2c->dev_data->resources_init(&gi2c->se); if (ret) return ret; =20 @@ -1156,15 +1165,17 @@ static void geni_i2c_shutdown(struct platform_devic= e *pdev) =20 static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev) { - int ret; + int ret =3D 0; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 disable_irq(gi2c->irq); =20 - ret =3D geni_se_resources_deactivate(&gi2c->se); - if (ret) { - enable_irq(gi2c->irq); - return ret; + if (gi2c->dev_data->power_off) { + ret =3D gi2c->dev_data->power_off(&gi2c->se); + if (ret) { + enable_irq(gi2c->irq); + return ret; + } } =20 gi2c->suspended =3D 1; @@ -1173,12 +1184,14 @@ static int __maybe_unused geni_i2c_runtime_suspend(= struct device *dev) =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) { - int ret; + int ret =3D 0; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_se_resources_activate(&gi2c->se); - if (ret) - return ret; + if (gi2c->dev_data->power_on) { + ret =3D gi2c->dev_data->power_on(&gi2c->se); + if (ret) + return ret; + } =20 enable_irq(gi2c->irq); gi2c->suspended =3D 0; @@ -1215,16 +1228,31 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 -static const struct geni_i2c_desc geni_i2c =3D {}; +static const struct geni_i2c_desc geni_i2c =3D { + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, +}; =20 static const struct geni_i2c_desc i2c_master_hub =3D { .no_dma_support =3D true, .tx_fifo_depth =3D 16, + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, +}; + +static const struct geni_i2c_desc sa8255p_geni_i2c =3D { + .resources_init =3D geni_se_domain_attach, + .set_rate =3D geni_se_set_perf_opp, }; =20 static const struct of_device_id geni_i2c_dt_match[] =3D { { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, + { .compatible =3D "qcom,sa8255p-geni-i2c", .data =3D &sa8255p_geni_i2c }, {} }; MODULE_DEVICE_TABLE(of, geni_i2c_dt_match); --=20 2.34.1