From nobody Mon Feb 9 03:30:19 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 E56DB33F8AC for ; Mon, 12 Jan 2026 10:47:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214863; cv=none; b=U+j7G5n0TqojvNrkIOHKMU6CvfC+Ynt6FF5K7Gon006alntKRXzIsCj9u/HuTp3FtiWdGvD//S3zK5M+PhkQd8H8CSGsx3mB4qYR4MraECL26mH4aLuIP/E8ehFYl9sMcmL3Uh6tN7nlf06dj+GJJLutTvUT7Rqv9oXxJ+jefqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214863; c=relaxed/simple; bh=Eck/D6KmwOrBysTJIIaZmSoFBAq/RlW1moTUSu+Xl3I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AQJiDpRhOV2YWRhzYniEnrbGp4ezbvnFJG3v94wmppLJ9bfChqKtLH2Nz+lVsfLtahkKTVQqvrfXWYN5Hxh974n3y9anzgaiwrTCsnJ3HdcrBOSWzs5rMbdauhoUnBUpkDOL1kvdaYPB5M0KH08znNkTkblUG8DWRnWhiH/nOXw= 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=VspeZzG1; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HOuAEypx; 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="VspeZzG1"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HOuAEypx" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C9F1hY1091977 for ; Mon, 12 Jan 2026 10:47:40 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=KnpiwG0d//X /Doe7m+7TdtdTnhg6HQ3OqoiGCkLu8T8=; b=VspeZzG1QNj+jHWhyOS7+P1dKmW TLj3Dn5Sri2LWtrNEQnmB6XdXfBQ2KGSbZKF22sUaUBieuYbYAjQ9vz0wiq3jCjA kAOkxQlkI1nSH/0bvGZFo8hw/DuTd6jHRTxy7OcyayA9uhoFAgBgjpdx6xvUdDbz qg3j/rcXn6U1TUPCOIAiWIGSiB5pmDz1AzYd5m+Yfw2xTalrsce7bw9J/f5EL/Cv cicd9Tv0t9yXv9u+CdAvLrldXLtgLzAKLW/5nz+PVQyjCtePO3OVZIqvQJhMIMVS VJDK9J2Xm3hecc5kVZa2OpRMwKgxrrjXS0SOx5am5vvD490Bm+s1APKKjbg== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmx5mg939-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:47:40 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-81f3ed6e935so2702091b3a.3 for ; Mon, 12 Jan 2026 02:47:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214860; x=1768819660; 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=HOuAEypxzOp50jgnV/AhUUthISA1HGy8iZ0pWccz2TA7swqE04BJK2LmpK1dBSe1Ph axDYMQLUvbJDI1WaDKd0gyQI9cxlbyg2nd9zs5ydVN2FG5LHh0z3TwgfoNOyJppLeUA+ 47Xj9eTJRiVqabbGvOFTRhT8OcoFCm7+SvmFRwmIp7yX9WLY1Vi2Xstf4u18bdXlSZj7 v+teLMm1YQMQOqJuc61E1FxH7SRKE4PvplerZGGhiNUa9tmEIutAqdpwgn7NJwkSy2ia 4ReJUpHWOwvBJ9J1jHzRaf5mKxF5IFHUof8fI3I1uCsh3op2ckySpoYHgf+rJWMvu1/K sjsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214860; x=1768819660; 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=Ub3r0k/jLPatPQemQr7KaHkL3maSPIi9KhKiTsW2LdHZAxI0k4OrIFtLExpjAfIiO0 +etNJHkthuRMoBJzuoudNrX+xYa19PVHmMJzq0RB7P3hm7QW98MOLdEmFh9EZjaGvKMw y2gEvpSMQNiM8xXu5IflrOPnH2iZcoenILq0UW8VfCkSS3j0Hil3TxvfI5BUFgPvwXGv zPGlyyqaUDWKwVAQk5sa6l0I1r1RnbJ8DMmcRvayE94dmjrxLl4wWPIf77EDt6KtvLKc Jpexq12PnjMdtbYzTYmcNltZiVnHTmwnJOtDhIPN4RWZye9LpsvePxkJfzKmkxH5rt9/ TB9g== X-Forwarded-Encrypted: i=1; AJvYcCWJoeckr0YJHEaT+pC+AJb98hbZVQiLmtGJ+OjAyaP61y2SFw8ICqOfB/lHCoEse27DfE/P5kzEqXsduP8=@vger.kernel.org X-Gm-Message-State: AOJu0YyVXc3+b0nYfSw8LXEwISZUMFhiwx3ouBW6EOMNahpcEHpUI5ZO Atne2MGs0Hc5+pVBxddeGiibrCRjlxUcvuDFJgWwuSC7AIC+f62N7bxtvWdTbFqkABgF17n6GfU VjNtZ3t2thpcdakv/kSFi3ANeE0GCKf6boChBh6BJtU7Zn7IkPoNs8ZvT7JWl6Gh2imA= X-Gm-Gg: AY/fxX7NtaO4efwQ+d+6Mnnww6quGtipfjig8rn3cCXGM+FQyj064jt8V2ENQ5Ms7Sl EeHlCgxml0r0CsBULhUgdZmr1kdlpNOx3pe2XR3yYCrGiDxfz/HIMjuHGvVcvVtK2aSB2VDMKv4 H5sefzFDNLYI68OMvXAOX/sWwh/Z9lFQIWIqTSarVB8RYp/Lq+6ykU1mIOFaxG7KyBgYxZiFf42 AaS8+ucegjuMlXBfl93yNptoExZlYzVvuxKWBqLITwvFvr5ElJNBkNSPp+DmnOtiTPRnZvMpmfB xIiAa/FBgJgYBsOpWX1Ai27brLZafWIccEmj5LMcZKxS9LZr/ewAVzxybxuQoJAWjI+9sCdSL9G PiA/GChd1NjOnHHX7jPatvQ0Zqkkpno5SdiZ/0fuZzzs= X-Received: by 2002:a05:6a00:bc91:b0:81e:5d52:53c3 with SMTP id d2e1a72fcca58-81e5d52567amr8230821b3a.18.1768214859862; Mon, 12 Jan 2026 02:47:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IG3ldgLP/Xx+f0G+ZCY7b1fwuj/2H7N1WZN6H9rB33UYGPFQpyBaw1Rf885x63RbmMWxbdSzQ== X-Received: by 2002:a05:6a00:bc91:b0:81e:5d52:53c3 with SMTP id d2e1a72fcca58-81e5d52567amr8230789b3a.18.1768214859256; Mon, 12 Jan 2026 02:47:39 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.47.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:47:38 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, Konrad Dybcio Subject: [PATCH v3 01/12] soc: qcom: geni-se: Refactor geni_icc_get() and make qup-memory ICC path optional Date: Mon, 12 Jan 2026 16:17:11 +0530 Message-Id: <20260112104722.591521-2-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX4IJMR0dDH0PF P7Aq6ZVxdBs6LGpEsuTpES7P7AXpBdjSeHaG+mhwLA4KX5jjam+xyu1hnLNT6SmQTUg1T0Usk21 g8WikVUW5ZcNDeT3nD4CD1PoyYt7RjB9fEfT9f7osi/rmV0slqArTJV1VDhp6CxZwSfCQmZucuv Npw87zLXswO2FCve1cCUkFNS7ySQZQS4NnmlwAOvVHWP04sb67GEeUYfCBajfYMgAukSEBGKvU8 GtCgFDs31c8/Y62rfHgBFqlcG+2nt/XUUOTkh9PU72RQiODFwVuZLlc6/gBR+EMrOlqrtQBESGX 8QDg+VYCoWYw6VC6/9p+NhUIuPN1ZMDUio6P3piVov865vbYobua79pSw6GdaN0GlVhsaVw4zjf U+/u/87Sbeo1/SO9e9vHQ6UzfIMEeBg00hmOghoQLlfKC4WhznvLqSITtqydJcRv4VDFudQ/uir 8+m42s+NXCZK4B8FYnQ== X-Proofpoint-ORIG-GUID: d3V852VMFdoal8CEL-oC9n7VXFqfmjwX X-Proofpoint-GUID: d3V852VMFdoal8CEL-oC9n7VXFqfmjwX X-Authority-Analysis: v=2.4 cv=Q8zfIo2a c=1 sm=1 tr=0 ts=6964d14c cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=Wptve8LSCQjy2B8HgooA:9 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 spamscore=0 priorityscore=1501 phishscore=0 malwarescore=0 adultscore=0 impostorscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 Content-Type: text/plain; charset="utf-8" The "qup-memory" interconnect path is optional and may not be defined in all device trees. Unroll the loop-based ICC path initialization to allow specific error handling for each path type. The "qup-core" and "qup-config" paths remain mandatory and will fail probe if missing, while "qup-memory" is now handled as optional and skipped when not present in the device tree. Co-developed-by: Konrad Dybcio Signed-off-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v1->v2: Bjorn: - Updated commit text. - Used local variable for more readable. --- drivers/soc/qcom/qcom-geni-se.c | 36 +++++++++++++++++---------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index cd1779b6a91a..b6167b968ef6 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -899,30 +899,32 @@ EXPORT_SYMBOL_GPL(geni_se_rx_dma_unprep); =20 int geni_icc_get(struct geni_se *se, const char *icc_ddr) { - int i, err; - const char *icc_names[] =3D {"qup-core", "qup-config", icc_ddr}; + struct geni_icc_path *icc_paths =3D se->icc_paths; =20 if (has_acpi_companion(se->dev)) return 0; =20 - for (i =3D 0; i < ARRAY_SIZE(se->icc_paths); i++) { - if (!icc_names[i]) - continue; - - se->icc_paths[i].path =3D devm_of_icc_get(se->dev, icc_names[i]); - if (IS_ERR(se->icc_paths[i].path)) - goto err; + icc_paths[GENI_TO_CORE].path =3D devm_of_icc_get(se->dev, "qup-core"); + if (IS_ERR(icc_paths[GENI_TO_CORE].path)) + return dev_err_probe(se->dev, PTR_ERR(icc_paths[GENI_TO_CORE].path), + "Failed to get 'qup-core' ICC path\n"); + + icc_paths[CPU_TO_GENI].path =3D devm_of_icc_get(se->dev, "qup-config"); + if (IS_ERR(icc_paths[CPU_TO_GENI].path)) + return dev_err_probe(se->dev, PTR_ERR(icc_paths[CPU_TO_GENI].path), + "Failed to get 'qup-config' ICC path\n"); + + /* The DDR path is optional, depending on protocol and hw capabilities */ + icc_paths[GENI_TO_DDR].path =3D devm_of_icc_get(se->dev, "qup-memory"); + if (IS_ERR(icc_paths[GENI_TO_DDR].path)) { + if (PTR_ERR(icc_paths[GENI_TO_DDR].path) =3D=3D -ENODATA) + icc_paths[GENI_TO_DDR].path =3D NULL; + else + return dev_err_probe(se->dev, PTR_ERR(icc_paths[GENI_TO_DDR].path), + "Failed to get 'qup-memory' ICC path\n"); } =20 return 0; - -err: - err =3D PTR_ERR(se->icc_paths[i].path); - if (err !=3D -EPROBE_DEFER) - dev_err_ratelimited(se->dev, "Failed to get ICC path '%s': %d\n", - icc_names[i], err); - return err; - } EXPORT_SYMBOL_GPL(geni_icc_get); =20 --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 0182F346E62 for ; Mon, 12 Jan 2026 10:47:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214875; cv=none; b=nf0ffJjPUc9lH6pclZl/nT8i08fbbijye6SppYqK6M1SuE3HhM86IeOfR3hQQeZYdM0M0Bz9yoYcaX+P3fed9vbz7gHFyJVZ9BbLKUddGMPbDvyQ1sJrflgEHg1C1LSDmD93uUxTRBv2vxw9OkzZNL85inNr9ghBIYAuOFJbn3g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214875; c=relaxed/simple; bh=85mnIBih5TefJNp/bHk7qTk7tspz31Q1DwJ4d0ufNMs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RZ0Vwh7NSL6G5MNfRTZcZsPHm4Ig3RxBbjW72PqqYUXwSh7in5Ly6p5SiEtXMlqB8XnqbiwvfV2TjwAM8xsR/8sf7Cudg/iG0TX/fL/MamRojwQ7qcDlSRbwxFOJTBAAMVCeEXlEjCqrx+jWJTmiHbVnHvCeKFK8E2GIpo08V1I= 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=RLdWcpJ3; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DVrVZLUT; 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="RLdWcpJ3"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DVrVZLUT" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C9FQ7l1093212 for ; Mon, 12 Jan 2026 10:47:48 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=RLdWcpJ3iCEeozKiYqjx5kWHwQc xflUyZEnJpit9nTD7hpjkditFQepucjuV5k9YC6HfXV/4YEWIr7JqFCUfiUME/KW SgsYjHFfGy4Ila8B55EwBphdBRspZDck0q/Uyt/jRhcZgzNl1O4TgoyFb3x8Xaaj zE0VNu91cDo0TXyvQLLdh750yweXTB6SJ0JJuTPCqRZi+GGOTpbntYmVjyxOZysX XrU0sGn+346uDWoLljj/rg239uAZRFAIshF2Z8w1/rIL1CcI4p1rtC36Zy78HIzu t5Oh/YikwriduRXrWSHPKLGGxV6l57iOBUbMEvtu+7kLsq54EldjkE/cinA== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmx5mg93x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:47:47 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-81c5e1e3beeso3397207b3a.1 for ; Mon, 12 Jan 2026 02:47:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214867; x=1768819667; 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=DVrVZLUTszVNrxdk1L2n8eijpMSAs4C9eLUEu4xI2jRPp7tQqlCSC8CdFXp+0pniD1 kaYOsoaRRdmiaA585n1I+oeH7ls85oYBkKykAOBCE9XQL92fgi6mmedtDwqUNrnzMit0 er5ykOONZ7I+ozQBTLMhORbhLnWFaEwRDb4a1/0Ixcad3Kj24jgWTmvW+jaPZTHVeC36 rgY7DD6RrVasnKztFuO3D6ZhkO7low24RxktAZIYcFIyZl7NA2DV02p6y7SybmXKhd/M x1dT2k0CUvoNMu28AP89MtM/CO+19aG6vYdfVsTgJHTvEp8IH8wJcVhPT6ana/kpWKhJ 44/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214867; x=1768819667; 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=kpZd83uqz+de96ClfLVMaeI+AnO0+5gLSU5koGxb4qRJ61wKAYGwyBDwkezencaHPO sIPh4EUjyaAUxgL7H67sLVyBPHNvV3oBbdwtCaionkOYxCxCWyv+RVQ5X9y1qtLtohZ6 rAgLrZoXlBJaXZq+5zblVBHZSh0ty/MGdYDMbed+FdqlNtFyXO10NjaesL6uDsCdZYUv Bw0tSF4K6de0kVu0J6HY00aYhkeGWNzrxZvEOqJ9nxX8/PkFEDmEs3iaHivGQ63wDmij pu15aDfqNQHV202aiK7PID3Bc6eOLjSRBmih11c88SIMZMZ0YIALMmmzUIydA2IXuPNc kuNg== X-Forwarded-Encrypted: i=1; AJvYcCXybo7Rf3vTrCcUQ05C6lWO9ammRCvVuHvu00R7U+WZN2S3n8waRpAefXB4479OUPN/9eziL+EQ8SXCHOA=@vger.kernel.org X-Gm-Message-State: AOJu0YyKYurAgYeKHv+/nwOcaTboRxlgt2b96HCAZg9d/B+EdpPNNq9x dSFohv5X6teVMwu9xUitLrqM5h+Hx23SCrEA7PH/lIokzx4sXeKbpnPt3lXxB2fYgbfGFC9ux1d s7lzamNN+io/wGcsAKuzSQ85FvkvVLDx12tCelEMAbTxRIO1NVT7TUz9dfBnoNaLfYQY= X-Gm-Gg: AY/fxX5BLLiOG15l/3KeeSXV4QX7HSO4eCuOjcyUaLc3cCdJ+E+NBjIOQGO5wB1zjMN UrSa4jy51Uvu66KwiOWl4MEqL036akyDKXAYFQwjPK7FP79Y++YWHYx7QWvMClSHq6omjL2voig gBCCO/KEGbcDscs1Q5fGRzipzwn2EKfIakYbhyNBLilyQyJn37vVplx4MqiHDiW3ba54zCSTWO9 ej/G8g4XwLHgOvul5fkk+AYO/N124xfC0phmx/rcKqUrV1tHO5SbwaXQkDWuMwlXTRKXJiWa2AP akAQ4IJOHIOr5W6Ls+QkB3qlLmU9PBjEP68dZ+/LvBgN/qcX6XykFglkLK1cC4X88CWP/lm0GDC Vztq1EBeRyzlwXwarqrPUnlMVMlJjKgWkPlQyevyHCPM= X-Received: by 2002:a05:6a00:2a0e:b0:817:9a85:54af with SMTP id d2e1a72fcca58-81b806ce675mr13419670b3a.43.1768214866487; Mon, 12 Jan 2026 02:47:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IHUJz1BsN0xziqcwniKloQe5XJwgl782sIHwC6QTj0wp087TMrKSssCFQTMOkzmjqOon3msZw== X-Received: by 2002:a05:6a00:2a0e:b0:817:9a85:54af with SMTP id d2e1a72fcca58-81b806ce675mr13419653b3a.43.1768214865866; Mon, 12 Jan 2026 02:47:45 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.47.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:47:45 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, Konrad Dybcio Subject: [PATCH v3 02/12] soc: qcom: geni-se: Add geni_icc_set_bw_ab() function Date: Mon, 12 Jan 2026 16:17:12 +0530 Message-Id: <20260112104722.591521-3-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX2x+N1acHa1gR OHLm02vM/UGpDCE7CV0uJzpM+Da7QKODmBKUfprs8MbFvZSLugobHmq/sQzcVTJlv0U7ps9crQx 2uFDmZnFcJ8jhQWf53CldQaBnaUqCROXEJCYaH3PWX3cbg0BPu26Na6JUvNSXNq60113yWc1+X5 ByZyqzRF/+h2xo5WUcViom/3ndDorR7LccB4PsneJgbjJUpJldts0slH6qVnFg2kiyRCBX4IC2+ 4xDINTKhOtBrbxrmMx9EPV9INv1vbh6LFFep8JP38DwCIJomLmuObWwNwl0fAUfmOsjQGIGW+vT GvH5D8dYEEOYiX524AD0gQ3rnsKDkSHDNttyhISZQG6/Di7IW36AI1bDJwkMzdkBSDX8Ajf5FZT M0i9TzZ8b22XOejdUvUMBHAVRHtgsggrucJ9imbG3D59+fCZB5tp2rNJkKt4PTyugcSd9mfkxxF LQhWPqRxkoRVaG42s1Q== X-Proofpoint-ORIG-GUID: GT5WW0vvUUoU59umL4CfqMHgy1HArOJv X-Proofpoint-GUID: GT5WW0vvUUoU59umL4CfqMHgy1HArOJv X-Authority-Analysis: v=2.4 cv=Q8zfIo2a c=1 sm=1 tr=0 ts=6964d153 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=BVB3BO4C9w_THQaB-9MA:9 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 spamscore=0 priorityscore=1501 phishscore=0 malwarescore=0 adultscore=0 impostorscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 Content-Type: text/plain; charset="utf-8" Add a new function geni_icc_set_bw_ab() that allows callers to set average bandwidth values for all ICC (Interconnect) paths in a single call. This function takes separate parameters for core, config, and DDR average bandwidth values and applies them to the respective ICC paths. This provides a more convenient API for drivers that need to configure specific average bandwidth values. Co-developed-by: Konrad Dybcio Signed-off-by: Konrad Dybcio Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 22 ++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 1 + 2 files changed, 23 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index b6167b968ef6..b0542f836453 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -946,6 +946,28 @@ int geni_icc_set_bw(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_set_bw); =20 +/** + * geni_icc_set_bw_ab() - Set average bandwidth for all ICC paths and apply + * @se: Pointer to the concerned serial engine. + * @core_ab: Average bandwidth in kBps for GENI_TO_CORE path. + * @cfg_ab: Average bandwidth in kBps for CPU_TO_GENI path. + * @ddr_ab: Average bandwidth in kBps for GENI_TO_DDR path. + * + * Sets bandwidth values for all ICC paths and applies them. DDR path is + * optional and only set if it exists. + * + * Return: 0 on success, negative error code on failure. + */ +int geni_icc_set_bw_ab(struct geni_se *se, u32 core_ab, u32 cfg_ab, u32 dd= r_ab) +{ + se->icc_paths[GENI_TO_CORE].avg_bw =3D core_ab; + se->icc_paths[CPU_TO_GENI].avg_bw =3D cfg_ab; + se->icc_paths[GENI_TO_DDR].avg_bw =3D ddr_ab; + + return geni_icc_set_bw(se); +} +EXPORT_SYMBOL_GPL(geni_icc_set_bw_ab); + void geni_icc_set_tag(struct geni_se *se, u32 tag) { int i; diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 0a984e2579fe..980aabea2157 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -528,6 +528,7 @@ void geni_se_rx_dma_unprep(struct geni_se *se, dma_addr= _t iova, size_t len); int geni_icc_get(struct geni_se *se, const char *icc_ddr); =20 int geni_icc_set_bw(struct geni_se *se); +int geni_icc_set_bw_ab(struct geni_se *se, u32 core_ab, u32 cfg_ab, u32 dd= r_ab); void geni_icc_set_tag(struct geni_se *se, u32 tag); =20 int geni_icc_enable(struct geni_se *se); --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 28DE828000C for ; Mon, 12 Jan 2026 10:47:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214875; cv=none; b=S5+6owp8h7j2RWhuroomdWE6iJfpDGYtPL1vjX+lLDOjvDx2DPdkOMr3oH/RlYIEN9fn1U7wfvn+Tf3T6QIiBk19gENT8nqxSHyT6xgsIJLvll/svtBU05oqHEeUR+sTSzQHfMTAcjzaZ5uMWp9NDAMr38pfP0vuQkdiX6Y3Ggs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214875; c=relaxed/simple; bh=aNFoPhCzK98jZhwkTUn8Ng4tLog3h9ErdlG5j8XEi8I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Fw9qtzqT/x/p7L1K1J4uLixZkPdviicyjgK+GuEVXuRhHFQlouzS3DZYkjQOVxHedlnsN1i7AAhgaNf8pCmhqoAD/ltrRq6S4GN4r44iQke94gjnBGpNQ61rMaFCYUuh+KrlnTz0NkDpSv7gU2rlVytbl0IZ4toif6RunBbcj38= 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=NQGJQWTQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZNqXn5Oc; 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="NQGJQWTQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZNqXn5Oc" 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 60CAEWZ61315820 for ; Mon, 12 Jan 2026 10:47:53 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=coMCstee7sz aR5m5p6HnyI6xCasetiM+wXF6qx7XZKc=; b=NQGJQWTQBE4KQu8sYmqBwFDbOTW lQNUQO6yqBr/YstNhJDU04xkhzgXqgtCnxsJc7TqMsbQiMkwO7PQCTuEPJQ8Vx72 /4hrCtsg5NNDn3rJRPXA/5TBKHj58rOVEcicSEZDO4X3rb3O3lFadVver2ezwwBO 0H/PCowSkinrEsVOSAAlAytlqsLk4jDpG7SIMQNMhHBwl6ppoiDBGyQ0jVyKT7lb 6z7NkhTcg0WPV5CPppKfR4Elgw3k1g99DiITaKqPoJtvt9o6SvdqYHdl2ZqoEN5L qJNuONWpdLiztQJgNQFQU0fVaEWnfI0RX+kzBpFC40+bDH4fmmSUf5Bkf4Q== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmy1hg2sq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:47:53 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-81dd077ca65so2183172b3a.2 for ; Mon, 12 Jan 2026 02:47:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214873; x=1768819673; 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=coMCstee7szaR5m5p6HnyI6xCasetiM+wXF6qx7XZKc=; b=ZNqXn5Ocapz+i4C8g7Zqt3Aa+9lGnMw4E712hQ+WHZw7u6sH/3b4oW5ZQ8chj4OPHB 4erZZ631aCOF2689PlzoFi0131+pRQidJ/KPsC3dg8dLW4U+yY3IsmFKzq5dTour2Zya TozW/v09NLgmtDh/mKwhkKezejUcYej+dJvi0hnM7tF1iyrY2dAWDlrGrEZ7MrppHHdn KmX+dVOr+9Npj9e/1gQQe5BPcJjXjsPW9JYDfZh6FBiJ/ALel4t3Pf6g6DEQ7gM1fgRZ XX3HbbuiCvpiaNFKoElQmw+haEEuJHt3jxYmAgcq1J+9wN+BkcrifP0OWcqlunHRx/ZO ErfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214873; x=1768819673; 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=coMCstee7szaR5m5p6HnyI6xCasetiM+wXF6qx7XZKc=; b=O7jTTtN0f2h0OXdjIgqyDWG9Py4mmRbC4Hms82TbgND/k5JyLXLhROA24OF0rxFkhV 6MfAcAC5s3bviCM/YywiMR3VV3KLtYcy4eBmbxu9jBvQ9bVxNfbqAyByheA7qUcZeA4v P8WSq3Z+iAv6roRQ9VOXg7Wf6b9VKEsvQ5nlRKQCv7WxdahcXQkcyr5wQNY2BOHiD/sa 0IkjpTkq7ON0Hj41OY3TjlIVxRWQbTww8vjBOoTFiLFQG4s+vK3b+oSQTCWm9z6ylLO1 sroeepsxgdBlPHn/PR3NYiEt00QI2ZQMHDZqf80WxHyO4wMKCAuAquuCbpcxw54E7B/d 9qdQ== X-Forwarded-Encrypted: i=1; AJvYcCW1l+4WFYTihiOklpvGX9wf7dSaGj47dlaS2X0WAE1nXcqqOi1a+ub2G2YiiSiDuY0jsUSQAeDp528kJtk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz43hcCsFS9pgYLhowlHTVywlnHQ8rRZf52JXrFO8Kj3zateb95 IU5YzMRnzLvAidXbimq1465peIeNjcrkea1gVLZhm/fh+Uh7dg3l+Nw7hR83FeRR71aebw1oU36 P+b+jgjlfLgA7aGTZ6rrlxZXaUqyLsa7h7FVCx7oEAfh6wI9GkmxxVZSBhZpgiCBOvf0= X-Gm-Gg: AY/fxX6chDDl9HpPY5uHq8JvoONgrgLl6qQTTrZNYG3lFCyq4P4JKxoa2MtognRD/we 3/1HJ6R2vrCgzhzLtZ/alTi1XhYVMWBy1YKhP53FHmHlLcJ5TGA0wtg99pZZZvABGQ/pXz9qQaN 262VOQ5EftiwrtNBJk0vaLtaiDDJRki97AzQpPoqkeNq2+XshqeKRBl/GpE9JehKlBKO1hBaMY+ tJlJcQzGjg0D61/IsMbRdMOVN+jazAS46G8RkGF6VjpP8ov7cF0jL28qmy6rW0B8dwdgzZK74yp HuLx7aM0PxmxS0Ww/NHshhXjk84juNEc8IVAWYQKvEtZqRkhQYrWZh6ctN2+DNFwe1jV+IdZFip Tel49l7bVo8gOUJrThWFGVjbIurZyj8dR1KvjgseQlqE= X-Received: by 2002:a05:6a00:3497:b0:81f:521c:b645 with SMTP id d2e1a72fcca58-81f521d04f4mr3579684b3a.51.1768214872776; Mon, 12 Jan 2026 02:47:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IHiZKUIz5YIpwAv4P7EKAra9UVtYRBVWXXWo6WhNlH8oQGUeKhjGYITgMfF7CTfdabqu4Xo4Q== X-Received: by 2002:a05:6a00:3497:b0:81f:521c:b645 with SMTP id d2e1a72fcca58-81f521d04f4mr3579657b3a.51.1768214872227; Mon, 12 Jan 2026 02:47:52 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.47.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:47:51 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 03/12] soc: qcom: geni-se: Introduce helper API for resource initialization Date: Mon, 12 Jan 2026 16:17:13 +0530 Message-Id: <20260112104722.591521-4-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: bj9u5t_u-HGHc6bh7zf2GlVPdqUYApGk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX0rDzNqPKpqTH 1KgOnEH9VZmy7M9Nq1KmTxMnIbM8PVKLgHayXxia8FCnL0hK1dVXen0ntvBOpxodqfevogTgvK2 Nss218noTwHtnf1wDXxy9Qr7tLM1Lg03zDgwJAuzeOuHY8vwaEaqedsk4G1YH8Kxll4k/rW/LH7 dwjpTIRMOWy47MAZNXKECdIwwa3NlgLtfgIfYI7rJR9oTNKlg1htbDBubdeJJWLrHRqFWaDF91e TvL1fhGuV97nzBE9K5bJUTi2xeCR7uLmPBPUoJMtdIFufX38NKBRhvoVU6rCLTWHCRITcO87bf/ iSU0nVYtyknDcFt2kPMxj7rJAji1scDTp52da6R0/4K9lnE6y83ozOcqyFjG3M61xSnD7tvDSyM eq30c0uOjxFDgDDgRQ/ye7p4wGXlTP+bv7HPDPGS1srnI+rHduQsmQ5XzjB1IUhKAKUde2Tc8yT 0y6wR2QfggZoRMQJJVA== X-Proofpoint-ORIG-GUID: bj9u5t_u-HGHc6bh7zf2GlVPdqUYApGk X-Authority-Analysis: v=2.4 cv=EovfbCcA c=1 sm=1 tr=0 ts=6964d159 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=OYYzyx7XpuDNtx8IVW4A:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 suspectscore=0 malwarescore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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. Signed-off-by: Praveen Talari --- 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 Mon Feb 9 03:30:19 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 73903347BB4 for ; Mon, 12 Jan 2026 10:48:01 +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=1768214883; cv=none; b=DpZ3Nilkl9/UWKaReZauGKGf8w3IV3IjpxrhwLMiwsX3ofA3sP6AWKaj2mIlAaab7FNoYrH0uo3NEY7GWmIAq0k9iey2CYnm9rDgUvheppgH37pGd3YgR3sO/rd+6kNs2ElLH+dItqMPf+gUptB33dbJoIZ60MBqVseBKq2FAYg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214883; c=relaxed/simple; bh=68XYG3tdqPOqD6BAG89rFRpLL4RPlGdjOEPrTt97jYI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=eBId0Zix2GVeiobh0/R/4YCCnNuYxTUvKibdTR0c8xPcwEO88Y9qnfH/3CrfbEMQ5/oFXB+sDnJrUhGiZrzmkffBb3JqvmI17a7C4MOp5hs7EHoX7R01fFio0V8xrsDkO8kLfYkVBpCBsUJuY9Eow9Is0Kw1fxJzeyaM92sKYlg= 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=D+DhQx4T; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=D8U+nqqT; 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="D+DhQx4T"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="D8U+nqqT" 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 60CA70Ej1381714 for ; Mon, 12 Jan 2026 10:48:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=tiqRW3gaC++ bZCm4/OwS1b+DcRa9wG6BSji9LqUF26A=; b=D+DhQx4Tpdqc5iDtaKwciPT20P9 3+waspf+fYZTa8ZnRH167/s1bN0eopVcCmbA4FriIC0NwOvWfsO0XnSApYHfFZBb aan0Nc0HVPX6ibUbqDSpYcLlZRCVstFr7CJqJRztIExG5YGBDs5mikBz6YieCKF1 2InMgBaeeayql32QqeA9X3+u/LUOSyO2PPGopP5id+RZsnAVvu/i0eoWLo62zW+E FagV1pi3Z9KARB9a4uNYHz5Aqn2VLNwzQ/fPNAnIpD/0RcrSrZLzXXeGx32G+0Dc xvAhaui+QDK9L5HI0emjdMjrk3CWQdXd7yrjJT1ysNCk/jcouS5YOKm98Xw== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmxwv038d-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:00 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-81f46844106so956220b3a.0 for ; Mon, 12 Jan 2026 02:48:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214879; x=1768819679; 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=tiqRW3gaC++bZCm4/OwS1b+DcRa9wG6BSji9LqUF26A=; b=D8U+nqqT7w38d9BQ3pL8fTdeBhJUvild3Y2H4Tzei/VzIlpTuT6JaVChEGuYkZn6O5 2hmB9hFlm0UT+bfMySPYR2NcWa4zYo2c/wcpcSA8mhBPZxcVKb9UYCIJ5jOozH8OGVm6 gOkzzrkJc+bEB1TaWdHMAWuCRpL1ZZ5az+PfzJlOY4sQTkyrlis7B8SW50dKdbyG20Xz WTBG17195FoQFB09oKu6piI9GwBmt/f86Co/ZzJeU6d6PK6rconGuWsjKnISdmQxr5a3 JyR9zx7ANOJwQXn43GjyhGgz4JShCOLwEFAKNg6SsyvHBwqxADZUe1nqy+zrGlODh5+p 7Ptg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214879; x=1768819679; 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=tiqRW3gaC++bZCm4/OwS1b+DcRa9wG6BSji9LqUF26A=; b=cAm1fiXil2z1BdtGIS6Kqp1iVrJm0N5NoKiRLRNiVukg1MkwHTI3s3U+L7NGX8NlR9 LnAOi3t0SrsBLQvAmIaitEMmvmpTjc/PsyVuWJtPEPO5myQVXF4ecRfZCdzjUxmuvhMb IodFWfQFYTgt0vLdo+E8xTWHpWwWyJBNQzZpqqf4QtgAYCU3MW5BQiN5tNYWZcKom5y2 QGDpkZ/Lvh9ht32IzidrrBsQLNF8Dybx7lrrjYHvjpa34Eh5lj4NbXubjH/HFawlf51o QqCjwgBmEtea7++q2B5tL6sud6rxRfKEWzU1/oMGx9lUQPH7W4nMVGIgBXzXdMoFyXnU WiZw== X-Forwarded-Encrypted: i=1; AJvYcCXwJJWSHRSzyMCYvNJHpC8G157LNiHJCj+Aoix1xtIvoTOuGG6w8jxQ4Q8LEhqVohdnqF0cKjiiSdz2CkU=@vger.kernel.org X-Gm-Message-State: AOJu0YwbVK7f0aGLJhlWoMl8pZnGLZT6qrNKW7m9HLJygGIvIA2slMwx ag+LmsgLVcGFiZSg5Z7cZI/WwzYYo9UTeGzutbKH6zUuWb4+/QdbIBLMUc/jyDZWabM3J+I0oBs NxxUFvlGFZWPCHwfrhjBqx0eWiUU7dM3Nk3MZO4yQcAOup3AUwxrVb2TF5OhF4dtACMU= X-Gm-Gg: AY/fxX6iec+OrLO4GsoA1Tod/nS1TiVqsyHXKNRAXiykSEgowCOPzaxgQI+6DXuhr28 TEAAW0VyNlF5ReV/75WC6FrAyrzlicnm59hqTvEhmXf2DaMF7/doiH6+0FQwJU5vqyAKVaUewzD y48YEUBlVkGj82D7gvW4ylUdIVOzpUoxVNfFjtEXnffMdGozjOgu0+UKE4VzGA3r7MwpwlreE3D 2klZq9neXxaSNA9253oBBQDYL8Mqm0cAiLVRprI9zAfRB63AH+bnTAigROO4OYbzKifkLx5E3c2 7OlRzJnC7C2kQfGJTpUc1UVfj3CP/iyGKV02m/UK2L7O/esBAUan4Q+WamXFl5ls7H2cegrdlsN 2tUa3Crv5BVYa9ml7/3OfffOI+nGHAY0HKuCKUcqExaA= X-Received: by 2002:a05:6a00:a247:b0:81f:4e1c:1d3b with SMTP id d2e1a72fcca58-81f4e1c2365mr3003751b3a.23.1768214879265; Mon, 12 Jan 2026 02:47:59 -0800 (PST) X-Google-Smtp-Source: AGHT+IGZWAF21brn4EKDzeFUSrcgyjyM55X9jg6ATGNFL66fTuuXf8Zunil1Grf+5WcgDdXS4uVwGw== X-Received: by 2002:a05:6a00:a247:b0:81f:4e1c:1d3b with SMTP id d2e1a72fcca58-81f4e1c2365mr3003728b3a.23.1768214878674; Mon, 12 Jan 2026 02:47:58 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.47.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:47:58 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 04/12] soc: qcom: geni-se: Add resources activation/deactivation helpers Date: Mon, 12 Jan 2026 16:17:14 +0530 Message-Id: <20260112104722.591521-5-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: 7qk3p39m8YNqsCyTaNLFSwG5O91lw0CV X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX+hfBrChagKcv vy/C3dcuEuBzgVZCYIBpdqzvrqMCvW89HE1c61kXVsPv2h0kGRKEVhWADLnrj8KBKN/Np4L1z1o sw+iuO+jGmN7HuiLnm3A85aeCel6nj48xTLVW870+lEb8R8Kto7S6AaO3ozGBTXLGgwi/XVc8Sg LNxpJ2sONvZuZwkQiIsE23h1N/jEq+gTJDYyPDaZ1fHrHrfdHZZXO8iUbq48N0sqi6DBPUmYWhx QN3MJIIA+mNPcQ8ZzNo0feEECU/TJshGoqqneFh3x7CxtS8vc6QlscAQgsRZ2WrLd1QVqZlTvQG Coqdx8VHD8HOA1zepuJ3b6zij8tJr3XlOPE1H5IkmDQoLmrwqCXs2rVkiDmSXK5N+eId/vMbOFt KRwZfdvigTREnnKxKwBjYWkHAUdOrxnipMeFG3//5YyndwA6odaoOe5y+KnmmCmcR7yGNdhkULT ebPNaN6TPBxobMDWfrw== X-Proofpoint-ORIG-GUID: 7qk3p39m8YNqsCyTaNLFSwG5O91lw0CV X-Authority-Analysis: v=2.4 cv=C/XkCAP+ c=1 sm=1 tr=0 ts=6964d160 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=KBRiQYpxJDLEvAb9SdYA:9 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 malwarescore=0 spamscore=0 suspectscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 priorityscore=1501 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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 --- 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 | 79 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++ 2 files changed, 83 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 75e722cd1a94..3341bc98df09 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -1013,6 +1013,85 @@ 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); + + if (se->core_clk) + clk_disable_unprepare(se->core_clk); + + return geni_icc_disable(se); +} +EXPORT_SYMBOL_GPL(geni_se_resources_deactivate); + +/** + * geni_se_resources_activate() - Activate GENI SE device resources + * @se: Pointer to the geni_se structure + * + * Activates device resources for operation: enables interconnect, prepare= s clocks, + * and sets pin control to default state. Includes error cleanup. Skips AC= PI devices. + * + * Return: 0 on success, negative error code on failure + */ +int geni_se_resources_activate(struct geni_se *se) +{ + int ret; + + if (has_acpi_companion(se->dev)) + return 0; + + ret =3D geni_icc_enable(se); + if (ret) + return ret; + + if (se->core_clk) { + ret =3D clk_prepare_enable(se->core_clk); + if (ret) + goto out_icc_disable; + } + + ret =3D geni_se_clks_on(se); + if (ret) + goto out_clk_disable; + + ret =3D pinctrl_pm_select_default_state(se->dev); + if (ret) { + geni_se_clks_off(se); + goto out_clk_disable; + } + + return ret; + +out_clk_disable: + if (se->core_clk) + clk_disable_unprepare(se->core_clk); +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 Mon Feb 9 03:30:19 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 4639434BA33 for ; Mon, 12 Jan 2026 10:48:07 +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=1768214888; cv=none; b=H0DhR03FBPr3L/7YdfDFB/MREb+UBOPyCGbQlD3k2to1XX8GMlhYDoyc2mFGTUJh2fucswXzsk0yFaa6DVSoIue3o8uQ78tZvHQbt+TmwbyUh9t20rJMKSUuZaitIiLCo22rps65Knjm1UXN02VOyo+e0UFJeQLORdJK0RBy5Jo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214888; c=relaxed/simple; bh=Lwi6am73hjEwuGPfyvhOjnNLgF31XvyybDUt3Q5oDo0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dWEpKTrI1L8fr8AHTkm1Y6koHINohKPQNAfBPC/8tbR7oEyc+uTeZIAC4t4Q0FxeI144wCkQ++wiijP+KN1WPHcd2os/DXsEqqS6NleEqedFN2TqwVubmphCb+k8z3hSnEHvFibvNr78XMk8lH4/yBLCOjJOGaEqtXflSmspLjc= 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=HcJUd6e2; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=iX7uCDZV; 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="HcJUd6e2"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="iX7uCDZV" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C8r1UG113359 for ; Mon, 12 Jan 2026 10:48:06 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=FfRF4LeyJZ3 FwFeIROUGTd7gbQBf7UNdgeI1+r4l9oI=; b=HcJUd6e2kEUVmn5Wub5jhStXnrE GfDtyoCfiAKW81mC+V/o3IobW7PGnZwlHgHOeF6jy8NC6D0fuYns2vuo3SWB6iwa 6LRnC98xkWQYnonh0rtETAVwQBpe/sUgETUMW0F8sqK1gp4ybX3YXuynitZv1vYl AfGuFWGs1ea35bcjr/wpm7/uTbItkjUIyurXD4TlEVkjz/OC6+AEsuwHQf90BXn8 2O8EZm1zIHI6TpLZahwmCCsGrQyV23KPE9EN2gb6bpMt67u6GGTQQbMfugcA91n1 HKv8wBCBqaxRnaRs/mnEhoCZmHF2P2pNVRGjFKxNsaNJMk4VIdiyp5Sp2Xw== 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 4bmr4uhe69-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:06 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2a089575ab3so68011095ad.0 for ; Mon, 12 Jan 2026 02:48:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214886; x=1768819686; 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=FfRF4LeyJZ3FwFeIROUGTd7gbQBf7UNdgeI1+r4l9oI=; b=iX7uCDZVTVaZHN+GBRQPm2dXGUgSd+EpptqIi7gebLLE8widNISPKxKX6L3lXjhQss WAn17AA5U4/0B/JlP7Qmjs2PL8No8ba59ALTW/1dZD/X2Arfyob1/3WxkLBeDn/FnE8g mGVFFnaBZ5C/6jUuvAXTfVUcj31jj/AmCqo6tceDr1QFd5CqLIec3y+8kpqvvP1ppX5y iMeo0DSIFKAHMAe6NYkhzUqqDSKOR/mh8XUM+AOJdI0MUpG/CuHwhrENOE4hK8ANCfrf dSoDMsvcDV1SWtBSUw3oFP1OuLWl62tBN5EWc+JDHcK+l7NmjROg7+UH+uqvlx1j0/5s WvrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214886; x=1768819686; 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=FfRF4LeyJZ3FwFeIROUGTd7gbQBf7UNdgeI1+r4l9oI=; b=RtOnRr4bAmz2yKN7HEj1BprCEmAWIaUBWEXFZpWnAdz3xlS1IGjJo05roc82bhpzEp qEa7a2ei3M05Nbu3BhwErnKybqtEH7iRJGp0/JguhOvvpYCeCZtCTmZp02YxESQo3VZ/ x9uHaDdxjvueiV7/rw+Nkq7Trww7FJ22KBlMgecJyXXVhEyy7+JJEKY+ym8ezb0E6Jlj DgEQanqjfiIKNcBESo+LdEm1HQgaPP35OwAHzwDRnR/jaI/sIAAsG7kvdrOpZHqlzEWR hYfbBk1Yz0YwoQlc4CBncQX/hH3fx1lNwANZI/AeyuoN3HHvhg7a58srKt31Z+vFJfC+ yKkg== X-Forwarded-Encrypted: i=1; AJvYcCVNRcr+UCMMCF9hw8Jf9Oy5hcnoPEW/iFqaD1YIRCTiKLwTU/i7wUDkobHNFjQowXKkl5QPu7kvY5RAypE=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5lqsUoISnKxr0LjGX6Pm+lwOaTY8fIZiMecfap9Ym6g+hA0mX Gwj+HEdjQsPjQPRRydL4x7NfzwcdHbnlE+IKBtxzIcvm6pYpdv2jdyjgr9m7AcR2rPPxFRqkI0m UHiByJGmobSsIWyUC5NBXxguU+ljnjxgIofVb+MvTq9cXkas8RN1Q/CBBlzDLigZ17FU= X-Gm-Gg: AY/fxX6Xiti+ClrS6blBTDB6KCNx38wdFSkOwXchb2khTn3H916j9jtjo6wJHjqiZHv fGcYQaSv62aewtmyoY5irrMruG3qa428AN7e1wyxKsCUZKhf2BDan5g/pxPAjUc96bB6ZT+/Nvd dJpwtDUV84rbdr7m68TSKLFJumeZGdnaFv7ttxshN8v8+24r33Xf1VMrBOIa33sUDStK/cqMBXp peHBszw99Gys5PLzKzjAG0qu73ekdM1kiE2ur3ib6iv0hoC/bKMez9/aLWL6vHWyHPPO6Uo4zcS ZxLQ9cfH7m7Zbk6MyAU30arQsJsmwcMtFLaphRsDQ6EgUxzy1/qKpbPTEyMSrq4dy8S8+miMUAv UQKrGe7+R+9bJuxmM9fMGKnaLPcT+F+TbWgDmy7VqNlY= X-Received: by 2002:a05:6a00:ac0b:b0:7ff:f0c2:816e with SMTP id d2e1a72fcca58-81b7de5c2ccmr14022587b3a.28.1768214885733; Mon, 12 Jan 2026 02:48:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IHocyz6/ZWprgoCOzZAnw6wT0PTlCZZY7sl6z95J5UwJxKH+JBol/vDeHwTissvdOTmIsyrFA== X-Received: by 2002:a05:6a00:ac0b:b0:7ff:f0c2:816e with SMTP id d2e1a72fcca58-81b7de5c2ccmr14022559b3a.28.1768214885135; Mon, 12 Jan 2026 02:48:05 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.47.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48:04 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 05/12] soc: qcom: geni-se: Introduce helper API for attaching power domains Date: Mon, 12 Jan 2026 16:17:15 +0530 Message-Id: <20260112104722.591521-6-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX8qM6ed3N/LkC OCveCG3gVbFYlK+uZUQfiTMLbzzwH429RkBem+n0bUF4RfiIpM16GWvpo1UqCwR9vUhVTDx2CNW tYQzOnE0yFy1P4+f9xftFz5Fms+VoA2mOph/mQSE/pbPN5zlt1D66ytHFffXh+6auy4/bLOSFsI LaUr4TPkfWMFlD8rHkyA4eZNJMw+f37fTrylC9F2zVeDGx97HpJlUH3iFiU+oGJBjWK4V05Uge6 0AEA/i8+3Q/pnCgND9TpeZ6ENOyQKUZ+SBXRKd5hIH6BBjCRU85l79afxJQlZvJfeev6C8yiM/x OISVDm4d1IoLxKS5U3InAYVMFq+CrMVPt9/7wYnl1Jto0kwCXUeNQLLtVGXhnYiX5YI1FVPaeK5 YrIYLqy+CltuyLa+u9Tkk3m19sFLorSfiSsjnDP7rHYfdQuTR5c4+4Ma+5UqGcBrDjvKJHBuWPW gNnO9hkPA6DJF4N9jFQ== X-Proofpoint-ORIG-GUID: xPSYnkhkupgU3MKMoafaNucShjNcuURe X-Authority-Analysis: v=2.4 cv=YocChoYX c=1 sm=1 tr=0 ts=6964d166 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=WUWHbvwt6nHlCWk_UTEA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-GUID: xPSYnkhkupgU3MKMoafaNucShjNcuURe X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 clxscore=1015 impostorscore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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 --- drivers/soc/qcom/qcom-geni-se.c | 29 +++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++++ 2 files changed, 33 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 3341bc98df09..b8e5066d4881 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include =20 @@ -1092,6 +1093,34 @@ int geni_se_resources_activate(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_se_resources_activate); =20 +/** + * geni_se_domain_attach() - Attach power domains to a GENI SE device. + * @se: Pointer to the geni_se structure representing the GENI SE device. + * + * This function attaches the necessary power domains ("power" and "perf") + * 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 dev_pm_domain_attach_list(se->dev, + &pd_data, &se->pd_list); + if (ret <=3D 0) + return -EINVAL; + + return 0; +} +EXPORT_SYMBOL_GPL(geni_se_domain_attach); + /** * geni_se_resources_init() - Initialize resources for a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 36a68149345c..5f75159c5531 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -64,6 +64,7 @@ struct geni_icc_path { * @num_clk_levels: Number of valid clock levels in clk_perf_tbl * @clk_perf_tbl: Table of clock frequency input to serial engine clock * @icc_paths: Array of ICC paths for SE + * @pd_list: Power domain list for managing power domains * @has_opp: Indicates if OPP is supported */ struct geni_se { @@ -75,6 +76,7 @@ struct geni_se { unsigned int num_clk_levels; unsigned long *clk_perf_tbl; struct geni_icc_path icc_paths[3]; + struct dev_pm_domain_list *pd_list; bool has_opp; }; =20 @@ -546,5 +548,7 @@ int geni_se_resources_activate(struct geni_se *se); int geni_se_resources_deactivate(struct geni_se *se); =20 int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); + +int geni_se_domain_attach(struct geni_se *se); #endif #endif --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 8B72934CFC1 for ; Mon, 12 Jan 2026 10:48:13 +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=1768214900; cv=none; b=lAn1+zzWYygr53qvRMWGJo3xoj5490txl6nIPu8ncMwM/vi75awRaiFGLqot1i0SzE+BQXsc76KdRqhiHxENO6WarRyOqCD8gzlkU79KrtVaNTZcC7jtrCfhXoTVEwQgZDX3V1FEcN6UzTgXSYt0ljXdQGUWKkrVvyQvOU6PhhU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214900; c=relaxed/simple; bh=wIOve8uFF48Gb62JHvsj+fQjMU469T7IW0zeUBXokU8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gCVIOd6V0cHYIMlxySwRKBtS6qCMz5+1TFo7NgUjkK4bPJnvB3icYDdKAYMyHgeJVWhCfAMMoLwszpit8qdefBhl27mwle9eXfTB6QPSyE7kdF6QfcjC29DzRHycdG1sURoz9HtFcFd5gPNaOig8pE52nIjPUFuwcIAyZImzVc0= 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=Ip6wlg1T; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=frfmlEvJ; 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="Ip6wlg1T"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="frfmlEvJ" 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 60CAEeWU1315903 for ; Mon, 12 Jan 2026 10:48:13 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=iwjTgNOIt2X RAWcDsdp1tFrhZSbG+UyPsyYGOmD1OGQ=; b=Ip6wlg1T4fquA9BFa5EFiZxwRK8 2yDzGbQ/K4xNTlZXKoc7faIr5NJSOFESCCHjtt0OxHfRA1tW9moEkMwQ3NXdjywd Z8E1WkiQ0v/jjQbfQHWyxJtmNr/gbk3U3j6F8WrhTq7dw7+CSsqOl7WOXB5VJckE LGIYzs6+Q+Jms4zAvY6HWZAWW86Et5sZwSLWgFwFe02l4oaaPKeJcSNxDoe+GY4q cl/z5kM2kZDwW+4cCrEQk94m663yVyYntzkEO7t5VI6OWNQhsrZZ1lvKWFSucaHp PuquQYJEvgBpHfUDK6oP3l2p/SXu3ZpA/dG4xSRj0VThVcGU9obwonfZ0xQ== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmy1hg2tt-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:12 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-81efa628efbso1500445b3a.1 for ; Mon, 12 Jan 2026 02:48:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214892; x=1768819692; 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=iwjTgNOIt2XRAWcDsdp1tFrhZSbG+UyPsyYGOmD1OGQ=; b=frfmlEvJnsKZ/zyiOJzxQV0Gjvhv/N89iorKgU5wQMRnRJaqZScFIYspDW5Otz5LxC J2lbND2HzI1VaHo911Qr8zs5G4KDUXXsnu3GWnaG7dg0JncIaqV4AOKmW9RXmmeng4qs EOfq4X61QLmzmOuQQjhHTidjxYJ5Ym+Fgzf/KgNPAyBB/dIWtCfIZesXtqA5d/3nOZ1R d6o2+Os9HOxQCJe0llBaCRIEk9nQ/uA7pAAmJ7uAo0f6QV0yFuBzuuvsb44L6LuJEeVT MkqyFLotqS6NLG37Pc2cxVFjiovJxQmitD9ndFaDpDnwP9OZeOthRTqVpFD0qGnBvV0V cWdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214892; x=1768819692; 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=iwjTgNOIt2XRAWcDsdp1tFrhZSbG+UyPsyYGOmD1OGQ=; b=PduPOkCjQp8+cgjFbYx+Kv8crQF4NHuFgJVT5DoQyhAeyWZX27EuJYpgjs0og35e3o ZI9mlokR1b5U+rVfPC9Ysk+U5A6XTmJcvTQH5AnPihAbJ+xX9A0EVGwxhCiHixihHOxh IH0b2G8D5ByQn7/70LB12koW3gLg5lYNpVszCC56HrI7BTQ1LvNLOJseDRB4zP1aJs8N 5S6x+8tBd9cYexddWJ7plCsf7zY7Et6A+/KJBgCcJ6/aSCr3pAqFWSoBQH+1U9GYJfd/ x2P4IgwyXZfI2KGH+AntMYFlXbKKslPaeRqSsuhoriAP+6pw77o7yI5pONwdZpCMbVUV QSjw== X-Forwarded-Encrypted: i=1; AJvYcCWsuT+CREtRLixBXAiCrLtEYncW+14xp/ll8rdvgZr+j66+8aALPm3UQ1iBCimWKABsYGk1qiY/Ao6Mrr8=@vger.kernel.org X-Gm-Message-State: AOJu0YxngLK91eJFBjkq/AJn1szaisT44gONp1Vb7OxwT5XwuMZZjXzN 07dDvtY/F8tmrLZwegIln6WC4/2irDp6mRiWtCwgQtDe/4XNwZYRUF20mJbGms1Una9f9zNZ8NJ ZphQUZ9UbJI0sY9HwnqPz+gu/2IkmCaWzw07mNR+xv76DZlULtFVlQXTKC3EeneDn5wM= X-Gm-Gg: AY/fxX5zD44xySMIqJQ4OP23ruHCa6wZ6fkBIKIWnwiHjm+o+LfGHt7S2rtxtvCl8Nn dMy4NlxpCJaawOLDIbx7Jg+wtyDFSRaKbBejivhzk62vNJx9+PXydYNr/gcAxXPFp0CJ99YpioN YqFj1XkgBbtwgYcdGkZpKbzqdplXMMMgh2larKF0jPIrNiDPj5PHPMJ7joV6Wo8nDaKsMQ+Ke8C VabpOxDMsKGW9qB4uU3zhkVkneXR3q65rhwyk6/sb90YCZMiYZeUV2PK1BsGu3E72PVlDnmPYz6 90HKMPbqvTkciCMOKnBgcB6OuIYvhvDB90k/KU3Idt9JcJdjLIclB1o2IQJIFKQoP0SexiYBxVW 9PMhIgMeZp5Qpss9cAnCGliZWILPPHdFvWmPwAJvEqW0= X-Received: by 2002:a05:6a00:3318:b0:81f:5a3a:c91a with SMTP id d2e1a72fcca58-81f5a3acad1mr1991312b3a.46.1768214892108; Mon, 12 Jan 2026 02:48:12 -0800 (PST) X-Google-Smtp-Source: AGHT+IGKv3xBIm6s5ePW5y4EswrA32UfOINAI3FD4tECMqPmJmhR6sDEedYYPxOalf4G8wJfq62Tew== X-Received: by 2002:a05:6a00:3318:b0:81f:5a3a:c91a with SMTP id d2e1a72fcca58-81f5a3acad1mr1991292b3a.46.1768214891531; Mon, 12 Jan 2026 02:48:11 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.48.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48:11 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 06/12] soc: qcom: geni-se: Introduce helper APIs for performance control Date: Mon, 12 Jan 2026 16:17:16 +0530 Message-Id: <20260112104722.591521-7-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: 6v_TW4CwSe3fw6eCAX5KqV7ZufERuYY1 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX8MDsZZ9ft0P8 H6mqDkc0Hfez4VP7hf4Ur6pe1eXCuh2r6SICELMQArM7yg3ICU1Yzly0nHnYsnKuqNTVp9bNcv3 KvgEjWXGIH5qfTH/JWMNmhjFaNYa75+BWxhjeZvtqJiybv5k84rCIuKjg2Gv8Wt2ibRaBiBSuis KvTb8OFzELphi6AWA9zQs0YrXw2E2G3lwnhjpqi/fpUQNlZUG89Pdpyhw1WDQAls86OboMY/8gY wImTacWhcKFU/Xwe0iljgULvvMsc8wvoTgjVbO4aN84xK/XWLcFSSvFSvA/J7RISGn89l/tiKyd dQ0LsrITYgu9gixCRP5OC3Kq3Cz6IaS8hyUsy5xQsIaHWSeIhkRTKlrkbSBD++F1V27qhhPiJ6B jFYlTdGyHmV+IfFc0dpq2L62ic27fuR8xix5LTwnvU5IWYTPq0/WiSRP1Ak62JlKkCuuOaeuD6J VjPOPIzn0rg7KuAOeLQ== X-Proofpoint-ORIG-GUID: 6v_TW4CwSe3fw6eCAX5KqV7ZufERuYY1 X-Authority-Analysis: v=2.4 cv=EovfbCcA c=1 sm=1 tr=0 ts=6964d16c cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=NwCh5GMA9Nt760FYQHkA:9 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 suspectscore=0 malwarescore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 Content-Type: text/plain; charset="utf-8" The GENI Serial Engine (SE) drivers (I2C, SPI, and SERIAL) currently manage performance levels and operating points directly. This resulting in code duplication across drivers. such as configuring a specific level or find and apply an OPP based on a clock frequency. Introduce two new helper APIs, geni_se_set_perf_level() and geni_se_set_perf_opp(), addresses this issue by providing a streamlined method for the GENI Serial Engine (SE) drivers to find and set the OPP based on the desired performance level, thereby eliminating redundancy. Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 50 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 +++ 2 files changed, 54 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index b8e5066d4881..dc5f5bb52915 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -282,6 +282,12 @@ struct se_fw_hdr { #define geni_setbits32(_addr, _v) writel(readl(_addr) | (_v), _addr) #define geni_clrbits32(_addr, _v) writel(readl(_addr) & ~(_v), _addr) =20 +enum domain_idx { + DOMAIN_IDX_POWER, + DOMAIN_IDX_PERF, + DOMAIN_IDX_MAX +}; + /** * geni_se_get_qup_hw_version() - Read the QUP wrapper Hardware version * @se: Pointer to the corresponding serial engine. @@ -1093,6 +1099,50 @@ int geni_se_resources_activate(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_se_resources_activate); =20 +/** + * geni_se_set_perf_level() - Set performance level for GENI SE. + * @se: Pointer to the struct geni_se instance. + * @level: The desired performance level. + * + * Sets the performance level by directly calling dev_pm_opp_set_level + * on the performance device associated with the SE. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_set_perf_level(struct geni_se *se, unsigned long level) +{ + return dev_pm_opp_set_level(se->pd_list->pd_devs[DOMAIN_IDX_PERF], level); +} +EXPORT_SYMBOL_GPL(geni_se_set_perf_level); + +/** + * geni_se_set_perf_opp() - Set performance OPP for GENI SE by frequency. + * @se: Pointer to the struct geni_se instance. + * @clk_freq: The requested clock frequency. + * + * Finds the nearest operating performance point (OPP) for the given + * clock frequency and applies it to the SE's performance device. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_set_perf_opp(struct geni_se *se, unsigned long clk_freq) +{ + struct device *perf_dev =3D se->pd_list->pd_devs[DOMAIN_IDX_PERF]; + struct dev_pm_opp *opp; + int ret; + + opp =3D dev_pm_opp_find_freq_floor(perf_dev, &clk_freq); + if (IS_ERR(opp)) { + dev_err(se->dev, "failed to find opp for freq %lu\n", clk_freq); + return PTR_ERR(opp); + } + + ret =3D dev_pm_opp_set_opp(perf_dev, opp); + dev_pm_opp_put(opp); + return ret; +} +EXPORT_SYMBOL_GPL(geni_se_set_perf_opp); + /** * geni_se_domain_attach() - Attach power domains to a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 5f75159c5531..c5e6ab85df09 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -550,5 +550,9 @@ int geni_se_resources_deactivate(struct geni_se *se); int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); =20 int geni_se_domain_attach(struct geni_se *se); + +int geni_se_set_perf_level(struct geni_se *se, unsigned long level); + +int geni_se_set_perf_opp(struct geni_se *se, unsigned long clk_freq); #endif #endif --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 78C3334B430 for ; Mon, 12 Jan 2026 10:48:20 +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=1768214909; cv=none; b=bSExbFB/Vwz4E2i5p6M0lN5PoYZhJWwESF409rNa8mo7btvQwDFM0qOok9rbSbuPr4gs7Tfe47GED0VwYVwQ4APteL+n4JrpZN5Q7q9bmBb4PrRCYwgoonTtCqPRn5Ns5yrIzsnNLI9T95WfEtJD+b6y9Z6wgDlicTy64up5MuI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214909; c=relaxed/simple; bh=fLcHXdKV5/hDu2wr6i98ZasPwufFwNkdfF36wyuIx94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HD1Tq7XnsYAgyvboUy+mzHG4IPalLgYWj/jDlVufkjhrwtt8i75SlKLfkYyu6smbsFnEF7xo1i8Y8Ws2EyLgHozaDUXBKXXEQ1efy0Dv6zEM+o2XG7YRmcFea9qAdSigQ7Ny8HC6i9sdQxW4QdyzUzieLnyesWxw6I9Hc+VCnCU= 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=WRnwlfqa; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZXXtvE3z; 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="WRnwlfqa"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZXXtvE3z" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C8ePPI113526 for ; Mon, 12 Jan 2026 10:48:19 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=WRnwlfqasDUl0BLuMVm86b2XjPM 6kaRplcT105sFvfBokd0frHN5PrW/gmMukvVg8EFsXXAeOZpleYtC/y7R9MYBWYZ q7/HAZKAnDHGCtdcJrwsi0tit36M7yHwcKzoQjZPARpKvR29KOaep9Y6jN8l9wuA YgD1Tu9VRj6/Own1Ay2GVU7UR4ZB9+6yH6zXha72GABBQu7G+g25E/ofkZUMMWA5 YiwBf5Dlq/dDQ4Uu894P7Uay2RAHw0Z21pTIBZKn+SeWhem0timiT5v+8j2y3281 1n1yUa8rhypge0JBRyLZXE9G50tOCBjfObovfCrvNGCo+XBEZnMU4fdZ4YQ== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmr4uhe6y-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:19 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-81c43a20b32so3548586b3a.0 for ; Mon, 12 Jan 2026 02:48:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214899; x=1768819699; 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=ZXXtvE3zrS6Kg7UwhSnP2ksq8NANei+4UCEKTSRmZ51yZFcqNsYh5YUENbTBhBdUpx XEdPEhb+667o2LQUg/b9Z1SWgbTa+Opr7Pkg492vmqOsAowdA2qpyaqAL0FgMuz6fPEz 0WDrICKfF+siEJr+55aJ/beBdmvnd9hWo8ngx4R6pJj6Hq5YZTNcQ/IXhX3wP44zhptq ClWm9vwlTl/1IYSEz/8mc4806GnAV2nuCWUXM3hKOpRh5KtZ0Qs/F68/iLiLiWXiWRk8 oWt5U6c5sglqK3ssPQd/wnRgU0G+kp9v6U4rB0jNb6XbMm/zrriIeuAYXWlS7VxfUtCU 2wzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214899; x=1768819699; 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=u0nuH4v4NmwAjT+5A78r2MxYGBCbC2baRmBBHlCtcfRze8Murfh/DSegjCIslwMjJR 72t5ZllxVfblpB4jP2PXaKBekttmeyea1wb2hIKSnfU0MYvYlslz6kaEWi97TL7gn9X+ MzzFxNSgIzKA+VpsuVJdcu5HrjuByYIMWorUL+bdOkJLsjVNJ7BY3E6EMY814bDxX3p4 Fx+CrJQ2NakpXRhAeaTQUn4LFHWVt6BmazLFdl+SQ7NFIhFILQmw7UE2RI1SRUQQ8a4G JPXLUFmoMGCA7ttVmiTYsN03GuKY8OKz6oC7n/sVWDu4BcdZkuufZuxhpwRqyE7CTBur juSw== X-Forwarded-Encrypted: i=1; AJvYcCUR37GFs09a0KiHrfwDTmAbb9PtH+soOQB2FP3nC4IcVPsRuDia5eQ+w4mWUhw464CyM4NH+4PA4wGsbfM=@vger.kernel.org X-Gm-Message-State: AOJu0YxqP+ahuo92xwiGlGSPHbj/Umphiaki4uOj7FFYMOyaOxXVA8z0 iEplhgwjtNJI1FTXORMk64EGguJPp9H3x1HBz5G00AY7u1hfSVoL23mOQG0VHT7Q3MQFFjoPqTw 4ehkIfiSCPxV7f7G22H+iv1f1pmqb2XJiBYgzpazGH/LQWDTyyFp4TGyJp5speViY3bA= X-Gm-Gg: AY/fxX7uw/hKjD6fnkzyy59/Y33Dwneimr4way0avAaBdjNSv6DeElhxAHHVIhuKi28 ImeiKKTvOl0BnNtyYOp0o1ibMPqjRqDDexlrxTqFHOyAkogC9lC0QKx6fzzmrVW+qU2ahv293o2 exNKv7pgvIBwhsKSwz8KnIpz4gq1iRs4AE1GiVNXdd3y+DwzIgW54khx5lWVP3h8cSqSDozRuXB H5hW3gsFr/t0gXYIGDhKR47CgWMsvZStE7D6YCqjA56C3I/TYtZZSahRtk4V6vZDHfif/k6xc6n fUEmNoW51l77nyqBgePlBXB6EiKxR71dlUk2Pzx1aYbxHbqIbDNoYVP11CtIiv/RQ3CAB6e+uq9 dWcHntwXl+Q5oJKPn0kXx2iUjy4SdCFd0vCJXn9Qk8i4= X-Received: by 2002:a05:6a00:1d8e:b0:81f:45a9:1a58 with SMTP id d2e1a72fcca58-81f45a91edbmr4163614b3a.23.1768214898963; Mon, 12 Jan 2026 02:48:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IEJ3W1mhtnP81TT7rA8CaAxZF5ThR6whPQLnhdPJ6U4K+wELKglf5ayQHvoRKYCyXBHXXqZbA== X-Received: by 2002:a05:6a00:1d8e:b0:81f:45a9:1a58 with SMTP id d2e1a72fcca58-81f45a91edbmr4163585b3a.23.1768214898405; Mon, 12 Jan 2026 02:48:18 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.48.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48:18 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, Krzysztof Kozlowski , Nikunj Kela Subject: [PATCH v3 07/12] dt-bindings: i2c: Describe SA8255p Date: Mon, 12 Jan 2026 16:17:17 +0530 Message-Id: <20260112104722.591521-8-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfXwe65IRCjsPoF Ljcj0A0W7Q3jIAA5XHbeywTnCPgajlpuR1PBLtlNYciEMKuky+nIfpnCYiNNJJuYmhgYabjwHcR yvcMVIyQXVye65aiYefpjQZ7DRNI1wzljAC+uxB3pECRiSKJmlg2kEnJjVxZ/tILQ1QYdB4iunc Q/9H8icgoIm61dj1Zeiqx7yNlIQawHWSVlXa7TK6ktNV8eRhPGviSu4sJsTYqyeKmQCDeRqomy+ 7NlBlc3gEP4LziDVhSLoyfLibn/E6ptCQOZ09Mh7zWo3QXUseaYDoEQqQ29fGACyMoLbBz9ixzR X2ksk198gNPIJHKalp38zF0pjxjbNWUmoxLJDAhbkPA7LZl+TxTfjODkLEsoP+PAs8+Y5GEgAPk rsHxr0PwvffSpM51Hm8SMsXpS1H8vhY5d33U/ynY0WsuOUiqwhyXWge0gkFGMulPZe3fu1bYzlv ocegXODzOzdTQ5ser8w== X-Proofpoint-ORIG-GUID: qVnFM-5HBU9LGUx7CnhYMF70yjnLFhrx X-Authority-Analysis: v=2.4 cv=YocChoYX c=1 sm=1 tr=0 ts=6964d173 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gEfo2CItAAAA:8 a=EUspDBNiAAAA:8 a=COk6AnOGAAAA:8 a=apMzWF-kzHp83YoYYzAA:9 a=zc0IvFSfCIW2DFIPzwfm:22 a=sptkURWiP4Gy88Gu7hUp:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-GUID: qVnFM-5HBU9LGUx7CnhYMF70yjnLFhrx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 clxscore=1015 impostorscore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 Content-Type: text/plain; charset="utf-8" Add DT bindings for the QUP GENI I2C controller on sa8255p platforms. SA8255p platform abstracts resources such as clocks, interconnect and GPIO pins configuration in Firmware. SCMI power and perf protocol are utilized to request resource configurations. SA8255p platform does not require the Serial Engine (SE) common properties as the SE firmware is loaded and managed by the TrustZone (TZ) secure environment. Reviewed-by: Krzysztof Kozlowski Co-developed-by: Nikunj Kela Signed-off-by: Nikunj Kela Signed-off-by: Praveen Talari --- v2->v3: - Added Reviewed-by tag v1->v2: Krzysztof: - Added dma properties in example node - Removed minItems from power-domains property - Added in commit text about common property --- .../bindings/i2c/qcom,sa8255p-geni-i2c.yaml | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni= -i2c.yaml diff --git a/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.ya= ml b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml new file mode 100644 index 000000000000..a61e40b5cbc1 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/i2c/qcom,sa8255p-geni-i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm SA8255p QUP GENI I2C Controller + +maintainers: + - Praveen Talari + +properties: + compatible: + const: qcom,sa8255p-geni-i2c + + reg: + maxItems: 1 + + dmas: + maxItems: 2 + + dma-names: + items: + - const: tx + - const: rx + + interrupts: + maxItems: 1 + + power-domains: + maxItems: 2 + + power-domain-names: + items: + - const: power + - const: perf + +required: + - compatible + - reg + - interrupts + - power-domains + +allOf: + - $ref: /schemas/i2c/i2c-controller.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + + i2c@a90000 { + compatible =3D "qcom,sa8255p-geni-i2c"; + reg =3D <0xa90000 0x4000>; + interrupts =3D ; + dmas =3D <&gpi_dma0 0 0 QCOM_GPI_I2C>, + <&gpi_dma0 1 0 QCOM_GPI_I2C>; + dma-names =3D "tx", "rx"; + power-domains =3D <&scmi0_pd 0>, <&scmi0_dvfs 0>; + power-domain-names =3D "power", "perf"; + }; +... --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 DE9C534C13D for ; Mon, 12 Jan 2026 10:48:26 +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=1768214916; cv=none; b=uOUGm12r3ak4w1u31MlTSm0h5NOwyLc2pes/Q2yRyshYKDdL1QRGGUrj/8OtM+y+6gy2OueLij40byslxnn+Qr/IebmIwtxJwCdaafiBqa3BJBhZwHv85umQwZCXa3G6x4XSqzJvpl6O/owl0ZMQkPWdQxJYe+or2Yf1YMojQ4w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214916; c=relaxed/simple; bh=5xsApeJnKutP/DbrLu9m78Eok6FpXw0T47Onyc9grx0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gbBCbjYcFXiBVZnFeys7WbX0tdZMVaGXUnoLW/OxPwTe4efzfyXPcH1qb/2XdPfz8InCwaaP+trXTAOWSGjFqXfu4HOW5RF1EKexRqAz3vCkocyA54FAq5RRspp/iLlPieHIrVK1Ar8Z9eWSURhRsgCHMLiijNVEsMSbxOE2jbU= 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=oTt/H+kw; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=WFSV4ikL; 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="oTt/H+kw"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="WFSV4ikL" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C7Otv6556393 for ; Mon, 12 Jan 2026 10:48:26 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=sqaUgDVKZ6m 4wCTCNsu1hZ5yx1Nzly5OMpjbviE6Ct8=; b=oTt/H+kwawcL8Jm1BtxTyPlVL0+ q2nv9DB6VhR9W4wK+X3IXW1nvdm+Ia6Q5ErLXTDbwZ2Yy6AbQaWdTrFspIwLHXpO xqHRE9NSB5xy34Nsx4QXhU87RVC/AMyKoHjLWo/gyxOt80GvEXR+XZp6NQBKydGI ns6HqjqCwSCFL7s/iFZcdoo7K2B4oXuFQYG6vGrkQNOhzENpzr+BkPH/Gmk3i5BB WMUs/AClAU6srol7x/ua6P0tFn8Id7UlAEQ3GZukvSHULaJidDp0a1tyNnVNWAvZ qH4A3CplKPPaxDQA/XBH5r5qod0HWCAVDpnNrfx67f5o/tx3/Z1Zq0Q3Ckg== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmvhw0p60-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:26 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-7fc82eff4adso4226203b3a.1 for ; Mon, 12 Jan 2026 02:48:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214905; x=1768819705; 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=sqaUgDVKZ6m4wCTCNsu1hZ5yx1Nzly5OMpjbviE6Ct8=; b=WFSV4ikLmSgUyQA+aiTFhRu/NNHyK12FW/39+qe7VvNUMZ1GhBwBz7htwXYeweZC25 R0bDGM9w0QGykDU3sWygmd3/axlCeKcT93nhd0a3YRsELI8pXrxQ7d6Q9W65S9a6vF7j FQjEh52y68QAccPnb2k5BE2C+kpZubON9r6cYvyPoHQ8Uz3sYYTZmyB1Cf0NiUskjYRT Xr9sQicHPZhK/BWpYt/F9o6b9csTbLRqRek4ZF+MQmwsT4RLl8au+5g1SvwdtssaYsnU 3lU1tpPf/sbiaeRjQ7B7Xx4Xi604rQ8bVsZgCmvf19KMQwDBX6nDKcH0+M/kghzTZUEN Ky8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214905; x=1768819705; 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=sqaUgDVKZ6m4wCTCNsu1hZ5yx1Nzly5OMpjbviE6Ct8=; b=IgGvtxZEfIVTEplV7Brs91ujbxG3JSgzV9gGYE3TGlndyQaNUHN//83llzVM7GI3YS CF7yUmVWpwEPC+/5qRKCZqeOuEa8bfw3ckLWdPj9TnyEruhww6610Bc1sCbHq1xjpa2k YZgZqvplSPEilVbOrfd81sSIyRGINCtan5Jvid5vqRiDoDrzzH2idXHMgZhn9s1vrOVs jGwmgvVuUpecYroJDoFu5ZUKD4kJZo9KPUKV+pPfHWQhwEIF1OctjQT+AqWsBk45Paeu MSYmtzxkka1iYpPCuQKfM7zMbLAxm1HEJa1LBA1LvPy93ib8DTBJzBptvhswCiI9UjdY PcUA== X-Forwarded-Encrypted: i=1; AJvYcCV4uFbqzFcM0coQqgtJwY2XPtSc+SOdvSJDiXWionOAAQbd1myLSdu2+BG//6jUuwGEGjDOC+C52zWAkSw=@vger.kernel.org X-Gm-Message-State: AOJu0YxllOnt1DoZb+61/5CX4cSr4rtGkuKgboJYu16IZr4epKKgt4C/ JWNVKWn9cDHm25EMnUEfslpAPkszdsGB+P4zVngzi3spEqpcOV/FE9+zJXbjSgAcuINf5e17rux M6RT8rvdD9qRhMTKqKvVVqTP1MVbfooR4di51EZuSKkT6SM5NHIVcE4uU4TrgnxDp5dc= X-Gm-Gg: AY/fxX62Gb2MRu5Tzk80MJGd62VOeA3L7kgBcH1isCvbbLn8zOvc/k8qRzgE5N2KzPW 2nwLr5TSP+DUDqZkYtAJRZI7L4iX/dY6rvLh17oMBlMScMdqGy/lxaocwnoOziAEfk+aPKgoBiH B6j+PS9GnMpvV31exNBJ0E5ILk4cVu1wTQXuMYFmytW5rV0T644C4CedzSQy3g8xDvKDRCI81pA rR1yQx1psUQ/fI8CddI7B3xtxe2lpCBOIGE1FlXPvfkTnPYNe9ZytNr5l4NDxBevhuFAGw/5EjB gz4ZO50DTYFO3NmN2Tz3x/MWRr3P7WaUrDQ+vYb/0BVv+9YZ7y7y0/fyyss+4BzmvNU8kvHQyS/ udS8LvUoogXbvHJuFcZJounuz07bScUcijCdVe+TA4FQ= X-Received: by 2002:a05:6a00:4907:b0:81c:79a3:57b6 with SMTP id d2e1a72fcca58-81c79a358e9mr9079657b3a.9.1768214905361; Mon, 12 Jan 2026 02:48:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IHQgN/pljh0AWTwGXIEghkl8dkJkuEQnyyPyNP4Ss1SBJX6CGd1e5duSSgKw5sChhNCCTHNCg== X-Received: by 2002:a05:6a00:4907:b0:81c:79a3:57b6 with SMTP id d2e1a72fcca58-81c79a358e9mr9079630b3a.9.1768214904724; Mon, 12 Jan 2026 02:48:24 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.48.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48:24 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 08/12] i2c: qcom-geni: Isolate serial engine setup Date: Mon, 12 Jan 2026 16:17:18 +0530 Message-Id: <20260112104722.591521-9-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX4Lk6x5Sadze/ C6A3wj2BIVmKTYA5CYemR3DEiIYhu/bnwaK8Qg8qCHQ1KG8gT+uhHZ/AGrhnLFnIUEHdfCuYNbf 16G+xCfZRwFacxXk14+wJTliG1Hpi50h0d+/rsLd2Ga8jXNZ9qXxC+y/y4E9ZHL6KJT11BJIWHB bjh6Er5OxgVoXmpAAwx2mW3gg4CBsGFKbPFwmw1fU/tpw68agcTDZwHXpd2yWlpnSmF/VgGdEl1 f2K43HqqMOMvZWXYOHPGZWcu6vYxYgCFJu3kbXmIrcbxmvXTUAoh5dVHDq4Xc61zz0ytIRYqTbC nlJsiwnKnUFFdGfpRpA+JM20YE1URLj59+y9PB4PvEuueHQcTeCJxcPn80cXHFBDIn2hxF346DX C4gXhYyCYr4ZbPXVoJxbeSdtEsRV4BikX22WsEEY/+2SZW9q+HJAkrOrO0l9t63yF9MhYEvpclj 7hNItIxFpAf0rFRvAog== X-Authority-Analysis: v=2.4 cv=JP02csKb c=1 sm=1 tr=0 ts=6964d17a cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=6GPvvr__t7aM35KwLhsA:9 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-GUID: _k6cCDmYn4Uk8eJ9IPVutoeQcpXIt9KU X-Proofpoint-ORIG-GUID: _k6cCDmYn4Uk8eJ9IPVutoeQcpXIt9KU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 clxscore=1015 malwarescore=0 adultscore=0 spamscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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. Signed-off-by: Praveen Talari Acked-by: Viken Dadhaniya --- v1->v2: Bjorn: - Updated commit text. --- drivers/i2c/busses/i2c-qcom-geni.c | 154 ++++++++++++++--------------- 1 file changed, 73 insertions(+), 81 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 3a04016db2c3..58c32ffbd150 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -976,10 +976,75 @@ 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; + 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; @@ -1059,100 +1124,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; - 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 Mon Feb 9 03:30:19 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 DF7D5349AF1 for ; Mon, 12 Jan 2026 10:48:32 +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=1768214916; cv=none; b=CcXTwHlibqyZ26/yeO3dSrAReUyDkoqmWYl7x0sSo2z8pi+J0yVs6x18le4ehlERHhEl1CTII/nW9USGmHjR6V5HLlh+F64rmN9+BVJw8U28/ynzBLE3E/6d7s5EpaV3OD5oKAzWv8AfqcBSxePFIN5jIaiRtp4lepjyMJJJFqk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214916; c=relaxed/simple; bh=sd+Xljnfm0clwQKZjvueg2pzkap7XowUeh/WoLCloXA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=atNwlsy7tM5voGBVh4nO6zDvSRe+yFUDX8YEoFY2h4PnyD6DQle5Q2BEMALEQeu6ZV5cwBzL6YoW8wPvFKP4wrDagvGrkZs2b1BLbLjDbcZlbVZ9MBU3IKv5xW9fpBAr/k2M3EnB+nyd+bcsASW2RMeQEuX7bbvKbXZoCx4uqV8= 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=Deh3uicR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=c2Ks2+I0; 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="Deh3uicR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="c2Ks2+I0" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C8sLur113776 for ; Mon, 12 Jan 2026 10:48:32 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=yHj7LcjuyR7 44fhCZ9TThkC8k2+KnabV2Ku2dES356o=; b=Deh3uicRFQLSACT59v/PjKASHc9 YfffzKQzP2PGasG56JoK6OB0DZQG9y9WQmJguogbI7S9pj9rfgjpF4CcmYDg4dRE A1FdAbgaNS9s+dSYqJMi+VGOgXvPh1UoGn0ICAHcpux1tFfKpnK3GBRoWyNSaLps +0FCAiPoL4Kap6mnAXc3m/WJPcHbVWGQUMi9964XH/bcKMTCGSET2MW9nd2xMfMB 2LDmFEIt48+mw4v39ZtQdAqUYObKX7BLxFVmst33OP+X/7JnJlt6vLfZc4m82qt9 hQAThmfoT2qhdrY9W3Teb0aLQu4KxfhgSEfTIt2QVYxME+Ev8IYUUcdJG9w== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmr4uhe7t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:32 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-81e6ec1da28so1785345b3a.0 for ; Mon, 12 Jan 2026 02:48:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214911; x=1768819711; 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=yHj7LcjuyR744fhCZ9TThkC8k2+KnabV2Ku2dES356o=; b=c2Ks2+I0y/fIrKGspQPu7Rfa2dcW9nWIXr5HH4kFTZxl3FZKzpWJXfrHvVpUl32/y9 oUrSMJajIGQ9wvIiqOSxUaEypGLxwDJM2UhQcLUrTHKGRn5rWhX1HWEmpa6aJhhryrDk YrOjsf1Dz/UuEJkoeqD8a39kG8LtsMZQTJ+36rt/7UXPNZyBgWbDKCRvlWlEKmk6avL5 TIdjks+rcSBwgmteyJbXx/DdQzewf9zfIyQb3haNqFJ7MEITkNh8Au44FFU/pgts4CIh GuZmK7t7lWz8baSMT86MlWEYu0KCUAh5e8sYhlgHosNXelEDQIyCG2C2kbukeETcJxqS cKhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214911; x=1768819711; 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=yHj7LcjuyR744fhCZ9TThkC8k2+KnabV2Ku2dES356o=; b=LTZsXIalOCIpbcVnA1QD5ubncUo+OuUEhxy0aIIYMliJRVlgf53aMBUuux2G12XDHl Tt9ENaU3v59aG7hv2eleNqzgw+6Pqc6Xy96S6UHWzR1himXWn6EHRln74Zcwg7Xo35+/ OUrqDKSKd6ae7/H9rS1MFL8kNH/p9k4Bi/qKd2RrTFI76uoWd1y8kuoitQyJsUy72035 IXBF6Rlyo52EFBGOwEu6lnDdEGi8SQyU8Y7qdsLZ2/p6idiFOsOOR8hLAFmkl1MyMcQS g+NtgyjIH1OlvPRs+wXlHgWRR7ErsngO4UsGnEiVYLgM/jnAL6qCNBYE/B0MeB4o+LRn 2UeA== X-Forwarded-Encrypted: i=1; AJvYcCWqO04ygD3CFTCEADzcNUucq3iox+9WrTzuT3NaEMA/WE+ODf7VuktUoAd5R+hj/Osgn0xmo/78v03zCoo=@vger.kernel.org X-Gm-Message-State: AOJu0Yxr3yOfkc8/9A4oDP2cjHWYnJMWzlsfV1bLpKOGjnU8TcUoTdtC FfMWJt3VmDHsRVkjkS2B5ehhXDsPpYLjlmKRkv+Dkk2/bOlIfU0bEVGGtBr0PydfjnsyurQzjyl Db9rKASZUbCAbaBLTurcLMIkS5KYdrYJVheo7aW0m/kLQJUAF/zjwrU/mlEWmBIZ6w/U= X-Gm-Gg: AY/fxX6SZES/+u5Agppe3A9vXeg2fzBTuYLtSD0mhXYRxYepGa15B+Dx1/2w0YvKMfY y7G51MbCoHKlAp0mmjCZCWW47rTjKWTNMhCNi6q+ckbGQOMY1uC+bRDNuRnUvUk/2t5DJSMNXLj ooWtoJul6V38zUZrsxyl+ubYi3oiHmjF6sMrp0A0AoE/IFck/cVM63JzZI6F24/dEOfeFSkQ63H gzhKpEeGjflFXPJ3P7woffmS1JbyDbDDvKkptmjaQwYtuAcOypGkZUzy3Y71lM7X0rWkpq42wxa GcmpT9qCaCxVDAEgnofSe/GoGwWnyrdRJGanTzi+92OUOuODGmI7qRfRF4qbFmjshCOhPsi8ax8 y8meGeXx1sP1mxnd8jxW3poi83bczb8lrQtzHPcAKJ/c= X-Received: by 2002:a05:6a00:ac08:b0:7e8:4471:8e4 with SMTP id d2e1a72fcca58-81b7fbc8679mr14341484b3a.69.1768214911549; Mon, 12 Jan 2026 02:48:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IEDTPGU5slDB2kB8F/ynpy1LZeQQTfK5nYm0t3d2XETK87JyZOzn4TZMieDp9ZkH04X69aC2Q== X-Received: by 2002:a05:6a00:ac08:b0:7e8:4471:8e4 with SMTP id d2e1a72fcca58-81b7fbc8679mr14341458b3a.69.1768214910941; Mon, 12 Jan 2026 02:48:30 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.48.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48:30 -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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 09/12] i2c: qcom-geni: Move resource initialization to separate function Date: Mon, 12 Jan 2026 16:17:19 +0530 Message-Id: <20260112104722.591521-10-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX77bbPM5naqDU WwtjPmQrTza5OJHj3UsUoum/ZX1rSPdXehIbZPYk4Zp5gUUIDUFWOFVnkSNYr5WAdVuJrkyKogT JlwW6l6a0IC8YI4lrwQA0jBnz4GUlFSvoxdPkEoLN9o/Oue29xM2KguoXGxGYmMHkoZkNwZ8tON zPV2UQEsWNJl6B3/MT8jefo5llZtc44Bl7dg04GArEqeztEKBkGPuEB5t3kirM2npLM0Zp2tpYf fxeHCmnQQciOjZfQRvsOtStTbLIINu9+Til16+eCSgoXqX6KINZFhgMX/1E2vzELgYqZwpqRm4K YBPgAYDmmaO8/0Mun3iWvC2WZp+FHrwETJxuviB5hSLTrQrMxmo39WvvIFOVVYXjaeAlVL2TMJJ wl3JiAsigWkDKAar4rTIZcMk5l5GqYEVrrWfJ3xHj8GDod03t0wXEXkvWj3TnnekB/RL3KoIlml ULLf4hiXJ0ZXUPe78lA== X-Proofpoint-ORIG-GUID: ApbK01I7--r0Jbc6kelLic6aAeXiBMFY X-Authority-Analysis: v=2.4 cv=YocChoYX c=1 sm=1 tr=0 ts=6964d180 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=V89BwkbFsXdiYDgkWuoA:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: ApbK01I7--r0Jbc6kelLic6aAeXiBMFY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 clxscore=1015 impostorscore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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. Signed-off-by: Praveen Talari Acked-by: Viken Dadhaniya --- v1->v2: - Updated commit text. --- drivers/i2c/busses/i2c-qcom-geni.c | 53 ++++++++++++------------------ 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 58c32ffbd150..a4b13022e508 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -1042,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; @@ -1061,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) { @@ -1085,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); @@ -1107,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); --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 1FA5234D905 for ; Mon, 12 Jan 2026 10:48:39 +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=1768214921; cv=none; b=oF7Pmh86Lba9JlwSYGa0Q40/aPLte2HrNJbCRT7075JSgWCocw7FH1qACDFOW2oCgA1oJe1OAWrqyUI9V5OtjJQKiUmTeTgC8vUIWQ6Lg+ZSA3wN7VSoYifiCGfG0DeKcl17e+EUT6fUoG9YZnUfJHRE63DWyPCimHBa0PMhZWI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214921; c=relaxed/simple; bh=dd9jcM7VhtLSe01qVKxg4cqsefq6fIxIf68B+OdANWo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZwfhBwEvQHreRkuJQGvzaQE5dNWdNK2ch0N7xTVcQZSMmeC8yFD6z2ZwewWWdgRT9/O6N9+WUQxNjduTZ1WaHmesux2dbQefd1tWic7cwxGHl6MvFAgWisNMYvAyScZYnr4FW1LxUf2CxLc1kOjle33nT2nKos8Dcf6GvojlC/Q= 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=APEHtDhi; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dSPxGJpV; 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="APEHtDhi"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dSPxGJpV" 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 60CAEW2r1315821 for ; Mon, 12 Jan 2026 10:48:38 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=6DIBNmtegJx j/sp5FwSU/fdzZauMmtoR986IcxrENk0=; b=APEHtDhiRbaCRFcLNGq/lGmYY+I rDWnWzMHqXoiAkdcDji0mmzqSYEkodeUTGVXVaSFTP/lAyQxhJk59Kb7qy2sKbsX BFYyFQA4mMBQJSpIFAlP1XaFRXyq8sA0/zIhO2ThLMDRoYqncL/S02PcGLhz6PvD RL7Ij+QKxK/rT7c8E9EBGcCjnefW4mQp/O31Q12qqnD9+NzGEEiIuukmGIRbAwXv GVQCQ9TjH2yMoX0wo0v53HeKt7v07iBGHUJPbsz32bDLnZ3pifwMRuwuixqXmWWO vwz4ezXprCgxGwhUl8iYjD5RW/q+xiLkqQGSxizHyfNlOUXxvisypPsSORA== Received: from mail-pf1-f199.google.com (mail-pf1-f199.google.com [209.85.210.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmy1hg2uy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:38 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-81f3c36dd2cso1351404b3a.2 for ; Mon, 12 Jan 2026 02:48:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214918; x=1768819718; 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=6DIBNmtegJxj/sp5FwSU/fdzZauMmtoR986IcxrENk0=; b=dSPxGJpVVP65n1b3YkvLtJg2yX+Pep3Pq4e9uOB4sfQBR5qRVrNMdcwEFjWjt/MCYP vZ4KP7jVyUJz+D7D/tpuwpf9R65QHHWDnB+TjJ1dHmwpNjVuhSQvsGdd34TiVWIp3Yy6 dJhIZXRAmUBIvJYdDP8q+TGintc87gZa+1UEN7xRdd6Ar3oBPLFvmBqltSKPrDn+E4pU RnP2Exi85AKt+rFjYn3If2KhE2qJLuo5j5ZXNPnYWSRnUGkxwUbF2du7DsBoZ/4Ke7O6 RrJvQNgWQ0qDkJi4g7rN/mPFOlhXAweWXU8xRII9cNmvJ3Uv2xr4FI/ovvvjQjrk8d3+ 0VOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214918; x=1768819718; 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=6DIBNmtegJxj/sp5FwSU/fdzZauMmtoR986IcxrENk0=; b=ctW+IksARoFG/zqUuYICtA5AY3AfCGX+ZJX5cZgkKuaj92qOJSrfy/eE387ibWjLi5 9irIcnG8P6fQyIbokVxh9eJC9rTlvD9GWF8lY38DrdAqia0H4/nwUSHhI1idnIWChagO IUU+JuetQMrD1cwhzSyFh6bETMMozVoYfASrEYsBsbsfbvWCenYtT9hkTWLwv/RxlqDC XCp1HBHgn6hMKepsipnxynIdCDPMY+Kq6nUUUV9StB1xs4HVa2qqSq39zU8P82wyGdFo LOkrZqV7Jt4NIzEMbZIe8LFp3EbzkkMd/ZUAQAYgQMbUsCLUmxLABIk1SsMC3/aePmp7 BUQQ== X-Forwarded-Encrypted: i=1; AJvYcCUPRIEE9lh2x5qjCp1/maJ88V9bRpXL2OTvTcG89R2VLaioxbf54Zik4fBy0E+K03wudlDy9hrF68lL1js=@vger.kernel.org X-Gm-Message-State: AOJu0YxfdFD5LhtOpWDY5HFINyzAPDrBppm+LaM4otZdFlpgPzTu4xaF TpRcANUUPihZQ2JTiX1wpK7pIWQOyiZlwlZ+GsBRoW/5+5SlG5JqGiXSQicr3R/SI1bhG4gWUg+ HiUPx+OHl2gVBdcww0L9CMKLI5Ph9Qau4LR1M1t9/e6j3iy6+eir/+w8qZ8sonAxWXe8= X-Gm-Gg: AY/fxX4YDG4UQyN0mbrRFVV2Ksos+vWOkP5zaC5hxgc6zgyHkPxAQr7sTh6WvP4Qill cr+P/mToK3FNINpRoA4jt1dSKZe/q1rljhOrPjOanuOIN+r63guiQ/rb5AAT2W1yLvpekr0vYpB Iv6dnKVJiAWDCYsIkeRm8+RBkDZJLvAi5a5DColJ/iFIAF2mFcrSf0SkIx/9uHd0foHy9jkoWBv E0jZFiFXIfoO5egkNXSoZY0QWHTDWXJG71UKDPqQs4Z1cDieDb7OsfmQzvUUO61DecNfdfUoRnI CAf9huG2CdWoDDharg6cWhJGR68HOHUL+x7gyVCmdibsFEKKPuETpazWMKWrtVps70P9GM9Qvb9 we9Wyk+WJAedvkRqToNSwu5IVxTm01v4dC3cad68mRpw= X-Received: by 2002:a05:6a00:ab05:b0:7fb:e662:5b9 with SMTP id d2e1a72fcca58-81b7e2543afmr15060512b3a.31.1768214917812; Mon, 12 Jan 2026 02:48:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IEujJSJH1anLHyWKus4uNWOXCEe7xRR9ncKzSbzmm4aGIbe5t1Y+jRjez+8QTuXbWJxFmHvmw== X-Received: by 2002:a05:6a00:ab05:b0:7fb:e662:5b9 with SMTP id d2e1a72fcca58-81b7e2543afmr15060501b3a.31.1768214917253; Mon, 12 Jan 2026 02:48:37 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.48.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48:36 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 10/12] i2c: qcom-geni: Use resources helper APIs in runtime PM functions Date: Mon, 12 Jan 2026 16:17:20 +0530 Message-Id: <20260112104722.591521-11-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: vFOWqe11nJIHbf3NjhzI83hmytNbEtm8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX+9zyvCfXnh+v 9pb1JVOjul+gXoazmJVRj8pgWrZuF0Z4hy/gGffg8/jYNEamX8AQuiHld9M4hkS2LxexAXN334E t/EPE235sbpGOFVc1jcFE9uhsUbGqXTA3UVoxrKqzigu/dCrvMJCAaR18zPfSEihye5LjICgaxV 1mUHpm25lfM2peRI02AE698b11TJd8p+SFcAwCTIIDdoIUYGFiVi2NTd7pJEoeY6gVboy/uW756 7uvBvjtOq4uoaqsuPh5BmVNR/SsJdI0uJG+XTmPB9tElQBbTgbL0ICF2AbgSoucHE+t0zR4k4y7 sFUNnFaREN1n1uYr5vyyhDnSzYQLbabT+PJBW2N7cRtWkembUhMy254kqrIlC6uTKorBbM/nrwB 0e4ArQezfECpyisRKICtWbiCeZbimL6UxmNY+k1KptJeoQ6CohSs85JB0cMdrJUDlDC5hwAtfMI nzqPKdy0BC2PIbtwB1A== X-Proofpoint-ORIG-GUID: vFOWqe11nJIHbf3NjhzI83hmytNbEtm8 X-Authority-Analysis: v=2.4 cv=EovfbCcA c=1 sm=1 tr=0 ts=6964d186 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=3PeDo36KSfG0vlEF63sA:9 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1015 suspectscore=0 malwarescore=0 phishscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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. Signed-off-by: Praveen Talari Acked-by: Viken Dadhaniya --- 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 a4b13022e508..b0a18e3d57d9 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->core_clk); - - return geni_icc_disable(&gi2c->se); + gi2c->suspended =3D 1; + return ret; } =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) @@ -1179,28 +1176,13 @@ static int __maybe_unused geni_i2c_runtime_resume(s= truct device *dev) int ret; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_icc_enable(&gi2c->se); + ret =3D geni_se_resources_activate(&gi2c->se); if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->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->core_clk); -out_icc_disable: - geni_icc_disable(&gi2c->se); - return ret; } =20 --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 C83CF34D92E for ; Mon, 12 Jan 2026 10:48:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214927; cv=none; b=kwVd+KvNMyrMeclE+zyla2MFvd24Y8uPCyJyQfmrsxhW2ZIKK6HGjaVUtTUHd3hsDs674+I8azQy7ZXeArTys/TS/qmx1f6+Tyr6S32RjH52o0xHFnk3Ju2jB6KJwbxp59roz4CfSfKxORaQ/nQP2j2ZIt+a5SSUAlavZgAP6kc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214927; c=relaxed/simple; bh=xDkyBPuRfFQUeONjgjh4SZDmWk1ekP9KQszR2YZ49MA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=FTW9CruJioDzxmOyWUebs1kN/xjwmgQDp3L3xreb/eQg4cy3EE9kp03AOV6QsxOnRpj+DUBCqMKMCxP3UDcYbRpNzcgc1EmxPXoY1GFaa2CdZ1Dmy6QlWh5CXmwua0hjQuuXBSKVISdavZYDpJjXtbuxuH6Bs/7Yp/Uw/HPyaiA= 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=JKAfdB4d; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gQBRWp/E; 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="JKAfdB4d"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gQBRWp/E" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C8qvhJ113539 for ; Mon, 12 Jan 2026 10:48:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=DgcATLdadUu BZeeDX28NTXhmDobAIOP7dtiFb52lyrc=; b=JKAfdB4dHfaB9u1ww6gVBJ1Avxt entuwA825HhlBUx+3pWqp70dBCqTUk7jWAQWpHD0WB5T3H1B0FgV1UtDfymIqW2a MWzQzyatvO6aiB0juOs5/UhEJUo9HjoiScskWSQSioKjPHSJry3aQUldRzfNhT4K f6Ru0MDE9Fi2vwJzac0+HBNd4MF2L5HtsBwfqbPNXAj2/dNe1q9ANEh6fI9+r0gy mpd8rK17ylFJ8Q6GjfaJ9s8uPHe47ePbOaigKrQ+IkYgzVTJumnXMm61e2O6iTnr 8vIYvKeI7trN7RJrpZk1xuWZj4e52wBVxWDwEZYJd3j6ugRseuAZbrwQjKQ== Received: from mail-pf1-f200.google.com (mail-pf1-f200.google.com [209.85.210.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmr4uhe8j-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:45 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-81f5381d17dso723919b3a.1 for ; Mon, 12 Jan 2026 02:48:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214924; x=1768819724; 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=DgcATLdadUuBZeeDX28NTXhmDobAIOP7dtiFb52lyrc=; b=gQBRWp/E1Rx8LBnWpP/TaY/Cq0UKrpdQ7o9tI8pzPWsqK5vG/fyEIbfow3bTFQ40MJ xaSjBrTlsDP0IkovSGge37duzlS8UMEEMdei+/VkRcCP2/dYQsMg2Hg8vIRgUiB2cPH1 1QlpftashsF/0DyFBPiOgKceRlQ+vY5JQpdeP59IC001Yq14ayKUZRs3KuDD6mTzb5aN kHrHkMi0Nx6yeh7+Hzyyf+/kBgsR+U11IHVyTrrj49sAiy/OiuTRPcbbHgg7gSlSmM8r QB+h9NB8iPUBcln4a0pgoHEnZPQ3yLpvTMQx0Wegl0RtHYHPoEcxvwT6t6ZWZF71fJdo 3uxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214924; x=1768819724; 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=DgcATLdadUuBZeeDX28NTXhmDobAIOP7dtiFb52lyrc=; b=Kbql7qLcihEIG0B6TSrsm1W62trUgW5seJNKxkGY6+u3DvUk0WJNPK64S9hF7j2y8l egGh0q5Ga05LOFxvecBjN4WjR6dsvVh1h7psKA0x+x5J9St2QEPj1qXRg04RqEPbYvZ0 RKlknnSAcdnqdZvWBxd4tTcanJFd1IAjQsWESTurA2RCcDfbEM2sknhc2UxM5rTOogMw azPSbvSuh72qIA7UTxjEBxW0Z7RkFsrE4ncQHsDvngjT9n+kGLeJg/WE3aTZs/XkJgKf 8puCPe1/9LJ1nNaPn8A0qGx5ZsLFYQHnUd7fkVwFNB8vTU6BoADAXnQU5jYpNRqUOMAe KeHw== X-Forwarded-Encrypted: i=1; AJvYcCWpkjfqVEgpd8BWEIKFOttGVdgoIkMmfu4Pv905i0wLOl3MZYQbAreGuj4CpWvJid2laqhlJ28kbXpu8KY=@vger.kernel.org X-Gm-Message-State: AOJu0YwALDY+JtWPfOcDE7X1BPbBOFvh5U8zrTDZvSPmO48IXhW43ZCg pniSLdnwh6pSCyFABDgcQngOZ0AN3hAhhiT6rflVD9dD1hS6DqayYC/FPD4EXbj1kHElod2jyAC umSCDlElTVevsPSS3EYbgEBBo0FWUouaWIyQIG1sPEexXI6A4+EakXnQzo4d+DUViR+0= X-Gm-Gg: AY/fxX4mRUCcvDjTQCIkIosgQorBK9cxmchCi0xcB0CWbJAYR0Ccmy7F90AgUW4XF1i 9bd0EmfGrk1L/1UfVP8i1RJzmexFnpXj5nXneubHzbmSbsT5OFZuXtCY2PfN5hnOfAuzZKatBXu fbol4Zyd+w5M2M4zeoaZZXgEOAwmFBPVXirsdDlSVnTX+iBbKNLelH2cCrFQtCQBxhS4ZTv4VM+ +oedp0wm4ODLXg2b0/6ilJqc1wZow3LMxse5BiO/ugzlTqdIH8fv73AoWdm7r/VPCCKY5rdXvpg UkQ6oqD1yZ0VDTPh6zK3oWOILCqS7NjQUgE/AHnhABrl2Nkx+xo5DRK4zCbiYpjxr6Bvse4Aocd d1y/5/WdkQ6gZsO68gCynPviyRjryhAWMHKdaNIZi7FI= X-Received: by 2002:a05:6a00:2c85:b0:7e8:4471:8d9 with SMTP id d2e1a72fcca58-81b7f6e0b44mr15813976b3a.58.1768214924288; Mon, 12 Jan 2026 02:48:44 -0800 (PST) X-Google-Smtp-Source: AGHT+IHiy1O1m10aedAjMGwqF5rmnMlSOnYznyA7LCV0CRzi5hXIOLAynz0ndP1rRsqUmnbm0WcHlw== X-Received: by 2002:a05:6a00:2c85:b0:7e8:4471:8d9 with SMTP id d2e1a72fcca58-81b7f6e0b44mr15813955b3a.58.1768214923736; Mon, 12 Jan 2026 02:48:43 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.48.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48:43 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 11/12] i2c: qcom-geni: Store of_device_id data in driver private struct Date: Mon, 12 Jan 2026 16:17:21 +0530 Message-Id: <20260112104722.591521-12-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX/lQ/RXubiTX0 Q04GPL84hn8K2m6wZkDGH8UZ55r7Qh5rnN9hhQau/uiGyzXM+Iu0s5ZXch+RClbH+27GxpuH5FO xkgx+mcnaQ2k8UD5IUKGaXplzEoPZM3Iyz1foe1bta+cKcCzTvPWbHIZzzOVEqvxh1QhpZk2KO2 oJPYfgTsbY5/M+rUsHZJcCcrYeNaOUlyrlTFxP8kz85+7FAWpVxE/l0ThZnapBvuJrinRVGPRHP fmxLJJfkA+PG5+xtzILiS140bxojlL9MubFLvXm+ziposq1YRpeF84AZTTfKCOFtM2TnS2ETeDr 5zY0U+bBculB4QIKNr0Y/tDAnDsxKZv9X4mtqqjHU2nrSozoAwzZxTrGJ9m3YbZmMv+6OAFf/m0 e7ThX2iRwLvxnaP7gKqJUibfRFI05UJRn/VHvmT5bJC1PkSUtcWSZ7uy+jpKFVHRgMmtUatkxsO R109azLnJ46QaHYlwyQ== X-Proofpoint-ORIG-GUID: 9SFFA3zOzRO6m_Rke31QCucXax5Q3i_g X-Authority-Analysis: v=2.4 cv=YocChoYX c=1 sm=1 tr=0 ts=6964d18d cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=mUiiJuWc4wU39pmrI74A:9 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-GUID: 9SFFA3zOzRO6m_Rke31QCucXax5Q3i_g X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 lowpriorityscore=0 malwarescore=0 phishscore=0 clxscore=1015 impostorscore=0 adultscore=0 priorityscore=1501 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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. Signed-off-by: Praveen Talari Acked-by: Viken Dadhaniya --- drivers/i2c/busses/i2c-qcom-geni.c | 32 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index b0a18e3d57d9..1c9356e13b97 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -77,6 +77,13 @@ enum geni_i2c_err_code { #define XFER_TIMEOUT HZ #define RST_TIMEOUT HZ =20 +struct geni_i2c_desc { + bool has_core_clk; + char *icc_ddr; + bool no_dma_support; + unsigned int tx_fifo_depth; +}; + #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 =20 /** @@ -121,13 +128,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 has_core_clk; - char *icc_ddr; - bool no_dma_support; - unsigned int tx_fifo_depth; + const struct geni_i2c_desc *dev_data; }; =20 struct geni_i2c_err_log { @@ -978,7 +979,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; @@ -1001,8 +1001,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; else fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; @@ -1020,8 +1019,8 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); =20 /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; + if (!tx_depth && gi2c->dev_data->has_core_clk) + tx_depth =3D gi2c->dev_data->tx_fifo_depth; =20 if (!tx_depth) { ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, @@ -1064,7 +1063,6 @@ static int geni_i2c_probe(struct platform_device *pde= v) struct geni_i2c_dev *gi2c; int ret; struct device *dev =3D &pdev->dev; - const struct geni_i2c_desc *desc =3D NULL; =20 gi2c =3D devm_kzalloc(dev, sizeof(*gi2c), GFP_KERNEL); if (!gi2c) @@ -1076,7 +1074,7 @@ 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); =20 ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); @@ -1215,6 +1213,10 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 +static const struct geni_i2c_desc geni_i2c =3D { + .icc_ddr =3D "qup-memory", +}; + static const struct geni_i2c_desc i2c_master_hub =3D { .has_core_clk =3D true, .icc_ddr =3D NULL, @@ -1223,7 +1225,7 @@ static const struct geni_i2c_desc i2c_master_hub =3D { }; =20 static const struct of_device_id geni_i2c_dt_match[] =3D { - { .compatible =3D "qcom,geni-i2c" }, + { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, {} }; --=20 2.34.1 From nobody Mon Feb 9 03:30:19 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 F413234B1B2 for ; Mon, 12 Jan 2026 10:48:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214938; cv=none; b=sxzK96q41fb3zRxRa81rTWiLwDvb4Rffx9msAaXPHGn0rD99yxuPrXXu3fxTbKsSkKYlsErRpgDZvdM2q/32zaVbxRwH0Qvv96s30kaesfgjxfJLXien1luyXr1Vo7+J21A+adgPsevWR1wxPbZz/Abrj3Q+BtersCvU+QHhE/E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768214938; c=relaxed/simple; bh=YIHYMofa7MM1n5uKKT/qVy70UWWioCFNHYGxbHnXI7g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=UZTCA3BbXDghHTvaGSSkHdxeYbssogJ01I3UT+5PT9FqWgnBmsTFrVQspdRUY/SZBV7rzUQtA3jIdKVWgRI0fVkWbgk/Y5kZO9Em2q276LwoMqBNbBOwHmQcRgQi/HXgnHvbcEUWGIxvrgtKCo2I9kMrHgnoi2KUX3+MPuNPwX0= 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=RIuQxxh/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=i1tTuZSD; 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="RIuQxxh/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="i1tTuZSD" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 60C9F6e31092286 for ; Mon, 12 Jan 2026 10:48: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=jQcAcBkjL0G 3tUxlp42cxgokHnjt05AgkeoLcV3XnyY=; b=RIuQxxh/ie3IlZVW0qIi/nCTwRc jT8YXmt8WIwiS+WwMHTXYYJfElvS2hWv5KXkGcroO3aGkOwrkN23h3YG5zv2DLpH PlRGksFC8zApdNakjaOSnFytI98UoPrsCUo3sMQ9xoYYWHEQYGj8PFuxJVuzJcAm 9fVBkhj/SKLXMNJ1KEG3hSiseI6PdMFrZzi7ZpibFDj3zaPiu4ijvfyMbE7ZkPLN hXKZZhgdbI+Pb2hmqzHsVVTlK2j+PA6Gr0jG+K622xe0CPK78OKX0sP1jf/R+z9C YyoLppFv0P6+mpzt7cFrxaWIgn/Edov6ZpLLt0SX5SMtY9j3r/ApbTgRupw== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4bmx5mg97u-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 12 Jan 2026 10:48:51 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-81e6ec1da28so1785435b3a.0 for ; Mon, 12 Jan 2026 02:48:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1768214931; x=1768819731; 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=jQcAcBkjL0G3tUxlp42cxgokHnjt05AgkeoLcV3XnyY=; b=i1tTuZSDXcvKf6D5i0hC4SwrSeVXEQMayyughCQERul4EbCMLHDRvoB55fRQT1GCk/ Xsv2Lz6GA5bZBqSTe4Pf6NGQ59BhzPor+5y19/jqR+0NIkBuzvWF8+dEnpiSoAAaHaIM /7auQy4fkf8n7bnEFQ1ceD1Uu8LMu5Er9HGAKX8/I4XUTjdDMBR7U6jnMrhkTcEWOcWg ftf+jpxTRvNcmt6vjxUHVHm3IWvQJA/d5X3g5kfxF40ug5SzVB7eo/mTb8Fx+qkxDz4Z Mj/ULCvP2kSQMx6w+ob2PvWtK64oG62ci1nPUym7PVUUq+Ln99GRY4WDvvH2X8CEBbxd fXBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768214931; x=1768819731; 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=jQcAcBkjL0G3tUxlp42cxgokHnjt05AgkeoLcV3XnyY=; b=AaM4Uq9u5G1pK/pqof11/CHV9XiACw0yRIoGen6w+/d3k63KOD2Co6OPC0ZzMKvar6 1Y5j+DhrSpqy2D3ph0wwbt8A2KfY1z3rqeE8AIpBnZAkxfeEPuob362LgfCt5GaTVHnV zk5WxxA2Qu5DtECmeH1FGUofSs5wm87U9663ielJfMI8grruYO+zaMB5NIc71lZKU5DH 9NqhzWTQYgfjocG9NKYruh8adE1Ds7c4APq9/KGfow9zouVBeLPnBh0meWF5cWnSBaVz Pv0B4/wtGbXGH4UUfQdCHDoAZauPMQWyr4W6Jg5i/Gzykv3In+gt7yHrSfjMxclWXCZP NHNg== X-Forwarded-Encrypted: i=1; AJvYcCXHYkW+6xX9JCXUKAyQNSLZx103BHeiMNiVQvc/37JQ5+dAcslxme7ilotsYaCY5awWorvh7ndAl/Z1CUk=@vger.kernel.org X-Gm-Message-State: AOJu0Yz3sIAXAddD+AZKw7nIFrNKwYlq7qz3LVSfGTMFkN+0yr6ZCqh1 ysQxUCOUh6tkHJoniYwDX9MLW55SCNsAuobfsL7LE2VagrFjIyJcC7lDDcOfMdceW17lMJwKsap qIXNwDXAOIMkrQ0Ll95/WUij1IXgrkXbXSCXPdKyySr9FWBeu+kf+/pfZirrSR3QZ4Ok= X-Gm-Gg: AY/fxX61rWxKdCvflTciNp6E9/3sHlaClWjPeZcm23So2AER1i69q9236TfVyiIRLzr rIlY+6N7hx4dI28kP0NRXjalgobZE3sy1lAI+ZMwjb+9oqYzVbeHbMsWF7Qa4f6aV+eCdFXrBxp QD2C7Y21afoTrRcJZZq8NSEmdp++NvxMo7zcoNcYPdVBGQdv7OAG/ZA2EilSwMH9oXGEFbRreYr JV+5bOKjrfP5K+Cii2PVyFxrMDzWXAgCtJuOdKrgVwyKBO8WOzKopyD3SwDbu4P/IvWrhO34WZT pROFV2wOAD1cYtxALeN4wb0e5sZzaEZY0xkE6Zsn3q7nSDjU3hlVCA3WbAkMCaoWG7KKYHELcbW +nJSpRDZA4phpt2IUAaYrYvRSDGqsPqHYSnSmVl7r8+A= X-Received: by 2002:a05:6a00:ace:b0:81b:ad93:a874 with SMTP id d2e1a72fcca58-81bad93a9d0mr14171026b3a.16.1768214930704; Mon, 12 Jan 2026 02:48:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IHhPyAERmzr9Dw2x35aSuyt4PyrwayfBvLR+kwrYNIeRwGfH7SfDHmMlNc3aMJf2XF21+hvew== X-Received: by 2002:a05:6a00:ace:b0:81b:ad93:a874 with SMTP id d2e1a72fcca58-81bad93a9d0mr14171003b3a.16.1768214930105; Mon, 12 Jan 2026 02:48:50 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-819bafe9b8dsm17288681b3a.22.2026.01.12.02.48.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jan 2026 02:48: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, bryan.odonoghue@linaro.org, dmitry.baryshkov@oss.qualcomm.com, bjorn.andersson@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com Subject: [PATCH v3 12/12] i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms Date: Mon, 12 Jan 2026 16:17:22 +0530 Message-Id: <20260112104722.591521-13-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260112104722.591521-1-praveen.talari@oss.qualcomm.com> References: <20260112104722.591521-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: AW1haW4tMjYwMTEyMDA4NSBTYWx0ZWRfX+UwyJ0hFuJLn rJ4/nu56qMW9yjHR4qN78TBlqBWwHmIkh1QaepBGE+IUFuatOZMsb/CyQXf9gSjvmPoPrU+dDjA njxhF/lrymHJ2pX23F6a+rlg2BgCKyh5Y0OiAl5p6GJ2HL73XuBukK1F/u9Rt77Bj9UQf1btiN6 OKT5ZsP/U66CLzxJX1bWx9FjkT9yZmQ1jYq2V9Lg6tOsMdV8jaNt4d1uv3vRcecfbE535ao0HKH 6SmgwadyFkLsR8zMJOLDVAcViOiQcmEsdDUKnUyyXStXcHEZyZ0Py6rmbFxU8yKQOjSsGfU++wT envKtkJpSAKzfCM9tLTPy/99qLi6S7s8p3c+0yBYbhVGGL+3aWehdz/0EsGHEl2hTGmpOr16z0l 4VvPm8F5MuDyzQnkHpjzcNIK63GYqYxPdxPkqilAN1OBpBDxGzpVHbfh4H7FvxqUmUF4ChgGKI9 URZVbAvVXiSol1PmLbg== X-Proofpoint-ORIG-GUID: WZ8f-r8wCrzdWhrWJlTLN5W9rgNQuT_P X-Proofpoint-GUID: WZ8f-r8wCrzdWhrWJlTLN5W9rgNQuT_P X-Authority-Analysis: v=2.4 cv=Q8zfIo2a c=1 sm=1 tr=0 ts=6964d193 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=vUbySO9Y5rIA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=zgZzUwpPmSg69XYvEVoA:9 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2026-01-12_03,2026-01-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 clxscore=1015 spamscore=0 priorityscore=1501 phishscore=0 malwarescore=0 adultscore=0 impostorscore=0 bulkscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2601120085 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(). Signed-off-by: Praveen Talari Acked-by: Viken Dadhaniya --- 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 | 53 ++++++++++++++++++++++-------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 1c9356e13b97..72457b98f155 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -82,6 +82,10 @@ struct geni_i2c_desc { char *icc_ddr; 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 @@ -203,8 +207,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 @@ -217,6 +222,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) @@ -908,7 +914,9 @@ static int geni_i2c_xfer(struct i2c_adapter *adap, return ret; } =20 - qcom_geni_i2c_conf(gi2c); + ret =3D gi2c->dev_data->set_rate(&gi2c->se, gi2c->clk_freq_out); + if (ret) + return ret; =20 if (gi2c->gpi_mode) ret =3D geni_i2c_gpi_xfer(gi2c, msgs, num); @@ -1041,8 +1049,9 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 -static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +static int geni_i2c_resources_init(struct geni_se *se) { + struct geni_i2c_dev *gi2c =3D dev_get_drvdata(se->dev); int ret; =20 ret =3D geni_se_resources_init(&gi2c->se); @@ -1095,7 +1104,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 @@ -1154,15 +1163,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; @@ -1171,12 +1182,14 @@ static int __maybe_unused geni_i2c_runtime_suspend(= struct device *dev) =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) { - int ret; + int ret =3D 0; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_se_resources_activate(&gi2c->se); - if (ret) - return ret; + if (gi2c->dev_data->power_on) { + ret =3D gi2c->dev_data->power_on(&gi2c->se); + if (ret) + return ret; + } =20 enable_irq(gi2c->irq); gi2c->suspended =3D 0; @@ -1215,6 +1228,10 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { =20 static const struct geni_i2c_desc geni_i2c =3D { .icc_ddr =3D "qup-memory", + .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 { @@ -1222,11 +1239,21 @@ static const struct geni_i2c_desc i2c_master_hub = =3D { .icc_ddr =3D NULL, .no_dma_support =3D true, .tx_fifo_depth =3D 16, + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, +}; + +static const struct geni_i2c_desc sa8255p_geni_i2c =3D { + .resources_init =3D geni_se_domain_attach, + .set_rate =3D geni_se_set_perf_opp, }; =20 static const struct of_device_id geni_i2c_dt_match[] =3D { { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, + { .compatible =3D "qcom,sa8255p-geni-i2c", .data =3D &sa8255p_geni_i2c }, {} }; MODULE_DEVICE_TABLE(of, geni_i2c_dt_match); --=20 2.34.1