From nobody Sat Feb 7 04:47:02 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 5AB82388853 for ; Mon, 2 Feb 2026 18:09:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055786; cv=none; b=TUyzGncjp7K1ub3sT9gDGSx4GPAKJrCTLRmV8tDMVPEcCHxj0OLmNWbRHYRDsE3DYd2ojOT4McbXhgcfLrh+BnNrRYv2vwXT+p6teYh9z6j3M57UoZ4zfgHWFxNLVZzG4AhRyOt6leMt8XCleLOBSJKWXnlo1LnYnAGLMpHBRYs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055786; c=relaxed/simple; bh=Eck/D6KmwOrBysTJIIaZmSoFBAq/RlW1moTUSu+Xl3I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ufOj9foT0leUlJ9oeNh5rTkbZ2t29bIEc7paEN+f4NW6fIzOrfTt0jUG39uvQpGYdnPPHiWrP1ddSD09pwM0C6XOYvZSU0eeyjoEdVA0vUNaNJ6h7miiiwasZUt6DZb0+8k1k516QEeRJlDvt33/9lC7kyvac4pt9qQ1foSGmSw= 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=MrFDXCev; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hMioVjSd; 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="MrFDXCev"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hMioVjSd" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 612FlJo63388283 for ; Mon, 2 Feb 2026 18:09:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=KnpiwG0d//X /Doe7m+7TdtdTnhg6HQ3OqoiGCkLu8T8=; b=MrFDXCevMZoGMSGsD/wleAntvxf AW74Fi1cEpBpGjUahvfJeoYZk8GAK6hn2SJImrlbFaGV9//FylSHyKoL1TISz29w NHkQ9VqxVDVX2gXIzPDtZjk9AwJZaoifvfNBjjC7Urvnud+UXP0yYVyY1BcbNIVJ 3ipQQSU7R8MagvNC99hbbk2v39gRVKDd+v+lRzjT2JFxQek7MpRKldXwRkGBsjwc Wlc9LAdkEu4ySyIomUH5LQXaNRqxdmmBgP7/ExBoeJ6ZggRi2b/PRN76VqQQCkpB nG/5Ph2/x3j6+gq9iG8Mq6wlUX2Fx1dyVWjjIXrA26jrQVB+FPCvgSxOrag== 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 4c2xvbrfwk-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:09:44 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-81f8c209cfbso2578691b3a.2 for ; Mon, 02 Feb 2026 10:09:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055783; x=1770660583; 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=hMioVjSdrXneydsFmw5sbMCk78AIaA+uHhdiHczXIXq0uHq8WidL5/FmsxLoj4gRNc va2DGGUPE3TLdF14ChFZy6qHWyzHNZZkpmhvxs+zWxXO8Gl97tgx1kniNO9Av+PuDpsp slem+XIrqyLaZPf84oEOF8E7mH2VFzbW5JX+w+oAQCOE8WnmSVK4jrsS2OC6SiylqUuZ Yyz2w3NFam0/0ijInUW1BAFIXiY5yYO+QbsY5ZIpFm5NhSnLtx7aB+nC+8l2yVJlD73n +iCOwZ853rAGVkhXJmmIun+FZcCufeWxX3LQ8j+Ji6PwKc1Dm6ICpD5Jsip23s+qr7SK 4dgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055783; x=1770660583; 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=PfeZRPyBmzEkfYNQCmS4p3/qJ6TGqQSdFbYcFSd3f7V9RSjLTlF3XOxuhP4q36Qlll teTgskxuzKHcxLNreQsenxSzi5iki0i5v5oPGGzm/tVherXpSWlTWjylhuHGOaZHZYUV 3oGEgOrpFSIyGu0F9dDMCbDmbuLJ0DsUd8JFZsOo6SEvL+zUUpfzsVYsMEjEZS+UEDhn lyXZQqaYxkshffZ8GlKKR2WWPBKg0SJkGS6jSYTaZnV+73c9qQhHI/zaBIXc4Su/o8bm GHQER3OqscSc67vBXLVgQFIV0saKOT1DL816vxpJOOq/FAff8imah0CJzaxHytr0Kq7f ZMww== X-Forwarded-Encrypted: i=1; AJvYcCWqbsWysyam4d3CjnmODw29PB67TtHFLjh6/KjBFuTB5PwqnDCEvfB7VErsCKfWki1Wq5SiLnHh0k2pwYM=@vger.kernel.org X-Gm-Message-State: AOJu0YyXli7nMF1cqw1Br3bWiunhBmK/0FLpL0L6esbBHW+U8biBsaWX JZgjeq3BGZkh89EQ/QfPm1ptv7jI+eLimtUD76W8aLRWId983BtiERo5KsplBADq81WS4Et1bHB BjKC4JbwPwVXqtKmzditqsYi4q39PI2zWvd9UBV6zHx8rkNkZUm3wsci2xzGLRi09Z7Q= X-Gm-Gg: AZuq6aIm/dD9tJA14C7MZq4rsPUDPcOUS+4a+t6Tmi3V8W0kFAEVOWfLP7nYtCnLgAl OP0b2Pv7WSays7lKfDJT66Cpb9LolPRZqRJnDl4ldMUsctVaDywWV53vmsn3dNtqtNHm2M6lj1x YdPJVBGg7GZC6VRWE1k1lnwlKUNE0DN7z6Q3VDSYtcj9lfGEp1RcPUiEq0/59fq9jJgoK6Mmx2O l6nqqJXDnxSUWscx9sTTCcTyQ8kf8taaAQCzuD/2u/7MUn6Qjqt54kt4ovKNtjgsY1PW1Z1ARzp 9FTWEvxCE7V8xsb/E4RV7E4mvn5Pvw0wXw8RjGuWStRVltYauIYaxlZ0k5fENAnPxelSejpD1gS LtVn70SHOGUyZ7Cwsr9OtUju4GvYCbK1mOqXcra/dEB4= X-Received: by 2002:a05:6a00:2290:b0:7e8:4398:b369 with SMTP id d2e1a72fcca58-823ab76e335mr13009928b3a.60.1770055783029; Mon, 02 Feb 2026 10:09:43 -0800 (PST) X-Received: by 2002:a05:6a00:2290:b0:7e8:4398:b369 with SMTP id d2e1a72fcca58-823ab76e335mr13009886b3a.60.1770055782473; Mon, 02 Feb 2026 10:09:42 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.09.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:09:42 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 01/13] soc: qcom: geni-se: Refactor geni_icc_get() and make qup-memory ICC path optional Date: Mon, 2 Feb 2026 23:39:10 +0530 Message-Id: <20260202180922.1692428-2-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-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: InWzswdy8M6kD15K78OZP06mAG4RcEhN X-Proofpoint-ORIG-GUID: InWzswdy8M6kD15K78OZP06mAG4RcEhN X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX/uKdD+EVPJoB BB1uuIFeoNC10w9PbA/Ai6OsIuErjPjeHJf0/KU5y6Zd9/0mvLZcRidMdyBJUek3LNvLHGHVF5Y W2lfEL6oA1mKoWHgwr0YEFHQN1JhWaKcqF/QvgxU8OIx3FRLRNTFZhJdVVaKw5Iw4Dk6h1aPYqq xeSfgQ26S2qzK0sfbM3+klCJkIw5cN4VV9+wqdjEE+P580iv1QpDtgqyiCxD/lCyfvv9caiAjXW 3FXmCHA1nsy2/cVxL+bs5L4JEzS3OYaf9JE5+/Jy8MRK42+PXvWwLrM3EmwvulqiVjk8H8i7Chp 4coqvhfqsH6iWb0bKhCL0lFnVHa4twVBeTgjEXy1HofqPNRD8pLMEhTZrg5a/ViB9FDuQeXpphu 6NY3gLp/iXDLMTItYt6M1t1+vt5qMCp50GUupSrDwrpucK5lNC9ibuw49X4rztysdRzet8HQ2+F 0IiOBa7L2ikmQq72ouw== X-Authority-Analysis: v=2.4 cv=AurjHe9P c=1 sm=1 tr=0 ts=6980e868 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A: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.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" The "qup-memory" interconnect path is optional and may not be defined in all device trees. Unroll the loop-based ICC path initialization to allow specific error handling for each path type. The "qup-core" and "qup-config" paths remain mandatory and will fail probe if missing, while "qup-memory" is now handled as optional and skipped when not present in the device tree. Co-developed-by: Konrad Dybcio Signed-off-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v1->v2: Bjorn: - Updated commit text. - Used local variable for more readable. --- drivers/soc/qcom/qcom-geni-se.c | 36 +++++++++++++++++---------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index cd1779b6a91a..b6167b968ef6 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -899,30 +899,32 @@ EXPORT_SYMBOL_GPL(geni_se_rx_dma_unprep); =20 int geni_icc_get(struct geni_se *se, const char *icc_ddr) { - int i, err; - const char *icc_names[] =3D {"qup-core", "qup-config", icc_ddr}; + struct geni_icc_path *icc_paths =3D se->icc_paths; =20 if (has_acpi_companion(se->dev)) return 0; =20 - for (i =3D 0; i < ARRAY_SIZE(se->icc_paths); i++) { - if (!icc_names[i]) - continue; - - se->icc_paths[i].path =3D devm_of_icc_get(se->dev, icc_names[i]); - if (IS_ERR(se->icc_paths[i].path)) - goto err; + icc_paths[GENI_TO_CORE].path =3D devm_of_icc_get(se->dev, "qup-core"); + if (IS_ERR(icc_paths[GENI_TO_CORE].path)) + return dev_err_probe(se->dev, PTR_ERR(icc_paths[GENI_TO_CORE].path), + "Failed to get 'qup-core' ICC path\n"); + + icc_paths[CPU_TO_GENI].path =3D devm_of_icc_get(se->dev, "qup-config"); + if (IS_ERR(icc_paths[CPU_TO_GENI].path)) + return dev_err_probe(se->dev, PTR_ERR(icc_paths[CPU_TO_GENI].path), + "Failed to get 'qup-config' ICC path\n"); + + /* The DDR path is optional, depending on protocol and hw capabilities */ + icc_paths[GENI_TO_DDR].path =3D devm_of_icc_get(se->dev, "qup-memory"); + if (IS_ERR(icc_paths[GENI_TO_DDR].path)) { + if (PTR_ERR(icc_paths[GENI_TO_DDR].path) =3D=3D -ENODATA) + icc_paths[GENI_TO_DDR].path =3D NULL; + else + return dev_err_probe(se->dev, PTR_ERR(icc_paths[GENI_TO_DDR].path), + "Failed to get 'qup-memory' ICC path\n"); } =20 return 0; - -err: - err =3D PTR_ERR(se->icc_paths[i].path); - if (err !=3D -EPROBE_DEFER) - dev_err_ratelimited(se->dev, "Failed to get ICC path '%s': %d\n", - icc_names[i], err); - return err; - } EXPORT_SYMBOL_GPL(geni_icc_get); =20 --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 C086D2798ED for ; Mon, 2 Feb 2026 18:09:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055794; cv=none; b=h+lNKYliM1IA3d+Eurm6lRfdOOYoTNviURtw+JpABZ6YQmanP8mKQW/3Tto8ZpGO/DMMHI40Vpld+1G20iuEnLclYY5P0q3OznHkwTF81MMlCQP+/WNsf0yCBYkR29k+23Qb9joD7cTrWFDssHh1LnmCTo3tU3qTLzgWrI9V6cw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055794; c=relaxed/simple; bh=85mnIBih5TefJNp/bHk7qTk7tspz31Q1DwJ4d0ufNMs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=nYsZpW3XRewFojryT/OgNWgbhhQi4EFlCl7zkOB9/DKvtVSaBtUHTyxDtpwV9ksXdUYX8PYNx89bbAPPr54RLo1nBbvjPpZkIBDKG6znS1G9yz+ykIi7t/6wBSmPvZsaE8nk0Yqbi89WIvEJ7y28r2KAPlcK8WtITppm+c1Lisc= 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=Cdj1Q6fD; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=htB4Gip2; 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="Cdj1Q6fD"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="htB4Gip2" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 612AP0E82100879 for ; Mon, 2 Feb 2026 18:09: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=GkgK+E57psN HC9wkY83ywNIDVuH2SOJteZ2XuiMuHCw=; b=Cdj1Q6fDwfbIA7S8o3QrPI6EXwK r61AdGiJkwPjx86OAXq4z/EP/0otQHvMhXG85d4DcdX6G+q82wzhjFZ5g5Ez1a0j EP4E6/54G9eg+4LBXcSCtgqlm2RciIxtMUkNLXFljaGtgeuNc4cxaXOibwAw4Cjr xsqBhoH6vqXiNvWEonCPC/iwy/VZIFHgCY8exoLRNkioOyNo4T+JNIqtuTz9yV67 Empjhkj0mdOfh9P8AbGCpSrMthecPGo8iUtzpUb9Xaleos2ckuZg9kk+ejsg9ucv IPh16qNTm0LHGGMerF6ToX8olLrSqs6fJ4dXlE1QU0W+M74Nw9VW7XlxgVQ== 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 4c2t5e9ece-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:09:52 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-82343404fa0so2131047b3a.3 for ; Mon, 02 Feb 2026 10:09:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055791; x=1770660591; 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=htB4Gip25l4Wh3IErK3RG+2tAAOeICaaYd7ZWZRi5Wpr5xwFz3b1tg3K/t8FElm1Ef 2DHjTO03Uq4EbvFPJxXK6JYiE6quWQ9gCFFbV91gHvuV4baS/o6sSBIUlDHeDxXHXDgz wC6veiPK5Kq3e3TZriAttJQINkG70pwQQxHqZ2ohurqul1P/gIMvt6ZGikA/Taroo2MW X6pw0Bjv2fKYTHdAx28JJE2ezS0RDa6WpnnoRhun7bUD3lL+e/IA3h+4nL6SVXkIS6PQ 4/lSLvH1SlrHHGZnDJUt/nDP74MaAqHqXqZUPnMSQEqyZJPE0vsb/qv+PteF4YAG9BYB No/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055791; x=1770660591; 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=Zl510+LHzwOPE8d/+0EAz5CjakpfOgNo3kxDrnO3SyRjT3rKrGYYLfyACBKbDRcT67 RFlhlT5urXVgb4nTiTe+kME0LuRc3UAV7/XrCE11sO3USnQYIip1Gc16BiY12OQFFig8 XlR0xapZbtGVrJOEHgBANWbPCO8EqktMGpZtDQomxC46JMTBZY++u2Lo1qcAS5UvpDRf edefmnu3/9ElXDfFgJoq609DMA2sb3vog06Bb2vAILE5q2YYX98xGhS3QyAZ3JL31q4n G00BVSXR8TS/bTXSs5E8w/Af+pE380DMa0192jgHtGMocIF2WJHz24nEiSAGZOn3qQt/ F1+w== X-Forwarded-Encrypted: i=1; AJvYcCXOcXZaR/68NRoMU4ukUftKqDoGlNnQbbAVz82huOG/tv3IRXmgoUFKWd6UT5qNHEfztwCAurdWc2XHHOY=@vger.kernel.org X-Gm-Message-State: AOJu0YyuXWrYYvH+9+rUbEWm0dthKe21VtBOJKYBmN5oI/vOmtghpzRk S1R/SerOk9+ibfFvbAI7KHkzdxoRBythlBd7qo5s+qLYBPr6y7Lk4QPJKzymbjyTEsbzeDHbNy1 qUu4ydF/i6gv0adLAI06XzwGgfQ5kyMIda6wYsbVCdbp3HtlcOt2FXewPc6iIv6laGx8= X-Gm-Gg: AZuq6aI5feEQAO5fRiREibf7r8Ry8SKiLzbV2GTreYYu83Akt8YEuV+IigsTZd5A3iq w8Q5XmtFbyDyxv9Y/u+M7rwnFGWbnCAmsvV3GxG2W5U2YWDEp/YwLK2W/EyldmL9MTvRaOaU6eB ZqAROHD/LLnRWBJrDXtH2MnC5xe0NYtASZxUKt/lr9RgdSdY2H7vDoZDXO15FCMTjfIkgcrDQ9c l4PAbkPxRJ1LYxBoiv3ZIVPeE+oSSWmka3sQ/1Z0QRZFavc7bJ81CEqzwwspW+3/5hRUXN+kmlP 56ZFA/zkEowc+PoyaU7ftjlDBuh+dk9GFXKgNnxsoyOSJmm+BSDPryXLqtzUj8G4jDmscOhlOy8 Ae1uaY+xroBEwQv1eV6VrMzIuXgZdeale2ix+tBIMYcM= X-Received: by 2002:a05:6a00:a512:20b0:81f:40e5:34c3 with SMTP id d2e1a72fcca58-823aad8e0c0mr7459911b3a.65.1770055791399; Mon, 02 Feb 2026 10:09:51 -0800 (PST) X-Received: by 2002:a05:6a00:a512:20b0:81f:40e5:34c3 with SMTP id d2e1a72fcca58-823aad8e0c0mr7459882b3a.65.1770055790631; Mon, 02 Feb 2026 10:09:50 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.09.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:09:50 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 02/13] soc: qcom: geni-se: Add geni_icc_set_bw_ab() function Date: Mon, 2 Feb 2026 23:39:11 +0530 Message-Id: <20260202180922.1692428-3-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-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: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX57CifHXWtAkQ Kh33YzOmSA963HIzA7I4SfbaSFQnWz4rVkH5/Ld0w+3TxqVK8TJKHHpcyGSucCwT1fWQ1t/OrmV xghtZCCU9+fcCkE1nOt49W8huTdRf9qht+RmygI7RxatX/WY/7YxJkp0mNWatTJtfq+secFKpxh SZ/u8Y3ITeZN8IiuL1fyQuo2bklHs8/wCkQUy8wU/N7hPIvmEcXPr8/Y9Z9lu7y9plsLjv84d8D vcdNRCo98bedCMt1Uiq9QdmoZehL1WnLLBYNzrchHqvJL/dBN+eO7k6RTvh0e93PvAC8x/eFITa R4DWliRviifDMxz37yx95h8IIUnRQ5Z5o/myIPINN2UStIFg9CBV1eshwB40/P+hCRHukysn06S ZibSUcPgYJt5aj+9c8p946x7TWVIrRj9vxUEagSKiOeuNCYtaei3gd+xyGwMiTv2wkzO1s369pm xEPZoA/tlW7xiph/H5Q== X-Proofpoint-GUID: 16W86T59G38RuUt1YLYChOIQMvCZ_4iP X-Authority-Analysis: v=2.4 cv=NOfYOk6g c=1 sm=1 tr=0 ts=6980e870 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=BVB3BO4C9w_THQaB-9MA:9 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-ORIG-GUID: 16W86T59G38RuUt1YLYChOIQMvCZ_4iP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" Add a new function geni_icc_set_bw_ab() that allows callers to set average bandwidth values for all ICC (Interconnect) paths in a single call. This function takes separate parameters for core, config, and DDR average bandwidth values and applies them to the respective ICC paths. This provides a more convenient API for drivers that need to configure specific average bandwidth values. Co-developed-by: Konrad Dybcio Signed-off-by: Konrad Dybcio Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 22 ++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 1 + 2 files changed, 23 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index b6167b968ef6..b0542f836453 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -946,6 +946,28 @@ int geni_icc_set_bw(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_set_bw); =20 +/** + * geni_icc_set_bw_ab() - Set average bandwidth for all ICC paths and apply + * @se: Pointer to the concerned serial engine. + * @core_ab: Average bandwidth in kBps for GENI_TO_CORE path. + * @cfg_ab: Average bandwidth in kBps for CPU_TO_GENI path. + * @ddr_ab: Average bandwidth in kBps for GENI_TO_DDR path. + * + * Sets bandwidth values for all ICC paths and applies them. DDR path is + * optional and only set if it exists. + * + * Return: 0 on success, negative error code on failure. + */ +int geni_icc_set_bw_ab(struct geni_se *se, u32 core_ab, u32 cfg_ab, u32 dd= r_ab) +{ + se->icc_paths[GENI_TO_CORE].avg_bw =3D core_ab; + se->icc_paths[CPU_TO_GENI].avg_bw =3D cfg_ab; + se->icc_paths[GENI_TO_DDR].avg_bw =3D ddr_ab; + + return geni_icc_set_bw(se); +} +EXPORT_SYMBOL_GPL(geni_icc_set_bw_ab); + void geni_icc_set_tag(struct geni_se *se, u32 tag) { int i; diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 0a984e2579fe..980aabea2157 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -528,6 +528,7 @@ void geni_se_rx_dma_unprep(struct geni_se *se, dma_addr= _t iova, size_t len); int geni_icc_get(struct geni_se *se, const char *icc_ddr); =20 int geni_icc_set_bw(struct geni_se *se); +int geni_icc_set_bw_ab(struct geni_se *se, u32 core_ab, u32 cfg_ab, u32 dd= r_ab); void geni_icc_set_tag(struct geni_se *se, u32 tag); =20 int geni_icc_enable(struct geni_se *se); --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 458252798ED for ; Mon, 2 Feb 2026 18:10:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055803; cv=none; b=YIQp/nfq8NaNv6Ss4FXfl/i8mruNsH2t0A3Z/d/1FcWH0Z2Ya9NnuMbgBnDYC+3ucZMx/SUq4eOkvy8lLw5cbINtkmu8soexCyp07o29/nTYe2jhxRSgiIepd9FdSPYZIFAXCga7cxqLsVoNu8jhXWJ2KlIvAy6WtnnGnUcgIQM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055803; c=relaxed/simple; bh=aNFoPhCzK98jZhwkTUn8Ng4tLog3h9ErdlG5j8XEi8I=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=P4Wc/pHGPeew8hMUTYB6/kCRyg3s26ARwcqLTkqsJUSsC5iJYvzD9ce/D3Cf+Vc+l35/6udRlKmOjlRuHb5piu5QTwZpr9ltxw9ZcWbH3Q70e8vIpmi8KZm+N3IKkiUdySvkUcfSeknyeoe0VCFAvmxeyUqu1EaIK6a7Ip/6HN4= 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=ZwfvJWbl; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=T2FEQIzd; 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="ZwfvJWbl"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="T2FEQIzd" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 612AvuT42262003 for ; Mon, 2 Feb 2026 18:10:01 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=coMCstee7sz aR5m5p6HnyI6xCasetiM+wXF6qx7XZKc=; b=ZwfvJWbl05rJkF43azl8gEzwJLP wfDisdYRdeRuxJyeTlXFRYRMA9sgZZCbTfdz/GRjy6mr76BRYY20BCG7SNEFmvEL UeitmEOf7hy1SR6NEqTVP56qPUCXDPFXXWj7CsaEZsafo9cxrsgJaHs86y5Ma4N1 gWyaS9fjJRYR6KgDT0G0q3vLOEks1Q6flS4S81SzUo3itoSFbZOFexEF57tqZTM+ wbnokE8bbGHRhEVpeyzaXG8iI0tKonMiLDqds4KowOU56JUdldjduL/oblpWv1V5 qqdzYKhVFVpo8faY053FQnKzuv///PoiwLn2TrdFyt25siaGIJi66g7mu+w== 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 4c2tmth98x-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:01 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-81f53036ac9so3876553b3a.3 for ; Mon, 02 Feb 2026 10:10:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055800; x=1770660600; 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=T2FEQIzdLiEH3l8VzgjfwcQ62Tgpq6yeA0uacInxKo5cx35s1m3bhy3cb6Djw4jp7k 89cAILX2t9lYcYOi1iljKMjiW3PJ4+7ZS50rszfTr1HUq8BnlNqIRTpfGVMvV8tDbw2V +6v+v5T1oUjmhizliR/qJvBB8p1K4EwOnW5s1x1eaV+dl/0ABgRNLnSzXT63w2OvL8nc sBSvk1NroNAHoWPzG2O6XPsy4pRhudjLqe2FIIr0TNAtsRKdNLBPaWUpfir/ztYV44yy rjk5tlUQ0L98XDLdvP8EyVTz41V46iE/2F2q4VsS9Eob9hzx8is30RUX2hO65drbeX62 ItBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055800; x=1770660600; 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=KgSQ11p2wtbxLMeB54VHKtf3k5T1mR0ltUgXR4vm9b6Ec61aKOYPCvPOm8NWivLQ5D zaczq7FlITv9rBocdDFw56Fe0WjZ3Xrjsd3PAZp8q52A1WpfMi0Owxrc3nnTEhQj5D2A EUsvdOjlAP3AOsB8d26rqS7trwDWIu1dllaloxkp6CqThM56BmHfMpJVJ44DEMRL2s7I vDl3ldpHuyqGEsAw/1a66Ul4++xloyP1pqcFQzRhdvfekmD2C22ImvQ5J4YJ1H7RKZIP GiemgGgZEvd01sBv/dR9S4OdQKb7MipU2/tvYfCrHTHvxeBIzTeUzDNhPUSn6bBJpoz9 tQYg== X-Forwarded-Encrypted: i=1; AJvYcCWve3i+pLe4+9UOqgnprnuKCUY15Ppv/u0X/2/VJKGys5TXO2F5kPSKyGEPjkk14UNRr1H3Lpkk8JHUvuU=@vger.kernel.org X-Gm-Message-State: AOJu0Yx2jbaasq/02LMNMIF8nZ0PoAx6SGo4SmAnHHlBDpLmHk3Rkj1a WxXP+foNs+aipN91Ee67abMWhVjWf7/PiPLXIyQ83Ls20btiCxw7qpoPdMqh5wlJiYARjFTFqWU oJ8epYPKuZLXyl2M1uIERHMv0QIGLIoVmgYe632r705mucRrRrDnnLDoJPlx2lrHvu54= X-Gm-Gg: AZuq6aIoe1mfbpumu3cRze3DhR31dz+782xv93/GbgkEPDZWhlK89q5IkVPguVXElus bEjdtIaro7uOqH0de+kDVFKIJTuXYUhHFLonLFT2u7ToE8bPXagPv9KCp385aEx4nT4C00mfQZ8 gyJHOvDQVoil0rgkvIFrcSYJwVlhnrE6tAZVEzg07vYvcoITSn7MTiAcqXjtMiDsydSh6D8moBl HDIHgTdTJuispkf63BJfMIIWqGqvlybQOnjAhWq4kUwrB4mORD9pwjENsP9+mCwFEj05AoKeZt1 gBExc4sYn98d4lkzYzGPW1Dtsl9GGzC7iuul91HZ5EhNUQGmy06U+z9U0FZXwLPNYQpmJOtIFtN c9/7RMEuIK3fku3nuLLytsV6PxoKKDgibT+SEpFrgfOk= X-Received: by 2002:a05:6a00:218e:b0:81c:717b:9d35 with SMTP id d2e1a72fcca58-823ab6be188mr12337622b3a.28.1770055800044; Mon, 02 Feb 2026 10:10:00 -0800 (PST) X-Received: by 2002:a05:6a00:218e:b0:81c:717b:9d35 with SMTP id d2e1a72fcca58-823ab6be188mr12337588b3a.28.1770055799418; Mon, 02 Feb 2026 10:09:59 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.09.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:09:59 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 03/13] soc: qcom: geni-se: Introduce helper API for resource initialization Date: Mon, 2 Feb 2026 23:39:12 +0530 Message-Id: <20260202180922.1692428-4-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=Xb6EDY55 c=1 sm=1 tr=0 ts=6980e879 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=OYYzyx7XpuDNtx8IVW4A:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-ORIG-GUID: eKK1iKMXqtSnwKv5xZpOHEuzwwr3YaEz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX4eTluHl/6hOR SK7lwbmfQ6VBGlH7Iux+p7OS/cUEwdTdWc4L1AH6/hMI7KKmFCG7SnTXoFuhzwsTcaX2MSOxrhA qSf3zmHsX/jI7TDQccxSjKFDEyzraTYNMdVgkO9cmVU8fUGcVRkQUplnaxLcUXVpvoQ+ytoaMZG IBMlMCWlbtgDesaU7Rw2qE5iJegN3SOZMfNDn+Jog7cJb6OARpTS6b8I2cxevnyxptyNPe3xCuB kd3tXeHRnHqlxOuf107KifpCg1HW/IOUOu5POt+VwvZGsCUyCo7fM8ZtgtMpS6eCq3MGTfgm3N1 euyaKOA2zLwo5aNxdL61+6hZPiecEMLpQkVhVkTP9m1EqNWzNQjhXT4hqqpeh2w/DDuyWVDy26S JmlnjJ+0D+zGmNIAq6D9G1FeBdY58av8mGS1nq4g9HfWIABeAQ1+fTz5ugtTMFeP8RIEatENBXk Dw2tK9iihQkKgm+Y1eA== X-Proofpoint-GUID: eKK1iKMXqtSnwKv5xZpOHEuzwwr3YaEz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 lowpriorityscore=0 phishscore=0 adultscore=0 suspectscore=0 bulkscore=0 impostorscore=0 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 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 Reviewed-by: Konrad Dybcio --- v1 -> v2: From kernel test robot - Updated proper return value for devm_pm_opp_set_clkname() --- drivers/soc/qcom/qcom-geni-se.c | 47 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 6 ++++ 2 files changed, 53 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index b0542f836453..75e722cd1a94 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -19,6 +19,7 @@ #include #include #include +#include #include =20 /** @@ -1012,6 +1013,52 @@ int geni_icc_disable(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_disable); =20 +/** + * geni_se_resources_init() - Initialize resources for a GENI SE device. + * @se: Pointer to the geni_se structure representing the GENI SE device. + * + * This function initializes various resources required by the GENI Serial= Engine + * (SE) device, including clock resources (core and SE clocks), interconne= ct + * paths for communication. + * It retrieves optional and mandatory clock resources, adds an OF-based + * operating performance point (OPP) table, and sets up interconnect paths + * with default bandwidths. The function also sets a flag (`has_opp`) to + * indicate whether OPP support is available for the device. + * + * Return: 0 on success, or a negative errno on failure. + */ +int geni_se_resources_init(struct geni_se *se) +{ + int ret; + + se->core_clk =3D devm_clk_get_optional(se->dev, "core"); + if (IS_ERR(se->core_clk)) + return dev_err_probe(se->dev, PTR_ERR(se->core_clk), + "Failed to get optional core clk\n"); + + se->clk =3D devm_clk_get(se->dev, "se"); + if (IS_ERR(se->clk) && !has_acpi_companion(se->dev)) + return dev_err_probe(se->dev, PTR_ERR(se->clk), + "Failed to get SE clk\n"); + + ret =3D devm_pm_opp_set_clkname(se->dev, "se"); + if (ret) + return ret; + + ret =3D devm_pm_opp_of_add_table(se->dev); + if (ret && ret !=3D -ENODEV) + return dev_err_probe(se->dev, ret, "Failed to add OPP table\n"); + + se->has_opp =3D (ret =3D=3D 0); + + ret =3D geni_icc_get(se, "qup-memory"); + if (ret) + return ret; + + return geni_icc_set_bw_ab(se, GENI_DEFAULT_BW, GENI_DEFAULT_BW, GENI_DEFA= ULT_BW); +} +EXPORT_SYMBOL_GPL(geni_se_resources_init); + /** * geni_find_protocol_fw() - Locate and validate SE firmware for a protoco= l. * @dev: Pointer to the device structure. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 980aabea2157..c182dd0f0bde 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -60,18 +60,22 @@ struct geni_icc_path { * @dev: Pointer to the Serial Engine device * @wrapper: Pointer to the parent QUP Wrapper core * @clk: Handle to the core serial engine clock + * @core_clk: Auxiliary clock, which may be required by a protocol * @num_clk_levels: Number of valid clock levels in clk_perf_tbl * @clk_perf_tbl: Table of clock frequency input to serial engine clock * @icc_paths: Array of ICC paths for SE + * @has_opp: Indicates if OPP is supported */ struct geni_se { void __iomem *base; struct device *dev; struct geni_wrapper *wrapper; struct clk *clk; + struct clk *core_clk; unsigned int num_clk_levels; unsigned long *clk_perf_tbl; struct geni_icc_path icc_paths[3]; + bool has_opp; }; =20 /* Common SE registers */ @@ -535,6 +539,8 @@ int geni_icc_enable(struct geni_se *se); =20 int geni_icc_disable(struct geni_se *se); =20 +int geni_se_resources_init(struct geni_se *se); + int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); #endif #endif --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 858E738BF85 for ; Mon, 2 Feb 2026 18:10:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055810; cv=none; b=UGUbrrF/gqW3C8vOFYoWJq6uKYQjsIUVjqL4rEs947KI7YLgR5ATiIXG8abAAI4mdYFJQA3hnI7A3c/7E3M6h1vqMOwpxhc3LmkANq2FCixVLZ6rlUj8N6RYlxo84ABNg0lXMbNe5dMx3Kdt8fm0QWOduB8sLH+yoXytSpwCqRo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055810; c=relaxed/simple; bh=jI29xu22h/aOLZUcJch+Uw8kf8cbeFFY9Pk+gWe9Kig=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=F4SveaSnWDb9ls//vtJorIoctDmsFxtr2qOJxEFM1Ee5t7GiwNJCC8JSjnBrRT9SwXH14YteAocEzM7HESScEdJU3Bfdc189eZQiQz7+MENUUYeiz4WabbjdB4Ut14ssQCl5qYZzGxE6w77YKwwpNDbyqEIsxMCNbkeNhqVW+/M= 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=AFGdS8eP; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gtD/ALvP; 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="AFGdS8eP"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gtD/ALvP" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 612FlDFw3388084 for ; Mon, 2 Feb 2026 18:10:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=qe3vIqAk4Km 3Plesr4c+NFgSaiZDJPqNZPQYZwG4wuw=; b=AFGdS8eP37rD+sXQSFDnIkiieoI RGO9hMpu2rX1VsUB8eV5JtfkZ3ABWzot3jB35bcHWyhb2W/XpI3M4IOLr3vmrljk TnEbRmJXqK0G+ZU2VX4cssocaOSpasKbm0XBgHZydqjSglxjY6ikJPK6nC6NHAV8 1aHji5BXQOMbpTjSfiJqtKbgaJzd9npec/zY36mtzAE3ngTMJFa25FH1UUssk3Ru PYeDFU9Dsg/Emwq4VQ1zWn2f6Qftuk1luokMimIDiII60MlOa7g5P7unVDa/igUO 3dT7ycHKMIOMDYr/abTQZ2FUHUoOsCtu7WQTHBedTR9/CJcjZAJ7yr9AExw== 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 4c2xvbrfxw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:08 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-822426d21a8so8696233b3a.3 for ; Mon, 02 Feb 2026 10:10:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055807; x=1770660607; 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=qe3vIqAk4Km3Plesr4c+NFgSaiZDJPqNZPQYZwG4wuw=; b=gtD/ALvPdVVyFOIW5s8VWjijwxxNRXW6hta0oJi5+bBoSYcQiCLRwnzkm/OUsPHq9E VFZtiS90Tl3pmy3V6rabbYwJ53eivVy/PH0oQ1QYD61DTKJk0bsXZ/dcHd17AZtFjile nvUn3s7Strdo9aoHuzDOlB1XPKCYTrQIbj2WKaupiVtKbmh9VBk2b5qE836rFuWJiljF vOU6SYB96Aa1EqA5AWL+qUb93PuiHS73Si3qsEhvS4T6dmyuhfsae2q3+bmr1C34mRXb gxcApizvhQxHg4nd0e4kt3oZN5YhW640wpaPhpAHY3+1Qv7UB2MatmBRDSYCsQjyf8ng 2Dtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055807; x=1770660607; 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=qe3vIqAk4Km3Plesr4c+NFgSaiZDJPqNZPQYZwG4wuw=; b=jGHYmnY1uqM6ks3v59/b36+hu1VEf4mEQf6EVx4TpW5BhEXvCVM9N6sLL1QJUtP63d WpIbIkU0i5K5/jn/95zw6bgaTzqe8Z14nHqq1yBRutbYLEwTOUhAivn7FmoK+ootlODB Lgdsotqq6yd12W6DARkrcVFCc21lOtjkndjUDJctyPLIcFAusoq05tyGDMEBWWDPqEpj NPivTuVEyYvOwah1YkK/s00EakO3g3yTVXyYUWSEEbz7NumLWRPNIKlHkrbTA6ooWxqI Bd9HUI8uHaQi1u9IFNxUGmdXh6IRSRYJQ6JQHW53pBu/1KXfFSnqSI8PEQXBVW4TbUGU YKZQ== X-Forwarded-Encrypted: i=1; AJvYcCUIbO6O/2XjI1822Z828iJiZZdwcdn9bcns3Bv96t7rxF8x1fUFVKWlqFso18hvFr4p+FFMRBAGWrLpxKg=@vger.kernel.org X-Gm-Message-State: AOJu0Ywl4Atr9sMRmPzMM9cXByUlPljswsrs7VYHQQ5W7/7l4geUSR8/ 3fTp/Q+nDPl79T1heq41kBDoXyTtha1aAr3LCURqyZPwL5knmdThCjkN4QgUOBFsNH+qv6hD9cP kbyptJS0yVt5Ltwz2ntvey/f53lYnSKzj71sM2lNjl7NV4i5Z86lB6R0kMr4Y6dMknvM= X-Gm-Gg: AZuq6aJeDcmngAlay6SK57qo2ZMG+RxJMY2SRkIOQDNXeCdGyoDt9kHdPik+/tWjTjj SywgjDjLv2Wf67U/bKJipRGgBb/xuaO4u2V1esOelFuRsSX77IqHCQQ1Pg9JYAcmAo2mW8NIR88 HOL5CIjwlaVzcX4RDmTwqnH+ZBPFu2LKRHs6wI11lly2lUVrScC5NeskovQKZFspEIIBqrURGwd iqAovbwQe/KLo2oQEwSV+yyHKb8K/P6kzgqFDVll2vmvEUGVgeqL/bZ1GVh9XlB3tnrQwl0vnUM o+kDxfadQAVBB5lLMUV4qwN/6I+dW8G1qjU4r+iLOVWfHWn0z4tj9g3SdndqSA9qkoJGmNpZbXh GafReiZDb8fcl5kMIJQNbJm3enAs42WYDL8NzFSr4k8E= X-Received: by 2002:a05:6a00:2ea3:b0:823:1212:8e87 with SMTP id d2e1a72fcca58-823ab748a2amr10756612b3a.32.1770055807142; Mon, 02 Feb 2026 10:10:07 -0800 (PST) X-Received: by 2002:a05:6a00:2ea3:b0:823:1212:8e87 with SMTP id d2e1a72fcca58-823ab748a2amr10756572b3a.32.1770055806518; Mon, 02 Feb 2026 10:10:06 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:06 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 04/13] soc: qcom: geni-se: Handle core clk in geni_se_clks_off() and geni_se_clks_on() Date: Mon, 2 Feb 2026 23:39:13 +0530 Message-Id: <20260202180922.1692428-5-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-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: 0jP-s8_nI8Ge44XODHm79xzqDsdBUC5f X-Proofpoint-ORIG-GUID: 0jP-s8_nI8Ge44XODHm79xzqDsdBUC5f X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfXyZ1107owfaak CAajfAPPBx+lUSoOdvzHF/OI4AfbJypjB9X5av79CYi5hgA2IdNIRKOZ5E7qel0esF1rdVQQO2P m88SQwpJGTCktp09w1NZLSFPi7xDNNpzVG8OUbwZX6jXWnComDcnNsqE+DtXGltfiotDCdaa5u2 Map4oj97ruCa5UQKBe8DF7WfWvvmazYk0WLBHi/6Mi1NbNXGrRG7YLJXQwd8nN76YqrXruk5Bxn c/it36kmLu/AMIpvQkQ+oCqgFDjln6so+GQwkQeu7oDyRu6rqEK1X1WFoojPeEkj76YObRR+gnC RvtL4iY3RcsFtNCBRrbL1tW4Vl4BmI+Pqe1153mDIjxb3lo4Y1YuTFfyBkDmJLYoQqHcPjr3oRo CIZwpXo4McgVe+/zay49tYq5v/JnX/9ijoCQvX66NMuZ54SbhE2x/Csl1axoBJbD+bu+HChnzTk aXEy5xxOQcJHDb3BxVA== X-Authority-Analysis: v=2.4 cv=AurjHe9P c=1 sm=1 tr=0 ts=6980e880 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=fzsqq50RfsZR9heXkngA:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" Currently, core clk is handled individually in protocol drivers like the I2C driver. Move this clock management to the common clock APIs (geni_se_clks_on/off) that are already present in the common GENI SE driver to maintain consistency across all protocol drivers. Core clk is now properly managed alongside the other clocks (se->clk and wrapper clocks) in the fundamental clock control functions, eliminating the need for individual protocol drivers to handle this clock separately. Signed-off-by: Praveen Talari Reviewed-by: Konrad Dybcio --- drivers/soc/qcom/qcom-geni-se.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 75e722cd1a94..2e41595ff912 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -583,6 +583,7 @@ static void geni_se_clks_off(struct geni_se *se) =20 clk_disable_unprepare(se->clk); clk_bulk_disable_unprepare(wrapper->num_clks, wrapper->clks); + clk_disable_unprepare(se->core_clk); } =20 /** @@ -619,7 +620,18 @@ static int geni_se_clks_on(struct geni_se *se) =20 ret =3D clk_prepare_enable(se->clk); if (ret) - clk_bulk_disable_unprepare(wrapper->num_clks, wrapper->clks); + goto err_bulk_clks; + + ret =3D clk_prepare_enable(se->core_clk); + if (ret) + goto err_se_clk; + + return 0; + +err_se_clk: + clk_disable_unprepare(se->clk); +err_bulk_clks: + clk_bulk_disable_unprepare(wrapper->num_clks, wrapper->clks); return ret; } =20 --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 5D6A638BF78 for ; Mon, 2 Feb 2026 18:10:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055817; cv=none; b=bOfsO6kFyAXG+aTk+QQENGTKMJqt7gju2DyTCgqALcrXdjThR0XWiyg+ntrlnl/6WZqSuva2M2AabsLyq1rLKw1FSqBD//QYY4902uJTEFWYrdqpANNXSbOQKBf/K8uBqPbp20VirO2fdrPFw5k066SlgvkAnmqA7Oli78UP9fc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055817; c=relaxed/simple; bh=J7umZZmSfRhKY3LLRN7ouVyVhZ3rw+sE94EggIM4Izg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yt0A712OcYjsNyseBXotP317wK9zWlyeKMV12X+FaJcp4CTMUCldlpxTTtzASK9TqYwX15Wtmy0oVGceUmwmWU7AUkfKZ5yD5DVAjVPuGWs+Q0PN5rm4wUfWWvGFEHeN/GeGTpgPB34vcIhMgTDzZMjVgDNfPNIb4NQi0f689mM= 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=fushtLL9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=gfwSNIKL; 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="fushtLL9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="gfwSNIKL" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 612Fl5NF3387853 for ; Mon, 2 Feb 2026 18:10:15 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=dZlesKG7g2O 6ZF9+CCBwLzC2h/ppDaRw7tqwhdo9JsQ=; b=fushtLL9C46ac41xanwgl+JArFM j72b371Xuk34BWR/ztnsNEu5VbbRmbjtSl0BOi1rsmGmyPdFJ5W57uqgE2DLSy+d IcG0xtNGid+84vLhzpMdiMyvJ71hkLWh3cZftZmBCNNmpmiJSQR/EvfEKnfgQPEN 39BFMr+yP50jd3ADbVrWQ6S6+v4XDfLk3xMmD1LWRsOJyhcxg2dKiNzEsk/oZKM2 yor3XzTohEMtlMDZY/4Oh3WYnRgxh2qoqim9ub6qJyeoEQdCq34ycaA2e1jdj7K5 osFAZ6qJqFO+ly5xUdjTIDHg1hcDhsSp5wiZdP/Q9FgqzkDwGym2uSA09Kw== 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 4c2xvbrfya-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:15 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-822426d844aso9670b3a.0 for ; Mon, 02 Feb 2026 10:10:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055814; x=1770660614; 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=dZlesKG7g2O6ZF9+CCBwLzC2h/ppDaRw7tqwhdo9JsQ=; b=gfwSNIKLI8sa54EPy0B6V7XhdBF8BjqgACPTVEglBCA1m14cfxrk9CAAlGPtkPfEqC kuIc4zyZh4LJsIjGMcH3uvEQFfBhtezpvovUM89F+QhgzdWxFqx7b52XWbYRW/xP0wVb tHS/D1Jb3UaVJc0RVxipi+C8DlyhR8LrOSfk0DCMfTj4IrQQNbhxtFSO7GtF7KhFPHpC sYB9BExjO3G9eXn8Hg99/eRcrvXeT4kyOCQqJLs8G7hJqr8hbuURddZ0eQ4xgvZ++nPg 1vxR0aNN1ffamfObCoLY4POMVuQm3OBAZ7MthOz+9l+jlwA8VfjNYuqmcuQj9z7Tuwf9 Bdog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055814; x=1770660614; 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=dZlesKG7g2O6ZF9+CCBwLzC2h/ppDaRw7tqwhdo9JsQ=; b=P3w5bR3fjHUCStRwyyPVnm+La9yWHipdg5ux2P9qWOgW6Hv9SWDUo3kLKJI72P5Om3 AD7LXkfSLTuUxEki1CuSLNkKMp+5+ScUVAGM14gGbquLrrcdXR9lG+9Lm2/ies2U4/l/ MGmgm1LuUMi0JSPyQZkq7DPZHHxU0XcSVEAYVHB9J5c7Bc9sg6QikchTS4HTnqcj71jL jGxn+G4CeabsoqRaWQZzUcdCEZw8y5fBn0lvZni9q9jzo5RpPSanteFMyZQhVs0GiECT ceDwyEam1OxSkbbjeotq5PwslaR3fkjdZfNkT0Z9yE9oQBq31RUuSM5o52HqsnWzh8bB Bq+g== X-Forwarded-Encrypted: i=1; AJvYcCX3L8ik0LoZCvqa88WFcd0dMlORlyAAl0aPWtdD4jXIyeE/tFwIDz4QrNjyZDzNmhy/oMcqhXaljb249Ts=@vger.kernel.org X-Gm-Message-State: AOJu0YwzvX38rQOlUgn/eljgNcDPxKkzyikPCoNd20PNmOp9aRMkwPqf hqjY+aQvme2ktlfuz7/kSCQf7yPfaG0wqlGbLUxh0jApcG2mUwl5PwfeydyiQYY1vLa0FXxrS22 KkHqvkn6L6m+SfHIMMl8i5E4BdX2342ulV6M/RDgAk5853fqraFWYmBMmiFYBVxIYBMs= X-Gm-Gg: AZuq6aKtADykAZoNq9lAcDLaGMVRVK3GMgmfH4DBhLfigfzE2jDSGvCYle/V/W7vhVI bBTP6sjUWAasWfIBxUdf3Yqwi2jTZPDBFUEM98WogOPAP+8PIG+3gfo9tCKDxPWTH18NTEqwj8m 5X2PvEmRROvN8s8xaBU4MPOf+MuJdStoJgjurqzBsKjp1Qw6GZqqcP+S0y0WT1wwy85jtMqYNYr NDdY7B3x4cCX+A0ZSwlbsOGpZuQO69XiJBEoDqF8dqy30lLeWJAMiEEfcJd60OEZoNugzZoC0Z7 2inhOKNv2cXfidUNfPKYDr2lHVZazeXkNyDuD12uCHBCicpyxwXSLvpNYR4RGCbDj1DRCVikiqY so66eGB1aHMOo0Sboc3t+4KHi7rc9RH0XgN2nwTx19Ls= X-Received: by 2002:a05:6a00:3cd6:b0:81f:4e1c:1d3b with SMTP id d2e1a72fcca58-824042c6213mr237441b3a.23.1770055814200; Mon, 02 Feb 2026 10:10:14 -0800 (PST) X-Received: by 2002:a05:6a00:3cd6:b0:81f:4e1c:1d3b with SMTP id d2e1a72fcca58-824042c6213mr237412b3a.23.1770055813643; Mon, 02 Feb 2026 10:10:13 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:13 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 05/13] soc: qcom: geni-se: Add resources activation/deactivation helpers Date: Mon, 2 Feb 2026 23:39:14 +0530 Message-Id: <20260202180922.1692428-6-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-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: jPlKfDVI2HWgm4vYURz2AnXQZKDVLfIp X-Proofpoint-ORIG-GUID: jPlKfDVI2HWgm4vYURz2AnXQZKDVLfIp X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX7v+HcuG6g1iR 1N95uV9vkPLPy+6MpRH56BCQzea8g/2Y0GuZ47sWa5fHM2lV/AK9hZ6x1r/Ci0U+mVzIIovr8dg T8QDC3PBiRAaDCPGnhILYnruvcv+HPe+WqaH9lOQ+5T57I/Xz30CobvytzjmEUNKcwrmatjWLv/ 0JHiExRkC2mvQ7HQl72JVOGcRzCVWBc204hbby2yEBB0ttX5zR/2L+ubX4NqkkCg4TuW3hCemBn rqLum9DIOaV0lQsphbicKvWtmolLMyj9dnBakrWgMNxwmQBgZIBO40aAcN4YC/VARpfs4QPDp+c Ihb8WCD5BTZoUHOFIZxuBZuD72kWH0Vhd3lgNZOfBHQGuBx/XGUYpTteKXJu+6GqP/ZAJTEdgDL SpbEW26iWGRI2UO6iHSGmt6Um39y6cprmUHhmdyV41tc9A6Z3OzMLlF8OdRQszWFbZze1FvfFld MiwiPUocmelKVcXiBpw== X-Authority-Analysis: v=2.4 cv=AurjHe9P c=1 sm=1 tr=0 ts=6980e887 cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A: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.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 suspectscore=0 phishscore=0 adultscore=0 malwarescore=0 priorityscore=1501 impostorscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 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 --- v3 -> v4 Konrad - Removed core clk. v2 -> v3 - Added export symbol for new APIs. v1 -> v2 Bjorn - Updated commit message based code changes. - Removed geni_se_resource_state() API. - Utilized code snippet from geni_se_resources_off() --- drivers/soc/qcom/qcom-geni-se.c | 67 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++ 2 files changed, 71 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 2e41595ff912..17ab5bbeb621 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -1025,6 +1025,73 @@ int geni_icc_disable(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_disable); =20 +/** + * geni_se_resources_deactivate() - Deactivate GENI SE device resources + * @se: Pointer to the geni_se structure + * + * Deactivates device resources for power saving: OPP rate to 0, pin contr= ol + * to sleep state, turns off clocks, and disables interconnect. Skips ACPI= devices. + * + * Return: 0 on success, negative error code on failure + */ +int geni_se_resources_deactivate(struct geni_se *se) +{ + int ret; + + if (has_acpi_companion(se->dev)) + return 0; + + if (se->has_opp) + dev_pm_opp_set_rate(se->dev, 0); + + ret =3D pinctrl_pm_select_sleep_state(se->dev); + if (ret) + return ret; + + geni_se_clks_off(se); + + return geni_icc_disable(se); +} +EXPORT_SYMBOL_GPL(geni_se_resources_deactivate); + +/** + * geni_se_resources_activate() - Activate GENI SE device resources + * @se: Pointer to the geni_se structure + * + * Activates device resources for operation: enables interconnect, prepare= s clocks, + * and sets pin control to default state. Includes error cleanup. Skips AC= PI devices. + * + * Return: 0 on success, negative error code on failure + */ +int geni_se_resources_activate(struct geni_se *se) +{ + int ret; + + if (has_acpi_companion(se->dev)) + return 0; + + ret =3D geni_icc_enable(se); + if (ret) + return ret; + + ret =3D geni_se_clks_on(se); + if (ret) + goto out_icc_disable; + + ret =3D pinctrl_pm_select_default_state(se->dev); + if (ret) { + geni_se_clks_off(se); + goto out_icc_disable; + } + + return ret; + +out_icc_disable: + geni_icc_disable(se); + return ret; +} +EXPORT_SYMBOL_GPL(geni_se_resources_activate); + /** * geni_se_resources_init() - Initialize resources for a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index c182dd0f0bde..36a68149345c 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -541,6 +541,10 @@ int geni_icc_disable(struct geni_se *se); =20 int geni_se_resources_init(struct geni_se *se); =20 +int geni_se_resources_activate(struct geni_se *se); + +int geni_se_resources_deactivate(struct geni_se *se); + int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); #endif #endif --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 9681638E108 for ; Mon, 2 Feb 2026 18:10:23 +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=1770055825; cv=none; b=tc3jlTDOmCZPwKGu0S/QGFDsM+Dd215VUCBV3HeK1b8qZjizydLa1HkMLxZl9hXcmq7fBZqeiw81t//O0Oadm5mAs5nJhaZGu6l4ZQKjQwki1gJ4taZd4sxmoFP1YmOCE99YbWzA/zCzAtj53tQpzVpDFxubSTMb9+Rzt6cOS8w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055825; c=relaxed/simple; bh=Ca7dUrycfmQSIy3bhmc2ircfbQn7cqmMeOtkOf+AclE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=m6ScjH/GxUiqLbio67hO4DNUTdh5m5k/s3lxMKntd4A0MM6abssb4nok3oaAMzJOtQO2G78Y7X+HnVpsb0lhyr0SIf5q8afxW7PSr/EeFahlh9ff5CiV6nsp+39Zgafb4jepp4CzcoXrXLA9nO2HGXDOguR77wx4ki+D8R+R+cI= 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=ZULst0HF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cG6zv38J; 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="ZULst0HF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cG6zv38J" Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 612B0MiO2899912 for ; Mon, 2 Feb 2026 18:10:22 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=LxiuI5+/w1m 8/5Ddt8uPvaeMtlwMfkEvGlJMXIthprs=; b=ZULst0HF+q0UmDswXLZ0oR0Q8ej MxXSLAabYMthDy9H+faB9n0Y1FH2GVwOxPooOIc9QakR28/Q3L9yFPG08L9Nw2Ge 66NIcJwB0ESgP0LPuILv6kQO+OPMw+9JeEOxLt9YrarUgIOR1fy4XrHyZVqO2z+g DoqFeJTc27TsXag/iEh3BCBmlYLYeHd6H+apO3XZe5to6d9y6bPrQFUjTms8aR1q Uz98B/Dh5VEHhCgOr5C6nzQe/f+JxNscp2WI2qI0UXziiHCBDY6t45C0xw9f/JPe l99Kj83r2b2XO5DUsfias2sVYyUqK7BVx67J3OQIYajpqeNMIdHig/vBHmA== Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c2tp0sa9f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:22 +0000 (GMT) Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b630753cc38so9469626a12.1 for ; Mon, 02 Feb 2026 10:10:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055821; x=1770660621; 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=LxiuI5+/w1m8/5Ddt8uPvaeMtlwMfkEvGlJMXIthprs=; b=cG6zv38J2KO9MNNldnpMv7m7S9ZZTNCElzk6rteknYeAoMwfMZ0z/qq7V1DuHAk+ES qN+y7OPCVc53bO51mQN4bG7H4BY8PxJndqnnULz6L7GOedY7oIJz2y2nSvtqqiN5zV6r nDn/Z4YbFgfw+4BgMBTReU5BtsEOIfpLYI4m46Cg5DfAe5KBXyC7s/wH4R6GtiUDTVi0 t0iStmnoZLYqF/S9LrRuajY/fTq2NY7V8xw72xT4TneJlo8Va9SM/F0sjCsADTnR1iA/ JlmtbyadcI8/cW6/S7n3o9YJB3VJpHsxcRmVd02zSZtNeSqQLn5dKf91PwJKwJuxK9Au 43xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055821; x=1770660621; 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=LxiuI5+/w1m8/5Ddt8uPvaeMtlwMfkEvGlJMXIthprs=; b=G3YXfs6PnmmANUCoGWsyLn/TVkiFEE486xM9+gUDX16Fjzkgrcd2U4m1YNjUxR75gb rLd0d51D0Uo8aFDqywE1jOaLePyjeWlSv3M+mCTMJWR4XK/gl+gTrHH8Gbsi8l50nHX+ maTOuHImG9h5q75pcqqwpL1JNPiMNvihPaJIQUzxe4/0HCMfBQbpycnQbQAiCiqdNtEm 312FmelpxNufd7s1GzNq6UmslZ4O7/J/BR6B7TwiyvukZ2OeKCozETQeTDvH456jSwg+ 0m44cqLOo+DJFkAkevrGGYoerYmfGBRw+wC6Y1cnbEzoqTtTWYeDvPjATj0ZX1+bvJeI QuzQ== X-Forwarded-Encrypted: i=1; AJvYcCXgrx+HM0zzYdK8dIdp2B8MTCCo+CosPuNTfHW1wBBEkUo82TzWQPqzpOSIdFmwqV+nioOKiweuNxCyQts=@vger.kernel.org X-Gm-Message-State: AOJu0YwZluZHHR5od/o2Ke3rDKe3QkpBCoJwWEgisFCuy38ulhA7Juuk lu4iMFzCRuTVNdWvuezXDA4igPTHveuNiYxcBsXI1Gvs/z+jL3UELz4eYqZvHl+gz2rSRhkQOJk JaRI/nU7YtQ28XNzes0efdPNjXnGvCvnhw3uvcP4iRxoIW4RwIVcPvlCXjAdSBdHcxrk= X-Gm-Gg: AZuq6aKbMCx7XRma2djSoEp9lPlYKXlsj7GudF4bHhd/iN+h4G6AR64yS+PmwqYB1OF 5FWj4V4dr0kiGLumWzAAcTSdIkovfb9yEi6JeiS5fKibwaqAI2SkKfVqQr5JWsxS/zmsZwVyewU q9K4zdkXUBnqMSvt9TxMAO4/4DTrIGZ8RtWgp8dpiJgxM0+8jZG4oqq70fBy1FTHaax933tIf1L D74ARLwSDKmMwP8KYiexLfJmNw1JDz/hDCdaXswVGb1ubSMvoaWTbc75uy4Qv3P92NKuujfZuWT zF/3qFZ702qmy2Z4ExExT8Gbvd0rX9GoHKl32kvAXpX0DbYF8gL6xmGSiLJP69w6Ki5SRuoQ+r1 u+2M+EDTKHaga+4RIvdVpjbljKArChX+pbm2pWuwNzLM= X-Received: by 2002:a05:6a00:94f3:b0:823:f51:192e with SMTP id d2e1a72fcca58-823ab756df4mr12339929b3a.51.1770055821198; Mon, 02 Feb 2026 10:10:21 -0800 (PST) X-Received: by 2002:a05:6a00:94f3:b0:823:f51:192e with SMTP id d2e1a72fcca58-823ab756df4mr12339898b3a.51.1770055820680; Mon, 02 Feb 2026 10:10:20 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:20 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 06/13] soc: qcom: geni-se: Introduce helper API for attaching power domains Date: Mon, 2 Feb 2026 23:39:15 +0530 Message-Id: <20260202180922.1692428-7-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: fGtyod1oeM5MyA8DEcJCGnzJK5D1LYdm X-Authority-Analysis: v=2.4 cv=VJ/QXtPX c=1 sm=1 tr=0 ts=6980e88e cx=c_pps a=rz3CxIlbcmazkYymdCej/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=WUWHbvwt6nHlCWk_UTEA:9 a=bFCP_H2QrGi7Okbo017w:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfXzqdcJXUGuGkW vm6jnqw5xVedN5AhgSckzdgv+FYTjcY/IfZDFjDL2DWGCIxVyHB/NUokWII/y3ys6hj3TP2u4EM tnV1EqiXl1oZj+Azxb9Y27Cj8CfEpTG1aabD4eJ4IwKBrKr/jl30lOoJIXQjr56GOTHVYn4/r5f vY2df9Gt5zkWlTp+sFpk6ATYZSd7D67/zLCbGwVIXUOeEUg3bIDoGJPwXu/vaOvrbsXIP0BijWo DkB8ZyZspg/iiv4v8LlzuV0I2ciWKcmayDIvipSxVbkWmY3M/XYw/ShYdcwIVByrwDVeizVqZrb COiafiRKVS0v7bLxDaTREPwtNccsE9W2uLDYFFNt78BuzUvsq/KbiooptvKJoxCYYu1xL9DT0tm yEc8ywvGhDpnWHRV+T08ISJGLdJR9NllTTYwIKszYwVwJjXqaLtu7m/kCfXJbJq6dlrDjfQS8nQ p2ziflw9iI79TfbM+MA== X-Proofpoint-GUID: fGtyod1oeM5MyA8DEcJCGnzJK5D1LYdm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 malwarescore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 phishscore=0 priorityscore=1501 impostorscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 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 --- v3->v4 Konrad - Updated function documentation --- drivers/soc/qcom/qcom-geni-se.c | 29 +++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++++ 2 files changed, 33 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 17ab5bbeb621..d80ae6c36582 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include =20 @@ -1092,6 +1093,34 @@ int geni_se_resources_activate(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_se_resources_activate); =20 +/** + * geni_se_domain_attach() - Attach power domains to a GENI SE device. + * @se: Pointer to the geni_se structure representing the GENI SE device. + * + * This function attaches the power domains ("power" and "perf") required + * in the SCMI auto-VM environment to the GENI Serial Engine device. It + * initializes se->pd_list with the attached domains. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_domain_attach(struct geni_se *se) +{ + struct dev_pm_domain_attach_data pd_data =3D { + .pd_flags =3D PD_FLAG_DEV_LINK_ON, + .pd_names =3D (const char*[]) { "power", "perf" }, + .num_pd_names =3D 2, + }; + int ret; + + ret =3D 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 Sat Feb 7 04:47:02 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 042EB387563 for ; Mon, 2 Feb 2026 18:10:29 +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=1770055831; cv=none; b=I4Mv4KwtfhWi7TIN4t++29m2mtTx9oJFo4uqXup/t/iHTDxmTT848ncOtUTY3c2Zwf/d7TMv70xvpLPX1z+YOR2eJOgBfvYJXU5999s7rNrT0KUHPYmH3SMSXFlEjBXGZPyuVFFmDr5JYkdzZzufkOuYh1d2QOMdX7L8fHzKW7A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055831; c=relaxed/simple; bh=u7ew6qh+piNDH+u5pZnf9q5xI6HsyRCZPq8Bi7+YzDQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=WZmt6VWDdkVc91JZAqydbDv609t1F1zLsw0ydXE3JtaQIJEsrpsjN3qY+62FRMzYY01CrFaAoOh1KEUqspdCo+ZJtI13ptnhcWx+T7zcrNtbrUELaCDb7LzmsGyEQp6n3qoScs5SigepiBhBQ1bjMwKgvABwIvIXKYcuiB/mv9Q= 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=O5xcBR0w; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DekVAvdZ; 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="O5xcBR0w"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DekVAvdZ" 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 612CoX2D1033417 for ; Mon, 2 Feb 2026 18:10:29 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=+hhRIcP4ObJ nfpPZ+yGg/UX1gYqSYL8XEGYmg5LvFnk=; b=O5xcBR0wAjBp3Dgl7D/JTcx3+Tu 8jQYYV7X4fhmhLqXdmGRQaIuEpaEe9ocqNvRaqJMISDYrfiVdd9Q0Wo3hsVYKdRk FzMVtBb2JWLjRKUVaJYceBX3Xz96tZUwm12TWGCK8BRL0JLHnNC7fvhO5l8DbI47 z6uadSfP/u3fOnJ8CwmGaQL66S2i1LljdlouXYlFzC/ObBPwxHxjpZqXhklsd0Hk 9ENcu6cg+AQCTeMrhrEi37cahB1RQUSIv4Mz1bh/d1lC6yhXAhn9MsTSHZRnQQwl ts64cmYa2zYIfp7lFGJ0B2WYaOkDSUr9Yx2Ft74xyf98Mj9gkcbI/nGYA9w== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c23h1m732-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:29 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2a0b7eb0a56so42918895ad.1 for ; Mon, 02 Feb 2026 10:10:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055829; x=1770660629; 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=+hhRIcP4ObJnfpPZ+yGg/UX1gYqSYL8XEGYmg5LvFnk=; b=DekVAvdZOtG5lks5y6Irvnrar7RFL5PdFD6RYdiAZxpIA6FJKrkPI59T4JN+XEnutX HT+UdCKfu6bbOUUdZ/QgzslirqeqBjT9MthihZu0zxvklReRF/rkjr1awl2fu7TBYbEC JZERvPNHL9xYGxVmUM/1uH1pP5oQlLxHwR0/ShI4GAx7+1HGN7Wz4REfKPoq2QW5MAkI ywA4olrQFRdIytcV7CY9hDKxB1UB/Fqo58MwXS9ahabePNnIlR5ha5RPErDSRSomnHj3 RPAPVgwzj65YswUkL8+jKNA9MT7qiz71RCqRdot0T7lZoPoFjQ7VX90xGXro0aNI/27+ rl6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055829; x=1770660629; 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=+hhRIcP4ObJnfpPZ+yGg/UX1gYqSYL8XEGYmg5LvFnk=; b=XzAAi3UoRgqpKt7ZL9sbQg8Cd8GomhY94rLxSQLxOrYBui1iTl0Csj3rcG1luvX5X5 f9peenO8+gfnQtNwARHGNmQELCXd72e2BeGC08cdcgAKqXGneZY5UMRgpF4sJSN4z3tP BLOsc0tDEwyP0E1HDL7aFd5/dxXXfWjKP1Z9v6MdvPnQK9ojG+Uc6+pe29H7ctf1RRw9 HG0PSm1RA/OMRcbx0/SFeQqIQVs7iYckwWBKaFiFx6YrYVH8AGteyS4XiXoZCIk7dxg0 H0DA73tCvEjtB64Ol7zJMZkVJDTkUS8fGbQo+8ZpUJcx3gLYYjE9EYczyMGttG1oAOmZ sAOQ== X-Forwarded-Encrypted: i=1; AJvYcCVtl0l5BX0guh6cwhh3iiCXNW9rqiPKhAu/qdJVdOAzhJ5ZD4Xu3HHi8r0Vsbo8jTZtjbvFlpRnoga6TO0=@vger.kernel.org X-Gm-Message-State: AOJu0Yww3GAx/hZhWDqPWZ42/n940T8emJnMNAT7hsjDg2yBgSICZkwa NBmakERUMzGGmfor53Bi02/3zx4TtGVmKb38dX5/O1kIdSvbWzVJ+irtClSKyYU6MDvA0367dDg YInIAuks9ztSsVwvcPiAeNUKao+kLRLrpsKX76BAskcOh02NBGp7e9ExjTSYqaN5AiqA= X-Gm-Gg: AZuq6aIUR4cc3nHSz6KoqIm15H2dg4v2+guBWaF9T43JqUQMHwT9tzCLErZyxM7YAx7 CEFG/SfWWNpK9OOR6uRqyVkBoBs1tHrQcLn41zSL6EL2eA/+KatD0XvhL2dIp4Ttz4+4/rQhoK+ w6wGzmMPJ47eQsUdiVl8fppRoqBgzxzZcfdaUCZtmzo3u29lE2C9jmcNaIMdMAsYM+3mpKYn3bQ ncYMMjPntYmOlAB09HXQnHmL9B9SC1Eax51sQ6+5PYTmfuNyFOCzRLs18lBGYMy7JxHFVfJ0DaX EEnkt1y7A0gCBybqSIoC/P3gQUlwJB7Z9ntvz0WzAhbQsNhzns1Cpzgtkixz+L+vAxpaJo0py6R sbv9+m598BwvniFNPo+dpoDj8/56+UPzwz/mq5rfukNo= X-Received: by 2002:a17:903:2c04:b0:269:8d1b:40c3 with SMTP id d9443c01a7336-2a8d7eaadd2mr123033505ad.12.1770055828491; Mon, 02 Feb 2026 10:10:28 -0800 (PST) X-Received: by 2002:a17:903:2c04:b0:269:8d1b:40c3 with SMTP id d9443c01a7336-2a8d7eaadd2mr123033035ad.12.1770055827918; Mon, 02 Feb 2026 10:10:27 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:27 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 07/13] soc: qcom: geni-se: Introduce helper APIs for performance control Date: Mon, 2 Feb 2026 23:39:16 +0530 Message-Id: <20260202180922.1692428-8-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-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: JoYPA72CUC3PvtGvgI2-IDCWFJKxfrEW X-Proofpoint-ORIG-GUID: JoYPA72CUC3PvtGvgI2-IDCWFJKxfrEW X-Authority-Analysis: v=2.4 cv=Fu8IPmrq c=1 sm=1 tr=0 ts=6980e895 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=NwCh5GMA9Nt760FYQHkA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfXy/TceV2Xklaa OSMESnDCmufG8Pe8exdmYHN5vYIfW6Y+5x8w2JVf9OA1/2PRiXk/WeigpCUdWeko6rPGPHoN259 LWolqFaX9iFtqRCyM3Scy/tFvJj4gj+qAAAWtd2PKoEoEV82YHIGBsNlqmK8dnoQhkB0181iJg+ ZRP47Xn8x6UXwDQgsl8UeXwrVNkncYDjOec4cFq5G2bisNQS2ul0bd0IbGufzT5m6CN7dTuA+rx NJkaA+ha0gmXPioz5u1NSbqNv5YUfhJMg7J4hJp5Wa+0PY7kaMIYGUlSUwOcGpm3YP/35IkVx6A LT+2D3aeA/DoiNS9Dtz32q+wKokaeqxrTPWldoqAAg64UD9bueM/kZK9c7I+aEMkcOqNmA16DEu nbpVxAaekCef2woYRTijUZxwzihnhBpa1xAm8Vf4wihIhPcW2y4R8e+NIUmULyPtojYQ9o4YmYa odYwLWlouspjv2cZTVA== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 suspectscore=0 bulkscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 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 d80ae6c36582..2241d1487031 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -282,6 +282,12 @@ struct se_fw_hdr { #define geni_setbits32(_addr, _v) writel(readl(_addr) | (_v), _addr) #define geni_clrbits32(_addr, _v) writel(readl(_addr) & ~(_v), _addr) =20 +enum domain_idx { + DOMAIN_IDX_POWER, + DOMAIN_IDX_PERF, + DOMAIN_IDX_MAX +}; + /** * geni_se_get_qup_hw_version() - Read the QUP wrapper Hardware version * @se: Pointer to the corresponding serial engine. @@ -1093,6 +1099,50 @@ int geni_se_resources_activate(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_se_resources_activate); =20 +/** + * geni_se_set_perf_level() - Set performance level for GENI SE. + * @se: Pointer to the struct geni_se instance. + * @level: The desired performance level. + * + * Sets the performance level by directly calling dev_pm_opp_set_level + * on the performance device associated with the SE. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_set_perf_level(struct geni_se *se, unsigned long level) +{ + return dev_pm_opp_set_level(se->pd_list->pd_devs[DOMAIN_IDX_PERF], level); +} +EXPORT_SYMBOL_GPL(geni_se_set_perf_level); + +/** + * geni_se_set_perf_opp() - Set performance OPP for GENI SE by frequency. + * @se: Pointer to the struct geni_se instance. + * @clk_freq: The requested clock frequency. + * + * Finds the nearest operating performance point (OPP) for the given + * clock frequency and applies it to the SE's performance device. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_set_perf_opp(struct geni_se *se, unsigned long clk_freq) +{ + struct device *perf_dev =3D se->pd_list->pd_devs[DOMAIN_IDX_PERF]; + struct dev_pm_opp *opp; + int ret; + + opp =3D dev_pm_opp_find_freq_floor(perf_dev, &clk_freq); + if (IS_ERR(opp)) { + dev_err(se->dev, "failed to find opp for freq %lu\n", clk_freq); + return PTR_ERR(opp); + } + + ret =3D dev_pm_opp_set_opp(perf_dev, opp); + dev_pm_opp_put(opp); + return ret; +} +EXPORT_SYMBOL_GPL(geni_se_set_perf_opp); + /** * geni_se_domain_attach() - Attach power domains to a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 5f75159c5531..c5e6ab85df09 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -550,5 +550,9 @@ int geni_se_resources_deactivate(struct geni_se *se); int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); =20 int geni_se_domain_attach(struct geni_se *se); + +int geni_se_set_perf_level(struct geni_se *se, unsigned long level); + +int geni_se_set_perf_opp(struct geni_se *se, unsigned long clk_freq); #endif #endif --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 ACFB538BF87 for ; Mon, 2 Feb 2026 18:10:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055838; cv=none; b=nRbz6TmAkzvquwPEA9bVPbPUKSq1li4Sb3qLQ6RK7T1t31ZOWyHW10LPmbWnoa8SjbHzj0sdNbstQYiCseBe1LsbH/KUMSm9onBjS+Q3q2dai8iiMqcFhywI31ypuLrIlU5+GoP6IIF7wW513aoO+5g1VYvwASeR1DrfIz1DRdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055838; c=relaxed/simple; bh=fLcHXdKV5/hDu2wr6i98ZasPwufFwNkdfF36wyuIx94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pFOdD/l7xG3qoMDT8s/h4N4Jpj2DepUVGZhCugb32PNT16BVqgWcsHgKHgrGwVp7G9x8XtQdYHmVb7no0wFYusj7XHQAtzqkxARXwz/qvLHEIpxWCoJX1AQ37f3s46clGegzdq9UB40CUt43Bs2z1moCDBeXi+NhCLE2QUaDdR8= 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=HpMNVcip; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Dbx1PYte; 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="HpMNVcip"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Dbx1PYte" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 612AP2IZ2101907 for ; Mon, 2 Feb 2026 18:10:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=cbpTgWXazdO AfAdL49uExcjxZu696DCuIHbDLPHFMMY=; b=HpMNVcipAqegOF32c3LLEcQmm6A ikQb5KQHhYJtQ77BXaQRlvhCPxNwDUqCXilM6IUZCqEDG5GMZkoWJA0gxtqRwVPG ZsPbkNogMdcikhN39j+CmVN/hCz8FiVOlWTCApMmwjgWkOf4FYnwpirsb9LrSDiA nxQI+UJT5GFL9GnKsW+MyPGYHTKEy9EvUopMwYlIjPrULqcgdOdvqgSSFBlEOue6 ZiO8XdxlsrF4G1pMJQ8T66CTXozSCVEnRfWBZdS/H7tVPa6u/SI6BNiTgiq8lIVr 0VbO5ZLmkivs5+lAjcAPbpI/sYFVFDPVqTtTK+16QlF6zcHCa2A6eYNCV0w== 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 4c2t5e9efg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:37 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-81e81fbbb8cso4567467b3a.3 for ; Mon, 02 Feb 2026 10:10:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055836; x=1770660636; 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=Dbx1PYteGR6wo5l4svG1lRs0cfZ9ouQ9uXnMHju/wXTTyFYEJFN3ktS3iFG8Gl61a/ ciWK3Zly2xWniEKgkh4re8GkpoaVZK1ySrMJVj68HBGRtE6YVv5fvmzsauUBdmofZJqd waP/Srk7iGFedQCJ1Sd/ozMOrhTk2FIeDWFWn99fnMTJXeVCtnz8DxGoH4mJDWMdSQiG mtUH2xBYlHLPrLJYRn0+33f8P6u2ejf9xSLX7vfVFVTyCubYucWSzq1S4fZm9xzxW00N e6FPpOkkWhw//DQ01CyMLUqeLuBxsFddXUMHvHpgQ2EsSdz1dqGenRBcZsAfwH+4w7Vx A/Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055836; x=1770660636; 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=umn16vX6+MpU0eGKyEjEar9RV2Q81miasIIIvHrC3feies3JJME8sV12NqOhDuaJcy 73MXEUNsVhEchR7C/XuERdvjW4NvS6gJKFAwv75CmL6aSsEPxyIhKtErojOiyXV4QsVl ckkbsRIP6BuMMzrebUFbBl13+DPYc5/ektnjis27PIGxpgVHIltjzhLla98jz+BjDxjL lc7CEdmIxEzJFJLQ2Igqs18opQb0Rwatn19eiUOreA0d0ah+ehYnu8tEaywMVFgfDEY7 G3xhZL/MJMeeZ1pMjneLSauV5I0Q0OGxRQC0TQeJ45EKEQ7lq8XZXovCXmCIoNfhVvj4 fhAg== X-Forwarded-Encrypted: i=1; AJvYcCWmxvTtKnKJ6hHPgJhgeq+xtIjYzqBNwSpd3eKWAKs1t7PEYsObH8gr3XiiBl8uYNU7BHdv+PSL6hrM73c=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5Fr2ivkSE3ZuLOdgRDb9sEW8WpaObQNohB5SNZI2EWdZlrE/0 g5Qs+fJrlVCqaG2Zi5S1LX6+geGYoVL4fqgYvIpgTREeS7wAzfP+4BrvLA2reeYGU5iEMFNAXeJ 0bUrE/6T8stFHvsb2fkk2R18o/8Seiv8uvb0i5M4p9mbPwM8UskPwq3w0I80OTILyjiY= X-Gm-Gg: AZuq6aJFjNnvT6jMNtwF+JR5YZUU3u7CAdzQBC9/QLvur7SRZB0dQq4BnMprSUdQBAP XIUiN1Yfy8DDvIeuTNUeoxIS4W0FPn1/4wluXgjj2IXlv4uPITdQPK/Dq5JpoAtP8GwE8AXtFXn MUpWi6bNK9sNSo3zGxe+GVIRJwriN/doVs3oPAHYIE2qszxqG5n/to+6ZTVyCZwgvfs36Hczt8d LubC3bkF6SaBfj+VCqjIzUFuY35bMH/OlUrKiScekOGFO4wbaurdol/CVxvp+hvDaF4AyeePQzT jcyaHLND6VVfGTvN/+VYI7pImdYnJcwhJMd6nLYYrG46ttXdCOlUy+h+FgM5cdDuAms6V0NtT0B acDQPDSxHDILLUgiA+obW/fCTKKUSASEWD3cF+bkfYto= X-Received: by 2002:a05:6a00:94f3:b0:7e8:4398:b360 with SMTP id d2e1a72fcca58-823ab748f55mr12083548b3a.51.1770055836399; Mon, 02 Feb 2026 10:10:36 -0800 (PST) X-Received: by 2002:a05:6a00:94f3:b0:7e8:4398:b360 with SMTP id d2e1a72fcca58-823ab748f55mr12083520b3a.51.1770055835816; Mon, 02 Feb 2026 10:10:35 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:35 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, Krzysztof Kozlowski , Nikunj Kela Subject: [PATCH v4 08/13] dt-bindings: i2c: Describe SA8255p Date: Mon, 2 Feb 2026 23:39:17 +0530 Message-Id: <20260202180922.1692428-9-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-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: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX6lkiQzoUmSEW ZsyaqiTlUpgivTCAOMy33Xy5hmwLgIokX9+/i5Ae2h1BQ99KfHub646N7U8mA0mCYsNVQLUs5AU huLp0AEE3y84hjoH5OpRZS6pSOqcCXeBSAmorYoFoTGPylESGroT4CJCLiMS/LStXfCXLJgPeur SYeFeHk8iHNXTyY4UVaOewhpMoWt771mFzeJ0I96UdnmZc6YC0hHo/o7G/zAO3pa9YGmP+6lvel rZF8Lm2KNyTF3HjvDnAneIx1wntzCN/q6Pat0MnqygJU5FLx4BGzwAGEWww7zeMg097i2DXj0Pz xCIAKyERl2318h6CxRieYEQ8LgTAP0u2fTlj7CnCrSS5sDmRv8A0/MSU9HVw29vnCPZoysNSApV T7rAf5cN0iBwZfmG8+JOgh/uiHVZUJTZqH4fuBTUqdR/h158BHxTpH1Xx4Ds+u3dvqHEc+oKi3b ep72D70EgqrWbOc5IfQ== X-Proofpoint-GUID: WBPEZqM31NBhJAAbaUmU-YMXcOt2_53l X-Authority-Analysis: v=2.4 cv=NOfYOk6g c=1 sm=1 tr=0 ts=6980e89d cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A: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-ORIG-GUID: WBPEZqM31NBhJAAbaUmU-YMXcOt2_53l X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 bulkscore=0 priorityscore=1501 suspectscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 clxscore=1015 malwarescore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" Add DT bindings for the QUP GENI I2C controller on sa8255p platforms. SA8255p platform abstracts resources such as clocks, interconnect and GPIO pins configuration in Firmware. SCMI power and perf protocol are utilized to request resource configurations. SA8255p platform does not require the Serial Engine (SE) common properties as the SE firmware is loaded and managed by the TrustZone (TZ) secure environment. Reviewed-by: Krzysztof Kozlowski Co-developed-by: Nikunj Kela Signed-off-by: Nikunj Kela Signed-off-by: Praveen Talari --- v2->v3: - Added Reviewed-by tag v1->v2: Krzysztof: - Added dma properties in example node - Removed minItems from power-domains property - Added in commit text about common property --- .../bindings/i2c/qcom,sa8255p-geni-i2c.yaml | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni= -i2c.yaml diff --git a/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.ya= ml b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml new file mode 100644 index 000000000000..a61e40b5cbc1 --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml @@ -0,0 +1,64 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/i2c/qcom,sa8255p-geni-i2c.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm SA8255p QUP GENI I2C Controller + +maintainers: + - Praveen Talari + +properties: + compatible: + const: qcom,sa8255p-geni-i2c + + reg: + maxItems: 1 + + dmas: + maxItems: 2 + + dma-names: + items: + - const: tx + - const: rx + + interrupts: + maxItems: 1 + + power-domains: + maxItems: 2 + + power-domain-names: + items: + - const: power + - const: perf + +required: + - compatible + - reg + - interrupts + - power-domains + +allOf: + - $ref: /schemas/i2c/i2c-controller.yaml# + +unevaluatedProperties: false + +examples: + - | + #include + #include + + i2c@a90000 { + compatible =3D "qcom,sa8255p-geni-i2c"; + reg =3D <0xa90000 0x4000>; + interrupts =3D ; + dmas =3D <&gpi_dma0 0 0 QCOM_GPI_I2C>, + <&gpi_dma0 1 0 QCOM_GPI_I2C>; + dma-names =3D "tx", "rx"; + power-domains =3D <&scmi0_pd 0>, <&scmi0_dvfs 0>; + power-domain-names =3D "power", "perf"; + }; +... --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 190F638BF84 for ; Mon, 2 Feb 2026 18:10:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055846; cv=none; b=mt+WOtgy0wNCuk/xmFi9c2FUFk6vAusRxP2QRSVjoqpu3J7BCeJ+qOWc0vmGP5iG4DXdaJkouWt988+CJmd7b3/xOksS9ypi/ZrAL9nuOLp100OACvkm47KAifCsgtYmF22XR8rSFl6lUA7XoGVRcwZba1iuMmWROqFwVoBffFY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055846; c=relaxed/simple; bh=L5bLTQa7zwHJTh1VWiuGpTOvZWKavJhytKPxRE0/sfo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ZLUI5AAt2WwiH6k4n7zSp46hNhPKgt1Bzh9D/06vxakSkVE1RkKqbl3WSqXl3OFzNgKtUidc3mZm/fo3mD7WkV/0V7AK9MPZpfb/8E/Do9ZyWLb4QVP4Q6KIL2KLosIhh5HGdJ05vzV/hRaVzatF4mE/CUmPBn3477FTUITzNKQ= 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=cPjz6/ly; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dkh1hJLB; 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="cPjz6/ly"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dkh1hJLB" 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 612B4F162848626 for ; Mon, 2 Feb 2026 18:10:44 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=qfXRkiX70F7 J+5IZZ9fYqWyzFFOmyuc1s3yJyTWwBI0=; b=cPjz6/lyQo6XcVKdg5PQSNYDnW6 naUaoWe4uMaUVLntsOzP4kW0XEzWdqJWbLNibqecm4dAAJelUV2+3UGhobHrph4s UR3PiPG43r7QNh1H0K5Auk6qW3sgpUJJsV66pvkxQFeXue+azRmqGv6AldMuW7GO 7+jd+2I4uP/nXaclc1iXLwUX7F5qDWRm12wFD4grt5fqgiV84uq8v6dUIxmgEVgm Evdzn2p3XAv7QasLmo+aqbdFNVZn4RAAnbT/QXLLOPx//MjWNY4JalA8bOppjmmg MyANJ/tvKVCsbR4VH8OjevNpfCIypysWD/2S/yhzONaU4p2cELNoYO+zafA== 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 4c2tqthc2b-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:44 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-81ed3e6b917so3930089b3a.1 for ; Mon, 02 Feb 2026 10:10:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055844; x=1770660644; 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=qfXRkiX70F7J+5IZZ9fYqWyzFFOmyuc1s3yJyTWwBI0=; b=dkh1hJLBVno0YTtYtmWv40Fgz7vrsPwKJhb2GNpvw+aZMgdXajYmN00M+2NZSiSLlX l3vqMQlPkv9fUXqPhDRQDfWjRww8VfzMglbIxO0GuhQdtDRHw4Mj2EDbV/gWWy8QdX18 uKTFYqVo7VjD8kmgLlhCPjV5XLuV4/U66uGigrd0gx+LVEFdInWefPHyWQMbw/OCbvxq OFeVgC4Rv7EwRO+SYbCLgMJX6C9UDHyWYNiFambw4uTtA8OocVFc+X5PvPmvw9qtBDoG H1JzMTZz+dqAJ+DpGQ36hLfZ0buV5Y2dfk+NQED6U3z1E5RufvNODlV0dI/eBNBM8Ead CUNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055844; x=1770660644; 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=qfXRkiX70F7J+5IZZ9fYqWyzFFOmyuc1s3yJyTWwBI0=; b=w0fzD43ismJYT3P0jjEdz41gVsI7UWyX+e+QoIllY2m9a8p8dRpiZTYGBUClRDcdsn zd5Qu6vAoStPjGQMUqEcSZyU+qX3d9gNfD6VoKPLuRpBhIRnjxn2cBa5VXE8Dy1IHjvD iwq8wBg42bHmQYBAIZwUqAAnMl/X3of2cfL1GrwjoC+JMim+a8ArLUDMPuu9H+i3KQ6E rlDA1smmusULHBR1ZyLkPLc/kYKRHlXeQdQklMmXTkoD6u6DizwEzSVhx+6nCH6KNqIk l96MhNzjailOK5Dix7yl1aGN/sD3HkFdrVTwU/a4vnBV/xX7zwqKScEhFZEdDIOIHJU2 5dwA== X-Forwarded-Encrypted: i=1; AJvYcCXLDOkdgPjAUsBMXgpOUKyFvjCFlZU4342+umGIgFYJoTWL4zIzm+YRAvdzKT29WjmTb7LVBe1OvXNrF9k=@vger.kernel.org X-Gm-Message-State: AOJu0YznJ3MuqMT0s/EHfhwd4TRCvvsG9fl0CrzZoOwGGBQhbQv300hJ FaoTWmtgQdYjfy+LxSPw+Cp62nuUlqDtU6w0R4VdoIpzdP1pu7jcQpFv+c8ahuTZXo54DkBlbio KoaSXy0G9CJvzDIwEpIW7q9eMkTe9aj+gm7Mn7nGrkKsEEsPRswLaJhLBdjVSyHYFssw= X-Gm-Gg: AZuq6aKM1OuC0L/gmdDnEVwbW2WPEL2Sk3JQ+vXCNwkUFqO0KJnSZNI7ldKOF24xuPA ze5hoiUqqVSPb4aDNTfja3OLDCpo0qlNJFsN8Qon9WOL2qxDZ4Olv3ctOAjwCTccmlmDMMSus3J isGMjViWUekNMd8Y2NrqEyhsb0jw6/9R21OrMjkFZvGOgEvBb7+hMEHU4f2Qgs+0Aqki71Xlh6y qBIeNEJt16rCazy6w3o9WUfQNx61Rf6S1+R3XrkXbqbYJVAD4WiE4XZpQ6Tlwwd/XG0PdEekgTh 7Hh0O/tUVzBUpAwdBHZQDufXDi1bbPnxT9JYS6u2gbA7FyWmPFtbIZiMEEyuSsx2VfnWQUZZC0p 0hp8xR6xo2aicGbKUUSxmupP/JHRHSOy23K+mc3AGStA= X-Received: by 2002:a05:6a00:12d4:b0:823:16e2:66db with SMTP id d2e1a72fcca58-823ab425e00mr13012363b3a.0.1770055843654; Mon, 02 Feb 2026 10:10:43 -0800 (PST) X-Received: by 2002:a05:6a00:12d4:b0:823:16e2:66db with SMTP id d2e1a72fcca58-823ab425e00mr13012330b3a.0.1770055843031; Mon, 02 Feb 2026 10:10:43 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:42 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 09/13] i2c: qcom-geni: Isolate serial engine setup Date: Mon, 2 Feb 2026 23:39:18 +0530 Message-Id: <20260202180922.1692428-10-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=XP89iAhE c=1 sm=1 tr=0 ts=6980e8a4 cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=6GPvvr__t7aM35KwLhsA:9 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-GUID: -lXguycvBa138X_jLaMCJBhSMoas6ytW X-Proofpoint-ORIG-GUID: -lXguycvBa138X_jLaMCJBhSMoas6ytW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX/2HZsq6Yk5Yi WgVeLWc4ASltqEvr2EO1h1K4s/hbtDQVpRFz74V4+3/0tgLFHrVCWQHy5Xi4KLHez3HavUHEZ03 I7TuYgX3FiDp3tWwMovkBTEJ4lEtCojFqayQw3qGTRVmtOF2HSbS4PNGIgVrn3dRafLpMqZR0yw jJoAMHJOxbzHGbPMwbnEf66zw9wVTAQK5NiSpN1gIQOO86Mwtg5PvwGKPE3TP3RPv38RErzoF0Y oIY/52JBD9SywlhDDtjOc7PFI3KkIcBREaS8QaeEmZ1WLzNnmMMxgQ8HbuAXkcSg/ITXFCC0fzv oh/BT6KkZXIkuLj0svmpZtXMvDFqPZvW6evaZpJPmcluISDUNOOA3cNSW8s6SEAq8VbnNVAFsuF RyF5Cg46OHrccTM+2dPE25cTn0TDWGbLVFsFLL4EsQBB1H47CHBS/2BPQ/nIXBeR0Qfc0hwgfbO VRr4l1aGcGuueK7zufQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 adultscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" Moving the serial engine setup to geni_i2c_init() API for a cleaner probe function and utilizes the PM runtime API to control resources instead of direct clock-related APIs for better resource management. Enables reusability of the serial engine initialization like hibernation and deep sleep features where hardware context is lost. Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari Reviewed-by: Konrad Dybcio --- v3->v4: viken: - Added Acked-by tag - Removed extra space before invoke of geni_i2c_init(). v1->v2: Bjorn: - Updated commit text. --- drivers/i2c/busses/i2c-qcom-geni.c | 158 ++++++++++++++--------------- 1 file changed, 75 insertions(+), 83 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index ae609bdd2ec4..81ed1596ac9f 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -977,10 +977,77 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_init(struct geni_i2c_dev *gi2c) +{ + const struct geni_i2c_desc *desc =3D NULL; + u32 proto, tx_depth; + bool fifo_disable; + int ret; + + ret =3D pm_runtime_resume_and_get(gi2c->se.dev); + if (ret < 0) { + dev_err(gi2c->se.dev, "error turning on device :%d\n", ret); + return ret; + } + + proto =3D geni_se_read_proto(&gi2c->se); + if (proto =3D=3D GENI_SE_INVALID_PROTO) { + ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); + if (ret) { + dev_err_probe(gi2c->se.dev, ret, "i2c firmware load failed ret: %d\n", = ret); + goto err; + } + } else if (proto !=3D GENI_SE_I2C) { + ret =3D dev_err_probe(gi2c->se.dev, -ENXIO, "Invalid proto %d\n", proto); + goto err; + } + + desc =3D device_get_match_data(gi2c->se.dev); + if (desc && desc->no_dma_support) { + fifo_disable =3D false; + gi2c->no_dma =3D true; + } else { + fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; + } + + if (fifo_disable) { + /* FIFO is disabled, so we can only use GPI DMA */ + gi2c->gpi_mode =3D true; + ret =3D setup_gpi_dma(gi2c); + if (ret) + goto err; + + dev_dbg(gi2c->se.dev, "Using GPI DMA mode for I2C\n"); + } else { + gi2c->gpi_mode =3D false; + tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); + + /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ + if (!tx_depth && desc) + tx_depth =3D desc->tx_fifo_depth; + + if (!tx_depth) { + ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, + "Invalid TX FIFO depth\n"); + goto err; + } + + gi2c->tx_wm =3D tx_depth - 1; + geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); + geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, + PACKING_BYTES_PW, true, true, true); + + dev_dbg(gi2c->se.dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); + } + +err: + pm_runtime_put(gi2c->se.dev); + return ret; +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; - u32 proto, tx_depth, fifo_disable; int ret; struct device *dev =3D &pdev->dev; const struct geni_i2c_desc *desc =3D NULL; @@ -1060,102 +1127,27 @@ static int geni_i2c_probe(struct platform_device *= pdev) if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->core_clk); - if (ret) - return ret; - - ret =3D geni_se_resources_on(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning on resources\n"); - goto err_clk; - } - proto =3D geni_se_read_proto(&gi2c->se); - if (proto =3D=3D GENI_SE_INVALID_PROTO) { - ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); - if (ret) { - dev_err_probe(dev, ret, "i2c firmware load failed ret: %d\n", ret); - goto err_resources; - } - } else if (proto !=3D GENI_SE_I2C) { - ret =3D dev_err_probe(dev, -ENXIO, "Invalid proto %d\n", proto); - goto err_resources; - } - - if (desc && desc->no_dma_support) { - fifo_disable =3D false; - gi2c->no_dma =3D true; - } else { - fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; - } - - if (fifo_disable) { - /* FIFO is disabled, so we can only use GPI DMA */ - gi2c->gpi_mode =3D true; - ret =3D setup_gpi_dma(gi2c); - if (ret) - goto err_resources; - - dev_dbg(dev, "Using GPI DMA mode for I2C\n"); - } else { - gi2c->gpi_mode =3D false; - tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); - - /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; - - if (!tx_depth) { - ret =3D dev_err_probe(dev, -EINVAL, - "Invalid TX FIFO depth\n"); - goto err_resources; - } - - gi2c->tx_wm =3D tx_depth - 1; - geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); - geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, - PACKING_BYTES_PW, true, true, true); - - dev_dbg(dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); - } - - clk_disable_unprepare(gi2c->core_clk); - ret =3D geni_se_resources_off(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning off resources\n"); - goto err_dma; - } - - ret =3D geni_icc_disable(&gi2c->se); - if (ret) - goto err_dma; - gi2c->suspended =3D 1; pm_runtime_set_suspended(gi2c->se.dev); pm_runtime_set_autosuspend_delay(gi2c->se.dev, I2C_AUTO_SUSPEND_DELAY); pm_runtime_use_autosuspend(gi2c->se.dev); pm_runtime_enable(gi2c->se.dev); =20 + ret =3D geni_i2c_init(gi2c); + if (ret < 0) { + pm_runtime_disable(gi2c->se.dev); + return ret; + } + ret =3D i2c_add_adapter(&gi2c->adap); if (ret) { dev_err_probe(dev, ret, "Error adding i2c adapter\n"); pm_runtime_disable(gi2c->se.dev); - goto err_dma; + return ret; } =20 dev_dbg(dev, "Geni-I2C adaptor successfully added\n"); =20 - return ret; - -err_resources: - geni_se_resources_off(&gi2c->se); -err_clk: - clk_disable_unprepare(gi2c->core_clk); - - return ret; - -err_dma: - release_gpi_dma(gi2c); - return ret; } =20 --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 0593D38E105 for ; Mon, 2 Feb 2026 18:10: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=1770055854; cv=none; b=OHhSdzh5aBDUheO4eCQNpLGDFi+qZW8hUwgQX4UH6+J2QZ11L5JdPKoW1X/P/qDYtpq0BFw3QBpMqaR76q+D4jTWTd2pb63pYjl7bk/y/Q3BWggUXWVwFAzeIrHYyuGyoFpqfknpbiprlvkJQpfT4lGFEP+FmtisY+3BhPz8ULY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055854; c=relaxed/simple; bh=q5H/RASP+JYgwH0bdr301c8q+Zkx+NKRl1umY8vHydU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=F144Ug2Hk2s4lmfUjQjrxB7CP18PwLnKf9mCqfNvlDW2hnkaVJpryUWI/7OYHIoEQTKz0DdgEBsznj3gwuIckoCCQRYpKtChwMJNg5P35fZjNwnaBIx3fcOmFTTAZQK3yUzJJtVkUHEcqnaSoXrXOZnzrLTBshH996TnkZYeAsE= 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=W6fU/XjN; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=S6WW7S0m; 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="W6fU/XjN"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="S6WW7S0m" 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 612CVVtM2357173 for ; Mon, 2 Feb 2026 18:10: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=xF2mxTu7XWu 0fOGjlOPA26q/bJtyJkxmS7bvT+KJNWM=; b=W6fU/XjN5BvbFLN6u8+4I24gyn9 EDEPOVlNpfV33c02eVNnxmo7yZmoaqQI73LC34gFZGULe3c8GKobbIbG04tcOUgs w3sPRHh7VUidFef5MILgmWE3S6RrppWfo1WaTaVK44ODs9zs1EluxeoJM6GhtT7u qbYluIZ0RPjudLA3NIEjGB/PeXsWa7813mr7L6lqDbKBMfWsnyDzLyss9DDv7b5g JwRQGTKbq1Dgw0oEmaf3TEpIM3tPJYeoxPo8dOj75D3VZVrfI0Z6gRyYTnh9Uezn h/Yg61nouDhcMY7GFBVXqbqfnSEaqn69F02hNt/joOA2E4EVwXTtKG8YwpA== 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 4c2v0m92kj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:52 +0000 (GMT) Received: by mail-pf1-f199.google.com with SMTP id d2e1a72fcca58-81ed3e6b917so3930175b3a.1 for ; Mon, 02 Feb 2026 10:10:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055851; x=1770660651; 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=xF2mxTu7XWu0fOGjlOPA26q/bJtyJkxmS7bvT+KJNWM=; b=S6WW7S0mjsdVLWoFk8MGC0X5zMTxzy02Re8GtmIqiadO94BKSzIj2H9PxW1JnpCUJY bomKtGi6F37olvgt+NC4JN917eYzuDU2WXLAK3mgwfKjTd+VK+LaZq1wVW9P96rM9ojN 7fZFJkMVn6X5cZuL58BOKJPb0ljAwDwaT8Vs402lnR3G81/UN7sNroYIoTULjQMy8o25 pclBjNdPJ0hxYEjfo486dUpF/gJBZ5lgSc0yFwQuhk0T95hFhvN20M0jEJnEq2261qOS 7yxJ047BA41DBFXKZxJZIXOlaO7Tebgs0KKkdMmkzHQn/3oa42Lb6qc5XwEecnbuAcgc /rjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055851; x=1770660651; 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=xF2mxTu7XWu0fOGjlOPA26q/bJtyJkxmS7bvT+KJNWM=; b=gklsf0W6B02HY53ZOsVexW/rn6JY2FO5xh1nsSkKgy9h7QoON7ns0IWNyf7zgeQCar flEvY6yCKfjffSTC5K+7J9NMLwqkV4h64X9mTaHSir3KXUQE062LcIIou4JMqyW5rsI7 EdvTFz4UMouPnkuj4XdtnUkCQk63qr0D1e7GB20xJLExJGLhkgkE2t8ZBwTSmQ/4hHYM XWwmfA5qvM6pfFt9A+Dilm+pMvEybM7zGOW6k4VT+G3cLL9oxbaRtx3aoWQlqdRosaQ+ QDe/YrfC11bmRNxP4SlL3UbbJq0VDaVT8Prr5QaEI/36HGLriHkt1rZiXtJtlwXw2wEf PU4w== X-Forwarded-Encrypted: i=1; AJvYcCU5WxnoBx4rkRaOd3ZzaH/WV6nUXesMeeFBlLAfL52GIPF1Eth7Iy8+YtT+3AO4OYzY6DB+5sz7WofYcqs=@vger.kernel.org X-Gm-Message-State: AOJu0YxHsYIFbcTFEcl+VylyZzYf6Vb/g0RM7dmYKRwFeIYWeDgIuf2I p+3KwwPGUb4IpaCyX32wBUMiz7u8DWc3htTr3jdCqYQ6Wq/jk4yr4KbpGspYeQ4ShNjBQM7mKco TlbBhkUNh38KJ/XA4d1YUfwPrI6xQuu8WLmW58wzfr8JUI5exH6r7phG980kguYkif2Y= X-Gm-Gg: AZuq6aIXmQcX1jkmpZswCbgCh8u6hyZdIwRtiLOl6l4uW12lQfHSRrNKOQXI5a5bp3t j0HTX+8g2Sm7FtNrmlN/W2SGpmzPbYzKdfU/uRxjPJWIJFKE9NvCmclNLmRgGyovP1FrZ7nhVyp V+B7VTgzpmBcI9K7H7tvx6+YuknYjrKtt02b+ps98Jiyw9ik5iVZQjQg7WdTW+q38LzdXYFolPl SsMIvrGruj94LpSKCrj1wvYKVo28aQ3C8Klrqt+3aSv4VP4l6+kWyVN7ApmCMCopwJPNDMqmSFN HnXUnCAVH5oK+6/ZqlU4r8kFdOB3ZgfXrc0PfPJ3k4vXo9hyGXk1ScUUgsQmmBht7K1qChERj1v 2tnbYXu9j3W+kZbroi8DOmelk7cx37y2cGJjmgz19S80= X-Received: by 2002:a05:6a00:1483:b0:823:3079:7c7 with SMTP id d2e1a72fcca58-823ab6964f0mr12400674b3a.29.1770055850915; Mon, 02 Feb 2026 10:10:50 -0800 (PST) X-Received: by 2002:a05:6a00:1483:b0:823:3079:7c7 with SMTP id d2e1a72fcca58-823ab6964f0mr12400626b3a.29.1770055850331; Mon, 02 Feb 2026 10:10:50 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:49 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 10/13] i2c: qcom-geni: Move resource initialization to separate function Date: Mon, 2 Feb 2026 23:39:19 +0530 Message-Id: <20260202180922.1692428-11-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=dceNHHXe c=1 sm=1 tr=0 ts=6980e8ac cx=c_pps a=WW5sKcV1LcKqjgzy2JUPuA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=V89BwkbFsXdiYDgkWuoA:9 a=OpyuDcXvxspvyRM73sMx:22 X-Proofpoint-GUID: uTgwd9plOfl_zCBX-z4sJA5HV0Hl9H1d X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfXyEswYJ3Y88Uj 1qPYzlogvKfHfr5PhbFantODpcpz6MudIu5OYyHrIbIqDIybl4+tsrfdv/ZgXVTA6bDRJIUlLEj QDAhQoz1OKB/u+v+7P37DpOOYUIgyNgCzQN4v7p659+AjPfLYoLO6DzGz6wbFKKJc6J/cL3Ue+j cXLoVQStQgfBJwkizLLiIVdp5seglO67XWYdWtMI4zSFzkn6+2Rm/Lo0k7Jr+BwJ8e1sAFwAORT OPKcsYmgvTHMf880jKeXN2HOeBRowX0Gh10NlNZd0q++HBk9QkRAZZEWVOniexnj8K2CA3K2QYX 41j8CsSPDwtf+JRL+CX0a/kPsgGaEJR689jxew/iJmp7UOvq89cj51OWhOApoh/ZymMKtkRhXhV yYz39CXsDSjt24joW0MMAEqsoTj/jHb4qdJhqyjnx6NLtRLfVXOKfAaMpO0rrExgfdtpspBCZq0 6kW8Gww6kjjDVBkud/g== X-Proofpoint-ORIG-GUID: uTgwd9plOfl_zCBX-z4sJA5HV0Hl9H1d X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 spamscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 impostorscore=0 adultscore=0 phishscore=0 bulkscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" Refactor the resource initialization in geni_i2c_probe() by introducing a new geni_i2c_resources_init() function and utilizing the common geni_se_resources_init() framework and clock frequency mapping, making the probe function cleaner. Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari Reviewed-by: Konrad Dybcio --- v3->v4: - Added Acked-by tag. 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 81ed1596ac9f..56eebefda75f 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -1045,6 +1045,23 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +{ + int ret; + + ret =3D geni_se_resources_init(&gi2c->se); + if (ret) + return ret; + + ret =3D geni_i2c_clk_map_idx(gi2c); + if (ret) + return dev_err_probe(gi2c->se.dev, ret, "Invalid clk frequency %d Hz\n", + gi2c->clk_freq_out); + + return geni_icc_set_bw_ab(&gi2c->se, GENI_DEFAULT_BW, GENI_DEFAULT_BW, + Bps_to_icc(gi2c->clk_freq_out)); +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; @@ -1064,16 +1081,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) =20 desc =3D device_get_match_data(&pdev->dev); =20 - if (desc && desc->has_core_clk) { - gi2c->core_clk =3D devm_clk_get(dev, "core"); - if (IS_ERR(gi2c->core_clk)) - return PTR_ERR(gi2c->core_clk); - } - - gi2c->se.clk =3D devm_clk_get(dev, "se"); - if (IS_ERR(gi2c->se.clk) && !has_acpi_companion(dev)) - return PTR_ERR(gi2c->se.clk); - ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); if (ret) { @@ -1088,16 +1095,15 @@ static int geni_i2c_probe(struct platform_device *p= dev) if (gi2c->irq < 0) return gi2c->irq; =20 - ret =3D geni_i2c_clk_map_idx(gi2c); - if (ret) - return dev_err_probe(dev, ret, "Invalid clk frequency %d Hz\n", - gi2c->clk_freq_out); - gi2c->adap.algo =3D &geni_i2c_algo; init_completion(&gi2c->done); spin_lock_init(&gi2c->lock); platform_set_drvdata(pdev, gi2c); =20 + ret =3D geni_i2c_resources_init(gi2c); + if (ret) + return ret; + /* Keep interrupts disabled initially to allow for low-power modes */ ret =3D devm_request_irq(dev, gi2c->irq, geni_i2c_irq, IRQF_NO_AUTOEN, dev_name(dev), gi2c); @@ -1110,23 +1116,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 Sat Feb 7 04:47:02 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 5869438BF81 for ; Mon, 2 Feb 2026 18:10:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055860; cv=none; b=T8tmtMWxJffRF2QHpDxY1K88ZXlddbikVJ8mhaG+vlXxt5Fvl1IX+Jbyvxfzr8q+7p5EhTf4QC/FgTpWurmHIh909vBK1ON35vHEseaSrAvMrluSUH820u/4FO6TeFY/ccOy7fFiqu9arEaaC7YmKeioyjIRUs8ua83ZQCMmgr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055860; c=relaxed/simple; bh=zqKO3UGvbDMJ+JT+t551VX1HZg/Yo97PDn3IZ5tzYGI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=W4az2RrUvLZ/umOgqhohSbqNGjac5izbVLM6Zbtvu7hlvqcXvOvbfkEKREU+BoRRQxUiz2dSTq/ktLUe8RyQ+Y/Vwg7xz5aKIQVBKXSXkl2sly2z/OXAIoaGwJQJa7t/GX5PgdSuRuRWiW7AwUbSfgZAHDU5h5iK3f7wX2ozEDw= 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=Ca28SlEW; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=asvA2l41; 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="Ca28SlEW"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="asvA2l41" 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 612Dr2oC1603985 for ; Mon, 2 Feb 2026 18:10:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=R+ngY54m3iC HtNRCdl+T64Wh2WWMDO3stultYRdrKfU=; b=Ca28SlEWBX3L+O/vmn+ZD0CPHmE WX8YwUV8J/1W5SHndye/wftlhDMue2A2a6G/qVWdkl16wkLB+qgX2mng6WBLmyVR tC/dYWQAMbLsi+xlEGamVZJ/+vbfdZhjqVGVCUV7AbOzi7xxeGqJz8CW7V5jPb1W JFVuKtFlPTFj41zPg9E52DJtHUyD+yEfab+UCSfkPZhtGU0V+Uuz6TIiLRGNVWgt urmRuyO6VNR9mCN57GzucqiGvAL/VP4tMqXae5mVjnKBVMitGxzedWl8Nm4Y8bBK FwYEMVPSAmZLfUci5a5rQwcPiykQQm4En92Z6MJBhblvi4CHJbyde/SbhsA== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c23h1m767-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:10:58 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c6133262e4eso2922080a12.2 for ; Mon, 02 Feb 2026 10:10:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055858; x=1770660658; 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=R+ngY54m3iCHtNRCdl+T64Wh2WWMDO3stultYRdrKfU=; b=asvA2l41LOawFHmCz/JZ7qxtpghLGVs6g9VwHDY2R4WcYwucw16FetXSCCHgBf7IYM Ln/ek0Xs2qCfjgRFQiBpvjj+NQWBIZIFYaojK41yRU0j8qLLPSMEFnusMOG+dqCOWK1q bONLV025qPmfyXwfGssKPptuWp+qTQU1MZkjIhDOkJT8a6kPrLMURo3vIJgUCMFPEkIK livChx8Zo4RF5U6cfaqJDtHtl4CFdOpq7vozRs4JtKaBNKeRbd8doPt+ayQpWk2bmgNw /OlC0cUS0n4XRK6rU80v66f1bvbacubHqQBnwwzG9+QJGy6+6t/Vnjc3ACbDBVHXQvQi YLsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055858; x=1770660658; 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=R+ngY54m3iCHtNRCdl+T64Wh2WWMDO3stultYRdrKfU=; b=oM1fPTRfvPx2YKJXlJ6EbGCUc4gAwjmjfoiW2mhrqkEskYpFJGFnAAq/bqQQFavJz/ p9ZSt9087tqeAXZ3wTQLhAtXjjpTSt64aW+tPByh+4F8GzShdvetCRfRRotjx7q9E6xX gXeqOQkqpcWE158U7tbjDAcDyg8ALdD5t7++JgOt/R9ihp/sgBDjQ1MKN4UtsnjEDpIl d10q/W0WT7QsDKAGGMnM6s4yNDSmWPN3rh1d77Ffi1aao3CHdXml3W96cdzkb+r2rMXH HhxFs2/miEQaVg9ml3Jz7vhIQwI/fvTripLGmTRgyTKcE1wjyH867qvRlPbeBoccF1xi XPMQ== X-Forwarded-Encrypted: i=1; AJvYcCUmbwDK4UvR+MVWNeWY+whmK03hRH81bHYyeweMj9CfEbD+srFkVHGEp9CB66pvRF5n0DhrFduggx3KdE4=@vger.kernel.org X-Gm-Message-State: AOJu0YzOHI8INrvVxX6uL2dCyE+bN5V6vhI4gFUAe3wpvsxQaJKDs0f4 yihVkPaoy89t+fKxkP3tCp0oseXaD3+gGPGCSv6Db2Sy3J87qc+KqSwqUCXf1ff/X22hj6fee6D 1VZK8mkA0wvvQ99c6DZqrLvNdm04fsmYj8dS+h2jZ+ixxwz5wtL0pd6N1XZOvpbEsBNo= X-Gm-Gg: AZuq6aKvNgY8XIka8Co/6HjaKMnY9RPW1b09+yKWk3FVwFMlmgMaSMB2D2ZQxtcVcvT mbbSGBozyu5lpJPZm/n+aGqTrXUE1Jt3+b4CqNPZXTTjEEaop6hl3l6fOWhrAZpVOGYk/Yw5+Mv n7lEKsUqwk7NGNKx5glPs2kW9T+ypsgaxXIZX0E5Jsdfcz4dB31XcLVT49YqMBhXAqwgITeGbNK oPmPT7lrzA8l1LvUUZAQihiwixxH87RdewZDMrxY0ikxEjwJeWhamijkNUU04QPendOPvOKlGLL DAqNXYzmpx8LlgvhAjczLkN3PsmJKqx5dtfO1dG8K+/Cui7S9Hw52xGPzve2r49gSsgYi2ZEUf9 JC0vFLNe5r1JTCToJ1GbfvjW4WbCnai43cJ7ADm5KLNM= X-Received: by 2002:a05:6a00:8d87:b0:81f:4346:6870 with SMTP id d2e1a72fcca58-823ab695dd1mr12685384b3a.28.1770055858041; Mon, 02 Feb 2026 10:10:58 -0800 (PST) X-Received: by 2002:a05:6a00:8d87:b0:81f:4346:6870 with SMTP id d2e1a72fcca58-823ab695dd1mr12685340b3a.28.1770055857462; Mon, 02 Feb 2026 10:10:57 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:10:57 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 11/13] i2c: qcom-geni: Use resources helper APIs in runtime PM functions Date: Mon, 2 Feb 2026 23:39:20 +0530 Message-Id: <20260202180922.1692428-12-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-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: mYw1uJz-YgliL2yl_QkzUT-DC5xoHEgX X-Proofpoint-ORIG-GUID: mYw1uJz-YgliL2yl_QkzUT-DC5xoHEgX X-Authority-Analysis: v=2.4 cv=Fu8IPmrq c=1 sm=1 tr=0 ts=6980e8b2 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=3PeDo36KSfG0vlEF63sA:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX0jEBqgnPHzlH VPiRZYrQJ7VS9zvaGahZu5sgMRYI0FQWS6VIz3RSFWKArjwRjVDGLYCq+GP3SMgIRxBESPyGCky qVmE5UZ9h41r3Y9KvRAc/it89go+xIhW+5r5MVC0+bL9MkTWWL6kODMUpJfoEEX6hMt9guWv3C9 oaUgJo/4OhW5CPfcNMBuimkAH3SSr8JRVJKSFsMvMNZ2x4CGlA2VFg6cOgd7N1eET4pC7KKWprR bhuRc3KuZWZkU3bfAxzw/T+kFyC6l6QAfAaycFTb0FcQGIdQ72/S8jTglJYm6b37/lbeL/no/SH +NnqVLD9tLfapgwmZXIY/dzi7O8wp0Qm4CsWwuOXbn85excNazNvUYWcnbc01OzZBEFIeByh/dZ j7NCWmz/HgLJFnjxBbQtkUKvAdUeOW2BodAR7oM8SYudvQRyCY/p7U+oWt/3j8ZlA34twGLxO86 KF7vxayJFomEwAuBR/A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 clxscore=1015 suspectscore=0 bulkscore=0 malwarescore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" To manage GENI serial engine resources during runtime power management, drivers currently need to call functions for ICC, clock, and SE resource operations in both suspend and resume paths, resulting in code duplication across drivers. The new geni_se_resources_activate() and geni_se_resources_deactivate() helper APIs addresses this issue by providing a streamlined method to enable or disable all resources based, thereby eliminating redundancy across drivers. Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari --- v3->v4: - Added Acked-by tag. v1->v2: Bjorn: - Remove geni_se_resources_state() API. - Used geni_se_resources_activate() and geni_se_resources_deactivate() to enable/disable resources. --- drivers/i2c/busses/i2c-qcom-geni.c | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 56eebefda75f..4ff84bb0fff5 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -1163,18 +1163,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) @@ -1182,28 +1179,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 Sat Feb 7 04:47:02 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 1E93838BF8A for ; Mon, 2 Feb 2026 18:11:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055868; cv=none; b=excFaphmBsemf2L4J+leriqM7jmiYiHcKKzhZJNOCmwUimJJRKtEjwIzZgb+mAjeMueQ+zq/8Ae3rWsMIFJC/ZG3WqUXyWlWQYNV9PzDxGSRad3a6RWRpGzYNTtrzLSdimw42ljaKyHAnADPic1SJZEi+acogtotYO+Gjc5KLc8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055868; c=relaxed/simple; bh=3SMHjc2ecO3ZsIa72BPVp9Bpao/OfW1pxkLdLc6z5u0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=gUa30U3h6xmrPYYaMKFUe8J5gnuMZL2qchPogdYMHexpjQm4tBYIjPNlwlCqDjjP+HAZpZnwXfJxitq/UBEsyxNgesItYxElei5k7YiFBzJO9kl1itRFjFFB1R9P2vWmH1fpu7+qZc35pOhbsvZcFuoRunf6xCi4eHnNZaZNDqg= 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=nuuxT3N7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZkPMeR7J; 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="nuuxT3N7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZkPMeR7J" 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 612B5KA03459099 for ; Mon, 2 Feb 2026 18:11: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=4NqPfSzCJyZ CNOJ4zQEPZXImjLY2n1KLr983fxqbnS0=; b=nuuxT3N7mY8UuBsIh9kAdK8vFPx cjxSoXNYOCLUCoTFN7/ezQnLK5Cb1kV3+BoDoYszYBkcu2EMUiJdcFAFKpOhB+5f nRXjx6oQZUIz8Dh2CdiyFiPuPlDAh2OcODLHfBw/NbtdSyx15h3REhZZuwb7sCX8 xSnW/x0WluoSa/f+IC6u2zdCJpnpvrJvq2BphlxH/KqtaPqMuKF8Spg++2a/Bl6o 1Ye2BpDnc+bRETJ1TpQ2aZygw4TcVhszx3iK2mtIpF98E4GsOgMcEnSnk6xa/lnk 6NsM/stLEDiV0NuOeS3Hv+qWJ+nNeduuFd75GCqwHCFBkMe9ahQ7UDj8Mfw== 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 4c2trbh9m7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:11:06 +0000 (GMT) Received: by mail-pf1-f200.google.com with SMTP id d2e1a72fcca58-81eef665b49so11379036b3a.0 for ; Mon, 02 Feb 2026 10:11:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055865; x=1770660665; 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=4NqPfSzCJyZCNOJ4zQEPZXImjLY2n1KLr983fxqbnS0=; b=ZkPMeR7JNFR34cEDgE9CUTVRuslNLhLEQsIk81Y/p2VapR7lLFaurT8GHU09CEeXL8 jJwcyGlU34SgX6yQAMMBEIudfHczIOStziSJlO2CZGt34H7oUTHiskWGmHqP0qwDvpGS Xyj6LJlprOS/3L3fueA1cr8/55ws1SP4VYtk30y+pyeGhoit0s+12bqRA6ZIsdFZc8zs Pp0fWxCMXc7Wsjw8QHuRLCMdlZzmi83WymaZutCu8YrCK306xN68JAXxxI66m/MxS96Y kXvB6IitEYuLt42wkYED7oq9F1VpvP82e0rXYyC9KWqTwj7c9T/GFl3ZNoTwKL84azME PeUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055865; x=1770660665; 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=4NqPfSzCJyZCNOJ4zQEPZXImjLY2n1KLr983fxqbnS0=; b=G7nmFgT/kc4A+SV2CmHb+VRytl3BA2jZ1ZUji9k8U2aZ1gD/QeX6D0efnITxKyB0N/ Ve7bFhI9eV0TXQrBWDqWcx+EfSjXgHcigQ+y9OE3cVFHwZQ+51hOzynCwhqavRlJje5n N10Kiqedg6SQldkti9FLqcafGascnJId2Y1adFPWZy3C4BwIyhcqzeo/miO7kZfmNimV W6UWRGfZl7LPx3ZQHk3dvuw3KHbUgUsl8KTxIb2EJ3BVsWSoOfSAmGa3RPZVHS7Keoh6 0ZQf03FEJ5r26DTniC379GCtJUMK8xkMPo3i6ejexBKSMxldxRFg7K/EZpj2zct4/P87 2c1Q== X-Forwarded-Encrypted: i=1; AJvYcCURVk0I6L92imrW7I9UPHcv98mBQMKozb1EZ6pGZyBeOFBplJN/oQ1aLJ515xqZpaXZXhkEZ57TVFg4ZyM=@vger.kernel.org X-Gm-Message-State: AOJu0YyD/mAHJyAwjCAOquI4Y/OyUKuaGJEOZNJCjEXBJRtLMPO/JMgF sg7uc4WEk8lV+4uoOnx6ULzwlHyWEcIpyoF/U6vSpuoYfXRPMXfn45y5m+FbZSouBfcZ5OjzNd4 EAl4PMQTgfTT/fsqnMnXc4D+daOQIG1wUPrMxXDz68GfpsvK40Rf2ubgvZBplbkMHch4= X-Gm-Gg: AZuq6aIPvVATHMmIDS0FVQARs+P+Bva+Bh/M7hclBzkux2ySquyf0506F9eZT8Ysj2s vGT/BWzlpZBhMP+697083zSEUN5QCQXkorOWRh55vBuelrdZ2QQd4vLRg11bGawzTCGzoQiIdIg rM2yOaWGpzWq9jWKdblt2UtlPiFkN12Hy7/SlM3bxMYB3Dpg4D510JN7z3GEDj+HB/s26UChd8x vKQySmDEupsSxPOGoI278BcY1o3VbdJMol4CGZLEplvJrdhWyVmvIRBJt97749xIHyzdaqW8/xr yQSdOqLgV5PVheWKDXfHgvXeaUj3v4r8AX3gTaEAIgIEk1XIzrkOB6rvoOLBwdS+yr0uT1WLFAH JTNRatXxjQ5r12Y+1xjJtcnJpQVZqitkx3Anu64aEC3M= X-Received: by 2002:a05:6a00:ab86:b0:81e:408e:47d2 with SMTP id d2e1a72fcca58-823ab86d255mr13358488b3a.53.1770055865144; Mon, 02 Feb 2026 10:11:05 -0800 (PST) X-Received: by 2002:a05:6a00:ab86:b0:81e:408e:47d2 with SMTP id d2e1a72fcca58-823ab86d255mr13358457b3a.53.1770055864649; Mon, 02 Feb 2026 10:11:04 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.10.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:11: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, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 12/13] i2c: qcom-geni: Store of_device_id data in driver private struct Date: Mon, 2 Feb 2026 23:39:21 +0530 Message-Id: <20260202180922.1692428-13-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: MVtJ_NphFcVUX9LUtX-ySet85AWYWLOe X-Authority-Analysis: v=2.4 cv=dcmNHHXe c=1 sm=1 tr=0 ts=6980e8ba cx=c_pps a=mDZGXZTwRPZaeRUbqKGCBw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=Ef8ydGj_N8gZK1mdt3cA:9 a=zc0IvFSfCIW2DFIPzwfm:22 X-Proofpoint-GUID: MVtJ_NphFcVUX9LUtX-ySet85AWYWLOe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX6GbglGFO1cAa Hjt5hwAE5IAGvpbKYT4KcIEFqHlLg8oSz7wfR2AQ3R/4RRCZaI7bXQInUQU8i5wjKpogQCGth/7 2o5huEUIVgQvF4ZJlU+LGzU2xX+U3g2GHxC+/gIICr0HlhXVBrE5UgbxAC28klPQloB7LsLDab7 HvvFIyJRsLu6K+T5etVY5jquf1+Oq50gjuT0A54Z5Yv30grHJZYw0IZqtPChtPzoYXfHkVresZ+ 0RXyf/J5jcjGkA+wWhgZf3Q3k+KSIfiOjSXddq6GpGPyJhbHo4BObs2cZj9ChgDM6AXy4iWxLnt mR15EjOvQIB+y00L4Me7q77rzujOfLOT76w/s/eblFrynE24R6Eo6r4co7MDOL36jXi2vgcaDeQ CDGaUbYoP+4kcUjWwwFV89ubJYj37ogj4WWzjo69vKAnIuHtSsw2/gxJ6XZvhsITM8wwEZ1WWf1 T6XiDp0dQI+G4E3rmWQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 impostorscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 suspectscore=0 clxscore=1015 priorityscore=1501 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" To avoid repeatedly fetching and checking platform data across various functions, store the struct of_device_id data directly in the i2c private structure. This change enhances code maintainability and reduces redundancy. Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari --- v3->v4 - Added Acked-by tag. Konrad - Removed icc_ddr from platfrom data struct --- drivers/i2c/busses/i2c-qcom-geni.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 4ff84bb0fff5..8fd62d659c2a 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -77,6 +77,12 @@ enum geni_i2c_err_code { #define XFER_TIMEOUT HZ #define RST_TIMEOUT HZ =20 +struct geni_i2c_desc { + bool has_core_clk; + bool no_dma_support; + unsigned int tx_fifo_depth; +}; + #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 =20 /** @@ -122,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 { @@ -979,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; @@ -1002,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; gi2c->no_dma =3D true; } else { @@ -1023,8 +1021,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, @@ -1067,7 +1065,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) @@ -1079,7 +1076,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); @@ -1218,15 +1215,16 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 +static const struct geni_i2c_desc geni_i2c =3D {}; + static const struct geni_i2c_desc i2c_master_hub =3D { .has_core_clk =3D true, - .icc_ddr =3D NULL, .no_dma_support =3D true, .tx_fifo_depth =3D 16, }; =20 static const struct of_device_id geni_i2c_dt_match[] =3D { - { .compatible =3D "qcom,geni-i2c" }, + { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, {} }; --=20 2.34.1 From nobody Sat Feb 7 04:47:02 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 865DF38BF8A for ; Mon, 2 Feb 2026 18:11:14 +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=1770055875; cv=none; b=OtWWHFV/r1vkTOFCNypD/4PV20u8/Vvl+Rn9+mY8SA0OBL5OT7QZAhprvthFxF6H3ktISuw0m4er4MdiYZc9JyaAuB09ihdxFndwbbnl6JnadNwisz2/lqKQQNW8EnpF4mprsx8crIoS0kyhNoDKzR4Um7T5ozZsj5Ah+rAiym0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770055875; c=relaxed/simple; bh=DPNtWNLTVP+6P5jhcLAx/PljFfhGLnY7YS6kOhJTTnQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=PNmmnovLEAqnfdM03BdbaEEJ4Vi//EXQg5L6xgPtRrhWhmP+shwWRJhaGQ75E+EBaVEv+6mBTX1w/DFpY/HEOwdimNAuAkd6vTsaKh+YHh3GQFNIDubjMYEOuJ/SHFHJ1Bg3y9vF8V/fqrcHshGaj+hNqUoLhpUsRJJr4yw9AKU= 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=I4G3lYw6; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=RLyZ0hGg; 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="I4G3lYw6"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="RLyZ0hGg" 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 612BAFsD3082678 for ; Mon, 2 Feb 2026 18:11: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=+zueoamhT95 ZEtnejExAs2CCJUW74T3ofLGNMnq2YoY=; b=I4G3lYw606NdMT2w8j/+K5Nn37l jfJ3N7EmxCYfdaKgQ082tHm8xoWRH4F4UUl3CYPnUokhA2M3VQnQtpoOe3uoWrZB j2YijPNZhjRU4wYDnwe76JTB9hamHcVhV5BrR5A8ZD0FlXp7iy0GlKC35MMjJ/KR 7H5qoPGMb91hDYl/of1ZgofcaTsKAiejb6XSY3MdBDpOF4qxuJae0wcSDjA+fac1 QtuF29kzXofCSKdOB1j8xr+klDYfu7FVuR5YxZmjo8qIflXCQ4I744m7QdhxqZtn KVhY+rGShoiLV8HtVXLmeQu6u+HcKh69jpZu17nMKgoKFMgyyPsmxJMkt4A== 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 4c2ttn1an1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Feb 2026 18:11:13 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-81fdfafe6e9so2055106b3a.2 for ; Mon, 02 Feb 2026 10:11:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770055873; x=1770660673; 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=+zueoamhT95ZEtnejExAs2CCJUW74T3ofLGNMnq2YoY=; b=RLyZ0hGgL9aZfbo3dARZEEIV3PC8sAl825BySTL5kYp0T+wVg4G9LJqW3+ZavycbaR efXeY4pMYY+/wLqy+eErk4LnQU4VzlzVKhMnRBV45vdR4Emv5vE3x0h4L6MYtLwD8WgV olkjE/nDM93cvr5HUPbIjOqjoherKexJIdYA44qyaw6+5jd5tdGFkOxtbnnWasd+1h0U FQ8KyaIHfV1OxsccJzVkDQpLiG151DaFs6CG8bZAKOJqwH2CVuUbh4RX+iS02jy3e20q BSwcURLbvfb5qiBEUGy639scvTQ+0TuetA7l3H+hxLjmrJOGebLs9oYQ2CHYJUGWpiuN 0oGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770055873; x=1770660673; 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=+zueoamhT95ZEtnejExAs2CCJUW74T3ofLGNMnq2YoY=; b=J5YtR/Oaot4/kQzSgGPoC04aSU4QmHoXhB3WKpRL+NDGkyS6xJ7bLjD+sWR6XsdLmv ixX37J2+PWTEzj0AjP5uOmnzi9bHVYJQS3SVY4642tZnO+nC6VkEYHilrzPJuh/RPFiC TOTr4VZSRfI2m1VEHKa65uQfRhlEurgywYRSu4YwrfXq/AHpN8wG5+cnlDgsieJG8Nlm +Aax5Qayp/pQ//xLc8UPvxYUrxkbNE8xAhXh2aHvhfmFJ+IYiPzGsO/mz4RYR9Hkgm5w IuPAkMgpwwtdJrovP4tkgbEV+iv3tkIPeNvrd2IM7+5lMoAgAwfpVoDoOvFsNiVPR6x1 eEqg== X-Forwarded-Encrypted: i=1; AJvYcCVeeCFE0RUW4+KqWiRh0c9epWTGAON35qngETW6bbCJv8Skq0KGOkQ23zqrTRBzPyLVtYDWgNyxQSTnPPc=@vger.kernel.org X-Gm-Message-State: AOJu0Ywrs2Y6W1ihzve8IBDBAYlvsLZNdbVQRAhF8hVcl+ldzy4ZNg2v 5LJOayTfd/zU1Yw+sCqIaXVSPHhdpkmunM/y1z5DnGxhcC34nRcGP1pdjp8S6jnS/UcmBdfhw6X aSf+n/HDM0b/oPvkrJIT5iCRpk/MkqtXnsWc0sea8YxnUrBCusHqwYC0jRYNI3mGlY00= X-Gm-Gg: AZuq6aJ+JosbZSEw80u4DkEgQg8KLfmreGLCIQUBC4RpPj2vdMTX5jwaVkuZtu+HFvb d1peEXQpZWhL7hoBLc4y/aGThElMMkeiwPANPEDeIcaErnWq+QvIwLON8vtU02nrAZaiAYgm12B m6/ZLh7ipCexoW8OMYwWZJmwYH4WO06TJbmhZBc7C6wD89uD2UPrP04cx8jlJwHmYYLaVCv9Ite cxnDQxOsQznFWYQUsgMM4l2Lk5/NdaHg1yop9VpafoHJN2TcIf15aOXIerk7I4tqtac1Qw9R3Tz H+GcbIWSgCqDFTMmOjQmdDEubKSToWf/H8qJAeN7roghFS6yRt5iS1zP9mWrbrWPtUxM55PPznK Sxaw5jn8qC2tHi9uded3HW+B4UXTdHHuNBmiBC4bT05c= X-Received: by 2002:a05:6a00:a201:b0:823:1491:da10 with SMTP id d2e1a72fcca58-823ab643b92mr11767842b3a.12.1770055872584; Mon, 02 Feb 2026 10:11:12 -0800 (PST) X-Received: by 2002:a05:6a00:a201:b0:823:1491:da10 with SMTP id d2e1a72fcca58-823ab643b92mr11767801b3a.12.1770055871972; Mon, 02 Feb 2026 10:11:11 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82379bfc712sm17476780b3a.40.2026.02.02.10.11.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Feb 2026 10:11: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, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com Subject: [PATCH v4 13/13] i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms Date: Mon, 2 Feb 2026 23:39:22 +0530 Message-Id: <20260202180922.1692428-14-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> References: <20260202180922.1692428-1-praveen.talari@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Analysis: v=2.4 cv=ANnNY0ku c=1 sm=1 tr=0 ts=6980e8c1 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=zgZzUwpPmSg69XYvEVoA:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjAyMDE0MiBTYWx0ZWRfX+lXRGTFuvaWr pgxi/fI9AT3PBlEmPVXGnXcZABop7b0ulQEDwIcb8dh6JsWV9pAavqrbT7/lKmPGq3mc9XVcdeR 8c1e+pL957FmFUmXgV+WTuGcjWM4fteyCCQ//c88gSij4VkKVSUC4j+cNbfJD3DYOOq88fWzS+L Voc/oeUPoKqiqeYicwIwptDeD/+//3TsqGXwbm37lvtOpWMu1VPYDq0YZbDnnQWbIiArzCLQKy+ CfSwKnUpwrvJiCVy+jS4EgHVUehyy2aqY05A0j5ZD5A9ZAKF+uAgPuePxxjBfv6C+dlWRB7mUbI DNEkUB6Bt6pNr0dQ6XI9zCAlxuIWlp515w4FjRF+WYWRapePmtPY6P/ZXBhgb3cqZ9v/OYu+LpA P+pr89vnS/DHfecTFmkpafkyr253TMr+JFtZe0LkYue4vRhnVu2htT6oMnli+KRx3yJEXt9i3y+ xvqyGmuZrxUwWvfKCVA== X-Proofpoint-GUID: WoKuVphfsRm6vRjVGQk7f9-o_dDo42GH X-Proofpoint-ORIG-GUID: WoKuVphfsRm6vRjVGQk7f9-o_dDo42GH X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-02_05,2026-02-02_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 bulkscore=0 spamscore=0 priorityscore=1501 impostorscore=0 phishscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602020142 Content-Type: text/plain; charset="utf-8" The Qualcomm automotive SA8255p SoC relies on firmware to configure platform resources, including clocks, interconnects and TLMM. The driver requests resources operations over SCMI using power and performance protocols. The SCMI power protocol enables or disables resources like clocks, interconnect paths, and TLMM (GPIOs) using runtime PM framework APIs, such as resume/suspend, to control power on/off. The SCMI performance protocol manages I2C frequency, with each frequency rate represented by a performance level. The driver uses geni_se_set_perf_opp() API to request the desired frequency rate.. As part of geni_se_set_perf_opp(), the OPP for the requested frequency is obtained using dev_pm_opp_find_freq_floor() and the performance level is set using dev_pm_opp_set_opp(). Acked-by: Viken Dadhaniya Signed-off-by: Praveen Talari --- v3->v4: - Added Acked-by tag. V1->v2: From kernel test robot: - Initialized ret to "0" in resume/suspend callbacks. Bjorn: - Used seperate APIs for the resouces enable/disable. --- drivers/i2c/busses/i2c-qcom-geni.c | 56 ++++++++++++++++++++++-------- 1 file changed, 42 insertions(+), 14 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 8fd62d659c2a..2ad31e412b96 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -81,6 +81,10 @@ struct geni_i2c_desc { bool has_core_clk; 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); @@ -1043,8 +1051,9 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 -static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +static int geni_i2c_resources_init(struct geni_se *se) { + struct geni_i2c_dev *gi2c =3D dev_get_drvdata(se->dev); int ret; =20 ret =3D geni_se_resources_init(&gi2c->se); @@ -1097,7 +1106,7 @@ static int geni_i2c_probe(struct platform_device *pde= v) spin_lock_init(&gi2c->lock); platform_set_drvdata(pdev, gi2c); =20 - ret =3D geni_i2c_resources_init(gi2c); + ret =3D gi2c->dev_data->resources_init(&gi2c->se); if (ret) return ret; =20 @@ -1156,15 +1165,17 @@ static void geni_i2c_shutdown(struct platform_devic= e *pdev) =20 static int __maybe_unused geni_i2c_runtime_suspend(struct device *dev) { - int ret; + int ret =3D 0; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 disable_irq(gi2c->irq); =20 - ret =3D geni_se_resources_deactivate(&gi2c->se); - if (ret) { - enable_irq(gi2c->irq); - return ret; + if (gi2c->dev_data->power_off) { + ret =3D gi2c->dev_data->power_off(&gi2c->se); + if (ret) { + enable_irq(gi2c->irq); + return ret; + } } =20 gi2c->suspended =3D 1; @@ -1173,12 +1184,14 @@ static int __maybe_unused geni_i2c_runtime_suspend(= struct device *dev) =20 static int __maybe_unused geni_i2c_runtime_resume(struct device *dev) { - int ret; + int ret =3D 0; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_se_resources_activate(&gi2c->se); - if (ret) - return ret; + if (gi2c->dev_data->power_on) { + ret =3D gi2c->dev_data->power_on(&gi2c->se); + if (ret) + return ret; + } =20 enable_irq(gi2c->irq); gi2c->suspended =3D 0; @@ -1215,17 +1228,32 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 -static const struct geni_i2c_desc geni_i2c =3D {}; +static const struct geni_i2c_desc geni_i2c =3D { + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_on =3D geni_se_resources_activate, + .power_off =3D geni_se_resources_deactivate, +}; =20 static const struct geni_i2c_desc i2c_master_hub =3D { .has_core_clk =3D true, .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