From nobody Thu Apr 2 06:27:59 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 CAD4A33344C for ; Fri, 27 Feb 2026 06:16:02 +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=1772172964; cv=none; b=XGofV8AYE+Hb5tV5dw2gw/84TCrQNHJSoKv+Vp1Nsnxks2dJR7bTFKcK9zoW+vzsKLorhjrifeWR/oBtt1EncqxY0GtQDWpPCSqzBmKHMxGrWlRpX4myOL8Lu8XUjLw1JZXzfJz7z0MZ8kl+cqH/HgC/QZdSumB91n+HdqATCwI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772172964; c=relaxed/simple; bh=Eck/D6KmwOrBysTJIIaZmSoFBAq/RlW1moTUSu+Xl3I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bQe+yEQahvAn8LhagS8Qy7bijYTkBiumIlxisu0AhdUs7UtXlE2nNcStgLBw3jBnMDXPGyRCroWkeWc4yMoKJjnPeAe5135ei2tmnyuB7koF2l6nbtbJ1xtUKkTUpqZ+qBMKfRKzLOc9w/WvqaoAa7hLgdiSGxUQUbIKzN/n16o= 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=TUq8BI5o; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=L6glwckm; 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="TUq8BI5o"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="L6glwckm" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61R2K8fL2403273 for ; Fri, 27 Feb 2026 06:16:02 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=TUq8BI5oP0uCUQMb/aMfSVM7/4U rLBldCkEcVQDLwjBG150mjFIK9jWCB/erR5vaw8IOVgeoEhTRLl6Utggp+ATllp3 tGWIJl2Ct4zmU+TuPxbqRHbF3leCcIpUr5Lq+ReOxv5mXBm6qER7NIBBQ86BNfT1 zFe+dYAIubWB8s1jLgiGCF7rD+P/RSgP204IJfRRwIXkrehHpBuA7QAvUrSgP0EV dINy9xWxlpKQoqzCaAu8UXCYu7C0wrZOXz14oGuL2py7XHMo26W3f6PDSoLNgcc7 kcw9KVAgMIB5K3h3DY4zvX0qFcn5puFRmpBzCcy1lIL1RWy1M48oo5KDn9Q== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjw239kjg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:01 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2adae3b2135so74042925ad.1 for ; Thu, 26 Feb 2026 22:16:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772172961; x=1772777761; 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=L6glwckm7SPTRs2PuRdb2xvTV+MebXTvAbU8xmdjy1pFQWI83S1LwwhgEvykaPSGkX 7TKCeOdqbuSVrANiOisRzduXRck0lE2B76PBy+qQVlg3ZWCFC05CToswMW2y5JsFQ5ir 7zeUDGjiMTdsulH3OKBaLYTEOJtxC+bImFjYU8qiCvdJghZ37iqzoZ8G/Sh3bL++FNcg UBgeij6J6b9c2YGuHLrkvD8KcnCOchhgh9hp6PeaBaeDWGBYglwCCJHJCtvlwi3uR8Zt IWqZRtvzkYWSLlyzsdLHDPNF+yRghn7rDc6eyXV1jKFgATVZR6FsQtha5SPBsCqz5tJh JlBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772172961; x=1772777761; 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=b9624KpdJ/VAwkqf+zHtuccx3ypQeVyOlgiLZ1nIMnuWBDBqJL81+cqHKSZmsluCQ+ fn+T2xGxUvyUplJYgVYmnzwj8ig0HtxWQOku3Yc5ZTtgGUdzyNKAQ5q2AaMZ3S5jaZyA n6fCI6qcd03+ebpwBA6DMM/FzJ8nQky7acRaIARVpauEdDLGd7bFL8Y3MnfrBVnJ1N1i nHrlhblFmz/gHEzMee1VYrzK6vzh1flabs8zynWcutmVNt/j5dapM1qIH3p6DryLrjFU UxBS+fWu73lVweGNTQbnQ2ZXu+7DyyQnlcXKKPgDGKscQfyUFYH8wm5ywnx/d3idc2hU ivBg== X-Forwarded-Encrypted: i=1; AJvYcCUA6qvDkqbMF279gEKx+kjBJPRSJBHZRxWYarpYiUrCqbe9HTQ8U7Qh12f9++2VUxtSsTCevrIegZymiLQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxJ0WNhK3ynb2zuLW9cTWyl979xNRzw54I/bupBKd0qZ2cnKohS OWBApWY113ILtN73L/7QD4ASg65YBKdDIcgJZYJMi+nPqI/NVgy9mCOGat5XQC30Y92+EkML9ln hsSDzjdMfRue+Hp49Rcr+Rbnu0ovOnB+zEftK5w45GTbsULygo7Fln1OzFCps+Xc0Yvc= X-Gm-Gg: ATEYQzxaCCcN1GiSlXZUq2WffP10hjl/evNDhEHLuqcCn0MhvcvYxIALhyqRh6Qp8fd Ox6qXZHe9UtTTiNtQx4Uem27ggjw42G4Xm2s/TQ4x8LRRXleYnb3M/zm1UFFMYIs5WGUs6CWBAe K0x9YjWacfO4kcNFIM9YjWPp++HsENKT8zLfWoIh2ukEeIkjcC51Vzd6HY3+iU2kheZXOLFv4fc bHhhuKLIpblFLDAwxQkqlwAw8S4eSucDd6d+aU5ozURErJFb45llebsmZnMdIBG9RTqa1hF7kvF LhvRNmCOGb8/dHoluuZ5NxNiCkIpfMmvvF+4VOGfQf7hNapcgXucKU1X68MOMQ8FLpP7RnlwbYt Vs2bMQgFuFAB1YePDsbtDFMXJo5b/Q7KbT0+q7eB0qCsJQIAvupuAvWU= X-Received: by 2002:a17:903:298b:b0:2aa:e34c:4c8c with SMTP id d9443c01a7336-2ae2e3f156amr15664795ad.20.1772172960854; Thu, 26 Feb 2026 22:16:00 -0800 (PST) X-Received: by 2002:a17:903:298b:b0:2aa:e34c:4c8c with SMTP id d9443c01a7336-2ae2e3f156amr15664435ad.20.1772172960303; Thu, 26 Feb 2026 22:16:00 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.15.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16:00 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 01/13] soc: qcom: geni-se: Refactor geni_icc_get() and make qup-memory ICC path optional Date: Fri, 27 Feb 2026 11:45:32 +0530 Message-Id: <20260227061544.1785978-2-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: oWrkV4GJayMEYIpibG5MBLSvoYogRqK5 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfX/NfphhUKRwUi b4CYVFr1zV6Tg1dbndNvbeDiffClMNaIfdWHWJwTQC1Y4Ok90UUycsKEa7XRvFo/TRzKztRd3mq V/QJiEuxSH9M+MTPWHAR0NoNgAnuCsysih7hH5T73wqkWSQWy5Gj3NTwo+1gAegDyE7WGAgWhu5 TRIMB4RP68QocV6zKcK35Q9LVep3bBOF7H3wa8x8ohkJGxBV9HWLdHz14RQy5s0uvN8Nj2AWkpf BCGmp+ZqrQD1sgbLEbUJsKYbxmu2a7FyhrkdmeoAZUxQVnKxFSbKiQ2N+OvJ3jpGlosjvnc8SF4 wR1lgYmB7zy0lt0p1jUc3CIs1HxS8BP+AnsIFy4K71o6dxqgDcXLU0ugmhdKAE1bv5gda3iEhTv KxsPIKeK+QPhDqmrMbgPCIf5yK6K3tAA7VUaZh5nbiDLwbLTYqLN3sOvMadoRhRp6LdDuWD/XUE RAyHlb3Yv2oSScd2sWA== X-Authority-Analysis: v=2.4 cv=cJHtc1eN c=1 sm=1 tr=0 ts=69a136a1 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=Wptve8LSCQjy2B8HgooA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: oWrkV4GJayMEYIpibG5MBLSvoYogRqK5 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Tested-by: Mattijs Korpershoek --- 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 Thu Apr 2 06:27:59 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 BC59A2D94B0 for ; Fri, 27 Feb 2026 06:16:09 +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=1772172971; cv=none; b=lbSuL1KsL7wG9kTfs2Oq80UiMMd/+nJRqg6a6f8x3230PlnXOTr3TqzXCwpRx/k0Haa0D+DYbLdqL1cAjY8aR8IsYSNJNqBpK2bSGhLPGUF8s+5x5J+BvoI+H8oz36/f4hsFiSZ/AGsss1+hmvJkBSM+SEFdYTw/+Qh2eYNv1vc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772172971; c=relaxed/simple; bh=85mnIBih5TefJNp/bHk7qTk7tspz31Q1DwJ4d0ufNMs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dZYLx4neA7RXVZeTKOS+QnPVdRUd9hVTa9D8DM6ujBwvxYzuOv/vt1uLKAwjIC1wYLTtbEbW7PtwpcpDcfC+9ci1XaMbzRWbDmHSe9tdpzn/HI2PtL82p0w3L4hgOx/EK6zBLYxGyXDBs6PfLL4S6f3VbY7Kph55+9svb3n+nVs= 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=HONesOLC; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CuU+1nhg; 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="HONesOLC"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CuU+1nhg" 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 61R2KhQW2354431 for ; Fri, 27 Feb 2026 06:16:08 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=HONesOLCedQ9+wzv5b5Wfspo7aM BcjMYWNsF3vn3zLNFLA9uYem4eCRV1g5hVk23tdqbt2PYs5VtXDC2zfiFjRWVs2V bwpRWsDo5ltkKIvK8jARoHcv0d0lk0WReUQrVCyaWxHKdO2NRMYLtrUSZy6XGzRM a+ZBEUiBi6FAMeslkusa4WI2EG7yokhSjWMTyuiFCdQ2BPdOEh/KtV06ccNYwdV3 rbqZoa7dI/CVvFuHSUubOsxIxsaltlVjWhL3pZJWVgX993FNuCB/QXE/S/LRxkTG jekYiluG8w/GtsaBSrsMtlHVQGItC5p6n77AFLjQcUDXkBYpeAW1JUEFdjQ== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjm8u3j6b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:08 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2adb1bdf778so17068915ad.3 for ; Thu, 26 Feb 2026 22:16:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772172968; x=1772777768; 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=CuU+1nhgFrYmMr1LPszIVutrm6uKYNk4joN0/D/cKwwdpZLedqNaZr2+YczB4FWsU4 FrAagrYLVF/0dCqYpXsPo4hjaUsN6JJ7BCtekFXTTOHof5JTBYJR1z24SGMIxHMQWhMt yT2oPN998RBQOatehfowacmHS1zb5FpFlNdM+Wmr0LBZOgiu09b1npq31FjP4R3ulNCR SqMDs1dnk49B+GpY8Ewc67C/e3yNNkDV7VZxiTFIdUijJ2I+gkyB45f3Bbnq727fO1uk ZbAr5iTmOosqd19qollMSiCKtGPyqrXp01Io1f+jwogMfGwRZLWYB0bW0npfVQg+8Mqd TrKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772172968; x=1772777768; 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=oUvEzy+7FKY4H6Xn8/c/VsPdrufuXb4x+GquUXgGUdL+a98QiszVjXtNKg/5gq+BIL thuRo7hkPmUqJ7BqiC+MFOyYLTbwYYDv9HsSNDVRYSop7Q9dclY8K3uXZrBZs3gNphHH v8A2Lwdji79H2VLyxehfGRlerbon22raasbP1Ii2v3nKq/xG9dXn3K6qs2qWNpDby6VE mAy2rHnY80dHbw6Mu1k7iG8Zcc0E64IJ8kO9HbUMl8Ro9QHOxEmmbCTLwxrt82eMolGr 3JE3sF/jbL3MIfRnqm98EO9T1HFP9htt0VkQkUPzpm/FwfW1IAHsx6XtDPu5MdcKr7/j Gl3Q== X-Forwarded-Encrypted: i=1; AJvYcCWI1RAAPUNGI6/mBhkcXdph2JxTTSCk1rbEtOjLlpOpNO8TR43qqFES4VpyY2Fon0tsDXRMIXWqi1WCB3U=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5lEUwXDhkOKZ928h7You2CD1Twu9ODheH07pM9HscydNa9Dpb CT4v5lVmKVE/Udgi0ytBLjzFkcbe/HtLOk3ltG86yI6TkHjwdPh/RszLPKnVcScXmtO+KRb5vxZ 76pu6Yjiz9QTLhyHyqueMxNDrh2LpYraVmJhUZyAueAHLmGg9fjEyAOJK0XKKUes1gSQ= X-Gm-Gg: ATEYQzzJVbd5VKTuQOyatjFOD3vnh3uSyyVAcXHCc7MUr+XT/hX9QEHTVGxfZRqTTEr TRa6U6OVx/AmKhe1zMbyKcnqsVvGDQlYAhr5+Zz2LMCemUSjT9dLy0eIz20laSKnjCIxz/CUGKb JQyjeqiviTjWgdyCspZgrWC0ISiwKUVQOXLEi98QIW5n9oWI4MV1qs3mcG/1wMYvdc7cvE8Y3pn SvO2QRxfG+J2d9D4Y4ZZx6BBpVfdDD3SV8bgRwDmpj+sxvWzmcnUXhHn2d8kw3ZeY5MfkUwysQh kttUQtHXobfO3pI0hC3A7fWuUqkjpVxUgQnFcpmAA3YhtS3r4CVHfxysvd1LV1BjBkZ2bzY9tJO GISumFdTTuc/z4JhBFEFz5pZIKMIZE6Y3fjUueZWlL8gFFF4dxqeQDyA= X-Received: by 2002:a17:903:11d2:b0:2a0:a0cc:9994 with SMTP id d9443c01a7336-2ae2e4d6114mr18570435ad.47.1772172967685; Thu, 26 Feb 2026 22:16:07 -0800 (PST) X-Received: by 2002:a17:903:11d2:b0:2a0:a0cc:9994 with SMTP id d9443c01a7336-2ae2e4d6114mr18570085ad.47.1772172967100; Thu, 26 Feb 2026 22:16:07 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16: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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 02/13] soc: qcom: geni-se: Add geni_icc_set_bw_ab() function Date: Fri, 27 Feb 2026 11:45:33 +0530 Message-Id: <20260227061544.1785978-3-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfX0ss2XfVeh22D fFh8uyJDBHUl1sEODOUYEvFYEisAe8dNF3aYbr0YCAbWXr+FojxcKB1aGF1preDM8M/86mxmIPi 46f/KqFD9dC7aOnJQ5242qg4fnjhrm5HX6Z3+0VOSccSPdjEjVPAchyfNFcp46SgwrkiJ/CVxLp Vb95xmA0P1a1PEuRbGk5zDukGwy5wqQXLipWxBhp42cGDdD2MkKB6NHwV7jvQ56ZEDM47LfnrT/ GYzbI8JcbSVqIy892D4kv2q3eHxTtPksGsZTOyF8KmCD7kONbBbNKsV/t9GRtYPP3xTyB0TlXto SWQvxJOSBRqPQJka21P6143/WnDoLrl7+YpBam8fXYd6x1ulnqeuWvEvqNvUdgGcwwmY23JY8eK HmFOxeEVENzv/EPhc7WfrKBBIK0bOy5Ic6uDrYpaNdNKVm1KAVF7PkvS7t8eTvjmD3bFM+PzXL8 5IZihFiuj3SzoX3bRPA== X-Authority-Analysis: v=2.4 cv=O780fR9W c=1 sm=1 tr=0 ts=69a136a8 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=BVB3BO4C9w_THQaB-9MA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: ja6R0ej5Duhm3-H7rEcooQlMf_-uWXXS X-Proofpoint-GUID: ja6R0ej5Duhm3-H7rEcooQlMf_-uWXXS 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 phishscore=0 adultscore=0 spamscore=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 bulkscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Tested-by: Mattijs Korpershoek --- 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 Thu Apr 2 06:27:59 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 B0B2732B994 for ; Fri, 27 Feb 2026 06:16: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=1772172977; cv=none; b=NHijw17xt6GGXIDsQ0VnF+C+MIqee3wuvaRVkLFrQCRqFPcDErEoMeigIt/BXA8xIO48NU0t3tmVVyx16X63OSBo4BFu0MsoTPZPme8be2POgcmnxw8OzXbCb/LCIx8wuCwDehBaH2m2hvcAhKlB3jwcFOOUJEKfBmtddPtpMA0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772172977; c=relaxed/simple; bh=ugzI2X4T4Eu6du95zdaOBWO3+LJFBYSONj4KCG0BUk8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mWqkBVc2OiDfP9e3O4Y2UjibSbXfAznlh+zVTsKVrKNhlGJwRVFVvNgN2dZUfcGnLwHkVNy66JRiOZlfmue++9dpCFRnEMc8S7xaZqgKN9kgg4mZlj5pE36n+NFPwveDfcgtX3iVkz/+1FgVvz84+a1jBdMyx0vWinnZJfLu/pI= 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=emUr0a9g; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=UmTyvNJa; 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="emUr0a9g"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="UmTyvNJa" 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 61R2KExS1874397 for ; Fri, 27 Feb 2026 06:16:15 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=emUr0a9g7T58XcL/OgtRlEkwkKc 5FnuSngX6H3kxE/HdBNez+1TxkEvvmeCOq8a5UhJiwv+exQYNVI+o7ptca2EEXGy brT4XDDipCMc/P1B6TJvjyY3tKInlCP/u8UNt1DDOOC7g+GjvPanjpx9MffMYX5d VJ7FOGsegx019p3QTqRslcCImXv4E223+pEF7cUg8uCDAClcX8uLX4pfO949r/1O j2OSqk6a1n+JhUUoUfmNSvZ04TRNDIcLcuRrHt0qmByZEPUp7I2FDr9FdaBQ3sfb y7PLvCzC1QcsVVCsCp2lSJ7dCpbPZ+nCrhXBxOyZzRV3vtfYjTFeOTCgeOQ== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjuytstmk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:15 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-3562692068aso2018303a91.1 for ; Thu, 26 Feb 2026 22:16:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772172975; x=1772777775; 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=UmTyvNJa5yphuXz+txfcBScvY0jxaYN8I3fu/35qUpNMnZUD4kegr+aK+eA/4Qn8b9 pf2uE0iAtE9YBmKBstMLbPVB43ivilOegXqRTnxA/Q6OKnDu/lfhV0TTnnfoBIwGC3ul XNpelp9WUGt7JkVIA0xjfeSfuFVZF4VXdy1kP2eWX7YhhnvC76TUKJhb72tPANIjt4jj wkvv9TpfNnaOABUXXXuHfLCG0W7QSvMgBME/mc+02LPYTk1kYEsG6THuaqRGT+5cF6aj JOUZ64zdAOrZCRNYyiAUdirZF900HIV4YusmgNovACYy7w5cw1JCgGfb2JEaxFclhjjc QCfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772172975; x=1772777775; 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=xT2m4HaVeLEKDpaTim9K80zbTc3FHb96FQQv9qeeHdYwzd7b3y1Fy+drf3bbKfkoty v7UzS6UZqim4spIdzlLZJJAMUGM7uo49TaB+eWwaj12igk7TYjNvDrfv8Jhjgxy9CVlk YxOfmYSrC8RUB5uq5RTDnVPNDDzWvLU5m9cMW4T7W98hJGwQxQ6XMwZowsxJlSHXh/i8 IK9uVjvyOsq1RYOiHIqjHUYXbVDj7s2aSqFS7uMoHYyqTJVsU/yukvLML67+abQCM5D4 m89+Rl3mPwWFRR76z8szAP/t4jJA0x/wOj4KaxfUFu7OwNwRKuNnchapXXG0inHzC+CR b88g== X-Forwarded-Encrypted: i=1; AJvYcCXO4MnfQlNjfAIKoz50ihXCcuKQMzPbAnmqZGI76bjgDx4gfVP5x59NmM1H87dRo8wrhA/x20d7eLpM7wg=@vger.kernel.org X-Gm-Message-State: AOJu0YysODudFCk/A6uy5DsQMASkPpOXefDdWKxZRvtdYNQygM6B8Ov+ crRo7ljiIIDBA5a7HYuL4Ql9lgXnps03ZA5oWJsVqTQZvRYnZMtND1x2eJ9mimqDp13CFZ2GCeD B1bJ3EOk24vGQgxaN6wzPIdq7UTq1Ry0crd6J6+ySV1ucNpEPVF43ea+FcScFEEZP+KU= X-Gm-Gg: ATEYQzwBJKHUnM3JAh2OkkJKWP3Zyb+DANYZMs7YQXVfVRqQG/faRVvk0VVWCxBlEUx nEXgKFaAlxuQiR02a9F3sR3Q+76Q8a6rSfjqKCNoYqe0jmMWKKAnr/sskWIcMwR3FO73TXEMaT6 VeW0vwaSduPKaJ+ypdAdcqx89J1vtF1aCtyYDj05tP6qp2qQNjTaI//KuAaJQsjQfApGMK866iR dBAzwE/4jqKIEr4De0jka+LW6vRQ7icT+deAM06IFm+aqZfHQjRbooI62JpSVWCOWE6hFa+j5NB RMBLsLFRVwMxssldEGGIrzKPiX9jdeHTM5543a+rAp2onWYopG/Ol8rouPtX/R0wIrkkpCooq4h I4+RuJETnjDoFkwEK1tWboFVna1WbkNh1URtxwh/eyhW0nd+YrJLsfOk= X-Received: by 2002:a17:902:f543:b0:2ae:d7c:1ec6 with SMTP id d9443c01a7336-2ae2b55872amr17585315ad.0.1772172974682; Thu, 26 Feb 2026 22:16:14 -0800 (PST) X-Received: by 2002:a17:902:f543:b0:2ae:d7c:1ec6 with SMTP id d9443c01a7336-2ae2b55872amr17584995ad.0.1772172974105; Thu, 26 Feb 2026 22:16:14 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16: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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 03/13] soc: qcom: geni-se: Introduce helper API for resource initialization Date: Fri, 27 Feb 2026 11:45:34 +0530 Message-Id: <20260227061544.1785978-4-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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=bJIb4f+Z c=1 sm=1 tr=0 ts=69a136af cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=OYYzyx7XpuDNtx8IVW4A:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: kxYR0umjUwNguPhyZHvPeDqgPjSIYBlD X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfXyYvfKU7C7P5L 6GqtnARsZ714Z/pHaLq7cP265anZZtnE1FRBNugBP5VOfTGiyqQxlIdLkhRue0FSqmdrlgmA759 xrq2Puk2gHXh5cVOJPYrKigbyrBeEkROS3gCeKBB1+pyXc1qbPBtyyth5sbblg2fBACuXOJVCik ImPUAs+A3d5gCjEyqfyeU3b1flJoCy3IoRkAmmzTE0b5bfJ4KKBat/0pN4XPSznX8cCPRQlJoQM K38UGi8niHxZKQYSmpespKvhQgF6TxosIP5y83ZvxNfzQFFMYMSwH62+e6JWFJG0/1IoWpPuelN BlCFcQAL1ZsZCsxdHQ43mnq0zNJuprmy73zgsZ/0lYIUMISYGuvDoajSBmBZEgzF10CIPTyq/Cs 7aOtNSOgSK55F/emhe3cWWMJbQ1nsUgNsKuAvbkcHYdWTWoH9DEQzr9GCWCoxAugllsyPPvqDUa 0aZqEDohKPr7R5Kq4cg== X-Proofpoint-GUID: kxYR0umjUwNguPhyZHvPeDqgPjSIYBlD 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 bulkscore=0 adultscore=0 phishscore=0 suspectscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Tested-by: Mattijs Korpershoek --- 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 Thu Apr 2 06:27:59 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 417CF387378 for ; Fri, 27 Feb 2026 06:16: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=1772172985; cv=none; b=UY+D4xd3Zd+wIN+GoSBIf3hcsvdwikT+1zWrhpiKD2ya3FNTnshlGu0DbrAty/2dOgv35hgy/UosddAd1lG8G5mIes7Wh8UFxnVpWAAHmhoCJUeEOXhSs898p998t6gMJVOzR3XKyvSd9CNf5LjfgBjhVXkUw352JbDQaX/nrpY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772172985; c=relaxed/simple; bh=vinpJK3AdlE6QuECVjsA4xyKYusB2fCdpA1B0h1Sv7E=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=X95OncwjE1JvZETf1x8yNfdwwmnQf0n2bnDSdDBfIsMUVMbo78+2ZSY96jm4mfzRQ25FCK/W6DkyAe6fTvhWTuYMu8r1uetM8XUIvw1NHrSut6BSsz+fN/3JLrkDvwUlW46BEvG4hqWaJwFffz7VEJQEewC9IgjSdq2hPtkooBI= 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=TKVwr3PR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=OVq81ErH; 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="TKVwr3PR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="OVq81ErH" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61R2K8fN2403273 for ; Fri, 27 Feb 2026 06:16: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=iEGuO6CekKn dAjKBDhzD10xpNyXSXQXlYftFADS5L1E=; b=TKVwr3PR+4rYKrj9N375Qqj5Fvl 7XFiw9n8j8lj+CsfA1NchYFEInJ+Ji5zUG3zp5rqyyYmKWLUOUEu96WP3H9yusyO p3lTQtUEeyHrPvJePux75XDNOO/Jzp911ymEPdWoVp9G6wIqMsFk7v39xPriraxD +OgJOHLxq+NqRt68Qfwok2VlyG46e5FPOyTkZWsbrUip/4mqUIeT2X83TGMNoEbS kwUZQj/iNQ/0IMU6tDQaz3Ap0Ce7WbM5eLxP+LYD/6p5068R3hprCXqiBEMXIxiI j79DY/cqhMCsVgt1ySy0PznwMJ901tnoAm+qB9AS/miDe8K1bS4I+AHT5Lg== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjw239kkp-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:23 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-358e425c261so1364640a91.3 for ; Thu, 26 Feb 2026 22:16:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772172982; x=1772777782; 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=OVq81ErH+rZSSv7Lr/CDZE7Bz0XHHJ+Q4y4uVBa0CnXOexTb2/OX53Vt35dkVZBWX0 SAUiEzvGvdBKEh1RoNR8JsHURuJNHDDmHxXJNMC04gf7BXmAP5eG9lDp9ox6fCYeXAfA WK6gxlodGkQTBwyKM1+ruEh8gTdAYgBueROZLcQ3WbIjpvLfZFRBHpUXFmURyXPUT3Yg excwo+xouqVuAnBFBXuRDKIWykb4ildsWHtBLCE53+hd2Xr8tjjW9D/N6Y7SZ0oT4mKO hWncXdaO1i4el/WYVHlPobfoWJtQ7FbpeEvH4THDwZ1SMat5/1+MdhPBAENiKm3/nAR5 IMoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772172982; x=1772777782; 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=GyimVvFnufcl9CcdTDv+OZ1Aa5NvbfPIr9rPmBvUM2jn9TvPuTYhyqCGBGWHt0HkLm 4OT+t+H4Hmz6bDt9nqxwjbHx4+/qdvEkOcC3KYNF0ISBkc9Ny1r2JSWRp4MR1DN/P1r3 md96Sg9m+72h4VNVgofS9rEij2+CTQt4ryjtAYck2xjoWDaTHelugct1bv57TdWQ/w9M XpG2azHlByohEGarRnCKOTxdqlg3ci6T78buYlWKyKwFpAoWvDrvo701RXj/kxzv5zZ+ o/LLoDDM2P9f7BZu++ojF84kPsNNnEH5+Io2wA99/I4rKeQv5ueyaTnGbdcWLnpcRf2v 9sHw== X-Forwarded-Encrypted: i=1; AJvYcCUZQtQWOwTKL1OSfuXrpiBmDV89QmMp9au6V140EQORopqKQFlUh4QbCk2F/p5IXcdLTazXn5Hk3nKmdxo=@vger.kernel.org X-Gm-Message-State: AOJu0YzOzS112DUuhjwPUqJZRNtwq5vB4F3b7fswuDYztpKpNxNQwDGA FF09UY92bCrUIMm6SU2y6i4CTUNtahy253g4kc6DoHwl8DWkICyxjFqPTUcffPNEyUhQ7Vra4Bc FCehAMv0AvSJAMwRTu10URNQHCRUT1fWCCdi/H/4SObiAJZnMMJ2RDc88UUjsK+g0lcI= X-Gm-Gg: ATEYQzyxpjCT8jMSgFDGawsH+Ripqsc5Ufkc+4zAyLFbrnbv1tliCdk9hzbipK3XUCK gOSOvS0mlqf+g6xpgOeMjTAQNIDRVug1RiQQF2e9qnR83rZa2GhcG4OWuXQndDTiw5KvUwEI1TM QpGASvN0kyIQ4SP7myJNjOfdbhpsYcpxwqjW6f2TXdhX3IOjdK2cYSyc6jUX/320vbGcoCxpfD7 UJluu+JJ6Fzi6zFkXX6WzEWwGbqSu19rYQtsMK+VPD0J5vC26u6rTrnQjrktCZ9/QQnCytqtK+e Rbuh4lU/aMysjsak9ZslJGUiTh9F10JjrK8z4rVqxXk8nKca26Nue9lRK4oIWJWWHW8yHwrCycn rf2rAeh8Pb+4Q24btmcic6P76pWB2V69zZw1yhrF4t0MNs2tRbEbWbmM= X-Received: by 2002:a17:902:db04:b0:29e:76b8:41e5 with SMTP id d9443c01a7336-2ae2e496c4dmr14976485ad.30.1772172982142; Thu, 26 Feb 2026 22:16:22 -0800 (PST) X-Received: by 2002:a17:902:db04:b0:29e:76b8:41e5 with SMTP id d9443c01a7336-2ae2e496c4dmr14976225ad.30.1772172981546; Thu, 26 Feb 2026 22:16:21 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16: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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 04/13] soc: qcom: geni-se: Handle core clk in geni_se_clks_off() and geni_se_clks_on() Date: Fri, 27 Feb 2026 11:45:35 +0530 Message-Id: <20260227061544.1785978-5-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: 6L32iMw0wlYu_KK42pgcQUyqWEpTY2bF X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfX+R6Hoj3Kc0Bd fcIGKsZnO+xtdlzS/cUKYKm6J26gG77QQbQMdR0zw0EzyNCCKP2ka0RP691B1SxUFHwZwuFRBi/ tL8q9thidMd+fVrQb5PNO7FyyfehJrYV4zKEHmU/+ICYrL1CyIcMlio28hV7R4P5M8f/gvFt6Gs 5fobZpcjtSnS8RoFeyM2hwWWAAQk296BIgJFQl6vqnrWZQiCWbm0llBgzupAcJSxSbsCSI9/Qv7 m8tOh+xhmNS6sfFlgaWTGLIw8IcI12Q9bNLIBC7jeWP6i+rZ4OyP4ZK7ht6OFwYzLNCrb+V/MMH 4jjq5fU39iF9VwKPKdJlbPhLRzR21ZUyQdtU8ILY/gj1GUPsybW8Rbv7pV+EkywQcUmRrgjr8X0 p7owakFBtpOYkHkblnGK6UTMURH0ps5odCLL9Ne9cJLTH0Jwnlxx7uitzygNt3HI1IGvG83iq+3 JVe1jOZe/SnnmNfwUkg== X-Authority-Analysis: v=2.4 cv=cJHtc1eN c=1 sm=1 tr=0 ts=69a136b7 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yx91gb_oNiZeI1HMLzn7:22 a=EUspDBNiAAAA:8 a=fzsqq50RfsZR9heXkngA:9 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: 6L32iMw0wlYu_KK42pgcQUyqWEpTY2bF 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 adultscore=0 spamscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Tested-by: Mattijs Korpershoek --- 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 Thu Apr 2 06:27:59 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 ACAE5355F2C for ; Fri, 27 Feb 2026 06:16:30 +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=1772172991; cv=none; b=Xs8TEJgE26KwRWmDzhwKjoaaLp30xXSWeXJ96QeidUiHWdEeEqIkPuQIqVwj8LQCs5HQvnS4LmzsdLcluFI0LD/9GLt5BtQHQ082yYRFx7lDxpmPTIwps1PgkGAHn4//3P/e0gs2xfslqk89iGbxIam9dD6vKD83E8bj4uGgMzA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772172991; c=relaxed/simple; bh=zYwjncLuxAcNRFxhVZP0hv9VGpjetfTguK5Hzpt5cIU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bV0TmfjjjkaXiCw4yCyXu2GEJ1CK4YIz6505LzRbaKo3BrtaHCZKSjgZyNFpD/KApopRDexcAnoACN7Zns0KvyJaiUSZrjwxenv3PbJi/WDTXgtuuvB7RVpXNdLfP55mtKzZ6UByldMdzm1mKBl8SvCBrAVQFkL0DGi2a7m8g7Q= 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=Ob8G30SH; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BYkc8qLK; 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="Ob8G30SH"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BYkc8qLK" 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 61R2JwJ92438571 for ; Fri, 27 Feb 2026 06:16: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=S+NcvlPxnrw tBt7YIuw1NzxBgtp69duQfhINk9XVHew=; b=Ob8G30SHwaGta5UAa3PgyvtuGes AMBaUpSHJsobr33mMyH7vORy089ZE84rUIGRTiKxWjCboaAEI8b1EPfBC4ti/swY 1TluvGDqw3/ypAO2EnA9Hp/iWswp6js05rlc9KWk+OWnzlqr3LWFAHXiFWlIY87z 9da2j7JcDg9n7dUFrJZnLyulDwRImGTdeN/hlNPDWovs92pngZ9hr2cV9+kqi51r oO+HTklBG2PdJofDnjEsVuyZP7vvxt1/NEDgIMx46RlhWKFL5SSIrI/ycRWaMxOe xzlFxSqwxC+i3t9ueYdnbfmLt2n4Z8nUFembWuBg9Q/j1o0kM6p1+6P/wqg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cju4r26j9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:29 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2ae04f58b19so87580175ad.0 for ; Thu, 26 Feb 2026 22:16:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772172989; x=1772777789; 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=S+NcvlPxnrwtBt7YIuw1NzxBgtp69duQfhINk9XVHew=; b=BYkc8qLKl4s3wXlNZVfxW4KB5gzsaIKbzKMwTn3g1CZyOIK8LTnJo7/vCbeIDeDtvF syc7F+TedU85VD/PRgXu5uJkp5mezoGZ0ftvx2VtAUaeZA3dWVo+8mBHo0cxDH4S5sdC dG5vUqxK9tjsmhEaU5d5F0UZ9YR80JaOxbaaWVkKXRk3Q+ke5dHLk1H86hDAKjHMojWa lrEVsNtFLbUr3pIryZx309nE/m6znUJO7PqAF40ETKINjbSFQnmsYO4MTpc32xXt+mzK ELQYUU4QAvPYIMp2OQHPcjZoNDdcvLQtevVMmbapB+aG6ElJw+qoIJaUX9rp4MZWElHZ vkmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772172989; x=1772777789; 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=S+NcvlPxnrwtBt7YIuw1NzxBgtp69duQfhINk9XVHew=; b=G/z//JrudbX83WgAwqz+A7xpZllu5mjhMGlnoG2ZIVKTngcwSWLqdGmKXpcN1StxDW z7EwPiaNRrkKxJwrv5rk8rjeqsNf3fJEaP0AlV+2XwdfCms7zWxrRzdGUAZLYe6VxXar cqOL4NU1QPb760aBQ0GyW/GTRQUKNBBvQ5Ppq4zBNL1kWYeRgjs54wukRmP7eof6tEaA AYvHw8mY2xnYJSav6gevzSPBlQ0fA//YSPpjXTdXEGGN1Or52wx3fGAr1qO7Zeyx1PVE KbMmFCiSdJ/R9itmNgc6EUfMK6qXc/tw31o8oP7iBlsdEsQQsdz0gAVjfwTgDfz8i/A4 a5Tg== X-Forwarded-Encrypted: i=1; AJvYcCUfXvR6nbPt2MkModa3BsLjvFxq2UwDOnV9O+Y+eF1Y3s+726xDDsFflEw7mfmZ83jWF9k3DMBU1YKJh2g=@vger.kernel.org X-Gm-Message-State: AOJu0YwbhmyxQXVupf9XgTUJebLS2e3yThnB7vt2VNF+wKMeRLvJM7Vm aXEhtXU7PuuHab5ScADr8az33A5qU7Yw5stZMxB0xHpEL4vStc5Vlbx7Q1eYyou7efEvmhIeHg0 y0R8+Cl563P+Mt+ldLcWWsOJSn4vMjn4j524z8qiJWKpwrr6SKdVkrvSdVV9ju5+4wEk= X-Gm-Gg: ATEYQzyyJYLtRps0lTwHlKL8MeCXu9WQ8oZPAivLqC1jFbmkQxmCKqOTKNhKrdDxvys LOWSDC6HNSLd3iRXzz1itcDZ9qpfxSR0jlB9zknFq4i3VlPP0zEGaXwEqBtwQ/pI8w+TE+4wzkT UtpBXSJ09ZtBLzhzqVcMRAKHtZCLOdJFdA3vCiCVgdsZTLNgwnvfE6uWP7Bq+7t70bosoHqf2Sr vA27geHaaGhw/Ig65lT/td3HZJoY61VUhVBBo9fozHXWJjek1scOkzDl5pCIjf4XsMM9EkgAxJl rosLe37tKH6K/llP02YTXuBlsj1skgD8LsDOYzqmwEyuCz+J6SLC5hNW/ZZRFjZyY1C1qQr+oTz 9QlR7sj65N/YXCAMYQm6SI0m+8c9/5hdm9GvACA3bLqmrW7BtxW18CMA= X-Received: by 2002:a17:902:f691:b0:2aa:f2f3:bcab with SMTP id d9443c01a7336-2ae2e4d5ef3mr19058875ad.47.1772172989305; Thu, 26 Feb 2026 22:16:29 -0800 (PST) X-Received: by 2002:a17:902:f691:b0:2aa:f2f3:bcab with SMTP id d9443c01a7336-2ae2e4d5ef3mr19058385ad.47.1772172988691; Thu, 26 Feb 2026 22:16:28 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16: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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 05/13] soc: qcom: geni-se: Add resources activation/deactivation helpers Date: Fri, 27 Feb 2026 11:45:36 +0530 Message-Id: <20260227061544.1785978-6-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfXwyw5IFSirL+d 1eScrLcMoQ7MqMLLFda2INrCh66v9qwqOq+WWDsw4lMa0FyyiHf1i7aU9qnwVnV4ZL1ODlLnY4G kWDfmkD/JM3pwW4s9LXpWFbSW+AoW0P9JhNVmGxK8jGq+8VU72bGCitq08cIii6vi+WOvjnOe0k IqczGQrYsbGmg7RhU5MYDJtYGtWaSLWSrUkQ+MXxndJtcrNS8QSWjA7gJUPFN4fL8T0tMTNHmzj KT07YvC1lynZlVp6t2iiJbMejVumoIyf+56dt+48jBEHyqw7IFrblt2iZNGhFxI3b3x4L7IzbzZ 39dhxGxKsNmaKS6t6/3oySgX0P69xMGCermgmtylaQGej9y05oYkaFRnt9mTfuHbSL2HLkjik7V iHB6BnOu7lkTqQDdXnc+BIwonCKQK1KNBFE5rQozaHf39iTIC5sqxrWvmoumK/30H5Z973uuGIV ipThB2Lxd++NswJMKpA== X-Proofpoint-GUID: wwxcKh58dYQGLGNMVeZKnUKeSd068GlM X-Authority-Analysis: v=2.4 cv=KZzfcAYD c=1 sm=1 tr=0 ts=69a136be cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=KBRiQYpxJDLEvAb9SdYA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: wwxcKh58dYQGLGNMVeZKnUKeSd068GlM 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Reviewed-by: Konrad Dybcio Tested-by: Mattijs Korpershoek --- v5 -> v6 Konrad - updated kerneldoc for geni_se_resources_activate(). 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 | 70 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++ 2 files changed, 74 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 2e41595ff912..6e58568701b0 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -1025,6 +1025,76 @@ 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. + * + * Unlike geni_se_resources_deactivate(), this function doesn't alter the + * connected genpds' performance states, which must be additionally handle= d. + * + * 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 Thu Apr 2 06:27:59 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 93E77336ECD for ; Fri, 27 Feb 2026 06:16:37 +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=1772172998; cv=none; b=FB3h30JVNCqwXb6pdT/jx1th3ivUioipE/ERUZYV3Y29o3VaG9rk7Ebk+6WT9XAUz2w8SOhRG37QMRTEylnfWO/kJRHMF544c8Iqd4KR7B4zdbf/YO1feQdZZIdKY5fazZBvPqXc+CQTBjUa9gJ0OEJ8A9BAFPfbfx6ePxvjm74= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772172998; c=relaxed/simple; bh=D1Gi1McYR1m65rTqXdYBG3amvrj05iPto+b2RK5eR0I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ntODHs78TdBgJu2ZfBPhGLgL0sxDAcnNA70JpmLRbcNx2hQDzKoMYBNzBAAS+Jzdcwu5Goxs4iYycvMOgwU4nq5rbNnVNZY9OXV4IMCuT3GMT58uoLYMqrxzhzbqhK1Wb/xf+h+/Ac0VEKtjdZOlbVsUXCB90YJ+MYCDoAsos3k= 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=jsU9Ql3y; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZD9pSFg7; 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="jsU9Ql3y"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZD9pSFg7" 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 61R2K3cY236183 for ; Fri, 27 Feb 2026 06:16:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=LtpuUMj+X8N gU/uMTBj7nNlXFHnl4hMIn+8zl6Agua4=; b=jsU9Ql3y0a4jDVez5OQ2vAje4EZ cwZPzl+DGWPPo35gSaOnVNvAHrLu3+Grfdfj2miudCd/xtkc5avNclC0hbbbL1jm o5cJRVxFfhmBjEtm+ZBFukSOMR2YhH04HU+UbC6Nbv7GQinYxHLXKbVv6KVLrwM2 MrDkgpe+OdUaqyOiOw5JP/9QAOa331qjBLkpirDyFwpe43okOkrSpv1O/R77xzH7 0rfYmAqU0QhvX0KdkZ//BNIMoWeVaPoTqWE5uO7E4ohdHwhW87dGxKtpah95RDS+ 0jCPwVAvb9r42gyAka7eLrwjowtArf37fBEnwMf4xxpegqOkBGLqxxQjFRQ== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjx1xsb4y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:36 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2aad3f8367bso18398175ad.0 for ; Thu, 26 Feb 2026 22:16:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772172996; x=1772777796; 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=LtpuUMj+X8NgU/uMTBj7nNlXFHnl4hMIn+8zl6Agua4=; b=ZD9pSFg7lj2lCHtEHfFHumDqQYQ1VuCGeFGxy1WI2lqTXY7+JDTT4cBs4fH7tfAl0X JmI4X+RSfBXT717VgKr5Kmno35wsZXGmWhJWDd76mQDOk2RzmTkE8DBQnFaBvLO7W0SJ qS3307MucIkIVqbOLxiXB/u3RGC2JqhZ7meJcs19JFupyjlFD9XtTn0ZZnicNYx2Oaln LGtXM+6USfNzg3S7UbVvCt45oPVPcOkUZUVrpYOlNExGPqeYm3zluuwNRcmX0s2R4ieI z188IDtsV5v0sYtu580ON8wIrAKbYVqnT6seM0TxSDvw1KNNX2N3cPjBjzSqI6QdGGbr TgNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772172996; x=1772777796; 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=LtpuUMj+X8NgU/uMTBj7nNlXFHnl4hMIn+8zl6Agua4=; b=uSSZs4teUnx9fDySpIkSgMG5VTac2PFoHpuNYZMqX8DjvlHzv+ozrA8N9UBRq8qyJE 9KAH7Z98cq+rFd3FQPBuTjwnuqqj7cOBomi2R2+irzJSewBbrxRnOssZDRJ8vZcdf/Ji x4kFieg7ppSDPQK5M1F0YPTEursOPsGNOzAKVO+qtZP8bBmR02RM1S6PU+12hrgupCb1 ahR82OVUs2OMKYJA/IrLcLlP4bjiZVSY4reQzvoloPH8jgtTxNtesXFFth+szuH02hpc s3k6NnfA7hj3PjTL4woOFzQx+h1D7plG2Q/qx6GQZUwPAXUJAgvX00tkztNloa8fW7pY x0FA== X-Forwarded-Encrypted: i=1; AJvYcCU+dezOGl95jV42i4nYYZGbpTi14S4IdYYxjxpN80BkdUe086DXr637f8rwcH3talq+poYTEHs7b8zhUYA=@vger.kernel.org X-Gm-Message-State: AOJu0YwDCeY5WZm+8OqUeO47W6ut+a/VoZ5cpH0SrsGirAF9oAlDOhhC Z71mcJIZe4AcHT3dca7rZJkcUctDhuaEgfR11CyOotoE2j0AiWdb7WYSpXCxuPKzksm3dXi0vY8 Y2r4lZgtALTOKvdT7y//2cuzQG0wtBTMlU41kxN2X5O1gNGUJP+1ZTxrT0LI3LgHAUMY= X-Gm-Gg: ATEYQzyLwm7R2s4hpbjaGmHr3edlQgUa85nc2+a80+TX8N9sOXxsymfFhmPM3qbpP+U RVIsKBApHGErQFDQD0kGRJ4Bq0C9XwdqDE4/KvA+VVYQMzRd8kZMuRALAB9Jlvzet42Ep2GJ3A+ nJuylpQrEZgo9NCW2yzx/3ZbTfVRe/Xx9EGoCaH7LxkeWXWQxIp7aTgTNMQjftBQjGBBJW/Pqzh nH9lp75s3gg9hob9+rcLJj1wJ0iAOBUsHpsFHFB+LKC7BYv88GT06kb5ABuRgFI44Luka8myKrk E/5rKsfwX8qdBS9zvxW06184TbJFwpmkMXvNXbrsN8NoxzEcXv/jET7Gj6X0D6XTfIn9fFqNBeC fmc5DgNsH/UNI2xek4ylS4NsoVRNKTk9xARLqFoL6RW/pN6T2pbnYitw= X-Received: by 2002:a17:902:ce03:b0:2ad:cede:2fe5 with SMTP id d9443c01a7336-2ae2e405766mr12514835ad.13.1772172996195; Thu, 26 Feb 2026 22:16:36 -0800 (PST) X-Received: by 2002:a17:902:ce03:b0:2ad:cede:2fe5 with SMTP id d9443c01a7336-2ae2e405766mr12514645ad.13.1772172995649; Thu, 26 Feb 2026 22:16:35 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16:35 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 06/13] soc: qcom: geni-se: Introduce helper API for attaching power domains Date: Fri, 27 Feb 2026 11:45:37 +0530 Message-Id: <20260227061544.1785978-7-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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-ORIG-GUID: wFC9S2lmp9x_L5VaQuj8ULC-jxcPjDIK X-Authority-Analysis: v=2.4 cv=Vtouwu2n c=1 sm=1 tr=0 ts=69a136c4 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=PijyICl8wWZdqj615XkA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfXz0E6w4MV1hKP gKgHEqSmhAGftR4JcnaRoaZCUzjbjHDgIWVn3q/PI/XhymuRmHkeQEIXR13QTsnL7lRTC8h++A1 3hgpLmWJFuHK18ht1ECUxeNMRhBF2o+zxIu+gwjSww39Oq4Ud0NavINUR64FQM1Sl3gqJngX0XC Xcy0Y13rwOAB8GsIyWm/N9kQrhT7H9IIwzMSDbAe8YnghgZHj2lcQIdIZ/tYDrm/pZsmd/vK9fg ihBq1+HdmvAf7JEuSnkrR/vc/eu9Toag6OgPBqGO/6NmTjlq4oKcG96qkFK2bOfeyMw+8+r0Z9V C+Sqrqecdnfz5wAIJRhVhKAeBIfDEVFvEz4MI1edYSRFqjIwOX6opxrHwvRQITV/ewU3GtrHUvz +XFK5HdKYHPjqlzD9P1EqNQVd7kKWtiNDxB0gb2/6mY4VHbnowlT41xmZIpQudL7lI8YHXye1ZW aq/EdSOdQim46a/kvVQ== X-Proofpoint-GUID: wFC9S2lmp9x_L5VaQuj8ULC-jxcPjDIK 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 phishscore=0 bulkscore=0 spamscore=0 impostorscore=0 suspectscore=0 adultscore=0 malwarescore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Reviewed-by: Konrad Dybcio Tested-by: Mattijs Korpershoek --- v5->v6 Konrad - Updated return values v4->v5 Konrad - Used devm_pm_domain_attach_list() v3->v4 Konrad - Updated function documentation --- drivers/soc/qcom/qcom-geni-se.c | 31 +++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++++ 2 files changed, 35 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 6e58568701b0..13ad3a51b58c 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 @@ -1095,6 +1096,36 @@ 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=3D 0) + return -ENODEV; + else if (ret < 0) + return ret; + + 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 Thu Apr 2 06:27:59 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 7BC7D32B994 for ; Fri, 27 Feb 2026 06:16:44 +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=1772173005; cv=none; b=MYNelSJCayahHxeYe8zU9lVAD13rYcHojuJ44mjqOeowX6bSH0xiM19FRYsGzG3RNExu1IIShnQhWwtU6+blJ2q2wR4/m9qkWhfspHLloAiJNAVv2tCf0K64R9bmouNXSUkgbWaHyes+cCE7E/L6ucmxHJy0KiQBR5RNftkAPVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772173005; c=relaxed/simple; bh=r+NuYoZ1+qXStZvaIZDliMZWk1kzoc6TJhJUEDoPnvw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=c8IpuGjPv4WXdr5d8fp18TEA+z4FXTYnynZ/w/7n1bqS4Ut+npBgsi2h2yJGZzgfZa+0ZdqHP45m69ZHB//CadV4kIM7uJVGN9/1oThF60gT4PlUArZEqb+8v5zqZyL+cz3BBsYljSEJmb1cQVJGVfFTG7rp6LoK4QtghPl5EB0= 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=d6eSjE6E; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=XeXOMCad; 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="d6eSjE6E"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="XeXOMCad" 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 61R2K8Qv3762570 for ; Fri, 27 Feb 2026 06:16:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=KRLuQ2KM5IF ptPVplD9gxuDqOBRonDICntxFIs5jCF4=; b=d6eSjE6Eyh7zHbnmcpJdhMiwA+L ipZ7bKHH3sdjkX3Ak+CAnrFIbUQ2MQF87CpouUkE+D9tlQLPXz/PUeVBTXbniwc9 qVae4yO86wS8u48/+rM2RaPsHAFWWYjyJB1kwJYb8Z84Mfdkvi3PJqSTUymLRPge MURoJ6eulYGRHUuokG0+A6UmxvhuIQuScplKITfPSbHQ+LZdotrAo1ZvrEeFnKg3 LzEza4R6IVyAkXWd/9Hb3A/GwO3Y0x4xTc5WAuSPdC6rX3dzeurD63vw65bqvoX7 mS44CG4gVfM0XGBOqcxU2KHE4QNWGChfu8qZth3s9uhpKtdrrarXzWTGJkA== 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 4cjt7yacqv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:43 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2aae146bab0so25761795ad.0 for ; Thu, 26 Feb 2026 22:16:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772173003; x=1772777803; 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=KRLuQ2KM5IFptPVplD9gxuDqOBRonDICntxFIs5jCF4=; b=XeXOMCadAHJJS/OFzH+R0xf8EKaVaAlTcNnZJbVJ7YNftr9ovuzGXtwwF4WMlFNsfB JnnDq9EbcRD0ALBHbMH8Zyq+y8Tc9s59C+nlla5b1xjM0qBs+i16xeQtfEuTrDLWyUHR kQpDivzK/hfj6VTrDitm382gPs+Hpocmx6Oz6cr5k3ieICuFs4f0NGUf5CwR+yXPRTD9 IJJ4OUlnf4oVhYUeZzSildiCEaJU/m2VA1gv9agiwaBzDEUoyJAMyfuCUXAjRqM7thg4 e4e72v9xYG9l2WaYRtiw/CfArTYwUq01rCRhe26tqoWPLoA7ZTopZqdfWJd9agaMB5kr MTYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772173003; x=1772777803; 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=KRLuQ2KM5IFptPVplD9gxuDqOBRonDICntxFIs5jCF4=; b=JOqaoUcYE5nNf78BKCcHXvLtYgSz3OWHZeoxQSvPzBTs96VM41uIj7tmUnLxLNXx3g O8LDUDJv7tQ1y/yEm+3Dlo0OnrjvkZTCGH0HxnhDJjwfZEBGbF6z4pG+UlmnSxMIRZvr CIgyNygbmAJNLgd05NpNg/KdDj2IEGSs/dUG22ubobW3/gUCx3I/jwgRwzRG7YJSstsk BJ9H4tjmoRFtJoUiBB9iugLqMyC/6MCf6nUGDppbXHTM5iZAeSeszuQgAPsvw6XE2Jxd b/e4oxMO7tkFKr7QQ3drv47gRGeCJh3y7cq53TA2tU6o/vC2dYICJLeit465QWFvpghx xwuA== X-Forwarded-Encrypted: i=1; AJvYcCWNP7SGEiGvT17wqwdhrWaHlqvdSK2oGFkGn4ljTSoMQggyCfwmVYdwBOTfuL0A3zZevj/KZiLkV6pb8KY=@vger.kernel.org X-Gm-Message-State: AOJu0YxUfzkuENme/WA/D2AJLtCBd3GM2xb5/8XFHNIAym8d/vn2nD31 oHTzKSKEVaHAIFCN7aq7OPnLtGQz8DNpiyEFCxf1VX9HPM2DPnCexbEEPE9ED5WGHZnahE0ciYJ pPSWkQkkDMVdXxAU1DZivEeeYmzwF1TmaaPaN/pZlZxlroWX9EdXfcvU2J1maB4epXPk= X-Gm-Gg: ATEYQzzgpgDw50S9WB1lyA2fNpm3ilY+Her/JCFw+DBRlVaVtm3WzIIJoMcfwotlfuR jfvztYBi2qTLdd24pQenmAVSFZMF1RRJ8moETNKz/akQAR0KSR6+GdYJstfnU6fr6pAIUstEkBf vrLEiM27azdgMgOW8wthznHkRVRUa/ihvTy27WWlY/l1By3P6tPxIZDIFMBDM8QJ71QLZhOq45Q RLaXKV7wUthyVYJsFApb2bRi5XVfHN8vrspNadrR2pKhzlUJ0DAFpeeOb7k1g/wLyzjR9aw58qa UHG2308eyNO5fq6+lJiiT+1WYqXGw6IZjF1KI4m+oJ73SFoBJF0w7mFwPIz9SGC+9AVPNDm2JWo 5enQTwO3Lp7FkxmfeDU8/ud/fGBvuYGhDNRtbNq2oRTkaVFTtQJIXrOE= X-Received: by 2002:a17:902:e805:b0:2aa:d320:e96d with SMTP id d9443c01a7336-2ae2e4f7f04mr12056625ad.51.1772173003115; Thu, 26 Feb 2026 22:16:43 -0800 (PST) X-Received: by 2002:a17:902:e805:b0:2aa:d320:e96d with SMTP id d9443c01a7336-2ae2e4f7f04mr12056345ad.51.1772173002527; Thu, 26 Feb 2026 22:16:42 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16:42 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 07/13] soc: qcom: geni-se: Introduce helper APIs for performance control Date: Fri, 27 Feb 2026 11:45:38 +0530 Message-Id: <20260227061544.1785978-8-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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-ORIG-GUID: PA5_7N-kbFI44mTGJpC7vIRnZ9X3egGp X-Authority-Analysis: v=2.4 cv=N7Mk1m9B c=1 sm=1 tr=0 ts=69a136cb cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=NwCh5GMA9Nt760FYQHkA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-GUID: PA5_7N-kbFI44mTGJpC7vIRnZ9X3egGp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfX8jB/SF155/vZ kyskgcNVUtxm/vmhexQWKCkDBNQumZo+lNAjExAg2ABTEhhD3SW6MvEJ5MVmRdcDnPkLW5SY3Ht 01z7gkO+aKVHotmrWRtFxpbwvrl8fexX40yIdLUwxXXa/QDEC0ryzT87i4KHeD+V8FjwrbJs4/U 1s/QjPQgD+KPpUcL8s1kbPnkMZKSc7fWobuaKv5NnwmFcXxZ5J/lYjblg4Z3MEqibmXCFLZuSTx 1cyJYlA5FxmslyrDR+OS5mxuw10fjs+6sFQ+87nlJyiriFG9hkYF1ccDvhZdmfKJSwEojrgynin g8lvQTI9yvAwYRHPgdUpr++avMJAJLd8zUqMQLh8INDqHDku1eTiHDlhEXUeKHyYMfCt6hcwYG1 5E9A5tepXRKEd4ufPcQ++S1aiPaboYCrkePK61M47Hmv0YvJk0S3GH62BiDpL76t+Re8poG3iPb zGdlCatllgvvGCZkzqg== 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 clxscore=1015 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 phishscore=0 impostorscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Reviewed-by: Konrad Dybcio Tested-by: Mattijs Korpershoek --- 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 13ad3a51b58c..15636a8dc907 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. @@ -1096,6 +1102,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 Thu Apr 2 06:27:59 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 692E232B994 for ; Fri, 27 Feb 2026 06:16:52 +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=1772173013; cv=none; b=hZbn2LMOo7puqOteLAplgK6KLfLh1YEbgqpuOI3KSXW1WO4dKezxGSBj4mWz+fiD8NkBXX2C/n8Xakko7/jy8D5cxtv/77Ig7FaVG/vn9LNk8WV9LtKzFew6xSp32CrykOf4PAbWoGp/YMR7gS8GHQZIP9LiBw/0xLP0c7weozU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772173013; c=relaxed/simple; bh=fLcHXdKV5/hDu2wr6i98ZasPwufFwNkdfF36wyuIx94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Egul0kbvFYo0KMITSUkmWOtDpYV5FZoIWy0LGyUF987ENRZI2J9+lHZCwUdRq9lS5yi6KfQz3wpZIZcZmQGnO9SKUeBQ5LBKfxnBYqSrIIBg6A/M8ZhkKVkRW/Rx3SDw4AvYgHIOpZVC7uli1WRO0Si00y6f54Qbtm/CgGu4Pus= 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=dRNHFoC6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=OxAQFFAA; 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="dRNHFoC6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="OxAQFFAA" 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 61R2K0l4235881 for ; Fri, 27 Feb 2026 06:16: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=cbpTgWXazdO AfAdL49uExcjxZu696DCuIHbDLPHFMMY=; b=dRNHFoC68FeCvWKWNf7RlsJlegv kJYv71UwSzSRn2CKIqGriB1k7RsPYyUMPbWuUfvQY1x6yRWAP5423gb3qydPRIpF 9n0WkqGTghcQbqDHsC3jDiyehWpcO7YkJvaLiHFVLF03qW+D1soiJ7WRJxr/2s3U GZaMWYcxh2puxasX1skLwh4a2RzACeaFKkH13eQCwNgDyiXDYg+y6V8LvGgBbc/U F1ddcjyUs/o5vSuW1JYFmJF2kF7R1P54HOW2LkU+6XsF/gTkyd4ocBJAct7/PvQx BeliUWSGdGTXewgUjeG8tJAfn4yzcN364A+3aXjM21FDvx6dCjnoWfjZ7Gw== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjx1xsb5s-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:51 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2adda5a44d8so17395885ad.1 for ; Thu, 26 Feb 2026 22:16:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772173011; x=1772777811; 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=OxAQFFAAp8QIqebka2GFEFIPOir/hGQ/ntBJn58Lu6sSqpp43ODsFb0BIK0pPxaggY jLZDz2XAimGvaR8cbGIR6Wu1PWC/cmv7U8Nuhtn5JY2+mG/8T2ekwoR2Czcs2lGk/lag x2FzYAC6kmq6Q0Ll+1/b4vlIDKGpupMKjc9XdfVHSa+CkowoqQBC/id/GYxNo3TNp/Cf qkDro5QLHwtR5bMqcOtZcV2ItGLWmSYa69TdHCMPCFR3gead/rxsdKbvXd2f++Mea41G w/So+gdgbrV6SrH6IR5fTWdwUv9dtYrcobLcQgSQn8hKTCJX0eT9xoS2UJDkCKKKKIzj uFSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772173011; x=1772777811; 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=VJbMICTHA+vmvkiA3anqMuSLCbEFYTxX14WOK/bWsZie2PZL74xbxtW4Byt2bTfSJN VqkrHIgi1K1hQNAAxsvp9d8RmMyHO7xb5BZmlUc4aSHoMGs3CcAZ0CIsiDXzCj9/tRDM nOcpW+ghJuskNlWlpLbrDEGbViBeWHEXuNSrl2Gt7qWhEwc2EArqfW7yNxbkszViW5PK i7VfoAaP1D1nJH6hxaKeu4XDRN5p+T66qyj0taKDP/OahxGV3LYsVZHEwOuJo9dvs/xx 3F7qG7BcbWOA87xKk6aE0l4L5cfUgcn1Anu1CKUNtNqN8TAcIlKsGk14bCRT8X2SHRBT TCRQ== X-Forwarded-Encrypted: i=1; AJvYcCXqHpfgKD7FBeAny6CZCK3j7xyRPbtYz29g0uoskvQQFkfU56eZGdGTJODSmhq4iM/UDKp8o3VjVQgGRy8=@vger.kernel.org X-Gm-Message-State: AOJu0YxA1cDO2Ij/e51uJ0WQppzpA8cSmYzn08MDufa99UnGAKF89whA ZegkFY8WaxDnM+AeZhTdj+IN2QuzCuPUy9BV11Vb/ugbb2rGiPSEWByzlEXzhF0DspGT19sYpPz YaWJ4vy3I2ho5uL4butxObq2LFwvBxI2wQQXa14SoLw8I67n/ERS9ZCsXWZx5Tq8gJXs= X-Gm-Gg: ATEYQzwITb6R4FBuyEJe8Y2eWYWJc3vfmEdRr3rgVdTuF1B/bLzv2QzT2rQ6KwDh4Nh c+JU+f4/CSxg6Sd1FaD2wmrKkL0hWiEywOANkEXEmHIcPzSnhUJRabAsXY5cRDjIKSAcvrvyr/7 1X7ixyIGEjXqHPDh8YSvISaOE64EBcvmUyTO+PMmj+Plo3poUliqpDOSYV3YgL0MX6plu3308QJ 46VFxltOAe0uYBETFCLcX/PnsAsz/6P8zejPJmR9c5iKxUQedcnwgNxMA4gzXhZbQwek/cdqQe3 PmMweculMSyEgazguw3scT8Fm9SmASqkysSb88KuSHEDBU4tLmZsmfzacksUe04RX2hsWEWyVAY 4fQUj/z/8w7cmq4sFCgzlH4EyYxqwA37lpym9Wy3CzkJLyh9MWpAI9Nk= X-Received: by 2002:a17:902:d484:b0:2ad:ad52:3670 with SMTP id d9443c01a7336-2ae2e4d9617mr12245165ad.51.1772173010747; Thu, 26 Feb 2026 22:16:50 -0800 (PST) X-Received: by 2002:a17:902:d484:b0:2ad:ad52:3670 with SMTP id d9443c01a7336-2ae2e4d9617mr12244945ad.51.1772173010208; Thu, 26 Feb 2026 22:16:50 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16:49 -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, 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 v6 08/13] dt-bindings: i2c: Describe SA8255p Date: Fri, 27 Feb 2026 11:45:39 +0530 Message-Id: <20260227061544.1785978-9-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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-ORIG-GUID: mpzOGYec48IMdtCjIDvY2WgzUcfPlpO7 X-Authority-Analysis: v=2.4 cv=Vtouwu2n c=1 sm=1 tr=0 ts=69a136d3 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=COk6AnOGAAAA:8 a=apMzWF-kzHp83YoYYzAA:9 a=GvdueXVYPmCkWapjIL-Q:22 a=sptkURWiP4Gy88Gu7hUp:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfXwwHcgaJw9O9K Jxi9++jjhcL50qdFe/iaeX9tYUfiDZC25WNLbn2hjJIi1UZXldmlhc/13iI89Q/Gbx2U6PypDhT xAh5xRgKULQGuMDSdOcsNyNw5oc/7PZ9akfqc1O3FZTFgEP/2/huZJNpJnBUneOz9Wd4GVsw1ap XP7tVHRAeA6P5MR4lC4vQ9Ena3g7+acGJsSgGumZX01j4yvdxJ2QXHz6Q52PZmZsgz2wxuWtae2 f0NhQMj5iYYea71TsRvmD1qyQOhZF1CWXkBmOXsTtokVgVjK00bOJun/LvhYNk6Hu+HQfOAB/2E vlGVVxPQvPjHMV/LoKdsn8NJZZcKBDGRqLi1ZFJ2/wKly63AEpBEPkPI1t4rm+gjKsUnx0mbwEr RkwAQnlCFeGOjNYwsyDK1apDZFOKgBUD9biYz6Tv+yB9i48ZtqE1ICevMSV2N5CYhTWKTuRDmqu PQl1mLf+BoohOhSXbyw== X-Proofpoint-GUID: mpzOGYec48IMdtCjIDvY2WgzUcfPlpO7 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 phishscore=0 bulkscore=0 spamscore=0 impostorscore=0 suspectscore=0 adultscore=0 malwarescore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Tested-by: Mattijs Korpershoek --- 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 Thu Apr 2 06:27:59 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 4493B3E95B3 for ; Fri, 27 Feb 2026 06:16:59 +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=1772173021; cv=none; b=S00jZnu3xXlIeH/M6tYp7wU+UfIj3s/jVEGC3uqjpZ4DkUjpNjUyjOLu7fy/Cre95X/4iFZnJfhEuuwMK0K3pBe6+HOkuC245JCixy9uLb/0HYh7ZXGsuOdJbxvkfbUXHyaZ3aIEMUdoQrX0nVyVsH35Eakniak0XmbCFXmNxyo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772173021; c=relaxed/simple; bh=S/vIeyOk0etlagZVP40JWlg+UBzm8Qxfl4zTRXy27jQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=cMAKstJoJfODfedZ9WnQ6U5H0dASgqmWDwAYEQXuzB+ZWbJcQonCPuq+sHtdGoXDZd/h2Fg1BDFU5guqHCSdlIGOWLyizxFZOl92/45q0AUayUCDh5sA10jefho1YcOKjqRWoMf3EgBxAiANLjaPbbYUPkjsQczacyF2kFcYvHs= 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=eTGPIHAM; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HDGgjcXJ; 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="eTGPIHAM"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HDGgjcXJ" 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 61R2KJV72440245 for ; Fri, 27 Feb 2026 06:16:58 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=2FSw1TauRxw uUqMcF+pvf5bVYnR/BuNas3ylwyrIGN8=; b=eTGPIHAM1nW1Q81LCsO2Yu+oxT3 Vx4z4p3vELH0YhyxmkZ1wBs9Pid54Mes1q1auovZItydqBg2JgTGLNeYHlhYvDrb Slbd0dBa1wE2aWnNcjWUezGBoE4oom+jIdqXhQKxV7ASwdMp+qQ4kcO0EoH+nZ9y V3hBnU8K5lxoLagnOYf7cYhWwVaAOg1s8whvyUntji7UBP2Z8hFipZmiqQkxr1Ke l8nSUYwsH9n2kBAMNHE2oMHI7K3VaOXAu0SFZHanQKiYX6ZWbqdrFOjs0L87OFiT rkhbIavnhoIJMvcwgXDaHxBbR1YS+Xfgi8fqcAqZAnSzpUyH90IebzpA86w== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cju4r26kg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:16:58 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2aaf2f3bef6so16921425ad.0 for ; Thu, 26 Feb 2026 22:16:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772173018; x=1772777818; 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=2FSw1TauRxwuUqMcF+pvf5bVYnR/BuNas3ylwyrIGN8=; b=HDGgjcXJfiG0IGD8fyOb7zCmpYbF+XEyKG3JFWPZaB6+V+V/lnwooUsJ4QTVMtUtmf jiXlGyao87IQdETb9CuXzZPFeBiuutTa4fRqpiX4NmUcb88YrWks5F3wc/oCbc1Nfl+r mAf/7T28GecYA+kgg/oWRMMC37Z7sLIfRUfP9bdRwsSnTKeq9FQeYTB4GKPOhPB16LEs c1GXZhLNIG0Kf4giK1zr3C+faY3ech0ulfU3+IXVysfHZKYU1bQUpNu34MA4tJZ1/tyJ pVLQrpUvLXAOjhIq+QvGGYC+ObD8tMtc18wjs6mhA1sAo0KuXB29IXjAK/0OoQcfSm2q V4/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772173018; x=1772777818; 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=2FSw1TauRxwuUqMcF+pvf5bVYnR/BuNas3ylwyrIGN8=; b=l81bS/NrNPz2Ry+Q5ybcshnooZABzFh2CZWtQNKi90NwxCmDZ1XzeSjaaFC5ARx5iY yQt7gf8T+7Ld+n79+47+/2Gt/6ADbX8o0SHmKexzcj3YW332sT/kCiZ58EBh/RqrkzHv F80Gvhkr9hKkBdKQ2LCwEsJ41c0XMmQG1cGeehdO9H2pe631K0ZoQXuoS+A1tjBJkgH0 40u/zGmJ83VIqGTaiO2hjO3CEB0O1/2jwLFNz3BZeZn0zP0I5td9ZxXeCrLmVZUZN0YS pQ8M6LwNdQAuZa8jA6sufcIJiNyuQPmbaKgV6r1KbsIdM9gpk8tSkdvxLI8bdP+nVvOq nn4A== X-Forwarded-Encrypted: i=1; AJvYcCUhWWNUWvZydt/whbVWExUIbZlCjTMqeF7AIlVUgZ7Im8ddxwZ0biNtq1VBw9Z7knF5x8lkWnig11+yg24=@vger.kernel.org X-Gm-Message-State: AOJu0YzBT8OCNzzM6r0GlL3IdxPuibxf6OtexoszlX5MZs/KSxBEdU+6 vAZXqgB+h1XT7m9ewz0z4UBEJNNVXsmzOeRZ+6PdBfP1+XJk9Fez5on84wtYFZfbufh3dBiIhA2 PQN78+0l5hsrJqNNL5yIfyHRYzSdjhczjaSUn7xzxzfDDp5uCQGbHnAd/RaT4IyrOiqk= X-Gm-Gg: ATEYQzy5znCuJYc9dlfKNa3XF0JaBvBJfsCuVlQzLNNN672ssu5gMYrQ7f0Fx3o9BGR kq4hFg7aRZ1qJL5SF6Sxc6CoQiu4HSQ0za4HO/ar4iCcvEZ0JBLRKP3SMFd393ZvJb/ng20dRy3 TXgGanPo1ia3IXHRREY2E0/xhOveIlNw2qATCN/q2r6xwnqGa1WwSuziT+aguOwhYmHY7lG/sRB HGq3pnNKU4TqXTxkYJG6qtqoP8tXYlvA56LHImA8Hi6lwAghydnwNKn78Ih3U9E5LhfPv9GfvIC FE2oUN6d7M129WJ6LONLNBtO2Iaf8Bleo4w3kn5TYjCLy6Z1o/b4jwlxUyUrkb0Z6yTX24ZINSC doV7uHxMWbGMczKdSZymXNlVUb3AkdD1hing0DnrUs2cs4nCbyoT9rEY= X-Received: by 2002:a17:903:41c4:b0:2aa:d34d:a805 with SMTP id d9443c01a7336-2ae2e47d9c6mr14787555ad.27.1772173017809; Thu, 26 Feb 2026 22:16:57 -0800 (PST) X-Received: by 2002:a17:903:41c4:b0:2aa:d34d:a805 with SMTP id d9443c01a7336-2ae2e47d9c6mr14787115ad.27.1772173017185; Thu, 26 Feb 2026 22:16:57 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:16:56 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 09/13] i2c: qcom-geni: Isolate serial engine setup Date: Fri, 27 Feb 2026 11:45:40 +0530 Message-Id: <20260227061544.1785978-10-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfX2ea9FzqeQiM4 70RBIegNfceLEC86vkI2VVsm5M1rwzva/wo3PKLroXc/OeOnmW1lR4SeiIbTPbdT8uT/v4Ncp9x 76Hh4e2vccztduG88iRNYZph1K62cm0POaQjsscBX+NBNel2fqAG5dKIs4opjnQorpg/EqkXt8h dekSx/NtJ+4xsyFrc0/VgXR/ntLlqcKSEPbnoXD6P3mASHFOk0dgo8qQJduWhq59UhWAZDwhqff kquvFe4YccnkktDgydSpFILs7q5Y+GAohsXjzv0Syy4HNtEYpCDWCmAHc5MN+0MustH58rY/z8h E11OfuR/N0/7q8HMW6Mnww99UVuBKW2IJV2rgc3FGWevl/KfXA1wyKOjhih5t9wqQOZqDKKufPn hbIVzqyd44tjQ+eYpr93lt55GaJrNNhmEWv/461MNdLBNwCgOLvdJ4a9fRKZO1ntfraSxeGJB1s vR9u5/OnuUtj9qEPqGg== X-Proofpoint-GUID: TUXFg8AqrFXQBQ4-q-PefVqVNbcn4ygy X-Authority-Analysis: v=2.4 cv=KZzfcAYD c=1 sm=1 tr=0 ts=69a136da cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=6GPvvr__t7aM35KwLhsA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: TUXFg8AqrFXQBQ4-q-PefVqVNbcn4ygy 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 suspectscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Tested-by: Mattijs Korpershoek --- 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 a4acb78fafb6..2986266695c0 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 Thu Apr 2 06:27:59 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 AAB043E9594 for ; Fri, 27 Feb 2026 06:17:06 +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=1772173028; cv=none; b=DKUWooA5CW42WzXPPOuSUz4hsEBZj7ov51bXI2qWUlOZS0CMZHg8/NxT3kbaVPLhNH6OiyuFt9ozqIkZaBiUOR9oRfO4w3jpWaAeVb2ex5aR2CSFApcZQ+FwSUhla0Dgq8CaCrIf5YIa1wLZwF/rTVruKCfg6euA5JVsNXo+De4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772173028; c=relaxed/simple; bh=4hz8Y0hFl09FGAeyghc3sPRwLZBvCKBMPVpOSPqaB18=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mHmkM7LHSAazEyvKE4DPdPAqB1Ps4zPBIuhsEzR+IHYixiaYxRkqmaplUpuFJQqMVFA45qEaQM92PVhXbv0OqjCFtecRDFNHj9tPajDYGIkwQsFk41ku1tJXo5FG+n5rZUhICbN39y4GkK0LdsjTSuYR4pBJwP8XTWkT/OwXbVA= 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=Edsnqcay; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=exO/4vm+; 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="Edsnqcay"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="exO/4vm+" 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 61R2K1Kv1620051 for ; Fri, 27 Feb 2026 06:17:05 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=UVNp5rZqQkb HIr5aTVOiOMEIXz0PRqXEj234Ie4S1cU=; b=EdsnqcayOsD+TfAWit70Rm+UA38 qK+xj0t8pmLfPwHxFKr9Mst2qaYQTVyqY24Mpgt6cmvcxLAMVoN9pHYD6lnfzW6L znH52J1NcmHJapRAFNlTDO+SwBsLe+uxIpj/su00x4X7RQWhrvpApvR/keftoqaV 4CGlJm/ZzvylubnzYYGEffLUFR4P2HzTUhpa2R9MC84nBuKNjyUBYkVnvzF37XJs qZDwJ/NBtaEGgjq5P1I6eY4SFeLe6Gko0lHQEe+WCUUuup9l8RhoF3KF5WeVlLdk qF91+mIHI3g5Kg86z+4UbQM7Masbx1uaaAP3YmPQP7nbrs+ek9H4Br2gRtg== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjn0x3emg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:17:05 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2adc527eaf5so1675625ad.0 for ; Thu, 26 Feb 2026 22:17:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772173025; x=1772777825; 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=UVNp5rZqQkbHIr5aTVOiOMEIXz0PRqXEj234Ie4S1cU=; b=exO/4vm+G7RxYx+WA0l53aFbliI05pPMKG2SJY7exb85gARgeUy0h5TewXPue7ZIH4 6AWxfDhaUhOxDZNR8HzxOi86b+6jrfgbgdcKwJqAa7GFMvRs+3krDLZqpsQzRnM+Xr4L +hxVCdPDkxz29gCbOJF50u5t6KzUZWW6qETHVvHU4H42jE8+IIwTTaJTH+WxEEKFdN0u h1H+jD3JVE/SAypRorBDrDTyVkiZS+IKxENh/eB+CXxZDE7avQVv+FNDT13/O9FKUYrx 8GsvvPmdRtfzDUhTgYLBm4RO3AUbdu/SL/n/N83MxAWU2dM9Zl4oiB4mLKEpZ6Z55BPp oMxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772173025; x=1772777825; 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=UVNp5rZqQkbHIr5aTVOiOMEIXz0PRqXEj234Ie4S1cU=; b=SUaxcxYZa8SK76Zj2gNuJsWvx7JtkSZEMkKBCfkODzzMzDQTbRm0ZKlyBbiLIuOzUd xdwtNFnZo4lUHMBRBa+xFGDmUXK2QJA1oeGBjoowsKvH6oV1jdxeBQlM5Wz1on8SA/zs 8FySNR8Fm2EPEahnGXkOmcdXMaX+TDc++0UJ5MUxjgbscHIc0vWwaxgFh5dCfCyNmed+ jIN/V8+Y1JsOjefvww5ezkVZLrsEHMzVphg2gK+nnUAj0d3vWsYqH4qaf4cYGI0Jc/V9 nSOQoQkiIg8gDb9BFjDdOkmjWfJzxi5babpzdsu14efAMYSo2p9Nyd1t7idXaCfJ5R8+ 1bdw== X-Forwarded-Encrypted: i=1; AJvYcCUlAdHeWNCccZ0LKax1ouGX48t3j3iLCZGR/v1kwC8PJPFfNMGok2BeeL/fwgwBi6AZQatMd8XxygLNpc0=@vger.kernel.org X-Gm-Message-State: AOJu0YyfvI2HMtQ8wyOlG39fCy+MoWlMhi7pFA/lLkdDm/hQv3bHn/GF 2eXEml3BQe3ugEn/PKj5zFKwOots5mMYJ6+NE7xkyy1ynBuquYHLme1gD4o1aB5rflX2F0NmKjq fNvp2L+VgA1NZ81QQPDTgSQgleu4XPZjhFqjaRSCH/aryE7UFYVwYfr1o5i080xnRDHk= X-Gm-Gg: ATEYQzySYieWlGO6sGr1Frr+CkF06DSDlb6m50s86SegClGyXjE0v48V4DDMIdxTS7H oDOCyAo0fgff/bnYscKvRrLNN3p2f1ZXr7GX0cYtOh4RKeqN7QU+1VXRv8ZWh6kZXq7WJJQD6LA /WrTO7R3lzvVasPXrmkHmOQ4NJc6AzKy2Q8dm7mGV1ISYASJC1PupPeuZv+WHl5RD4SY6hvGtmf wOUna3dBpK4pBP7KrkCgV5IDxrJ2bX8Rs3oXpKNkkxyChnDeGWpj8fDWdfdt7w76Gvygt75aXw4 LfIAaGEylsEOrKnN/y8AaNE2tJg0gZ6Zoo9zej+6drVeRIvholkwKPEWyE+Yqf2qGcSqpm+MLOn PsDzStMeaTrzGFv6OLyWkeOuMXWa46TXWA2vaKKJW5YZaq3Po6tOHeAw= X-Received: by 2002:a17:903:1a6b:b0:2ad:ae4e:bb6a with SMTP id d9443c01a7336-2ae2e279cb6mr17029315ad.24.1772173024701; Thu, 26 Feb 2026 22:17:04 -0800 (PST) X-Received: by 2002:a17:903:1a6b:b0:2ad:ae4e:bb6a with SMTP id d9443c01a7336-2ae2e279cb6mr17028935ad.24.1772173024124; Thu, 26 Feb 2026 22:17:04 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.16.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:17:03 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 10/13] i2c: qcom-geni: Move resource initialization to separate function Date: Fri, 27 Feb 2026 11:45:41 +0530 Message-Id: <20260227061544.1785978-11-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: i7yZ4ZewoUFT_QVsFIvdSyroKIaZUnfa X-Authority-Analysis: v=2.4 cv=I9Johdgg c=1 sm=1 tr=0 ts=69a136e1 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=T4QVXHuY6bPIseVWQ88A:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfX8K613xa9kwtM ordQ33Fl1b14Ze8TlEtaf9ACXWDqHz0k2CfEoIh9rP6BODiNB+dQNs0xYI8HJ0/dYBLj1Cqy30f /MF/utqmi8p91/Utt21Tl8eRsdpviaPxvsHbiKdcvlqOj/QKNUrs7dKP6Jo0t8SxRY1GBV7KrWz NvMMRf2vh7uCdm1HxpPJPNzLiD2UN8FhhHAxJcpjQsTd/fPF8026zwPAFabvimgulWV0Ut5MryV gw8jItRGzkIG+WLUxPY9SbaETNJEY1/Iqvu2RM+86O++rPzFldnZGwYZB9zHbGTkAIeUaVyJLC2 inhyvV9oqLUG8IYkhg0/z9ZLONOJn/PO9CHbNTsR4/AyjeOmrTB8OgnHX37MXntil+OlaC5sbej 5O7lUAWL5PQryNeh/rEk4zRWSaBeA3QwBY/p3btAfFxr/m0O9giElsvknoGeTaO9/3vmYXk8xNX YELYSi6diEIz9KxCz3A== X-Proofpoint-ORIG-GUID: i7yZ4ZewoUFT_QVsFIvdSyroKIaZUnfa 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 bulkscore=0 malwarescore=0 phishscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Tested-by: Mattijs Korpershoek --- 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 2986266695c0..a67634ca0c7c 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 Thu Apr 2 06:27:59 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 D5A563E9594 for ; Fri, 27 Feb 2026 06:17:14 +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=1772173036; cv=none; b=j1p3H+zVvHiCht5EIHzeTsN/xWm7vR+I587IFYYROg4CX+ywiQDdiXSizgX45A2k/jLICdui6b6wjIBZ/VplrdV6EnYXctF5861GT5q/WcCKFaWy7eXJm6wfbQUtJvVubZsaEuYd6ZnFRAp+MezmMxRk/dIa9lAftP0k+kiuexY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772173036; c=relaxed/simple; bh=Cy0n1JMcshW/tt8MYoyLcvBwcTixFL9leAwlKd2BDy8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=aROYsb06BoDlUoJzxEjHBJf6vtI/8Gt1OHqjsS0Rpdf4Rj0nE0UkCGxgyznDRPS0uCAvmQ3u9KdeThh1dxXpb05LjuUmGFHJUoKyt2j0kYo2xCdOI4vIyW36Z/KHQ+/FE1l59yvFk8l/PawwqUChCeyFuv05NyyaKvp4rkqzobA= 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=EGrJ03eG; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=NPdlrQ26; 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="EGrJ03eG"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="NPdlrQ26" 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 61R2JwUI3747005 for ; Fri, 27 Feb 2026 06:17:14 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=uk/dtu6n7L5 B614MlsUj2gA0vvgJ0BV4B7ONL7wOcl4=; b=EGrJ03eGg/r2nGiXyK6X0dAVPgg p3leuIOW/zV2g3hziQ7XotBqroAqgNGhPZrSjNrQHRBzFyF6skEDL32tc0TA8aaM cu5xB0VUZ+COUhOcIhqWhsmwruusqGYGCc0t3EN0z4I6KZMovYX63axPbHe0aYwG EKp0YycoOgdumeZhHvgMQ7Yc2D04NcD8Y+YLXyIGZ+KnCPkqpBIvFW0AmvDoYsEP XEBHq/60rXm5eZ6BktYnmRM1ZXG/yLTHMjV3nFbGaQB4bYnD9T/Yl5+lCcw0jIde +9w6WbN4/0nvSx91eR+OeKFQJDgBRQOvLoToWMXgselg/p1CiMw+rzWRRaA== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjuur1tt6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:17:13 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2add1118c19so10532975ad.2 for ; Thu, 26 Feb 2026 22:17:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772173032; x=1772777832; 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=uk/dtu6n7L5B614MlsUj2gA0vvgJ0BV4B7ONL7wOcl4=; b=NPdlrQ26gGbwpMHIjBVdOKpnHcdhiUnc2kpmFOUt/uHEuLm6ZqU5yeKr8GRvD6LZha YohQpYqwiXT5sNJTolKBTIXMxugBD+v7YWdhlhUlAi+mgbePaN3WHjEGTz7m4CUTfvUH GPlvgeftjNEfNgB8YSP4VLxE5eNsCxcmwAH77pt+Gjwy8Q4EISzhGW5n0KZEBUrGetAc 9M+sALeAEyciKdkTjT1Lvyu6pWn8Fw8VQqzcD0SAyD237fXn7vhWCFrsOYBKcWeF1xHz SjsmiaWAKCr9u0VGVXeQoSXouQCvMo449yXt7MdcdYHUef9W7VrYN1DThSnbOOoDKkZv a1Wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772173032; x=1772777832; 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=uk/dtu6n7L5B614MlsUj2gA0vvgJ0BV4B7ONL7wOcl4=; b=Er2Ljl30rHuWvopL7hWOqqZ1K971wzHSbD1Nnhla3B91gWvtuPliwK6Fcd8RiYnViG sBtpWDprJsfdEEIK2N0UvGfeRiFoOn25hhK1pFB6w/I7n2yQX6nPbsIcDBDkV20Kc9zs Elxu0YAKH3uZNqh+V1WvZ+ugdUDKwmdWcQPq88B3QUAvlo/1TVKZvN0n4QAIazOrgoQB mTSTlvLyeLvhMz3DxSZ9cyrNsHRieBsFdNLBf1zhefKcOUjijiDCNtH3QYXb/z/KzXB8 0DvHtmMS6Hb5ZL85WMaPu6yYOmAx9iUOwk8cnsC3Xq0RqmWeo4ghCn1dJC8HqEWl+L/n noMQ== X-Forwarded-Encrypted: i=1; AJvYcCVqCuXi3XAkaSna1LMfcO7z7yGgjIW/7nijEgVPVpass9+RCA1LlLijTSALERVcCBRG7GZNt5Bre6hI7sU=@vger.kernel.org X-Gm-Message-State: AOJu0YxaT1d5e0rGTboHRVrGaXdnHVhU9mOqo+Qauty73B0ESuH7C7h6 /teL6h1iUC46swnDt7ZanjZV1tWHVFlQcB1XbcUvh9QHPsuHMZ3HEmiCmGdTjNFhlE7xVe+KUAA nd6634pJQg3SU63mZ1uqD7itio3hFwc+OmDk710k8jxjuun73hWWPf3iUE3AsgJaxPzo= X-Gm-Gg: ATEYQzxS1uM/NeOx6iGuuv1XETpWspLIhPIyx8rHJBz3iOj2P5l48fqtI4iiwWdRv/1 8/Q2cJ4e9ArXINbZzygZLZYb6QN9yXRVi+So35WttNa0SSixCaP76w6A3YdEk4arOA3E0wy9SnL 0xAQmjwLwLDd0tQs65C/9QsrDosClajZlZLpZAxDaVOjgSP62Eu/206zEvRsYxbSw3C6n6dcQfp O01jf0tB3TkbGgDduaU7M4c5n9O4dsJee9/mz7PFOxGmSMfBIbM/tAehIBuFDOS/hcJYhh1ANo5 XVm9jvpMZwJox4/l2TYvd6s5zt8GoNPUd6NTTAr6s7NGKLHMNpOWohTZlVcLl9Gx7C2ElPAXvW7 ZRkuULsRMNezDOB5FR6lOIkoHuBcSQ6TqetE/mBw8DI9Q7VcI8RewwpI= X-Received: by 2002:a17:902:e891:b0:2ad:bdc4:c39a with SMTP id d9443c01a7336-2ae2e4b0921mr16507655ad.30.1772173031975; Thu, 26 Feb 2026 22:17:11 -0800 (PST) X-Received: by 2002:a17:902:e891:b0:2ad:bdc4:c39a with SMTP id d9443c01a7336-2ae2e4b0921mr16507025ad.30.1772173031005; Thu, 26 Feb 2026 22:17:11 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.17.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:17:10 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 11/13] i2c: qcom-geni: Use resources helper APIs in runtime PM functions Date: Fri, 27 Feb 2026 11:45:42 +0530 Message-Id: <20260227061544.1785978-12-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: nucclgSxKhrU7eXyb2DtBurDkr9fnkFj X-Authority-Analysis: v=2.4 cv=PN8COPqC c=1 sm=1 tr=0 ts=69a136e9 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=3PeDo36KSfG0vlEF63sA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfXzI6K574A+Tf9 nJbXFNLHk0s/jJWOtd1Ly5e5yJ2GGyLNOlJBTqg4/P/nX6DGvqcMgUvK0tTzM6GagKaj37S68VN 3T+/Rx2SQBnvB6pwRqAySFENN4uq58oyEh5IE13T7HB4X18AlOtJx0Wu9JPxQYAq2r9o58vboli DeVzcXiCKvubqOxvHaYGIMeX8F+rnDSXNTzHndkE5bZmOu3+3VQpjIlK5UivjCfguOl4FtlH5xU IyGlu53y1BOjDTwh6CFPsHFAT7ErFANEy37WNMg2ZrYF7bgV1lDlAHc+n9UeFkzhV70oZvEkqoJ 365W2z8xzbtyeQYxHl0Cssjx94tOs92Lf5IUnXOzPDen6IQFIq7qE+nFuI2jZLHDCioWv3UOvVG jxQu2cpCP+riHet3vqZ4vKBm0h4mXh3BUeRhrLvzXzKLGVHRpDTb5ZdH0fOjmYMBvHl3dn3Q/LA MLE80ZOdWUjzwIFpS4g== X-Proofpoint-ORIG-GUID: nucclgSxKhrU7eXyb2DtBurDkr9fnkFj 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 spamscore=0 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari Tested-by: Mattijs Korpershoek --- v5->v6: Konrad: - Updated last return value as "0". - Added Reviewed-by 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 a67634ca0c7c..0ea4abbcd170 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 0; } =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) @@ -1179,29 +1176,14 @@ 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 static int __maybe_unused geni_i2c_suspend_noirq(struct device *dev) --=20 2.34.1 From nobody Thu Apr 2 06:27:59 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 399CC3E9F8E for ; Fri, 27 Feb 2026 06:17:21 +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=1772173042; cv=none; b=kUGCSk1hN8nDuCY+tiNllc/mf1J6tBd5AWzHZ7+UFuELmGtgIqUv+BW6XefUdgzlYaSeO1MWJw5XIG2KKht2KN7osxcmw0x3K7Zvp/GNZr3mQbWR9D8xCtqMMQ237P8YgWlPRKtVoANU8GMZCgeantKIiXC+Pa8BxFpdKswXZ8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772173042; c=relaxed/simple; bh=eY2I5uRUIiwUluElxUUOpi5fOiYU296aE/AH3jfENzs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dBIhZivZpfBGPyGjmI4UPKnhzGA6rSTloJRhQf1VtmSjGj6QVlRNb2Z5c3LUphj1Ip+lRl9JfUcMhvS8J3CEH1unI9se36tKKaSUxCph3etQJW2kiHk0GRxdqqi6b87QXzOCsZ4lglqjQKiIlHrD5Qc4FPcQYblRn/nLy6OzL/k= 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=OHTaXLAY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BUvvTGhB; 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="OHTaXLAY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BUvvTGhB" 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 61R2JutZ3746986 for ; Fri, 27 Feb 2026 06:17:20 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=a6YJVRJhruA 6Q8Cy2OP0sNlAp+tW66kxMwSkhyUa0XA=; b=OHTaXLAYGCw4TlT9JNPjCwTZUmS 0Se1rvqUyRGyZXIejWcarn7hUF45jXoXS9ZArc86V2pxXc/fEFTQTT9hXXi/2CRA 2+2kp8Ve5CiEzxmgj6ea1lxBSy7PcTG6yz0AKmPJVV/uBIJHdkEjivrm6OBpmn9a pcZkJIYe19Z6BHEOohsjaJYIAJeMOpouK40SxDP/e+pCRdHVE3u55h3sKYDDYYOz ON/fOV6ws19TIYnR7HwUxdw0f8kHhulXrpFx2zyuoEK5K7LdFV6Xu4h+hLMjVbJS ulUJmkGS0ZMEQrlC4BiWlpPpXLWK029g0IVSkZQ4B3FBtl95R4C/IMuRRUw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjuur1ttm-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:17:19 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2aaeafeadbcso18024745ad.1 for ; Thu, 26 Feb 2026 22:17:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772173039; x=1772777839; 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=a6YJVRJhruA6Q8Cy2OP0sNlAp+tW66kxMwSkhyUa0XA=; b=BUvvTGhBrB5ycz3CbI3M3ZiSDGNl7lxUc9cJIw8zR1Zc5t2WFsWm2h1D3EdV3Fz7O8 E6j9Lkvvo7Z/G0szbN/WKGhxi90eygxa9DoJIev+THowtkTvbCb5EXgSIMjDYgYp7+9k cU5LKkMICLCgOz8TsFnuL01pMHYGLj1hipnhCWY02wcCZnl9iuE5QtAmniHIAXR+Ib6k GzuMX1tGQwseqsyHmprx83EXczDE4bZSawGPMCil3gbsn5i0fnmtyNYGT+wlZArtylXs lS043eeCauQRYXED0DCHvkgJFUjUdq50W8x3OZh5lg4/Y8EjRRCbO9umNJY341q03fGj 9j3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772173039; x=1772777839; 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=a6YJVRJhruA6Q8Cy2OP0sNlAp+tW66kxMwSkhyUa0XA=; b=pKFn8+ZkvyIbjkq0LRdRhTrwpAmbCl3KL9RlIELysOnjH02oYGwKaW+ZZC1NlmlWw0 DjAi8yHSRz3tv2XoFX9cFWWs2IaQ/zV2v3CC9hcd39ykyknuRvf/vixw8GhZXilNi2rK iEUeWZJM/GtzfBiapCzU0RLavxpBEFPdFwdC86LmUznMI+1aQANPXgjLdnVTODw+7rre a7TxBA7Gy2szMTxUGqYyYCCIOJZHCpoxUZYh57BOwlE4zIubfnF+LctAPRrKJlS3G/LS GLJLbVNWeUTOp4OFj1U5kWKevMLSY7Dxk8zPL9g5LoKPcZDl1NegUAXd1rgxowWoUL7c CuTQ== X-Forwarded-Encrypted: i=1; AJvYcCXzw5wKn7K0jQBqy4ZGPvbMM1MWcWGACrfqkSoN1RMiHm6WGmhhTshPSLlydN1RI2+o1JcirfeviiZ90dE=@vger.kernel.org X-Gm-Message-State: AOJu0YyeREYKA4mHEFcqfCguUU+PB6EwtYXtDUMMtIYmub+psQEIoMiS fDYo6sxB98dYnPq7rXCl5PpG8jiHhUEYLlPmQhcwfEIe9+lAc1epPy5/ViiNinr/IxqnH+ljtnf zPoUnAC4BUTn0c1Gtq8XMXZD0wP4elAuPQmuK4z8cTNa17lB9/5DKSiJNnLCU3KxBxnw= X-Gm-Gg: ATEYQzw5+NrTExJFyapS2t2dxm6sV5tbhzwa1Logd9+VDDApkhIjzHtAyGgAGaWNJ5b V2Iu0GIRSHMrjAsx9hivnRiRJ/yav/NS+YaRCzXX7qHeeoY8tAV6uJSqFr+Ky/rK+vhW705Zn89 ORIhUCwx6VBjxr2c1AEbZ5EQl6xWiKQZFMh+a6YOzQaTZqzjgJPLUWPE0MoaBD1/dcJFX8wpZHy qvtZcvqFqTFcDmVNTfTdXWgaqfNtyyEZnJ4vUv4Win/OLOmh8wSVl3SNpbTjjwjBKldrePynS8r QnL6N7RYolByKi4cvDvRjYAnvAXlnxsy8SnPs+x2I2F6hLZ+kvBS4OVpmspIrqAYWJKK7IqjpK6 kOFOM3kIHUnVkHc0wj6T5A95TvOI/P/pOHEUHU6dgC5CoC1p6YzWwmPI= X-Received: by 2002:a17:902:d484:b0:2ad:ba04:40cd with SMTP id d9443c01a7336-2ae2e40faccmr14904545ad.22.1772173038782; Thu, 26 Feb 2026 22:17:18 -0800 (PST) X-Received: by 2002:a17:902:d484:b0:2ad:ba04:40cd with SMTP id d9443c01a7336-2ae2e40faccmr14904245ad.22.1772173038179; Thu, 26 Feb 2026 22:17:18 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.17.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:17:17 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 12/13] i2c: qcom-geni: Store of_device_id data in driver private struct Date: Fri, 27 Feb 2026 11:45:43 +0530 Message-Id: <20260227061544.1785978-13-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: qwC84vR0XcB06vQcsO3kQDPfS5wksAjd X-Authority-Analysis: v=2.4 cv=PN8COPqC c=1 sm=1 tr=0 ts=69a136f0 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=L-JS82rCYefCJmJZhRoA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfXy0q8JZRuYtzH e2eWKmr/he+AiXeTGrAXoSUrjWQYds3CY+CwbetjlVmi6yeyW9+MqHFPTAGmTiTjM6A4fuUiX2A YHklvWmWfOHiJrX9sJwn5kB1sRUqRCfOZjVAsNCsXm4g6UVlVXY3NYiQW+R9B7xsbDTEljnJT2O 9eQygKBGiE//j7shknh7KZXcAdxTqZThP16jQcrUKHgqE3pTLbJF0l01Kh6n4SxpP9E4JpCdBBh s6E4oitRSONSKf/xyQPu6cA8mwvSqRilTuF0xdOhk8pVLK71H6CqhUy3ui6CAexRbegEqdizpgp fXxDxQeBUkVkQ5CioJ8n7ITTjIlTV5o6YO77QH+mOu5Hq6WfMLvrHlWjedogUOJk5vUEGUj7Try sdAxqzDGFuHBotU01BoQHj3f2MislPhvd0KiaCRXYVOmG96fa0vwP10/Lz1W6vSELu7pGcGpr0y EN29k6jzCUKEA/51W+Q== X-Proofpoint-ORIG-GUID: qwC84vR0XcB06vQcsO3kQDPfS5wksAjd 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 clxscore=1015 lowpriorityscore=0 adultscore=0 spamscore=0 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Reviewed-by: Konrad Dybcio Tested-by: Mattijs Korpershoek --- v5->v6 Konrad - Updated in geni_i2c_acpi_match() as suggested - Moved geni_i2c_acpi_match below to avoid errors of geni-i2c 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 | 46 ++++++++++++++++-------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 0ea4abbcd170..f2508038c64c 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 { @@ -928,15 +929,6 @@ static const struct i2c_algorithm geni_i2c_algo =3D { .functionality =3D geni_i2c_func, }; =20 -#ifdef CONFIG_ACPI -static const struct acpi_device_id geni_i2c_acpi_match[] =3D { - { "QCOM0220"}, - { "QCOM0411" }, - { } -}; -MODULE_DEVICE_TABLE(acpi, geni_i2c_acpi_match); -#endif - static void release_gpi_dma(struct geni_i2c_dev *gi2c) { if (gi2c->rx_c) @@ -976,7 +968,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 +990,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 +1010,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 +1054,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 +1065,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 +1206,24 @@ 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 +#ifdef CONFIG_ACPI +static const struct acpi_device_id geni_i2c_acpi_match[] =3D { + { "QCOM0220", (kernel_ulong_t)&geni_i2c}, + { "QCOM0411", (kernel_ulong_t)&geni_i2c}, + { } +}; +MODULE_DEVICE_TABLE(acpi, geni_i2c_acpi_match); +#endif + 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 Thu Apr 2 06:27:59 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 E8E8B2D94B0 for ; Fri, 27 Feb 2026 06:17:28 +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=1772173050; cv=none; b=mBTD1OboKaUJYkqdWz1P60hzsWJav+7UL/WfwJE7PLpHE6hNeEeqb2hPFDr2gs+idrHGciGsLu+/S/5M4K3B6XGsBCmY80GMCpoMxnMCFyONEKIdTYKsAej1tqOmC3HfdofA8xAConHXAFD2dO6fkGF5nNArJy04rjK5Ns0DnmI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772173050; c=relaxed/simple; bh=HwTb7t2o4sy7CjKDpJPoenPA/396v0ONnPQOFRFUIQs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZrfZwGAuNCZBMcXq9NfCgud4sNuuzXJlzii4s49Qli+RlHQm77pcMoebEbCl0YRFcku5NVrQe+Ha3zQz6BXUyspHshilWkFPHiuFgXsfi2vh4addpGDjDz9riQhCvBqaEDN6xV9LGLKl/T0spSAh8b5fmpqVQtxkxS3duC+/88M= 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=ZhYlO7eW; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=i1uk+XFM; 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="ZhYlO7eW"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="i1uk+XFM" 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 61R2Jxk81619659 for ; Fri, 27 Feb 2026 06:17:28 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=2KqnelgaDr6 6ONe8WdkRoolRj2Ly4YpoaydtcSK3HUg=; b=ZhYlO7eWvF3y/w/B81nfjzXYiGX dafpzNphiiaCPfnvGLZ0pSd462gjpcbBqNg6ZW2E24b8rP2VvXfg3SIQRhYT3ltj Zi4rWL4od5NnA/MfpZ3i6uRmCHZThIYLmbCqRcdr0Et7yjGYI2TGkldexrioxLTQ JJ2EjEyZZ/ulzckUEOmHzWId0knMDy0N/GSLwBF2Hqn3VcAzAtXs57kDoGBlqwvH Y8IQZG4fhAbn9scmRNUMQmM/dovJaZz/+27ecOr1Tk2wdJY43tMP8dOO/nXlR9zI GmkFATxKaY7OapEhrFrF67rcry6opiVIQ174STV2lXq77/IGny1CdivmaKw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cjn0x3eq6-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 27 Feb 2026 06:17:27 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2adb1bdf778so17079395ad.3 for ; Thu, 26 Feb 2026 22:17:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772173047; x=1772777847; 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=2KqnelgaDr66ONe8WdkRoolRj2Ly4YpoaydtcSK3HUg=; b=i1uk+XFMtyYYQRm8btNCbnEUC64bYT4V6BLkUvVscM57A9Jn3LQz3TMDgkm9FiipxD tT5IaAIbSGa/7mTuwMw0n9EX/UBJLZv1GL83wpGXUb2wa3xXP2rLKKQ6QbqnmbHSaSDa yI7t8UlJF/sD0AZ4FXM9eAFnseNAlyKD2gvo50OqRiahKPx2bcQbNfNi3os5kQQHUNlL mSzOR9p6ZBV127ulITGmhCOsQ/obb50pLIN3fFR5SHMu+zgAw8QZfEQ28g7hQHXaFAhg 9+34todKgu1HUPZ1U+Va+KHUXGRZO0QwFnR2pgG5o7bcjoXp8PqS6+V5C7UfHbXzhg04 x/8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772173047; x=1772777847; 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=2KqnelgaDr66ONe8WdkRoolRj2Ly4YpoaydtcSK3HUg=; b=QqZQIJmtm77N2vmwMWNCqpFfwyxkVyWRxh2VoMhgyMFTdNQBuODE8NWNuHzIajFEBN +pqluek18sEKlaaXNZDHeoXPZ5OopImnblExCtYzr21W1fYyPi6R99viPsOTXdAgkAGl GmvZQLD1KYpZOcrUlZj35Ity2Wp1OiO0/NWaDn/pDrxzKCNq87A6sX60o/EOOvcB15tN tLckmmXg1BP7hsEsqWC8zwqzZ67rwXgMgYJ93aYpPlpeYgnBKVq1b5+aRv16VrdykxVu +FD5amjezWr2pGHvv3r87zSgOqb4UNwAVbqRSG8fr5M3jOJegvkPTS8fF/9ZvZvKUBGJ 3Djg== X-Forwarded-Encrypted: i=1; AJvYcCWqiF1IbqIHWDvPSickKQxMf7cmzta4fG+H0pX7M39W4ZPMiVgsvlghWAl3CU13WSbO1S/d/lD3/+CcwQo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzloo2dSMjlCDY5CMnpxpj0Ak2UwpC9IGddz3Ye+VgvanE60WFn lTMuVp0DMgckbPlwETjB0hLylgiU/TMFB1PNYhZ/mXPWfFUhgYMl6VLmyr/rXeyLD7oubn9O1Ab Amq7PT5wu8PA9SYvMuU2jVuljpEjY4pB4opWRRY7ZBIjUQvrZzZxImgcVcIt77FlmmME= X-Gm-Gg: ATEYQzxk5An98TnET/FgGwlwM1eDEwXd6OIaXnsyLulo1daSrne0Xug7fr2Y1IlLmg4 1t6cH7BD66blCvioDORV8567fj8rKxtRX0uXm4y/GX25ivQe9SRdaLPd0z6F12C+wiEeXjbXH5P sMu1MY6C1rPbaXhTHq1kqGpkQojPu7zLCviiQv/LFdV4YWQEtS3vS4YyzzWKPmBkMqvPfhfeQWJ kYPUBiqtGnDRdOei1d0GUgQ2rifORjf+jURHoZzc0QpzpawmBNxh6Xl4gTKw1BlHq72GcUeQkQk oG8j4Jnrjrk/Nz9fJFMoW1pRcUeT8mBOmrE41OoxrflOtBHpRsSPU3OSkQfCinERgqjaRJWxrUw GdoxyvjImk0H+uOqfMWHzrGAAJcES5o2UBfvxSwgwtq4AnoIpr/DNR3c= X-Received: by 2002:a17:902:ecc5:b0:2ad:6e0c:620f with SMTP id d9443c01a7336-2ae2e4bceaamr16289505ad.43.1772173046952; Thu, 26 Feb 2026 22:17:26 -0800 (PST) X-Received: by 2002:a17:902:ecc5:b0:2ad:6e0c:620f with SMTP id d9443c01a7336-2ae2e4bceaamr16289195ad.43.1772173046411; Thu, 26 Feb 2026 22:17:26 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2adfb6a043dsm64813025ad.54.2026.02.26.22.17.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Feb 2026 22:17:26 -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, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v6 13/13] i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms Date: Fri, 27 Feb 2026 11:45:44 +0530 Message-Id: <20260227061544.1785978-14-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260227061544.1785978-1-praveen.talari@oss.qualcomm.com> References: <20260227061544.1785978-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: jFNMQ440AjbSJBhKjscnzDyixVGY4gfz X-Authority-Analysis: v=2.4 cv=I9Johdgg c=1 sm=1 tr=0 ts=69a136f7 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=zgZzUwpPmSg69XYvEVoA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI3MDA1MCBTYWx0ZWRfX1yD7f5GrT3j3 w79TwC0X9o24fqlvDA1k+3xut5us9synZpH4tsXo8zznipxi+WglMB5ilsLDsatmy9m32LjleI/ UdNlJWV5CQu8UrXkly+svH1MZOI02rU/j9MRnQHqzHkAX758Rhnm58cK95tLsJKg9z4nogFC9Va nizd5w4ehSgvNgXRnSbCHjHLMX7YrIbRGm65JcgIRS4ddNmMcBQ7Y+xS85cmTfB9aKHtsVlnhrM bIoievMmjb8nFHN4VXxg2fPwECzjIPvjE9VhWhujjdjLcti7MsRzQOuOFyeKKh16nyFQbpbdRdO QIJnN4aWZGwkhvrCbRMpenW81mfNZW5FGuq5H+/SHRWUiugF89U+ERuijBnKl2XCT+3KjtTIV8a hQ9mZzgsludYonExbPondO2xdZxX0U7jVAbY7BVHkfWzzqOnHfhAVXuyevLF66Gq0GmcrbWBozL uk/eGkFL69g6GajEQzQ== X-Proofpoint-ORIG-GUID: jFNMQ440AjbSJBhKjscnzDyixVGY4gfz 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-27_01,2026-02-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 bulkscore=0 malwarescore=0 phishscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2602270050 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 Reviewed-by: Konrad Dybcio Tested-by: Mattijs Korpershoek --- 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 f2508038c64c..556bad79d606 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); @@ -1032,8 +1040,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); @@ -1088,7 +1097,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 @@ -1147,15 +1156,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; @@ -1164,12 +1175,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; @@ -1206,11 +1219,25 @@ 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 #ifdef CONFIG_ACPI @@ -1225,6 +1252,7 @@ MODULE_DEVICE_TABLE(acpi, geni_i2c_acpi_match); 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