From nobody Tue Dec 2 01:05:45 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9634D29E113 for ; Sat, 22 Nov 2025 05:00:42 +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=1763787644; cv=none; b=WL+Up/bcm5UuGpaH+PVd9+jPQAlzaJxLz0P7CHZFvh7mFnp5I+qP1nW3lDcRN1ybonsWCHSiwtLT+vjc4Gikc9a9DY9cOBbFnxiB+hWgBZrZC1eXcfOr8mat0CgqVDk5m9BfHX+iaV47EHeQT0CCN2EDKG3PSTaJUWGtsbKa9Ks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787644; c=relaxed/simple; bh=cwIEc0HF5caawSt6gOxOI+pMExQY63TqviBqzRA+S28=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ejkMevqmKxu+Q+xTdR7Ahg3AuID7RnuvHr8XAGfNhftucep8C50y77VvVOGXjJs470EFn1SYc40xBVxgd4aAv8nUCZMqNL+wrZsqsqy8YxVhXVLRmI2+6SMcdmwTGvrplusYudnP+dFrgtd/AlT4yWzcH0KthUlIzvZFN6jkbg0= 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=Jtx8FVeM; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bk5dVVa/; 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="Jtx8FVeM"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bk5dVVa/" 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 5AM4Wxn01509954 for ; Sat, 22 Nov 2025 05:00:42 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=OykaP3QXAEq G4yI9kL9Noaj3OcsMMG9dgRdTlVS4bzE=; b=Jtx8FVeM4gSL3KVXYJA7rVkDVUX 4ovtx7+yA/0WZBL5xT4EuLcSQNCh8ChwYzfb16fpQjWE5RL6VJIH6x8SvPFgju7v cy/fxdGQVka/nHNME1A0L2XkCN+nMUeXVjes6VzCxgYIdQZyk3GOUGtsgi9JaXD4 XfRuo9bhe/T5Xp3Scqi87Gjy39J48Rcvx25+gRPxSrNvqStRadBuZsmXSJ3/Tk0i wu5galeIkVLy/clHi3PoFgL1jzwNJW4PFBjZyhKNtuSUbS3vmu9NBPQOw51m4zQh 6fkKZwuSPU0jmCoovmFwwionx0Y+fHOVbwDYbL+ubLi84pwhUPrm87Xuu0g== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak68dr198-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:00:41 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-29845b18d1aso63611935ad.1 for ; Fri, 21 Nov 2025 21:00:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787641; x=1764392441; 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=OykaP3QXAEqG4yI9kL9Noaj3OcsMMG9dgRdTlVS4bzE=; b=bk5dVVa/30F7K3qseNbgR69ybf5b8CLgH/ZaZ/T3+d3Tchaw2FeJHlNZtoSaCfTqrG 37XCdaR1nsKnqyUJcHymSk9frnmI9C4ocq/vStGbCFHjRRC8nfcyXx9r4I+aO+OdQwlp +A7z+YW5CgKB7dGHmPILulEkIlpO7ul3hC0AGnZBNR6uSp7qipBj+VylrKIvJ5UqTbHr 60Ao/TcVKCToE82lEIS8540e1aNrBJVAATJh93+H5D8RAVqqT3PwZ8etjCK6yO2TNdHd YTjbWKf5RBVApoqw/WUkOYkPQzNmoOuBUvWXr0Q9FBKuiseoEtbFOJSvB/lJUpJfXY0P 14MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787641; x=1764392441; 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=OykaP3QXAEqG4yI9kL9Noaj3OcsMMG9dgRdTlVS4bzE=; b=YyVXnHggf48cb/uOy77y5yV7a2wHHedQJfFPTk17qz1fYRA8XAY629ne+dU0xtxDOO J1BPUhx9glO3cC3RKsu9c1k0q8Ud9/mlERPV8GepFEeNFkfV2uBMUZBRRojLmYAn21O9 Ys84/rAL/mjy7vVjg7HRN0CkFWwRF0oHB1fDqRxI0gIeiRGymwoWLLvLIRdpaeKVIQz0 AUIoFbSmVqi98mH4W5DR+5Q0k+HE8VEGsnrIYcjRfGELBSp+NOtcrjHKO5jgG8xEluYX HzjeLTPwBAx/dCgAuQP+MKIKsbih626aE08maf3E+G/1HwiNR36+tSoBOJYzkB7i25tN 8pJw== X-Forwarded-Encrypted: i=1; AJvYcCWVUt8iB0f14/ozhwf/ykMS2s3msZ1ZSl0q3s91VnPhWHgbSYWPwDQt1ZEJgm+O8qRMTZQBs8pd7m6+bdQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxKR0uyR9gYvfogzJX3C23DtvQmpQVqWQ23nsJkzQrxP+L+JUga zrIJaVo+ZfVAXiARvkFQKuwMRn6ir53PDSdISxx6O37U+Mg+dHaBmDxouc5DX6QxvwxTJ21KzFM 4lAGiicKyxYQsNMw9eE1Waus5AbP/5WRXvB6ASeJ7nd4Q7LpQTRpkKKNF16hMFnEC2iM= X-Gm-Gg: ASbGncuOYh+hQZGByHPuxEIOzFs7yMDYfrgKC8zmaryit9YJsSXzHZE01c+2+yhPwBj /kgq6pbJw7FTMF4Xdlsg4pJvyLXK/noW5vKQgoi6U2kCXYj2kQY8eVzXN4ySOAkmksbd6e9039G 9Bwgi7u5t1f064YNejMhH2RThprWKuUrS2a1RMnIiD12xtPyktUWdiX3ugQizypfHHL3U6txiiT ZrhFQgSPeUQeLCXjv+/xE8guRcp9Blcbr4OEM+8v4Xf2p1QpUUhaYPkKzVFgV7dH+5fbuPlTQOw YDFf/8Z8+bbvKcak5OdHZHN76q0KUsg+E5fcLZg8kpf4PCL26Nyu+qtO8w2ukaJUD0afbdbmLMl K8Qw62PzNWaU4ZpAMtQudkXKNxvkaFS4LwgtIw3BfsFg= X-Received: by 2002:a17:902:ebc1:b0:27e:f018:d312 with SMTP id d9443c01a7336-29b6c3c71c1mr57439065ad.1.1763787641081; Fri, 21 Nov 2025 21:00:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IGzaJB3tETHFGPKwtS5H4CJ4sdq+g/8P4mFhp+moshcF5KdpfshYLuqDo5fwCI563FmZq1eIg== X-Received: by 2002:a17:902:ebc1:b0:27e:f018:d312 with SMTP id d9443c01a7336-29b6c3c71c1mr57438695ad.1.1763787640449; Fri, 21 Nov 2025 21:00:40 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.00.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:00:40 -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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com, Konrad Dybcio Subject: [PATCH v1 01/12] soc: qcom: geni-se: Refactor geni_icc_get() and make qup-memory ICC path optional Date: Sat, 22 Nov 2025 10:30:07 +0530 Message-Id: <20251122050018.283669-2-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfXyFnQh89K2MJV i/7YmdiPMuYg0AW3UCfvzFekx34GFuJaHw8XLGcfu77uFxtG8elNpofhN5tXaV3o3W+NtFYmUA1 CwYNgrBnATA2jsArLMe4Y0sUAHTigH2To0UZmKrza5cDpjWwamRf138WE0xsD6CspUwLfAfYuUs h9gc2uTEGlU6LHThql8llsIFB6w2asHVp68liVZIO0qveySEfxhYnV1a4ytuvFupxBOxFTHpTTa lRfMf7j7/7qj5H6SkemEWL00qasj5Oukll9ENa0ckc5zWRNLTDKS0m4zFXxw21mMwyd/K4q0WGL 3kEo2S6qLrpDbTUyMENg0pW4rurarIpFWVXyFyQ9I8lOQLuZXBTT1axCsnOy35XQksC4xoVQ7um 5Wyb5UEeurLw/C0qqebY4m2XiDIuKg== X-Proofpoint-GUID: OkovylZrqQnNBgdHUf2gvG153E30ZAwf X-Proofpoint-ORIG-GUID: OkovylZrqQnNBgdHUf2gvG153E30ZAwf X-Authority-Analysis: v=2.4 cv=UsBu9uwB c=1 sm=1 tr=0 ts=69214379 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=GTpMjWLy6HWSKpZSgkwA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 adultscore=0 priorityscore=1501 impostorscore=0 phishscore=0 suspectscore=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-2510240001 definitions=main-2511220037 Content-Type: text/plain; charset="utf-8" Refactor the geni_icc_get() function to replace the loop-based ICC path initialization with explicit handling of each interconnect path. This improves code readability and allows for different error handling per path type. The "qup-core" and "qup-config" paths remain mandatory, while "qup-memory" is now optional and skipped if not defined in DT. Co-developed-by: Konrad Dybcio Signed-off-by: Konrad Dybcio Signed-off-by: Praveen Talari --- 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 Tue Dec 2 01:05:45 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9584D298CB2 for ; Sat, 22 Nov 2025 05:00:50 +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=1763787652; cv=none; b=LvhxARV4kpBZoOPviKzT/rn+5MGM7fAB6gH3J7Tdh8+9WrPrNoWbC1tKQZ+Qp8lG7u+MQhXwq6OS0QiDP5rzaoW0FKLj38fuzBTF5Tuze0dGWec6pU19I90rvU2pycT32ipAxrw5cTAUyVzhcWQVW+wCD0alaVIfOtawgQJu9kY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787652; c=relaxed/simple; bh=85mnIBih5TefJNp/bHk7qTk7tspz31Q1DwJ4d0ufNMs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=lvAN+7SUzG7CGvFyAHinsP6W6fUq4D4E8NTSRXS41MDpfLc7JBhBjdfshBEx4mkhENBQPwR/hSpJ97KVxcUPP9hKJrpaRhVelhnHeH6I7tb2DfTNqu9Yz+xvfWKWe+T/RIi0gVj1oKnhi7FT7ulSiuZAuyjriqSrcteTbrlNDrc= 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=GyOkEpo9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HMGk6iL1; 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="GyOkEpo9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HMGk6iL1" 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 5AM4YRKw1760916 for ; Sat, 22 Nov 2025 05:00:49 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=GyOkEpo9N5i7cFS6ASSkEzqofB6 c3JRB9jFm8uM4O+/FeG846cO3wR2EtMnt5DY+Qj6Bx3iW7dr2hVjRPGpbJDbTWBD LmKPQlWRIPf9cbmxlETDueEKjkbDhSCzYGjxX8xE+dmN/1As1Gn6v3GhkcRKQqxJ wFz2JhM/5vj/SGFtRfygxb7EOq48d0NG5Lz5GPw8A3Fq042BjQ+YNwGKKtrL/gLH spKF6mAvnF0zYOiddcmARLDvt/gO8pd0gazayc5t8YJtyWDE7ayuXKhIgDAx6cGR OomNAB9dpIwoa6EBv1p25SxgoO+l7cx1VbDbXTk7xg/avpze7bU86KO/rlA== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak691g1cr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:00:48 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-297e5a18652so32186255ad.1 for ; Fri, 21 Nov 2025 21:00:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787648; x=1764392448; 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=HMGk6iL1RWdmBgwj9NhKwnqs+DNJ0h81sYxJ64Dn78qix1DtFxyfEU3Vu7irfQGW6f 2F0faGug53mOg6+p0wXlLerzRucWXsjir/TzKHAIWllW6QUBHKsy6coc9DDZ3Yaz/piG g+7jmhgaeVTqULvWq+vNjMd0M9Ujrcm9005qMsh/eqa7hSH+zlsW6orxDvG2uOPfrTNm 39AxA+iTJxYGZPdNYkYwQPEeS4OGHSePdvmLUvQmyVmn8m+XkE3tSRjPg577/8+I5SJL jcMGCoo9o15oP6P8kURogoxt7ihLkI1SU9ZEhC2oppBsZkF6CxS0m50in8Vl29RPljEH UEWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787648; x=1764392448; 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=NpXIjy7Vfu1zTko5hHG13h0zatasmOu7WSyX61zPum86hGhIh2XI/YcZhiy7LVD7ti f22G+F17Il9G1+yyrLCCHTzQQgh/t8Y72/xiNrd57BGOur2NmQHgRfJImOh0PPgwaenJ ewLX391CM2qnbCv2L9LFf1BHbyhp8pFfh/u8k94y+ankUJwAv52WHUXLywSc5NuC99VD qkgv5d9cBDR6Dlg40mOe3vdaNNRp3wUJA480Zyv593HDfIPen6uFpDBwoUNwtRhhOFAM xu14/qD+0vET9XVYqclkr8DaMnqLTaYkU3VPYT/fanDxyBOxwGwHcKsNakG4P6EZjptH vi6A== X-Forwarded-Encrypted: i=1; AJvYcCVlRPNgSOIN5KXZ6IliIua6aiqSwIbVgbFJCXeBA8P0Z3gkdR0Sh33WIBMAbSrl/bNq2+qES8cMdrEzPnU=@vger.kernel.org X-Gm-Message-State: AOJu0Yz01tmY5qi4gtS94pW3m1Dv3sI0AEvOhNbK68sARauD3n6X3a7a LFVKXgyuvJnO+uoScJ2hxgJckSpmQEIt6oKdChWcKEWxtUa4ZFCKIzJ2C+su0EmaOPJUrOBLrrN AL4FpuKWBnxSwk+LVtsFsWh0zqXMGTggL5OMOFP7j2ry2+dI5aL6W7K7sOvxHKfN3zu4= X-Gm-Gg: ASbGncscUFDRIGBtY/yNLLeHuqkOjfc9n/QnrJovGsSOiNpeclAoVYvxe10t0HQxZkv FksHuLyNwnUocVfwt85kr5Vv+rmF9Z6LY2GT/O/EMUlUSZn0KjZ20wIc57QWAk02jaV9TpxcVI3 SMvcJnHMEQciKsg4t7aDuE/GqagodIy0TbM5B5vi3D8RBAWsN9HvJ9+JWfX4UFtsyeT81Y50Hdp 6S31qrac0XnNdxU9RJdEPccFh4XLNaT1aAct358zI7k+SR5lirmqDUC0u0WMjGcmGwsSBUYvCbo SHy9SQoL48D2q5gg/Rd23Di/4CZBE5gFxkFZcfc+2cxpYzzg76wy6qddEDXHSV+w6EfwYb+s4Q+ WAlNzadYKdy5HTO1GfyNRN7WQdXLivhebN7Ydj5eg+uc= X-Received: by 2002:a17:903:1246:b0:27d:c542:fe25 with SMTP id d9443c01a7336-29b6c68decdmr59205375ad.41.1763787647519; Fri, 21 Nov 2025 21:00:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IGCzAeTkDoZIFezANE6pQeR1B/0k80n1mCUu+ZCT323/locWcBGgSUCV5GN5Fm8qjDomlAeVg== X-Received: by 2002:a17:903:1246:b0:27d:c542:fe25 with SMTP id d9443c01a7336-29b6c68decdmr59204845ad.41.1763787646930; Fri, 21 Nov 2025 21:00:46 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.00.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:00:46 -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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com, Konrad Dybcio Subject: [PATCH v1 02/12] soc: qcom: geni-se: Add geni_icc_set_bw_ab() function Date: Sat, 22 Nov 2025 10:30:08 +0530 Message-Id: <20251122050018.283669-3-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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=Be3VE7t2 c=1 sm=1 tr=0 ts=69214381 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=BVB3BO4C9w_THQaB-9MA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: -T2ZW-m9pX1Xhg01TrDf3-nMXwLkPqa0 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfXza2opN8t2zzQ VpO8tlN75isVeG4qYlaUvePwtydvs4Zxqa/O/7Trlryi3pl3xCdoGl9qPazL/BRO15Iu8ddYwPG CA/QGpr4tINvov/leXuzHSiqo8rC2nJ5qajUNvDoZF0SqshO0XNmvSBxP2eVtrXoRyMl84ozxVN vK4nxPLQUEn8DsbUu0A/w0az06o5Jo7o39IBCcTPCxfvdnkgcBGeTACMZGZ8rBrakkzsaRBpHeb 5Pn54W+8TiFMco1joMLGGqEpTTD91gEUI9YhODP9KL8J4r6jTr5fAeHGQjr1Q6XA3gyaC87tJWw lxxxn0o8UW2j41ujTZt1c9eF0CTM2825BRJGh12AbvCygYUHXNUst0s7tqEKJIpZ0/LXYfAN3M7 Ni7WGrQvGxl67ArCCU7kM5vJJMr/2g== X-Proofpoint-GUID: -T2ZW-m9pX1Xhg01TrDf3-nMXwLkPqa0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 spamscore=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 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 Tue Dec 2 01:05:45 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D7042BF3CA for ; Sat, 22 Nov 2025 05:00:56 +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=1763787659; cv=none; b=mc81OydgwRWpnR4BQZEt9pc7Fcr43169kgeHBClYl5QhNjPI8Oud0KAyqvwv+3CVBiEKWb9DrRYhqxq4JIolPg04LUVwfNP3dv8xamgxX4l+6cro3mimdplShECAOB4qxdSciPnz+oJc2grc/bnS1uJ11YuvoRxXVHD9gBYxeDQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787659; c=relaxed/simple; bh=/V2HiqHRTagdoM/UG+lUbNaX0k+Kw6ZShhne0ecUo/U=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=rTh2Ox3eZZBpp4T+Rp1hm/x0FlLWj+/5B92/qKNO9LGET+qZnfkLDy9X/axgX3xllGbiPI8RZJCH0NkWSUa+42tyThgnS3yyfSZuPpYnjdiNaJwxYXhjud5MAj1F+/L/e6AafjFCbE3wqWO07JMbnpvXbVmEM+WXXfAzannnjKI= 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=oYysS++j; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DCVEn1Xx; 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="oYysS++j"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DCVEn1Xx" 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 5AM4YRKx1760916 for ; Sat, 22 Nov 2025 05:00:55 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=FCrpcuk9fFr tiN7BZFbGUYQ63JJ5c9epSjjdaq9PEb4=; b=oYysS++j0bk7K2K5hIA9IjGOTSq a7YlowAkzWuyggeUCpzznU4IOUsei7p9apBriBLxNNEhPD4r+2ak6gXleM027Mwj cnLk2XTlnaQprq77FfFRlSsPaF+LI8/mglFxBR3a2vx74TuJ9cyUVacpvKA9y4ie T3lhTF9PGhx4Xt4WH3vIl/zO0AEuXhBmmimyp48iBvsxKP4jZkYbsLpBhfWx3stX u34RDGka3ksv8kWXTrLk4Jg/JclreMk/FDnK6XfCWrUU4AC+88zY8GxECVxymbJn zN3fmrKnKci/SLzlk9BULriyPLUUeQmoBKaKyXG5PjXJGEvNmDTx1OP9PMg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak691g1cw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:00:54 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-297f3710070so67394275ad.2 for ; Fri, 21 Nov 2025 21:00:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787654; x=1764392454; 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=FCrpcuk9fFrtiN7BZFbGUYQ63JJ5c9epSjjdaq9PEb4=; b=DCVEn1Xx3j1Mo4zPAvuBkgu/MoYfazBKg70X1SGTOwLj1v7XimsUevpf/5OesL49XQ epyX66KY7xT/Zkeguw7Q2upCagAX3NmAmQA8n5F0rU8AJa43akwBcoPJx1wMJDP965Ji 7KaYExM6wj3WYjBdbmyOWtDvzwAIEVQ6nmXuvPpS+3y1TG/lr2U2Fivtmyso03ru8LzC CKSaFk17/LEPDz3m/HhscGZhjw9TqAAoLvYvE7T4I/KFpAhgqH5NOWii12Czg8oxWm/D Etzfhdu+LdrzQYMzgVx1O9DpftmnD+bhmg6ZO+QeXEzbG0AtRcskNjJchxbtL8NybUYt ZrRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787654; x=1764392454; 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=FCrpcuk9fFrtiN7BZFbGUYQ63JJ5c9epSjjdaq9PEb4=; b=gH8eriHUdma4Tc5YADJlQltqHH/GkPFHGnVmV0nDF1m0VAhEuYbmlaPcYcry/iIfgz HEZpsPhdwKWj9lYs2PkmyjEKkGiGepEn8wwCphdmkOaHRCOyuq1erdhPMqPgFIj6d/8Q 9dwvwxbDbvi8nUVrLBqtPS5Xoo/1g8yAlS9K2/B8HAGJfQ5Z0UtPyq3rMWazRupgnnr7 AiIWyT+BKWwZ/ZbBota0sO9IjiFPvpcHscglUDluHZb8BsjFDONjBEZs3BmLg/m56/fT OlyKl1duilo1mDKIW0rN8GuOJjL3QUxiIjSQKLDnaGmKLPRMAA86UwrEy8pc8sTGHog0 WSEQ== X-Forwarded-Encrypted: i=1; AJvYcCWrR0VCjxuDprZRilLbZ+N2MhhDcoec0dTHRerdScym/J+Aii03ZXhvf4S4ESus/TJsYHZEHeb4PLDstgs=@vger.kernel.org X-Gm-Message-State: AOJu0Yy2+7JA2QuBrM2kh169SnJEn5flvJZ1rgbEe/jrunZ+6Xaeihgi tctiQrDj79cy3UpkXgd6dJrfLssDtmnZifpgMeZ14eK9+5lvUL4ZbloxSkAQaQU9bTrX57SqQDP 78sT1cFDN487iP7AIdAWj6vLwggQB6WgFE8zIo/WGvRs8l5/UHdaPrCkqsrGuR2qd44A= X-Gm-Gg: ASbGncs27YVPTikgT1TL+NpAdnFtz6eFUzx5pVzJ+GRmevHqQH+mUzbrqYrg40W2z6m cMII9I9FId9JA9go79/gxe9JeFJw7p8XDhXsaXe2+VGnSTAl84lNjmSxk8frDVh9Ab9UW/aMS7+ c7QuVHZiB/1hArC8I5siFrJi94feUDIynIj89/u3nFpJHJiA2cva4awpEUgda+dVQ2AeEj7OHf1 zZg7S0T18naeIP/2HQ/nxu8KYc7W7dhJfFPdorm03/5UIo4SW6rd3U4A1RXlz0YiwyWt/LXC46Z BYznrZLG5vBiT2anqcCZoTTvQyCMx3tXTOwC9jbNO8/H5FGgp5Q7FVubhfP9BrC74R5Em/pXkLm 6u0Yq66bdn/+bi2zP2SLhSUmBmeNLUWSFuUhTKfMjVK0= X-Received: by 2002:a17:903:2b0f:b0:297:e66a:2065 with SMTP id d9443c01a7336-29b6c6d0d46mr60059205ad.56.1763787653763; Fri, 21 Nov 2025 21:00:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IE/mNuFf6gCC+7MmuWo7dXP/0lbXv246+Po5thoKfHT0jW8uzLQuLrJkW6FdiLXiKFa4MyLJA== X-Received: by 2002:a17:903:2b0f:b0:297:e66a:2065 with SMTP id d9443c01a7336-29b6c6d0d46mr60058835ad.56.1763787653171; Fri, 21 Nov 2025 21:00:53 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.00.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:00:52 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 03/12] soc: qcom: geni-se: Introduce helper API for resource initialization Date: Sat, 22 Nov 2025 10:30:09 +0530 Message-Id: <20251122050018.283669-4-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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=Be3VE7t2 c=1 sm=1 tr=0 ts=69214386 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=LzVv7VdzltUCoGm_cYIA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: nz5VtjyIQC6qRRNT0XrmO3YtPlbqsL3b X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfXxnCtE5fQ0hwD yao+fPB4ucqOeM6BayGaUvJYjoJNbm7QR+nP8aPngKmcbEOj0vhZKQlbAYvRNjBKRdVOYJZ8Ai9 GyWbZP7qXLX78NMaY8aWKP6aCbb4508xNiLChj5Hk47ITESmvo18it/apHwALeWZbvR1HETg2DV gq2peU9takLUqGGne+iYG4G1WIEdqPVtEvNS7QQpxOjE54e8cSli3lwoq483XfIONnQsGaRc6rK lfygGgUWMMdMV1wiyyleskNZ3TqwkasjX8fKEfi4cS8o6HNvC4WPeKV9iswwbkiewWpRTcpnH+H zZyXTykO60dv2yhrfmdSjkeMNG2xJA3KSXBv6suij19JkVwWkC+wB1BQuufOwHM4M5iyYxEGnaW UNOyDR6daZp8AnctTH3cGqJ1HT7VTg== X-Proofpoint-GUID: nz5VtjyIQC6qRRNT0XrmO3YtPlbqsL3b X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 spamscore=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 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 --- 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..726b77650007 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 ERR_PTR(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 Tue Dec 2 01:05:45 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA5852C0290 for ; Sat, 22 Nov 2025 05:01: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=1763787664; cv=none; b=FG1URjbA+Dt3KPKg4OM3JRKtcpULotpINwYNJzWQr0GSQko7o7NIMhQquwlI9tQMxWKZs2MHP+tsgnQnqez6Npsq7YEwglFT+bLg1FkV068us7mEWdR8Bhli3uguOc5glWAItpdP5QMBBe/W3xJXvMqkdFKFT0XwzRqmUK4Zl08= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787664; c=relaxed/simple; bh=rDxzoo9mPvrgo+TgdB83NXCLEhXKq6UnZhUCfS8cFKw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=RKqjnor6U0ID8nXnL110dqzOHt75deDZYl2pZylpGuLGk/9JMV9+THjLCMybsV8JvinxOpWI7eSqCa70IPAOvvu/BAg6AGAFIpCIQ/AHShqKsUBs+KKgFwZf/XSVhuvjgiuFgdinDAxbclpiFYclGr+FbK/aOPrIiFNWSVywcfE= 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=g6k7KR3e; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=hy6SHcit; 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="g6k7KR3e"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="hy6SHcit" 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 5AM4YFfJ1760803 for ; Sat, 22 Nov 2025 05:01: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=BDBSS5w9Uh7 89kT2CYn7fWvlfuaEBPwFyHC5Vg/UJG4=; b=g6k7KR3ez7Z+bOZKSJc2PiEelYM OQS3ddHreIdKwHf/4bRUOULo3otE1h3sjayzLy7G182EFG9k3DIL4+Sj2rmBO+3D 4nUXOb8+E5q0h248yOTx9QIc0OhxqRhHRpItmFN2aZhw9HMmUU+x7adTho3a7XX4 ZgZX/qJnpd9Xl8YZhiD7dglzaOqPkIahEaFfeoNbW9XgjTG946/Q+Allv5AsdGAJ TxYzmQLM8FyiKDvnKL7oqz3WN2qezxJ8xYcK4qHQmyqMgwjIlg9n0nlwY3R+TuIS iHwGER8ytnqOE0xyxJ562ZPkzV2D5m7+I4tfCmuQewPIvmGGSQrj33VnCQQ== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak691g1d7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:01 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-297e5a18652so32189065ad.1 for ; Fri, 21 Nov 2025 21:01:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787660; x=1764392460; 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=BDBSS5w9Uh789kT2CYn7fWvlfuaEBPwFyHC5Vg/UJG4=; b=hy6SHcituKYOkRSz81gbT9gRgoagD987DKiI8NZ74XDWaSPRh8gnOOqQRf/FT0jjE8 /VuZXbNl+1vIgQ2Xs041GYd3PLoE5og8zxBDuH4jVkvawrYvYY/u7ei5QMuWGR75/j4R mBNrr6OFopZOW1ICQl1rto2eOw5KviliPI+ZNadTKKpCnaLIONmdx2Jpo4GXfs0e4Gno /HqJu+PWeMbZ5JcRAqDaB0vYg40bouvh3H/xTzUjZUQZj0lDHYfRNOq7FA4l6+7iBkTR 0VL0Y08TCCyV9r3GLj4S1oClGpq5OQBS7Yj4QHuYfuFKE/VhcRW0kFjrRM3+WMeM2OeF cA5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787660; x=1764392460; 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=BDBSS5w9Uh789kT2CYn7fWvlfuaEBPwFyHC5Vg/UJG4=; b=fFM8+Cjt8w9iZdfjypizbYlI0Kt89omD0P5MeDqC/rvME1XKsm3xCsVJ7AC+6RMWYk jRGoWO9YXK/WmzUGME/TChXUQ2aT9mWM4qudxvo3uPHBWuP4Cy2MOMrqZ8M27OQFTjin UAU9Et3CG9BWfJ0N6BXjds6rHtzcj+wWpsA5b5Lhg+i3yf060v5UCcGibKJZHxw2Ynl1 Hyd1b6ZpkH0jXORSY79r1aKeEOJXmPmMR9mimF7g0ihyxG6BLhTfwwGQxAIFygaOU+fF /eB9JoEK982ga1WwMYcc6noLkeJ/2Cy5gDLkFku4D6kuts3RnUzTN2zmG8fI0JL1no0y bbwg== X-Forwarded-Encrypted: i=1; AJvYcCVGfok5/tQd3BDQrpnwOPSE6msu5/MjYlM/6FY4dfP0zhN811VSMfPHHCISpuX/UAsLFcAzWsns1tJByWc=@vger.kernel.org X-Gm-Message-State: AOJu0YyxZlILW+qMP3WXmRjjCj/XQLOtb+4P7SJ8mfx3u8AnIndLR1pw cPY+9kGSbqlTN4cdo1VMb86nL1jJfHNhj6rYoFzsUbG7fbYOD6tAmlqQjIItZEfD6UDwghfQ6IW Nh+i0IeHV/0Rm6SjBkkd90FA2KrQMyuxTDdxKrVqcJ8jq4JGuhWJejtkyYhVZ8KTzS2w= X-Gm-Gg: ASbGncv1rhoK7G2YFKEFr/W6n5evuLZf+2McXuS34DkWvaupq9S34e5sFGPTh7MfIcb BIsq9g+CoR6enmM+bmqDiW5ywYI8B56mtYiwV/xLHlOQhod+v8bdma0nfDPBr/wPLzxXSiwq2Zb 3XAn6UVk3ivhNfiaKymtkYBWCGoIRMCfHfUBmCKqRyIhHK3WUY/TjWppqeuka0HnRpvfxo7LyTt hppO2U2KX+Ox5Oz8Efa22kzu//kxJYSKMpjQlllW6ngRYyejF9l5lmizXc6d6HPs7f9kOv1B2aC xDR0eSdtGy5eL6KpsLSdLpubYLzo8FHQ5Bmp9sTXafzs5XnDOQ547Wpn+Qq9uvZ+VGwaaNgvLwi HI6Oaq1s9t+kAEiMChxA9Kz6Ko9DDp+7f3X+XqBLglbE= X-Received: by 2002:a17:903:19e8:b0:275:81ca:2c5 with SMTP id d9443c01a7336-29b6c6cfe76mr54889975ad.59.1763787660381; Fri, 21 Nov 2025 21:01:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IEzbOAksoEAfNT3rg9bezuKN9iAxY86Pk44AoY7Q9p62Ql/tgh5TPxES/EbRak1Yg9xb8JQUQ== X-Received: by 2002:a17:903:19e8:b0:275:81ca:2c5 with SMTP id d9443c01a7336-29b6c6cfe76mr54889385ad.59.1763787659758; Fri, 21 Nov 2025 21:00:59 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.00.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:00: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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 04/12] soc: qcom: geni-se: Add geni_se_resource_state() helper Date: Sat, 22 Nov 2025 10:30:10 +0530 Message-Id: <20251122050018.283669-5-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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=Be3VE7t2 c=1 sm=1 tr=0 ts=6921438d cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=yUT396-8qwsxfMvC63wA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: ursXqP1ybq4V2gz8beg5P-8NbmR1GtGZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfX5xCI5fzuwoLf 2FVYOizE+HOFGeaoFFzz1dCz7lLNWgZokLGUuKoOh3LKavgQ+GfTQNCbvvepdycGfyBeexLK5+M lW2b3XiGhXKNwlmg6i1vqBoo6cd7c80D4Nh4UEfz8PWQlh0s6F4vFvZh/ER8tp2bG2P4BiKk3Sf G03fUXDiO3ww+Hq9GOafKeaq5W6637rMf7YDgknUBW8DnJvWAtbVOLNrlwLW+jqyh69UN4sRAhW GBXxfw310AtW590ZSZiT9YlR8HMk/WGt3y9lA/cxUeT2BCAozPWN23QH4ecsnZ3P3pfZhP90phm TxV98Ztw/TdmKQMYeexEX16u9IHJ5Zcq02YS26a2FpdgpKjHNPjYRckS4OXergISr+Kp0mFnJTO TtCY757M1O0TsuuNuy3yi5F/Gqzn8Q== X-Proofpoint-GUID: ursXqP1ybq4V2gz8beg5P-8NbmR1GtGZ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 spamscore=0 malwarescore=0 clxscore=1011 lowpriorityscore=0 priorityscore=1501 impostorscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 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_resource_state() to control power state of GENI SE resources. This function provides a unified interface that calls either geni_se_resources_activate() to power on resources or geni_se_resources_deactivate() to power off resources based on the power_on parameter. The activate function enables ICC, clocks, and TLMM with proper error handling and cleanup paths. The deactivate function disables resources in reverse order including OPP rate reset, clocks, ICC and TLMM. Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 61 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 2 ++ 2 files changed, 63 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 726b77650007..7aee7fd2e240 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -1013,6 +1013,67 @@ int geni_icc_disable(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_disable); =20 +static int geni_se_resources_deactivate(struct geni_se *se) +{ + int ret; + + if (se->has_opp) + dev_pm_opp_set_rate(se->dev, 0); + + ret =3D geni_se_resources_off(se); + if (ret) + return ret; + + if (se->core_clk) + clk_disable_unprepare(se->core_clk); + + return geni_icc_disable(se); +} + +static int geni_se_resources_activate(struct geni_se *se) +{ + int ret; + + ret =3D geni_icc_enable(se); + if (ret) + return ret; + + if (se->core_clk) { + ret =3D clk_prepare_enable(se->core_clk); + if (ret) + goto out_icc_disable; + } + + ret =3D geni_se_resources_on(se); + if (ret) + goto out_clk_disable; + + return 0; + +out_clk_disable: + if (se->core_clk) + clk_disable_unprepare(se->core_clk); +out_icc_disable: + geni_icc_disable(se); + return ret; +} + +/** + * geni_se_resources_state() - Control power state of GENI SE resources + * @se: Pointer to the geni_se structure + * @power_on: Boolean flag for desired power state (true =3D on, false =3D= off) + * + * Controls GENI SE resource power state by calling activate or deactivate + * functions based on the power_on parameter. + * + * Return: 0 on success, negative error code on failure + */ +int geni_se_resources_state(struct geni_se *se, bool power_on) +{ + return power_on ? geni_se_resources_activate(se) : geni_se_resources_deac= tivate(se); +} +EXPORT_SYMBOL_GPL(geni_se_resources_state); + /** * 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..d1ca13a4e54c 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -541,6 +541,8 @@ int geni_icc_disable(struct geni_se *se); =20 int geni_se_resources_init(struct geni_se *se); =20 +int geni_se_resources_state(struct geni_se *se, bool power_on); + int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); #endif #endif --=20 2.34.1 From nobody Tue Dec 2 01:05:45 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F41A62C0F7C for ; Sat, 22 Nov 2025 05:01:08 +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=1763787670; cv=none; b=RqDlRQUk6TQg21RWvascnm/2ZqsNqaVdTWsNRQRSzfblSCxEolg+Peb1Dsjtu1muNcNcFlZw62JQQ1xC+TbsKikTcM51guMzCDBt9JBGjAM5bTPuy8zB0Z5n3zGm1EwNRUu6PQMh9oMp9bcM0rDzGccP2mmqrA6yQ3kuhVzvWiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787670; c=relaxed/simple; bh=5FymjPfvlgC+qNA+t/Omj53maDcsKpdv2H50iHJArm0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=J9i0pEpWETDxw42ieWNxNcfO4PT4ZKbN/Lt1TkyKtjfr+agdhkW9z88ODU9M8ta45PUwiQvRMG1V638TTantGHoYfvZKgo543ZkLHGfHJxP6egI07UYlCs4FU6EpixQjadnA08McUgtcADrm9PUMyobyKINd+7JcYT4/8JRFgjU= 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=hc1CfRTd; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bZn5GU2i; 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="hc1CfRTd"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bZn5GU2i" 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 5AM4YGMW1760811 for ; Sat, 22 Nov 2025 05:01: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=caicS9Fdeoo pePrrAT2bbtFvVaxE0HhhLndEP+/8Hlo=; b=hc1CfRTdHPe5JLU+lSidJkTIuDD I+gUAKj0rm8M3J0qQjx2SmqkkZbYVrg59sz6b/oSs4yEvUklNaCAN1Iw+HwAAk61 M9kXR8btSdy4fe/ZAzMTdyaqUAJ4K3ZCqeNq9UjSXbWkPCE7HhaRMggQgVp4o4Pf d5fKQz81XagmEG2yg1Zgs7FhBEYAeSqk0rVlO3jJi+O/VGW5v3GYICjDHmzdJTB1 THNBMOIbIACLu9wvOiNHoCdTJmWJsgHSCDQAYwIUeIEjs6gFLZOmPIeBJhkyAgug A8HTMHZco5QbkKV84r8VMXu2a7TkNAKs/7ST7AOoS2ubfuFQ2BEvSQXZUdg== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak691g1de-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:07 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-297fbfb4e53so46112745ad.1 for ; Fri, 21 Nov 2025 21:01:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787667; x=1764392467; 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=caicS9FdeoopePrrAT2bbtFvVaxE0HhhLndEP+/8Hlo=; b=bZn5GU2iWTDJ9i8wDo2SQT4eNR0rlad024W0X83MepibPGdzYwzk8XTs9OhPh18iG5 Eu5cdrDoQyerbkRP28VOtOQG40ykuXw7JRDNOcLhMPCvgfjtTwzreDzMMMwRkHoYgLa3 uhR7VrmiKB8KHkKRnOcpEB/Lqyg+4o/ApdEbzK8tVHm1JKOr2Hr66ITjpL/SKhHVbZB/ trdYF4ZF2rvkw4FDYl3ZUsEiROAgUSuWi2ER17YeXuvO01M1IR4xcIMy6FNL7B0wJk+u xnQHV9ASFeu0OZnH7UqWznlKHr5oi++sIuTh/Ml1aCwp/aVT4Ith6eGp3ZTgJqdfPKy7 xmJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787667; x=1764392467; 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=caicS9FdeoopePrrAT2bbtFvVaxE0HhhLndEP+/8Hlo=; b=vXqVOODMSZrQTkqxXbcer63ccb9DlA0eY2fLxsOu4tNsiCjjdgFfSV4HQRrHjx2beK nJACFEsotXN6HDJySKFUP9yU0IVmbwGNoqJlckgVw26SPL1GcPxQhz7l0smh2ncQxDtu GgmL3zpYb7FXls03bbjAcRk3tFjVqgy6+WkWIWnepa55/bvPo73lrxFKOAooXiyvtX0q ezVl62qKIdlBTCAHcGiP+TMPmOD8e8klPGMhMbEeZkVzVEU6U6CUO8SRh08Uv6SNTuR2 tibScQFrJjjMLLb0+/7C/LGPfQLjCalM5RGwlCrbXQirce7FCd9IgwtRbaeiqemVhNT3 rllg== X-Forwarded-Encrypted: i=1; AJvYcCW1KpHhIP9J57PSetRvuPO4deQWtpOVW55f9Jq5R0TEAK22AcWy9gl9blG6lClexwwD7wjuYme4e0UqHMQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzuivMUzzAeN3ZlyM1xQt80dAx8tenf2LVPeCmnB74mSWYxp3+9 WOwjJbMTTpmDShnkdnhSBe8JwlMXSvgd3FCBCYS5XugZAgfi1YXLupZN1AZE6Y0IGIlMa4IApGv kWV+mwjugPKMyqZ0la2iJnp1n19fee+bZriUGQV8mJo41zLzRH5wnyGuLF+xUGaQinbY= X-Gm-Gg: ASbGncvs57+C1OXC+JxDXtK7eKAPYNesr0UAV2nrexBfDRUDOzQsLpwTu8JfY0/WFHC KpBSZqlfm1uDOk/ym1y3k83GCxSlBKdHJhIE3Ztxt7jcj7veQR1cQkbyl0gpN1k7//jYd87L0xl dqqVad34BxLucE+gepuHU2AcxI7q29lWMmNC2/OrW+UVISHaYi1YsyEAZ1NxVu+mAZYNiVy3UHN 6CFwnNKT/zHRW/uHt5nF1Qf5jS8TFbEXdXdXGrJuD3tS8lUtdqDorCv+PYOl3gATCwX/lATWPvg iilT7H50Ubwi1fubYgZKnBDO6rUrELGmP46k6MJ9VqgGUpR3ZWso9xFvwHDbafmvN4hHV2tTRwj 16xp3BXFhQsxefIWKjDJFnNBYEKGxV8L6F4CRZLBRnEg= X-Received: by 2002:a17:902:ce0c:b0:298:33c9:eda1 with SMTP id d9443c01a7336-29b6bf65137mr56078175ad.43.1763787666740; Fri, 21 Nov 2025 21:01:06 -0800 (PST) X-Google-Smtp-Source: AGHT+IGj6JCjZt8nVOBBiOy+gR454eyBDzt5Ff3v0Xzoc343F1gSDY+4aAHMdKCxPgSNrEMmfXXj8g== X-Received: by 2002:a17:902:ce0c:b0:298:33c9:eda1 with SMTP id d9443c01a7336-29b6bf65137mr56077555ad.43.1763787666132; Fri, 21 Nov 2025 21:01:06 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:05 -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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 05/12] soc: qcom: geni-se: Introduce helper API for attaching power domains Date: Sat, 22 Nov 2025 10:30:11 +0530 Message-Id: <20251122050018.283669-6-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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=Be3VE7t2 c=1 sm=1 tr=0 ts=69214393 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=dV-XI41DVKgoCQLr4ZQA:9 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: isXSEPmpMA6fYY3F67ESv_0muvZkEFWb X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfX+mG5xIE7BBk9 F4D/BhFs7ApXp6TywMF1pw/N3+PqhjZ4hKPpRALov9fVaDae8MqPXHMV0q6MR/i3evFQEvWJIrk z2ODJlMERCqcJ+iQVq6RoSRYKHzdPT6VCq55GLfFdD/S2h4AsjdP+0CYo+MG6CKE9H2fJY6PNQe QuVjuOueYHtHbfNaoTJyFKpx4ulbYD1BHAnCUriD1xwakl9cL4LhTJyHkJvdZ3Enw5aqSLMpcbm intw25Rfm/sm0K29LDZqLfF+C9LxAwBzoPHD3YChY8KPLcwSz20mtqchaExqNLWWdLpHD5ZBaeX YiO/8nWmqgsLzg7eIHWSM2vmAfme3enWNBJaCdjEhEO8jO72qy54EVDSiJ+pO4bT7A6TplVa79g klJQY10wKiPrqJUCiI1G2lfbXw6TUQ== X-Proofpoint-GUID: isXSEPmpMA6fYY3F67ESv_0muvZkEFWb X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 bulkscore=0 spamscore=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 impostorscore=0 adultscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 Content-Type: text/plain; charset="utf-8" The GENI Serial Engine drivers (I2C, SPI, and SERIAL) currently handle the attachment of power domains. This often leads to duplicated code logic across different driver probe functions. Introduce a new helper API, geni_se_domain_attach(), to centralize the logic for attaching "power" and "perf" domains to the GENI SE device. Signed-off-by: Praveen Talari --- drivers/soc/qcom/qcom-geni-se.c | 29 +++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 4 ++++ 2 files changed, 33 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index 7aee7fd2e240..30b58f2f2e5d 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 @@ -1074,6 +1075,34 @@ int geni_se_resources_state(struct geni_se *se, bool= power_on) } EXPORT_SYMBOL_GPL(geni_se_resources_state); =20 +/** + * geni_se_domain_attach() - Attach power domains to a GENI SE device. + * @se: Pointer to the geni_se structure representing the GENI SE device. + * + * This function attaches the necessary power domains ("power" and "perf") + * to the GENI Serial Engine device. It initializes `se->pd_list` with the + * attached domains. + * + * Return: 0 on success, or a negative error code on failure. + */ +int geni_se_domain_attach(struct geni_se *se) +{ + struct dev_pm_domain_attach_data pd_data =3D { + .pd_flags =3D PD_FLAG_DEV_LINK_ON, + .pd_names =3D (const char*[]) { "power", "perf" }, + .num_pd_names =3D 2, + }; + int ret; + + ret =3D dev_pm_domain_attach_list(se->dev, + &pd_data, &se->pd_list); + if (ret <=3D 0) + return -EINVAL; + + return 0; +} +EXPORT_SYMBOL_GPL(geni_se_domain_attach); + /** * geni_se_resources_init() - Initialize resources for a GENI SE device. * @se: Pointer to the geni_se structure representing the GENI SE device. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index d1ca13a4e54c..8c9b847aaf20 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 @@ -544,5 +546,7 @@ int geni_se_resources_init(struct geni_se *se); int geni_se_resources_state(struct geni_se *se, bool power_on); =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 Tue Dec 2 01:05:45 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0ACD82BEFE0 for ; Sat, 22 Nov 2025 05:01:15 +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=1763787677; cv=none; b=UiMafOgBpIxsNjgdKS0AYfL0acgpI1J9Ylnmwo/et7bSic5F5slcRIjfHFjCnV+BPH16z8OpDlUA9Uf5E5N59dMbiABvH3T9VIn8Nf4n+MRI2eVio0Af3eDaX85Hs+au+81GjY88ZiGTEJDxVgzHnzmniZbh4rZiw7P5mV4zk34= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787677; c=relaxed/simple; bh=sK6XaW/k9ZaxCDlbgWVWFCP1NGxYDP2lPv4LzeW4fDw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=DcGyTBKAwKN2K+5H4JAWBmVN7FebbHuNuPPFTMu8L+02ewiTKepKRuZuFCL7zpvFMWniqN6gZ2bqyEHKJqr4+1GYXHOV3zTMB2PkDBpLCfX3n4SXSHKg4Fk39VZM1J4z+NhYkDvHPm5iWK0ugT930rBhKTC8m1F1Yrj1pnro88w= 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=eDuI3xSo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cyO+XAWt; 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="eDuI3xSo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cyO+XAWt" 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 5AM4m1JI1949900 for ; Sat, 22 Nov 2025 05:01: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=zTkqjG69O6X OIlKcqlqk2XhnP8nX431WPafAy0gUQM4=; b=eDuI3xSo69u574bnJ8T13iUAIQF wHEK3sFXBZM45YEbZBOjLfm7nAb+D4TXHWWC4Qg0wudcspY6J1Chg5kN2t5KddVI YCLlvPKSww1rkzCo4MchqaQH3KmdMBxXEjq6+L5U8iLjXKcTlnzfzf40AO+CM4Er zSElcBdDcU6oSAIt58AZEJJAJ75lhU1dsvJ8y/m6spkWoHM2+YjCQm6LHhp4vPbl c+cn18bGWmtZXCWUoOpBaUulvrYWZg0n3nQxBifOaouOs2V+FlybMY3n4V47DJ2+ fjU+8+NKRGN1KCsd/mc+36/sIL5Trh5kiiBziynGb0I+dC4xOLSNOsjTAcg== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak6ff80mq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:14 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-297f3710070so67398535ad.2 for ; Fri, 21 Nov 2025 21:01:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787673; x=1764392473; 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=zTkqjG69O6XOIlKcqlqk2XhnP8nX431WPafAy0gUQM4=; b=cyO+XAWtH/KV+sIVqtrziaazzVhp8AWN4YG0O/EtFpff/EkdvjzFNfzpO08WPaOwyI f7UBVy+NQ6Hbp2JS0r6Dnr1Kq3JMTI62sFK8V3e42VHI1ucGUPXBT8hd5SkDSpI8pWVj tNCg7KXYb1KtybFZz453EWXUdw0IYB5LGt/ByI/aZd3EkPOc6HexSJibh2gmTPPu1ZXo 6PHzwQJ55QYbFJQX+QN+1kXJgAe2hVAWoh2DD8ZACvMIGLPZBAiwOq2X5Q2JAq6lrmnS RTTEGO2JgytPIVgzb4NG3zmgE+lO5oooyEg6CP14taEaF6/DtsI0CPoiGlw77XBFj/0g RG7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787673; x=1764392473; 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=zTkqjG69O6XOIlKcqlqk2XhnP8nX431WPafAy0gUQM4=; b=bQEF1KvRZLBfDn/53KlCAz0ZtddN+aAAsgB3vKh1nv55RkoHD1qMw7ifSFvQO1i/T1 hlhf3QgLvgYUmo/oG/xTknSeNMgkIIXPGFVYVnz5eod/MvOJk8HUF3kLOEIsnSCbEeVP 2yEXgabMkhXhE4tkVGCE+9FvwuOf/UvOxaKcbh2aOoAjrwLzZOmdstxeRwlcumGTEgjl iTxo0VqsKRxPDmzOZlDkrjRoL5pBTQ8GHWE5vobemyATLcaqdUdOo4xt5gKaGkqtp8sR GsLt/Ua6k1puKmA5NN/ZzzsQBseHd0uC8nAQbo898h0REyf7YSbvkUlY1MifKVmRgxCF GeNw== X-Forwarded-Encrypted: i=1; AJvYcCVDwzkDzi/NqdYs0yDioLTwNC/CKZy61nyD0ZAhqp8Jiv/acYQRQypsACWilLZ5A08AINtfm2lgkzr1nXY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8jlg+4d/bPExDsH83zSoRdUx7BQHZf2rxN6Oi/pjHfb/9Ywr7 nJLQGlJwmdXxu1WqMvw6iKlf3bito3JdivH72+hju93Kg8C/HfXZU5l4YuPPKykvzg1KBIu+n/C HvdpQAWtQ4Z8iOyLwlvWI4fsAq2v9YxiRNT4nwJPrjJRd14UpfsFpgV/XC8HCR/a2z20= X-Gm-Gg: ASbGncvnECLGNpf6BYVeuFx64yirXfzTwPuRamRi89+A6rv7+JP0X0MU7y5MMHv83ZR tvSzZL5ojX3CaZ6U1/sz3nsb5SITHLBcpzITtxhPwXY4jac4PDtR5xkdq7vPiAQk0RqbO8QvlbM uqBXLjPim9SEcYZwSQjrIDpcD0Qm/mpETlgcwDbKqiNHUz+fy1avpqUexehxdJRxUmclXnRTxP5 Ged/9JnQ++lim39ZCvYHpwpm8HL4ZiXNiv9gkhtIDj4m6IkROBAZWrMpPD9VaNIQNQkt95rBZgK 8B/XTGFKODrSWg1A627KNsyTg+H8m4qul/HChCFlXE3OlSSgIXtOIPz+wBV2we+3nvWZcdZ5I+y F0mc0XSwX0SS+VNMLgyRDkXkpsZwtBqp5he0RLkhh11s= X-Received: by 2002:a17:902:f706:b0:297:c889:ba37 with SMTP id d9443c01a7336-29b6c6a4a1fmr53069825ad.41.1763787673441; Fri, 21 Nov 2025 21:01:13 -0800 (PST) X-Google-Smtp-Source: AGHT+IFZ0RoRjWzpRX7f/7wrrm6o9a/zKalm16NuLlRAP24ZnpVfbAe1bUNnw6cUjpQSbL2g3JKMGg== X-Received: by 2002:a17:902:f706:b0:297:c889:ba37 with SMTP id d9443c01a7336-29b6c6a4a1fmr53069485ad.41.1763787672866; Fri, 21 Nov 2025 21:01:12 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:12 -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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 06/12] soc: qcom: geni-se: Introduce helper APIs for performance control Date: Sat, 22 Nov 2025 10:30:12 +0530 Message-Id: <20251122050018.283669-7-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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: psTinXSRfAefjTVInfBJGF5Hj5QgrqGL X-Proofpoint-ORIG-GUID: psTinXSRfAefjTVInfBJGF5Hj5QgrqGL X-Authority-Analysis: v=2.4 cv=OsxCCi/t c=1 sm=1 tr=0 ts=6921439a cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=NwCh5GMA9Nt760FYQHkA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfXwscjeJWbBxEv 52xBppNItVjlqJej9L1v01UwxLzPcQu8G6cW+0tT2Pm86iPi960wvhsvSW1O8rjIiUK3Hj05BLV nguIzQpkzcIdOOzAxhFqVcobEH3/lN+nFG67Azlxr0RV1lGwWfbwfKP6uYny5Yi0UKGZnxbJuzs gz0Ox7aZfwP7fSCe5NsCoLilrH57yODl/DUP7JzK0gCs2D5bj2vNQ/WZE7HR9XROUdwk+37AQGT wNyWEUNtR5ecIl4PJ3oO8uFMryBxtTpv1VlEezq3YrBEUyLsBNPg29vSIkrjdieRa5GqEiMRNBh 7rG+Cjpxc4injx9hyIipYsDKBHWycPpPP2tTN3+7mxSezXSoDqA9UK3hqJcapfJ7e00r5frkBpG gFG8GCL3b3epOQtxW9SrbObJlC0Miw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 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 30b58f2f2e5d..292afa18b86c 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. @@ -1075,6 +1081,50 @@ int geni_se_resources_state(struct geni_se *se, bool= power_on) } EXPORT_SYMBOL_GPL(geni_se_resources_state); =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 8c9b847aaf20..cac999d6ca31 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -548,5 +548,9 @@ int geni_se_resources_state(struct geni_se *se, bool po= wer_on); 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 Tue Dec 2 01:05:45 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 605C12C21F1 for ; Sat, 22 Nov 2025 05:01:21 +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=1763787683; cv=none; b=Yryoc8jj9+iILzsd/4pCl16fNRpLAXV4TSuyJDma1KF2EWbT2gvpancTSXJI1xZeMm7GT5YolENAq7QG1sAXpItL8NnmZ3PuF9Ghpry1/HYHVeK+U1+vMKp/kDcNBJUktxZSQEZo2XR9ut9wfCDMg3gOwb14Yy/EhWYI1lHKqF4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787683; c=relaxed/simple; bh=n3yNp9/TN5k/lBCC2x1FX0c9/nmTEST39ivPJlqcyk0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tVbmyMkXStJwDUMFrQzbfycGrJQSodwN+u19ppUgZ+GK4DgiUcDvoTDOA37F3eeVAWQojhl6ab5w/6QkWzfeAYGrKnoLZfLMezUe9uqpL0Ww3e+BcwrR04iJMgQEZ9L+O4gDjGTatvitVDVHuuz6aFzd+gypTWg/eQzL8dLdPio= 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=hSFP6htu; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Fy0jiIuD; 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="hSFP6htu"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Fy0jiIuD" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AM4W2Jp1468076 for ; Sat, 22 Nov 2025 05:01:20 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=sj9WA/iimEV DxbLoIO2V4NajunxNmR/ylXA4Htn7lIY=; b=hSFP6htugt3wod5tprWO/AqF7OH XWDEZcZJrAV3VLqjL5j1H6zdhygBmiP1reTAFRQLBVsl0SQp7cKNPkrOvNVKbqeW YCuZXx9XdC6xMjelf+yyUaiY7J8bfz4PvvI/MlVruzs3wqF50et2qIHizf1Z94Yq vchaJWaD6YhEaJ9FI7V6nDCgFqpI/MArF/1dRTbywEu7cU2IPTXKGuFBnQEVS+nE dsCzFDEEDZ6vhg8uvOEBxpHiE0coDHurqjjkCCdb95M4cODuXf182Wje7/aZmBfg fEuCiLVE1+DCy2P+VAGcmsyjApHYxoTfhGaQ3yoPQ/d7Inb9613DGZ/6F9g== 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 4ak67x01gq-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:20 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-29806c42760so108004535ad.2 for ; Fri, 21 Nov 2025 21:01:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787680; x=1764392480; 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=sj9WA/iimEVDxbLoIO2V4NajunxNmR/ylXA4Htn7lIY=; b=Fy0jiIuDW0Ug+C5pllI8yCnsknXPi7ytS1glvP+AgGANwsyuB/clerWSYzPwVybkOl OFP6p+d2TZzfAmtDIqHEcPaoPtC8Yf8LGNkCR6060X9BBtFUwz/mWY1OFzPA/sLBnete 1UhOmf0bp/SqhRORmuU5RKn6sW9dGGqbca6OhRGrT6T4pr6+W+8/OHFML0zt9s7iWhxW G0/rljX1fe8ysSq/yWp5jpJ34ScAQhfn0uQmRrGNOK/rJugUzWPR2tmj2UNbhjFl8T+F 1jyF7ME76GXo01DDaMsjwFzgT20VtpWmVOD2Bpws16WVZKWiabQuZr6DfnErsBARf9K8 72Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787680; x=1764392480; 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=sj9WA/iimEVDxbLoIO2V4NajunxNmR/ylXA4Htn7lIY=; b=PchGpEjSnyqJV/bORJyobZCK21EDkV/WwyrtmL2KTEPnGbFzlauEabouOdjyRKvvyf av6BwMZTPlnGCvp4+fsqe+I2KJYY+XHPo4NjhJn/nDU/yNkAgJH1O8UARIQ33Bu7LhKp ++YVuo6LJFVVK9187VZ+FWLxSDdNWSbgp+9LD82nAFj8xdvua6k/pv8CSLfYDpKBdKwd 9jVTMeqFleVPZJRz6HCxGgKtNFVlHdTX67TJNepX88ymu5MWPpbjjwEx7ygdMYWccsi5 r9r2UCrgAOr1CjGy8xXPEDdpiSujF2cHK+CFTaaXk2mmoFA5DB5Tve/U/OyK7rxWib+Q TKGg== X-Forwarded-Encrypted: i=1; AJvYcCVvKeQ5oO6SragU5ZkjwoKBciLoOB3lp/bjGw9SCCDKK1unjTenJWa1QW2dUv3h1EXV+/SN6dXo4DJZLLg=@vger.kernel.org X-Gm-Message-State: AOJu0YzREZ22uhG8Vg7qXtv8BayXPqTMR0qS9TX55cNQ6ViQ47Wq253Q 7HHH58+Z5Lb0tZlxh13buUqK3UAkBznaqqA3LYyarGPMvMrx+GiTH9dD9Xc8TXKtut4Bp95f+WG bBexgORh9JUlZU7jDEzULFjEWRRuGrrMd2PeaZn9g1B0QNor7WagOU5HQM6/kct/b9FE= X-Gm-Gg: ASbGncvi/J6MmbE2aFSMS12Q2h32Bqf8+ChVIC9VH/i3ELuMZWtxCG3AwATLvFMTvxm CnADmUC7BD4hIdAZ1+tgHXHbDAQfNZxxzk8ZlRLeFEyRZaGmfuSO3w1wxSWINNXvXtOwMBFgeT5 a1ABHVhC+9MOnGtRo8T/xVCFQ1T91EE99mnmYcSO0kys+Txkbfom7Ige5eShmj+TnVs0LG4wEtj gXHkzJQ0Ki34SP4RD0ZEU57GHm70KjhjXgxK6hh0Od+WrRwDeKL2PHSOLnYQBvEOGyU5I9J038e SL5Qj//RD/fnopKnKoBNLRuPRCBU57+5LafwBLgDRLIKhEB+D8/jDp7L6J+fPHH6QFuxWbrtCfn 2HmQrdBDfrM1lE2apChd0Enzg3aOSqmfxbEK+ZrekCbs= X-Received: by 2002:a17:903:1a08:b0:299:bda7:ae3c with SMTP id d9443c01a7336-29b6be9a6e1mr65810255ad.14.1763787679771; Fri, 21 Nov 2025 21:01:19 -0800 (PST) X-Google-Smtp-Source: AGHT+IHKdFyJavBDZAv3fh5sXONsSBFogNHJxKYQjCuYxvNv/dMJB4Q2p24Pq5feZ14FV/VaFkF/GQ== X-Received: by 2002:a17:903:1a08:b0:299:bda7:ae3c with SMTP id d9443c01a7336-29b6be9a6e1mr65809585ad.14.1763787679224; Fri, 21 Nov 2025 21:01:19 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:18 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com, Nikunj Kela Subject: [PATCH v1 07/12] dt-bindings: i2c: Describe SA8255p Date: Sat, 22 Nov 2025 10:30:13 +0530 Message-Id: <20251122050018.283669-8-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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: Ul5HfH1mPClpKBDSUcVCTF5nt6UiEcOO X-Authority-Analysis: v=2.4 cv=AcC83nXG c=1 sm=1 tr=0 ts=692143a0 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=gEfo2CItAAAA:8 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8 a=apMzWF-kzHp83YoYYzAA:9 a=1OuFwYUASf3TG4hYMiVC:22 a=sptkURWiP4Gy88Gu7hUp:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-ORIG-GUID: Ul5HfH1mPClpKBDSUcVCTF5nt6UiEcOO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfXy3uXu0utoN/8 69/oxqHeO82XZQhr2lmN4cOBYLCZ1dvoiVdPeQPOozvro9wpiLpPoxeUz3ybiOjoixiPMxnlewS JosAKB//ClHR4Bi8AxkEoMv/KJ5VFl+vKcU5Jd6QIOh33WNe1qaKyejJJbGfp/yvgF4aFdhafL/ dkdt1Wn7xD21kz7BPEOpjHFlQ/kKX7ETmN0YsPs9+Hnw5krf/JmIv4K2SE0BI9ocqz0vaXA5fbm 5a4xRwiZEMBv7iSbFk75wkpNlhglHEQK1QabL8CcZRmwtruKYcRpGHXvDiMfngzK2aPusJSF3i4 6JcGEaXRoWpB6+T/EO8DMw2ZakYOuO2F1AnBdrab3Kpnl5CAr570jaW5h2/jpsFC2QW1bcX/A5b hkknUWQolfYEwotfJpVyKADNKT+wHg== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 spamscore=0 phishscore=0 priorityscore=1501 impostorscore=0 malwarescore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 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. Co-developed-by: Nikunj Kela Signed-off-by: Nikunj Kela Signed-off-by: Praveen Talari --- .../bindings/i2c/qcom,sa8255p-geni-i2c.yaml | 61 +++++++++++++++++++ 1 file changed, 61 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..3ce0e0ba365b --- /dev/null +++ b/Documentation/devicetree/bindings/i2c/qcom,sa8255p-geni-i2c.yaml @@ -0,0 +1,61 @@ +# 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: + minItems: 2 + 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 + + i2c@a90000 { + compatible =3D "qcom,sa8255p-geni-i2c"; + reg =3D <0xa90000 0x4000>; + interrupts =3D ; + power-domains =3D <&scmi0_pd 0>, <&scmi0_dvfs 0>; + power-domain-names =3D "power", "perf"; + }; +... --=20 2.34.1 From nobody Tue Dec 2 01:05:45 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 30FEB2C3268 for ; Sat, 22 Nov 2025 05:01:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787689; cv=none; b=pmz8wpshjHJwPbznf6wxHHrmy+7FR5UDDrX0stFzAupe1i20G1Ky7k0oH3n9wmXIM2cEeRiwmbJmfJQu0olUVo8yoer8+RzdbUEW2bEWpZ1+5fEcDvhExGDbe9U1eOA9I+V9dNJl6jkLKpmhpmv3uu/N7HwBJaTACb2we2UyciM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787689; c=relaxed/simple; bh=LhJuKA2MQMHo9RRWRHBlEbIB6tUr7IjpiYBDNYGMC8o=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tQQ70Y2GWn2WaBI7A3CvY6iNz4+jW42M8hifpNZUJJmX7cnYKkIRK2SCgWwjid0Fbben1sWvWM9POzicq39RYYdWi4/+qN9g6XPNB2txo3iyZ3nXvwxXbHPH+o2SQhCjlCk14zWOktGZ2iIRMg4TICO7QcvubS3QmIH5dWGoaRQ= 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=Dc3TXP21; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ThYE3Vsg; 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="Dc3TXP21"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ThYE3Vsg" 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 5AM4lxjg1949831 for ; Sat, 22 Nov 2025 05:01:27 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=ba/8yXeN/Cp a8rrPju5CylcOxI0VUEDX1A3sMcUJl3s=; b=Dc3TXP21NbkyvgV+PkzEpPOOK5n ecjVxDk2J7irzED2nzofIBlVuFNetNI8hqGdBDK8WilN4ROdz25F5RTJ7LCXpnmi UHm93cuZCdsG1U+gGi6UjiSGYZDRxzHSRdr/R5VUkUVtf6pwCFgBsNFwwunXR0mg BDpRT1vPRycwFrRkmvYjlRmTvYhlOMsIoydM3xkgRQ+oLzzMADOWd3OR28PC4Z4Y qIwD/i4vudY42v25U7IRTIc66DZiMCaZE0I1Y/kA/WU4pQVdnbAA3Gyv0Fv9Ic7F +kjidklRtR5kPoID2AxCa2NvLKA2zplic3MhAdbpi7PjmTFyzNlgC7iHr0A== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak6ff80nd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:27 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-34566e62f16so3119685a91.1 for ; Fri, 21 Nov 2025 21:01:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787686; x=1764392486; 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=ba/8yXeN/Cpa8rrPju5CylcOxI0VUEDX1A3sMcUJl3s=; b=ThYE3Vsgt00g3fOgYyYqbWEZDMM6W5+pLl7uUwzf6RnjbBm0UbA7v0AOBk5gYu0Esm lH+VKHM4asWk3BsnWDqFjzFoq4jCIjhsVgxEYNYz2pObR6ySkL7wlXw2FhtTH7+b+g5o 4/Z5v/C25QK1YIAqn1LP99iMxfQfGqGXWWx8s337Ha2+MTz/1KSjqJJbOYh05ki2b1SP EpgP5oySQUzM3dd9AHi8nkW7np/Jtvwf0f0O5mKywCkmg7M/7g/y0UQowwDLZjtGCP7F kO70vnCvFy2QSTLlZo8+0+LVy+hFjhlXOngsJfO1fN9x/Fjt5x+PuqHmo3j/wafXVFMf XZuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787686; x=1764392486; 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=ba/8yXeN/Cpa8rrPju5CylcOxI0VUEDX1A3sMcUJl3s=; b=ELhoNT0PlXlY3TNGknoDQWkp52akR9991wuxLAxz8pYQ79N4kVW5DYcSwlTRDowPQE zYTebBz9XLg9wKg+GmmW41NVOouoDDNd8tIefPUtZanzrbPiQCU+C/9NNhVJIjbrKoJv 3P0Fc2QaX6+bwyj0zIpJjjKv4VA2apfilV3Nd1NRrh85LCKNDSRehgZ2x+TLsK+5UfWg 37KdnD6oh+D3b/TIaZvzT+bzOpodGtHpwekOBi4y3DBUoEs/mhqEwd3JM+wbiQLFwaiR 60OhwWc5R7Qy9UPYdoMtjNcno06Ybe6Y1OZqutAWwh+EE+8UgFO1kOidacXDlCxJtxMJ 2wew== X-Forwarded-Encrypted: i=1; AJvYcCWdBtpQG07X468eU2BcWYqtD7GzYuxMmYNoMH1u3ynqJJJIR2wGyqRAjpaxp1e5/5G85oOAYEkHuJsrfhg=@vger.kernel.org X-Gm-Message-State: AOJu0YyFvsImscxKLPSqyESdckH38p3ZNGtA93swlxeZ420KCPTmc7n8 Ql5NEja61NfH6vvcrjcbQFGCADzt+bzfC+pzhh1D9pFz6yw4MZp9AUowYcPjHs4DPo4lJZil47a tt4Q3RffcnG19iHh6Moru444f1I3T3HzZsMYGxWiohgjMdCv7U7MCpX86zxdv5LrkmQM= X-Gm-Gg: ASbGncsWrnAKfFeq0r/77xss1/T1fFzWK8Aq7OF6XFKuUydC/qT7JDEGqb1Rn/nr9Wj h097Et+SGUEnOKUuOit+Xa/RQ+GSB/u/Kb8ewg9LsLgQf0PgbY7U4xSjKZIg1o74I0ccuwP4XYY ouFkmR8z+yDVSb3KOIXbDL9wul+rV70+jNZUjENFHDpKTPgV3kiEn1X+SiLaaoLasYefcaoAYMT fAiFBTwdFH4gSYZyJa6f9JFW5OuM8b7w2GZ8oXeWoQzItYFMCvn8+6obSZAa8Bk8RHVXWH/Oycm 1ypRn32+KThDS/lED/qkjBD/1indhfJ/EUT2Qfv5xaOd9G66itSIaUTGuSdtXTwSMz3Af9surzX +DuqGcVx6lJXkR5Su/+OgWRY+FXEHy6l7LyMHIUhEy/g= X-Received: by 2002:a17:902:ce01:b0:295:557e:746a with SMTP id d9443c01a7336-29b6c3e375emr51588245ad.13.1763787686051; Fri, 21 Nov 2025 21:01:26 -0800 (PST) X-Google-Smtp-Source: AGHT+IFZw33E42wJRtTKCTlFWOeZ0uPYN+DHueMghEVprymvWra29Qgc2v3IJ4BH37QAlsCh9kk2lA== X-Received: by 2002:a17:902:ce01:b0:295:557e:746a with SMTP id d9443c01a7336-29b6c3e375emr51587825ad.13.1763787685517; Fri, 21 Nov 2025 21:01:25 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:25 -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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 08/12] i2c: qcom-geni: Isolate serial engine setup Date: Sat, 22 Nov 2025 10:30:14 +0530 Message-Id: <20251122050018.283669-9-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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: -hXiwvZlOwk_NNuKaVZmG0hBjIgON1cl X-Proofpoint-ORIG-GUID: -hXiwvZlOwk_NNuKaVZmG0hBjIgON1cl X-Authority-Analysis: v=2.4 cv=OsxCCi/t c=1 sm=1 tr=0 ts=692143a7 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=eRlIPBYRqdTMzyAxtVEA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfXwuAt4lGWBMwf oPCND9lD19RQ8RXuuLuFyxLIzecc3k+oAoXEq3iLNunVpG9eRvSiVKvsSYrZprNb8+VwsLThsQB uWYNDWTMja+b9HP1PCabGfA6QUc6G71IdnVunjnRlmr0xMvucaP7lqS990i9HJNN+l/UsWWU/VD qUCNaEYUTakDGnOlyzOQtF/l7tdv2ItaAFL7gUda1lXdccHFZE5CZ6P58MFDK1uimJnW/owXqwK lAaZFmywxO6xqqs3wnQmH5Ma70/W0FKV3RG3w8cw+99rXUDkd4tcmInvmPQny3AcGl9PbRbQ+tQ 62kpvy2F9TQ/yq4y/FPFVS7MJALXBaKiAYGYyVsQ2AUPCfhoA0GOTJzrWuZGAyG2Rz6f6DqWgzQ sm3/R6pl5vJJuAVvkFN5ureWROiGlw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 Content-Type: text/plain; charset="utf-8" Move serial engine configuration from probe to geni_i2c_init(). Relocating the serial engine setup to a dedicated initialization function enhances code clarity and simplifies future modifications. Signed-off-by: Praveen Talari --- drivers/i2c/busses/i2c-qcom-geni.c | 148 ++++++++++++++--------------- 1 file changed, 73 insertions(+), 75 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index 3a04016db2c3..4111afe2713e 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -976,10 +976,75 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_init(struct geni_i2c_dev *gi2c) +{ + const struct geni_i2c_desc *desc =3D NULL; + u32 proto, tx_depth; + bool fifo_disable; + int ret; + + ret =3D pm_runtime_resume_and_get(gi2c->se.dev); + if (ret < 0) { + dev_err(gi2c->se.dev, "error turning on device :%d\n", ret); + return ret; + } + + proto =3D geni_se_read_proto(&gi2c->se); + if (proto =3D=3D GENI_SE_INVALID_PROTO) { + ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); + if (ret) { + dev_err_probe(gi2c->se.dev, ret, "i2c firmware load failed ret: %d\n", = ret); + goto err; + } + } else if (proto !=3D GENI_SE_I2C) { + ret =3D dev_err_probe(gi2c->se.dev, -ENXIO, "Invalid proto %d\n", proto); + goto err; + } + + desc =3D device_get_match_data(gi2c->se.dev); + if (desc && desc->no_dma_support) + fifo_disable =3D false; + else + fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; + + if (fifo_disable) { + /* FIFO is disabled, so we can only use GPI DMA */ + gi2c->gpi_mode =3D true; + ret =3D setup_gpi_dma(gi2c); + if (ret) + goto err; + + dev_dbg(gi2c->se.dev, "Using GPI DMA mode for I2C\n"); + } else { + gi2c->gpi_mode =3D false; + tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); + + /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ + if (!tx_depth && desc) + tx_depth =3D desc->tx_fifo_depth; + + if (!tx_depth) { + ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, + "Invalid TX FIFO depth\n"); + goto err; + } + + gi2c->tx_wm =3D tx_depth - 1; + geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); + geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, + PACKING_BYTES_PW, true, true, true); + + dev_dbg(gi2c->se.dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); + } + +err: + pm_runtime_put(gi2c->se.dev); + return ret; +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; - u32 proto, tx_depth, fifo_disable; int ret; struct device *dev =3D &pdev->dev; const struct geni_i2c_desc *desc =3D NULL; @@ -1059,79 +1124,19 @@ static int geni_i2c_probe(struct platform_device *p= dev) if (ret) return ret; =20 - ret =3D clk_prepare_enable(gi2c->core_clk); - if (ret) - return ret; - - ret =3D geni_se_resources_on(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning on resources\n"); - goto err_clk; - } - proto =3D geni_se_read_proto(&gi2c->se); - if (proto =3D=3D GENI_SE_INVALID_PROTO) { - ret =3D geni_load_se_firmware(&gi2c->se, GENI_SE_I2C); - if (ret) { - dev_err_probe(dev, ret, "i2c firmware load failed ret: %d\n", ret); - goto err_resources; - } - } else if (proto !=3D GENI_SE_I2C) { - ret =3D dev_err_probe(dev, -ENXIO, "Invalid proto %d\n", proto); - goto err_resources; - } - - if (desc && desc->no_dma_support) - fifo_disable =3D false; - else - fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; - - if (fifo_disable) { - /* FIFO is disabled, so we can only use GPI DMA */ - gi2c->gpi_mode =3D true; - ret =3D setup_gpi_dma(gi2c); - if (ret) - goto err_resources; - - dev_dbg(dev, "Using GPI DMA mode for I2C\n"); - } else { - gi2c->gpi_mode =3D false; - tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); - - /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; - - if (!tx_depth) { - ret =3D dev_err_probe(dev, -EINVAL, - "Invalid TX FIFO depth\n"); - goto err_resources; - } - - gi2c->tx_wm =3D tx_depth - 1; - geni_se_init(&gi2c->se, gi2c->tx_wm, tx_depth); - geni_se_config_packing(&gi2c->se, BITS_PER_BYTE, - PACKING_BYTES_PW, true, true, true); - - dev_dbg(dev, "i2c fifo/se-dma mode. fifo depth:%d\n", tx_depth); - } - - clk_disable_unprepare(gi2c->core_clk); - ret =3D geni_se_resources_off(&gi2c->se); - if (ret) { - dev_err_probe(dev, ret, "Error turning off resources\n"); - goto err_dma; - } - - ret =3D geni_icc_disable(&gi2c->se); - if (ret) - goto err_dma; - gi2c->suspended =3D 1; pm_runtime_set_suspended(gi2c->se.dev); pm_runtime_set_autosuspend_delay(gi2c->se.dev, I2C_AUTO_SUSPEND_DELAY); pm_runtime_use_autosuspend(gi2c->se.dev); pm_runtime_enable(gi2c->se.dev); =20 + ret =3D geni_i2c_init(gi2c); + if (ret < 0) { + dev_err(gi2c->se.dev, "I2C init failed :%d\n", ret); + pm_runtime_disable(gi2c->se.dev); + goto err_dma; + } + ret =3D i2c_add_adapter(&gi2c->adap); if (ret) { dev_err_probe(dev, ret, "Error adding i2c adapter\n"); @@ -1143,13 +1148,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) =20 return ret; =20 -err_resources: - geni_se_resources_off(&gi2c->se); -err_clk: - clk_disable_unprepare(gi2c->core_clk); - - return ret; - err_dma: release_gpi_dma(gi2c); =20 --=20 2.34.1 From nobody Tue Dec 2 01:05:45 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D36D92D0C9D for ; Sat, 22 Nov 2025 05:01:34 +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=1763787696; cv=none; b=LO725GqDbatRuKIRar8zDQu5Pzb7GDvcG7VjK5DpRJH4Lf9wJZcXDMjHuMa+ZMVcmjDMVb5cXtTgf32x4sfaKXX3j30D1kqPHGIJ3wfLsHajw8Bs9VVp57dgMDBZNp/s9uAxVo3ol9uJd5I15iEkI2TQspm4e3SiUYXxuawL68M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787696; c=relaxed/simple; bh=wzRwgattoRRbUaaFlAmDzQFR9u0vN+F12glbNqhUSn4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=pxv8Rsy4315rzxudom3KtKNF2al0XZXzAthlyxAz4oYF+KO6oCxUGfs4+oMrGsifdpB/Ma1zkReeGfYNBNOx2hFVM2D9LcWNVSCAJNTwplBKZfH/6hvOS/0hYlqPXk5JOoSphizmpZ0MSzGhrWpHZskdeHdeHoHntS3WBAF8fnM= 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=BLmuG5GY; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HtdhvE6z; 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="BLmuG5GY"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HtdhvE6z" 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 5AM4g7UT1734462 for ; Sat, 22 Nov 2025 05:01:34 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=hDO9rBge+G+ xj9sw1BX4cdCb6G9jvmWkUpOlVuGtNLk=; b=BLmuG5GYQ2EJmYZ0VA0I0pYdqnR tYRpLpOxZgrAX6cHYEuw6RySpalQvmLRvkkwPuLLByizbmEfqr9RnkSCslCMY/Yc UyiBLKiixYJ4wUxkCGb1n4EfwKI1Gu7wTBvRFeuamoaMac69FjqK87y8bwkyEOl1 Sptl6JxJ8yxpK+5yJ8RD3WmBlKCctA95fqPwwfihULIDApWc+K2rkLHeYJR8X6NV Xsl9FtUy5G6RH/bAS4/KsRyKWKx7j8NFcAyPumyFe273d+L37+m2ljMv5Lp6TDx+ 9o7M8fyasx1QUjeEBcKBZLmvhIffvlPae5/aNtDZJGbcOm5xHPQKfCq6NfQ== Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak6cdr0yw-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:33 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-299d221b749so70756965ad.3 for ; Fri, 21 Nov 2025 21:01:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787693; x=1764392493; 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=hDO9rBge+G+xj9sw1BX4cdCb6G9jvmWkUpOlVuGtNLk=; b=HtdhvE6zCQJJ9Q1hDugtnInfoigNE72lyfk3w8rD4COFgcGTQgiqfm0ZRhn7H84ImM YL/EWIo8iqnn4NmRKZd4bv3cfARn5RFWvxvW/hKym584qF2UrDbZLHkIwGrpPPkg8W++ k/udqwjRlQQ9amhAVUOHscjsWLWclhLcNjGIYWinlWLsdMeMC7rBVLnSESF+4CgcawaE iUOhMX394ZZp3waS2M6pB0Dj2odForW7Q/X0Rz0W/hkS5fco8uVJE1GNodhdbBrRi5mj 3oDE166DJITlgIEB4nWqXr+qHNF8SmG6eZGdIk73b6n10ngpRwn3PzBCJFl6WpDAy9/o Qyjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787693; x=1764392493; 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=hDO9rBge+G+xj9sw1BX4cdCb6G9jvmWkUpOlVuGtNLk=; b=ckkYqmY9Iih/VnQt1gr+iqUlvi/Yd+FLpGy29zCvSW5Qmu4pf24IRXuqcnsrWGyxpe heTnnGu6EWubkVv+g3Po50foPka9F6Tr8ozqjV0a1eXwJ8/g7rlyElDk7/JoW84PDZy7 psUdRP35mBK8h6MQAk37yK1Q3XRK2CLHay1FWWE3yHSQAc8oDl6fJgMKNgQJCC4IQwGF svWCRlGCdARArDK9iM/qa4/YtEreR9ZcIpUPFMuJE0cgBxB108kKIV5Sj/CLaTSUhWSD +pmPNDyg7MvXwCPae1eWZDfLNcPTjbioT0PrwBtkXtSS4vi8oDxuvEXCFV3aKRRG85K+ g8yg== X-Forwarded-Encrypted: i=1; AJvYcCVVy7W+OF4C3x4vgpHUU13D75aUX5rRlQu/5054z8IChNDFGkETDrA87qnb/1PVkucG5s7f1TfsA3zm/F0=@vger.kernel.org X-Gm-Message-State: AOJu0Yxfrqquf5aya27sp1nnqgMqYOXAL+WxT+0jDnIOw4ZFoGHBDXl/ JaxmkefVQvKJxG8fAKuVYsNKIb+B7+kW7DZo7n6S/5usL1T/e3RUdHi1T1fPnpCBZDczvZG9/YB rxs5i2h7eLcI85vd2bRl84tnso7yLjX9w36EwkE1Hi6YpvEDun9aoOntHpapZHlOFx4c= X-Gm-Gg: ASbGnct25DRbTDOu/r75A0F/HIgr78edlJ3xgPQQJBFnr7cpaWsJsF18qUjAMW8pokW LOoEmLCZoXy1Ms3ovSilb1ieo7JNNrZRiiAyTsz3Ye5Co/X0tdH4r2aUeghrwQHrJwwvDUTJlF/ wT4TaOFJdtTHtW01M+7MZ+g14uBGvy4gYA4GzdidYNqw0Uxh6agvkIRis+YGvNx/C+hZ/21VPcI XQsNdBGjDHHQEKzk3Qbqo+CuppewS4JOnSjFo8wxkBQAseW4txq5qUHuNv6e4W8TzN6ys5zAsMN wvirgMAopWnfA1DlnBscpYtr0eFRrS5QXn7VzUU3yFOGLiB6F/FPTg9KOdQ6L8cxfliyK9YME63 0DZjPpKNprRGbLE6STAdwsw8V8isx1gsLcVHIZXULPaM= X-Received: by 2002:a17:903:2b07:b0:295:fac:7b72 with SMTP id d9443c01a7336-29b6c6b6cc5mr55109845ad.52.1763787692733; Fri, 21 Nov 2025 21:01:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IHCdg0UMnv19QwLQkwM1y+x6rPHFE1zTMmMMS4AU7ITz8pgTidap3romZtfWTgBv8lkQKl3Pg== X-Received: by 2002:a17:903:2b07:b0:295:fac:7b72 with SMTP id d9443c01a7336-29b6c6b6cc5mr55109495ad.52.1763787692075; Fri, 21 Nov 2025 21:01:32 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:31 -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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 09/12] i2c: qcom-geni: Move resource initialization to separate function Date: Sat, 22 Nov 2025 10:30:15 +0530 Message-Id: <20251122050018.283669-10-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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=bsdBxUai c=1 sm=1 tr=0 ts=692143ad cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=V89BwkbFsXdiYDgkWuoA:9 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-ORIG-GUID: Of7OK66aQZCFTjnRcLL9R7mtvZmlCaMB X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfX4wxXbotpQQ75 jQQ4T7HoXI9vNucNPZgJqOi8H7gdH4VZx7C7RhzQLCbm2eob2hVjWlOTTA5meMpojrdBWUwKmfZ Ru1morckV5t1zRb654z+kPkCuba3HiwFtFjWZFi0dhvTSBKip8o/zU8OB8rOuFmgtDv0q35j4jZ VhGKsDA7as+HJOXMlYdiOeFVX8GQDYzMBl74C+6FZtsZBSHDY5HtqGVEOyKYGGCtBoHSMXtxAWz NfzjByZUPM7qhCg3Qhpk3PYxDsU/yWrJTxLqKMBJv7QBhUTmB7Z0VIRTJxYgkXtsoXq0XxpND6e hKDDo7d89P6VdLUyg6f3cOo77rdiiWJGuW8inqfDBnCbV7cWm6CP/lCAvu8YepfFWQR9cvrNjn9 CFg+S2Nm4rV3wroN7ygtuSP09FrOoA== X-Proofpoint-GUID: Of7OK66aQZCFTjnRcLL9R7mtvZmlCaMB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 priorityscore=1501 clxscore=1015 suspectscore=0 phishscore=0 bulkscore=0 adultscore=0 impostorscore=0 spamscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 Content-Type: text/plain; charset="utf-8" Enhances code readability and future modifications within the new API. Refactor the resource initialization in geni_i2c_probe() by introducing a new geni_i2c_resources_init() function and utilizing the common geni_se_resources_init() framework and clock frequency mapping, making the probe function cleaner. Signed-off-by: Praveen Talari --- 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 4111afe2713e..790cbca2c22e 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -1042,6 +1042,23 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 +static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +{ + int ret; + + ret =3D geni_se_resources_init(&gi2c->se); + if (ret) + return ret; + + ret =3D geni_i2c_clk_map_idx(gi2c); + if (ret) + return dev_err_probe(gi2c->se.dev, ret, "Invalid clk frequency %d Hz\n", + gi2c->clk_freq_out); + + return geni_icc_set_bw_ab(&gi2c->se, GENI_DEFAULT_BW, GENI_DEFAULT_BW, + Bps_to_icc(gi2c->clk_freq_out)); +} + static int geni_i2c_probe(struct platform_device *pdev) { struct geni_i2c_dev *gi2c; @@ -1061,16 +1078,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) =20 desc =3D device_get_match_data(&pdev->dev); =20 - if (desc && desc->has_core_clk) { - gi2c->core_clk =3D devm_clk_get(dev, "core"); - if (IS_ERR(gi2c->core_clk)) - return PTR_ERR(gi2c->core_clk); - } - - gi2c->se.clk =3D devm_clk_get(dev, "se"); - if (IS_ERR(gi2c->se.clk) && !has_acpi_companion(dev)) - return PTR_ERR(gi2c->se.clk); - ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); if (ret) { @@ -1085,16 +1092,15 @@ static int geni_i2c_probe(struct platform_device *p= dev) if (gi2c->irq < 0) return gi2c->irq; =20 - ret =3D geni_i2c_clk_map_idx(gi2c); - if (ret) - return dev_err_probe(dev, ret, "Invalid clk frequency %d Hz\n", - gi2c->clk_freq_out); - gi2c->adap.algo =3D &geni_i2c_algo; init_completion(&gi2c->done); spin_lock_init(&gi2c->lock); platform_set_drvdata(pdev, gi2c); =20 + ret =3D geni_i2c_resources_init(gi2c); + if (ret) + return ret; + /* Keep interrupts disabled initially to allow for low-power modes */ ret =3D devm_request_irq(dev, gi2c->irq, geni_i2c_irq, IRQF_NO_AUTOEN, dev_name(dev), gi2c); @@ -1107,23 +1113,6 @@ static int geni_i2c_probe(struct platform_device *pd= ev) gi2c->adap.dev.of_node =3D dev->of_node; strscpy(gi2c->adap.name, "Geni-I2C", sizeof(gi2c->adap.name)); =20 - ret =3D geni_icc_get(&gi2c->se, desc ? desc->icc_ddr : "qup-memory"); - if (ret) - return ret; - /* - * Set the bus quota for core and cpu to a reasonable value for - * register access. - * Set quota for DDR based on bus speed. - */ - gi2c->se.icc_paths[GENI_TO_CORE].avg_bw =3D GENI_DEFAULT_BW; - gi2c->se.icc_paths[CPU_TO_GENI].avg_bw =3D GENI_DEFAULT_BW; - if (!desc || desc->icc_ddr) - gi2c->se.icc_paths[GENI_TO_DDR].avg_bw =3D Bps_to_icc(gi2c->clk_freq_out= ); - - ret =3D geni_icc_set_bw(&gi2c->se); - if (ret) - return ret; - gi2c->suspended =3D 1; pm_runtime_set_suspended(gi2c->se.dev); pm_runtime_set_autosuspend_delay(gi2c->se.dev, I2C_AUTO_SUSPEND_DELAY); --=20 2.34.1 From nobody Tue Dec 2 01:05:45 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 62EF32C08D0 for ; Sat, 22 Nov 2025 05:01:40 +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=1763787701; cv=none; b=gRPMUkRS2eogaeEycejrKkimw4poL8iQv2lxtyd1vqkMMfLjafIC5y33SWQ2ZYOzAPPN3ZzhniVE009V0pvo8k3E0KuKCmzZvJkRUi5Zhx8A7dP6Js4IkX0c40K8Mpj6096INiewxsxEGrsObe4jx8bpaTgKetjGgVsMLklNBzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787701; c=relaxed/simple; bh=pjl6cY91tXoDWcWfEEAwSSE3Iw/3tG+J8zq8C/zS7lg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=TlZZLV419FNXigCM9jVlIADMbL8GUditFQJ4mQ++zE8dPp2xURFwaBiVEB4ubxmxV4Siml1wNv6KFfW3z8NQgGyerYm4x1j2Q6VxNanO3wxc+wJT5JmyuM/bLh40Y1zRu19aqiBQ8rqEc/CqddVyszj4qAWMmz7yRoqFlHXBdtE= 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=nuwjSvey; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=cEpuEePf; 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="nuwjSvey"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="cEpuEePf" 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 5AM4YWL81478455 for ; Sat, 22 Nov 2025 05:01:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=2E9YZHi8mVm UUCdAPl94Gdnvp6FNNgZ6ghFgArKR1ZM=; b=nuwjSveyM24yjI0jH+ly7AvqFFV kFOOcKUa2Ew4+4dqZDTWoyWLNmzZmAthMontcHTIWFlShtS675ZHYcLpnn0bPUDJ 8Qyuf2PVA0RbbF9CTvsQSkXD97s4U8suXPiqktrQziF8CZQNQefYY153hPxcUSeE D6E9XRuK62ToM558lis8m9LxTI36UlclqCREKXlEFmrzL2ftU3kv3Gk9wz1T5fb0 pTyWefuGFWVLKFHjKG0VfO4qdhxOcFIEwZJmNf7FvT8PVlEXNGSzOKdcVZRLnKxm MTwm6FiCpwH1+twCni6hN20aiB79Zxv2jrlzUa+6ZBMi/uruw/Lth9eEiIw== 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 4ak694r1ag-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:39 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-295fbc7d4abso41334005ad.1 for ; Fri, 21 Nov 2025 21:01:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787699; x=1764392499; 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=2E9YZHi8mVmUUCdAPl94Gdnvp6FNNgZ6ghFgArKR1ZM=; b=cEpuEePfdyKRJQv3NMe2tkTkHwoWpQUwzLHHYhfQk0WjxVw3HPHDEAlju45bBFvkAO 09J5htsrGRsTWL1I7Ayp7ROWJj7aVkuYxn4jZfd7pZdrXTcZ/C9lHDR64/PfdUbqLosm UiCeMQAW3UK8Y0f1p1itdFWAiDEO53jolcWvES5kFZ4ulNo9nWkGO0rGyhT9d37/gu8X J76HNgxsQMrCtgt0+wDS2S1td9pFHHhfjL8qmz6kaSsyznxxbsll3Mj9UDsjGJ8z7JYs HwfLikcAe2NGa9X7bGQIQ+PwdWyqhhGzl18mQAE2kwCL/a131zIJLQZrKATs+YDLE21J MHfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787699; x=1764392499; 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=2E9YZHi8mVmUUCdAPl94Gdnvp6FNNgZ6ghFgArKR1ZM=; b=hs+Hqughr/4Za6GXjnvvLHkccHFbqn2Dpqs7E9YfW1eax//RL0jDYfz+Nt5VBScsvk UqipR1n80/msKlKeECY2EauR9SkvdCVyLx3Avuj6lpLhVgT0XSUsaKlEYfsBV78/eshj cZ0YBuuqyBz9ggqSyXk2qBlHxxpA7RcP/lWaTYyad2TuEzt07OVOJ09ofQOM/pwS/uYA nBjYI4Cu0iRu8YC6CTvZ/yIrQ0QkhAsWNUKFSYfJsNyVkk7ENAbIPcmIaZg9Mnu3S+g5 0BDjmby4DR+CRDGt90Nw4MUUkaOb4+VhRgZ2MPymc4I1DjdP4OE1lBYOUjzz4VVEwsZ8 46ig== X-Forwarded-Encrypted: i=1; AJvYcCUo2u5v70YChNmGw57i2w32aagOpl2rEfxRUyuP/90YeC7VBBJ5TKjKgavHhqT6mY4PAbyLY7dah8CUSv0=@vger.kernel.org X-Gm-Message-State: AOJu0Yw+wDVbF+gkdNLCNAKb9788yN6n0SPnM6tGRErIdD7FzXCN+M94 F6BYiOGHEY2jaTeclqrQh1in2uL85KGdgNFzyBlW32x38AlWZwcU5bBuMW8ESLWVrcK6bnHTQq1 9erJUk7wYgAGUGGrZTYsj0G9cFZiGbBM/G3zFewjnNB0OcXrZNUymr4CI4ljdEMUWAHs= X-Gm-Gg: ASbGnct70JetSBt1FtGkqPMnOz9jPSldR5hBrtk78jsgQpo9Qyrj6n8xLP3HZczt+Vr /eJWyWcPm+owjdolrMrggbe1JFiHcyornty2Lj9+nSDRXo9isq4GHae+AiZGYn0+fJ69hyPyKpY DaOKiY1vdUY4cKbITasmNcVnEUhvQL75Ye0z5xYK0/9v2PqItw+Sg8v/wVx9MI+qQF/dvyw+C4a m/XB7Q9Y9G6f/g3MTZfs7t8Jw0gtEMZ/T97BKnN5Z4ikxvqDPVM/GKTZimhoN5hXROxcOsLlWQ+ 90BjkY83KK+7mP6NmyZ317RIJy4YdogToOMKUWSYaaCrqXOsUdI4rneuKTBlD5NmPAI1SOT/kYd +nDluiVASkAyOnYSjaAgIwUcWGh5ZK5Y+U+Y4tgFQ/nM= X-Received: by 2002:a17:902:fc43:b0:295:73f:90d0 with SMTP id d9443c01a7336-29b6bf76f59mr57983835ad.50.1763787699085; Fri, 21 Nov 2025 21:01:39 -0800 (PST) X-Google-Smtp-Source: AGHT+IFoRvXLUuA8WOlFW5EjeyHiUFDI6eRZdYMUcLr1xpYwDsGXQPm3VjjJU/KUwQK2LYPNTZeJhA== X-Received: by 2002:a17:902:fc43:b0:295:73f:90d0 with SMTP id d9443c01a7336-29b6bf76f59mr57983435ad.50.1763787698469; Fri, 21 Nov 2025 21:01:38 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:38 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 10/12] i2c: qcom-geni: Use geni_se_resources_state() API in runtime PM functions Date: Sat, 22 Nov 2025 10:30:16 +0530 Message-Id: <20251122050018.283669-11-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfX3EzPId3UDgu2 +0GHpPqqk5GszdPx/t6QEZcv2uBmQVT8Z5FMt4ZRYlsfu8Y/fneGTQoTIMRlGAyhbu7/dTm+FGm iY23Lrrbd5fNFErxi2Cug58aGofsTcEeiMTxA7WdtfG38ig6a3o+3e/wZkjjdHKJWjPspFMEkGr yUOd1KVXj6eRd/3GbqY7y1uF8cNmR02mEoEWcAjMCFK1EOg57lUCrCbi1htyNlwiFetTHPLdFrk Jc4Nx7JKKniXi2WbHsS/YBPZmXiqxyrvFArC32ZxzOrsYskNLlZ3LVjasYZrJiIRWJVHPgv3JR/ z98LWXh0Cp5/dxy3GVlISaDnA98S5Wp6zMi7q0hrDWest2lrksLzbJ18j1ra7gfTBySzEBLfkAC qA/IwGlXuwQDCptCHnyPmqA815PMjA== X-Authority-Analysis: v=2.4 cv=YJqSCBGx c=1 sm=1 tr=0 ts=692143b3 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=467v_uBPdO_cN_CSUdMA:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-GUID: 30DQLVE3qJsRYDjqv2w6O0RClAEfPFhk X-Proofpoint-ORIG-GUID: 30DQLVE3qJsRYDjqv2w6O0RClAEfPFhk X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 bulkscore=0 suspectscore=0 phishscore=0 clxscore=1015 lowpriorityscore=0 malwarescore=0 impostorscore=0 spamscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 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_state() helper API addresses this issue by providing a streamlined method to enable or disable all resources based on a boolean parameter, thereby eliminating redundancy across drivers. Signed-off-by: Praveen Talari --- 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 790cbca2c22e..ea117a4667e0 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -1166,18 +1166,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_state(&gi2c->se, false); 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) @@ -1185,28 +1182,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_state(&gi2c->se, true); 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 Tue Dec 2 01:05:45 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E84292C11C4 for ; Sat, 22 Nov 2025 05:01:46 +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=1763787708; cv=none; b=kaHd6iTKqIkT83dWl9oYyxH55I+pC0LAb4F9Xaixv5x4DeMJD20VGbjCsJ96X5kadVjD6btZZEsvEgK9ZEBnwJZQoaiH6VpRUimQu27e/P71b61r4GCcgfpvvViaLBdjN9xtFZb5dRyJn0/paTJEKR/ynIZwubdAdESaB3mWMrg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787708; c=relaxed/simple; bh=mbJR727ggrtrvgHXfUkmla3xXcuIgQNfVcXl74QOnS8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bvkPBbV383TVErjNKPvcE/c/AlKCFKIzGJ+4ZKGEeK8b0HA2oADaECVZ9le1/HIMlaccf9ykgrDfHYO4K9rAwKh75jf2NdxP1p8b+jwYLmdh8yyP6FtbXoii8GXJ2So4tW/70S4N5leng/YJ4Q6ZpOgrdrz0Dj9z1zDZxiAozwo= 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=Y2A9yWiH; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HYT2vFif; 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="Y2A9yWiH"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HYT2vFif" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AM4dZ4O1090473 for ; Sat, 22 Nov 2025 05:01:46 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=cYCVHWiTnrq EYRLdnl7gmKSduhx1q7VxqZ9bihRVOkM=; b=Y2A9yWiH2h8PnKlKwMmELGn/esn 4YP6EU39sTHCsSRqvo/cuRSZg+yrY5MxHmJpbHiOy3QqeGNjgt9rOROTNLpt+f6K w8ZOqGKEMObVdf2EKkWDFNfUcU1tFA9d3wBH4+uNbATFmVOV30JeokbKx3oh0RRa vq6U6S/ptnBdwH6HdG7C9BYbbELwZx8zMUPQLtz2h8HejgYIX+tfgbg0jwdvwbkn zh/3E/MDnupynFWrk5D5i6bsh57gp5j5rvTqzhOxSe0alwozGx2rXrZB1bImnMPR 3sx/sctzhpg0hmZCE4Dhp3fsYdbGdTUC+53pIBOFmkwkk4ro5F2VsSgP8HA== 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 4ak6bgr137-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:46 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2954d676f9dso20194375ad.0 for ; Fri, 21 Nov 2025 21:01:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787705; x=1764392505; 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=cYCVHWiTnrqEYRLdnl7gmKSduhx1q7VxqZ9bihRVOkM=; b=HYT2vFifSwdIHkpKVzdByw77aKDuIh0hhPeRbUjpXn7yhEnTZ1jBXFrO3syX88g8Uz lkbdWz3H+MBdLdgAybSvstXIYNFGdy/H1V9z09ny0y4IC2+11gPN3+IWnmQCW1h643Uq 3D3RUcWooWPsMkMyQL8RiDTF94Oq9esM09c8L3bLu2VtqevUZcH/Wf0B/b2qqVbo7hcN EUauQr6T2Im7l2MEsi64PwE3ajjoRCqnZG2fmx7jDJRsT3BEjAd83Ds4qPr7MEnj+Vj6 nRxjj9kDM9E2yzlp9bMl6iF1rcqJMwlxE/gkI0QCt2Myq5d3BeVMmXDfmaXPhQX4/+3P /DZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787705; x=1764392505; 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=cYCVHWiTnrqEYRLdnl7gmKSduhx1q7VxqZ9bihRVOkM=; b=oOMcwSIvQLp8+7vy3PsiQINcSxU419ie3XnqEbufynoNUJYHCg8fKqz0c2Y64mZ5Do 4NsmSAjptO/DRU/NlNQSQzbX5Hu0+DwW3iPTM9CO/NztQ6eS1xZbLdGdYR7hNs721YTm TpddMXCrr3RBPqNfZ7jnTyJqk+1z2e3wT2fMb1ZK0gxg5UujlmiF5/82lHQ+lOwA/th4 aLhM8/WKDaUlBHvm/VFbBwmgOwrz8IZTVqHCxrOkLgMIFrndGG4sudxKnFdKeDX1loV3 bXij9aZktv+bPiAJyqEXMNMxoH/vticA8WCh52iLwbKYRuUN3d0h1RhKoUxeJ5HztZ2N ePcg== X-Forwarded-Encrypted: i=1; AJvYcCVAX/98KvByALa2h94sYG0RJTy1GFMYcRixBx3AhME0IbrT2ZEm1zLu138YBVoiPme9wcxNzYK2p9pk3ok=@vger.kernel.org X-Gm-Message-State: AOJu0YxYChWsNNkwPc8oZkPVnv8mpdcNprzbR0vPHsHdF3w/3WFx/02q XB4fqGQ2lbULCm/hUjelUE3mJ4ZfsYlIKEtF1FgQJBuJlQIaVeJLbaQaL2ZCfXAD8pH0LssGCi7 GkTe/p6spBs1Y2Cm4PnDsFwvN9S32IpqjzXs//arp3qSSEgtoe071LEt1739ndNSIy5A= X-Gm-Gg: ASbGncvJx9nFCK1dlK6Pt8+spRPJxyipxy3cqD3dKnK0uFUvHd6kiYxiOHzSHl1suIL KCIPATenvtCeVNSvd6m4h6i6jBQQ5ZVeJ37jl5VJKuaY9fYiAVvTe2mDS0v/YUZnrDC5VF1fqAA lLW9szK1Gp2uC619tEbHRBCg8X7dWDxObZwNjV021bJu/mxTQlQwSIdE8eGZjOSOEofKHM4FKRn IVNyCL9SMUcqn73R3xRHyVFTbo62QUVu60cpPktXzwfbkUBFxQcbuf8JwB918JXK+zBj3S71Dzc BqumBEBqXcvGoeeQOsulVJwevNDY/2xhA17MmGHaPZVgzFKEOZLOKYI2BbYRNxnMFoxj3BXnMNt SPlkTmB/yLUEV3gIrACHJtvicQIq7ZYHFTqQJUbmgPII= X-Received: by 2002:a17:902:d588:b0:295:c2e7:7199 with SMTP id d9443c01a7336-29b6bf38528mr51869705ad.29.1763787705421; Fri, 21 Nov 2025 21:01:45 -0800 (PST) X-Google-Smtp-Source: AGHT+IG8OAiROK7F5GVWbTxASpswDLwPXSs+Afy8DSzGXuPGImfgg2wHiAcv4P7FgsnG632nij/7gQ== X-Received: by 2002:a17:902:d588:b0:295:c2e7:7199 with SMTP id d9443c01a7336-29b6bf38528mr51869315ad.29.1763787704849; Fri, 21 Nov 2025 21:01:44 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:44 -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 Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 11/12] i2c: qcom-geni: Store of_device_id data in driver private struct Date: Sat, 22 Nov 2025 10:30:17 +0530 Message-Id: <20251122050018.283669-12-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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: YmBdK2kThfz9iGCoF9gp3rFxEaUwCZfr X-Authority-Analysis: v=2.4 cv=MtJfKmae c=1 sm=1 tr=0 ts=692143ba cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=mUiiJuWc4wU39pmrI74A:9 a=1OuFwYUASf3TG4hYMiVC:22 X-Proofpoint-ORIG-GUID: YmBdK2kThfz9iGCoF9gp3rFxEaUwCZfr X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfX1JOpKf6oGLrq 5z5B54K7VFT/Smj2bD4oLSq11HlZnnciGfno+xl3r+eISflwTkw0f/oA/gO4+PByZ8G0cAqZM8X LIMIiVMr+z/igjxiQb9vCXdLTf8NKJQapCLzIcqpzfc6UbAFiy+5NNlH5CZJMMlCx3fVfcDWgiW PhSaOxzIF1qfDrdOwo04XsKVPTjx+S/PJgiksNY04UuYmaqDw2r2uQ5mVrGTSskdvPq/uaZSZJ0 y6xFYySWsMHfJ/5yjFN1Ln7OtZ4hISheyVWQPu/Oe2evIMV3UdWzt39LkGWGkAq6gkWPAoq1iNa zpFPOLycpIB5wf6/9uRH0DV9l8x5flRnB7PPTGuxnc0rM3Hk+rUnjYmJmDtnmQAhQqelxGArnv2 3yZiDMB+ivRFN6nxB0F64IbAszBSWQ== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 suspectscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 priorityscore=1501 spamscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 Content-Type: text/plain; charset="utf-8" To avoid repeatedly fetching and checking platform data across various functions, store the struct of_device_id data directly in the i2c private structure. This change enhances code maintainability and reduces redundancy. Signed-off-by: Praveen Talari --- drivers/i2c/busses/i2c-qcom-geni.c | 32 ++++++++++++++++-------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index ea117a4667e0..a0f68fdd4078 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -77,6 +77,13 @@ enum geni_i2c_err_code { #define XFER_TIMEOUT HZ #define RST_TIMEOUT HZ =20 +struct geni_i2c_desc { + bool has_core_clk; + char *icc_ddr; + bool no_dma_support; + unsigned int tx_fifo_depth; +}; + #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 =20 /** @@ -121,13 +128,7 @@ struct geni_i2c_dev { bool is_tx_multi_desc_xfer; u32 num_msgs; struct geni_i2c_gpi_multi_desc_xfer i2c_multi_desc_config; -}; - -struct geni_i2c_desc { - bool has_core_clk; - char *icc_ddr; - bool no_dma_support; - unsigned int tx_fifo_depth; + const struct geni_i2c_desc *dev_data; }; =20 struct geni_i2c_err_log { @@ -978,7 +979,6 @@ static int setup_gpi_dma(struct geni_i2c_dev *gi2c) =20 static int geni_i2c_init(struct geni_i2c_dev *gi2c) { - const struct geni_i2c_desc *desc =3D NULL; u32 proto, tx_depth; bool fifo_disable; int ret; @@ -1001,8 +1001,7 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) goto err; } =20 - desc =3D device_get_match_data(gi2c->se.dev); - if (desc && desc->no_dma_support) + if (gi2c->dev_data->no_dma_support) fifo_disable =3D false; else fifo_disable =3D readl_relaxed(gi2c->se.base + GENI_IF_DISABLE_RO) & FIF= O_IF_DISABLE; @@ -1020,8 +1019,8 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) tx_depth =3D geni_se_get_tx_fifo_depth(&gi2c->se); =20 /* I2C Master Hub Serial Elements doesn't have the HW_PARAM_0 register */ - if (!tx_depth && desc) - tx_depth =3D desc->tx_fifo_depth; + if (!tx_depth && gi2c->dev_data->has_core_clk) + tx_depth =3D gi2c->dev_data->tx_fifo_depth; =20 if (!tx_depth) { ret =3D dev_err_probe(gi2c->se.dev, -EINVAL, @@ -1064,7 +1063,6 @@ static int geni_i2c_probe(struct platform_device *pde= v) struct geni_i2c_dev *gi2c; int ret; struct device *dev =3D &pdev->dev; - const struct geni_i2c_desc *desc =3D NULL; =20 gi2c =3D devm_kzalloc(dev, sizeof(*gi2c), GFP_KERNEL); if (!gi2c) @@ -1076,7 +1074,7 @@ static int geni_i2c_probe(struct platform_device *pde= v) if (IS_ERR(gi2c->se.base)) return PTR_ERR(gi2c->se.base); =20 - desc =3D device_get_match_data(&pdev->dev); + gi2c->dev_data =3D device_get_match_data(&pdev->dev); =20 ret =3D device_property_read_u32(dev, "clock-frequency", &gi2c->clk_freq_out); @@ -1221,6 +1219,10 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { NULL) }; =20 +static const struct geni_i2c_desc geni_i2c =3D { + .icc_ddr =3D "qup-memory", +}; + static const struct geni_i2c_desc i2c_master_hub =3D { .has_core_clk =3D true, .icc_ddr =3D NULL, @@ -1229,7 +1231,7 @@ static const struct geni_i2c_desc i2c_master_hub =3D { }; =20 static const struct of_device_id geni_i2c_dt_match[] =3D { - { .compatible =3D "qcom,geni-i2c" }, + { .compatible =3D "qcom,geni-i2c", .data =3D &geni_i2c }, { .compatible =3D "qcom,geni-i2c-master-hub", .data =3D &i2c_master_hub }, {} }; --=20 2.34.1 From nobody Tue Dec 2 01:05:45 2025 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B6AC296BD8 for ; Sat, 22 Nov 2025 05:01:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787716; cv=none; b=YlJ0VQTgxPZTjVxWEtANbwe4txTZdOCrSQQtVE96WB5lhIkxMjq3KPrMNUj3e5KIklNbYV8syOmus1rG37k1R4egXwlZfefcwpeIIlIU47qgFPXN5mazjZ25nCdIKjPxeMC4x8t/KD4JRO/1Hy2iyGtesJlxWVuIX41c7kP34rA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763787716; c=relaxed/simple; bh=MBM+ts/VrBooDvo02TVv4oxPcwhNnUNkwE9LXeeYjfM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=OI8i1eTNn3xdlrTLpcY3XOUWAoGClkVlf6kHeY+/sVt8sCQ02eWFqA1+mYiVdado70b54KLIbX0iF46Fqd0URxN6MQFi9EW0qE10RKEXc/LrQVlYvbNHe4vr+aSMZANvX/7TvvbShWzgTo92uMsfo8d30LD6qsOGORPOcH3UYU0= 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=hYvBfpky; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=h7FHmZ77; 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="hYvBfpky"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="h7FHmZ77" 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 5AM4bAEd1584241 for ; Sat, 22 Nov 2025 05:01:54 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=LvNM59OZXdb EJkj2qOKcKocVhop40G1a3Ur1tuOXqxc=; b=hYvBfpky3c5i0vi++CejKMEa/ez o13Q95GPSRCAAV1MtbCcJfYpnGtepjBNg5+93KsfrRdOzgznwiFwXBYtuqzBIf/K 6ePuZnpzooObfGJe1wK1sbhov6h4qI5AojuDzyxlqxdQgL9cJRsc4raY8nDxWhZs jYeU+rCNVABjqYym/j1Rz1Xw9/Y6M5FDOEVYdkBi/lvt2R0zS+V6PPrId5HDGp2G 8ezNhRJuX6Fod+k87g01MeOH/K2jLwScfpiieIINpPuWr4Gno1gAcLxAEmD0VLOR uuy5xcQooAeRUMGWPy95YiAR1XT6u8hqDU8mnc6ewssn+v6lFomnLk3VTnw== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ak69er1ab-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Sat, 22 Nov 2025 05:01:53 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-297fbfb4e53so46116745ad.1 for ; Fri, 21 Nov 2025 21:01:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1763787713; x=1764392513; 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=LvNM59OZXdbEJkj2qOKcKocVhop40G1a3Ur1tuOXqxc=; b=h7FHmZ77v8QtPFlh8uAyCbhBCavZ7G+mpDLJzl4HRR/CPJDllOHUbwvObPP9p7FyWr fHtfc0jTiGw2E4aWtqo7CXR+51dEG0puDwKjU9+hKsI5jA6pOCdHyinf8b6YIrXI3nXi gPTTMC3ECBngHR6puIOGQEHQhiCtUTausIZ1iIekqFgRtDt+wtzJE2v360Oqe1onv3H5 /5MVFuk6H90NRG0r8n+aPCOZgTlMLpHvDU9aDLGIRV7Jv7MXBE3pFUA8JyKuNl88bpD4 mRpUDbQwMEkBsWDxtqj6mh1x+lbLoNIBDjYzeVOfh8dFD6W1llDvznqhICVHJakIfiuJ 62xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763787713; x=1764392513; 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=LvNM59OZXdbEJkj2qOKcKocVhop40G1a3Ur1tuOXqxc=; b=TCvwIzUlRrmNpxhu3nB7uYcm0lgg7fi7At9wC6qjZNUnGqi6bEmVgLC4uEL4qrOT8F 0zizN9kgX/dN5G6tWI1uhL5/NHoRUNgT3/LRERotNw1I9dyxQDFrtOpyU9VNgBavUzGo Rg8MiKbha25rMvUt4rUA7HVBM59atMlM6svt6lDsDDSOtn7LFNziz1cf0CqemTPWfF/x ESfQeLKfHsbrkJzz6WIVo+o9jIHxwnrUVnnqzOpibGuSTl5OmXupIbK/aNs/PpOEtqAP 8iLn+NC/AJxbk9oEdId+ZFDJUI7KPm2BDjRV0nQHQ+7Y68j6Ekq4bYM0OS+zOnHpOfLE 8wdg== X-Forwarded-Encrypted: i=1; AJvYcCXP20yrPttRdKNF1RrL4AnAyVegSWP7ytpiL/kn2BO21oyou4yfBSLzB+hrmbZ9E66bWNvety9I7ww367E=@vger.kernel.org X-Gm-Message-State: AOJu0YxFZFiFUvxgOFFsGOR05lDbjRhCpyBWYPzBrGKLHrIUwLpEPy/k ZmWsQhOkPdoC//jZ9oXHEGL8et+7h6SMZKCVJWy/uqQ3vdFSpUzPW60X1kAqqPYfLMsejvYTQ4x /x4SiFcc3IIMOmiQwVQoDQKRai6tVUFL2dK2KOv9xk5m6yiLPy88CGXyglWPTR6t+1Rw= X-Gm-Gg: ASbGncv5HfcJdHulvXKH5s3MbMDV32tBCO66Ak/h2kqXf5o3LraFwUMykWhEkdLd3er U/U5HjA+r0WrNqXnUio0W+bViPnpA1bNZTrIyviZ3GFIBT05ZhtbVmuunf6GQgAfMzddXqWqJai mVMCgYcvhK860+LWcmoHPHQl2xWEderKT/de2RCBO+xb/TwC5XDiQQ4t+ukQmXKkCZ1Wyi8QM9w 3WyLjXz1K6wLQhgRyH3+Pbz3xmMEtoTAKSKij8AkE0ErLn/oKZWACq3+aYac8uHcUDzVVm00f5k h9pd+S8QnvvFg1Ryo5OE/ZM0Ee4lE3ytDqrShMWRD8qLtYz0nBTzmigiaWRC8Nz8lXEhciWcy/p YTRZVcnB9udQ5ZQ4ku1Es9WTzb051QvDWu8Lq+2fhTWU= X-Received: by 2002:a17:903:3845:b0:297:f0a8:e84c with SMTP id d9443c01a7336-29b6bf8421emr56607125ad.52.1763787713084; Fri, 21 Nov 2025 21:01:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IEi5gdhxHblCVbwFYsMyPI/0c2BwM2BYTDZ1N6c03YFZBk5YPwz4N45Ux9hHRFwXYiaHY1/nA== X-Received: by 2002:a17:903:3845:b0:297:f0a8:e84c with SMTP id d9443c01a7336-29b6bf8421emr56606255ad.52.1763787711762; Fri, 21 Nov 2025 21:01:51 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29b5b138c08sm70688725ad.25.2025.11.21.21.01.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Nov 2025 21:01:51 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: psodagud@quicinc.com, djaggi@quicinc.com, quic_msavaliy@quicinc.com, quic_vtanuku@quicinc.com, quic_arandive@quicinc.com, quic_shazhuss@quicinc.com Subject: [PATCH v1 12/12] i2c: qcom-geni: Enable I2C on SA8255p Qualcomm platforms Date: Sat, 22 Nov 2025 10:30:18 +0530 Message-Id: <20251122050018.283669-13-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20251122050018.283669-1-praveen.talari@oss.qualcomm.com> References: <20251122050018.283669-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: AW1haW4tMjUxMTIyMDAzNyBTYWx0ZWRfX+1DaERbJLSKy +fxQnxlDrxyBogmy+JFX3jg7cvgSYZyfB6aU7FbguOeKrSh0B5FXyuLA/YcOe+dPNkNrCNVeDfx mEgose78YEITzYMvTGt5zH9bWAXElpUekc0A/cPkM3CIqLAU09e+sjqyE1N1EpSAVGEEZ8P1AOy J3nI8VVLB7ubiyxyNJYoNO9xY9f+TJsg/n41cYVYVejjwnYeei2Vv11W4t4CSKcT6oBmOGqB1GT rXSgoKUkW2ig3ktq5XQagRG4qntKFS/u3y8bkrOF+WUPb/CoIE+i0oWZbfwRCvnXmHLINR5jQpb g2/nSYWbPBeGWT8OvaId9JpcZ58UdhtMLNAnHILQ+wATLfLGRDwY+hmH/HS2f4eN9PIL9E8pjo3 RBiGBlQBxR7o9WDeQJe7Gy19weab9A== X-Authority-Analysis: v=2.4 cv=cMjtc1eN c=1 sm=1 tr=0 ts=692143c1 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=Gro-kpSgzSE2vTo3mCsA:9 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-ORIG-GUID: HzsfEzvvcgEdJTZsvOgjy1wjD1UaIyWL X-Proofpoint-GUID: HzsfEzvvcgEdJTZsvOgjy1wjD1UaIyWL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-22_01,2025-11-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 phishscore=0 clxscore=1015 impostorscore=0 adultscore=0 spamscore=0 priorityscore=1501 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511220037 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 states(on/off). The SCMI performance protocol manages I2C frequency, with each frequency rate represented by a performance level. The driver uses geni_se_set_perf_opp() API to request the desired frequency rate.. As part of geni_se_set_perf_opp(), the OPP for the requested frequency is obtained using dev_pm_opp_find_freq_floor() and the performance level is set using dev_pm_opp_set_opp(). Signed-off-by: Praveen Talari --- drivers/i2c/busses/i2c-qcom-geni.c | 46 +++++++++++++++++++++++------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/drivers/i2c/busses/i2c-qcom-geni.c b/drivers/i2c/busses/i2c-qc= om-geni.c index a0f68fdd4078..78154879f02d 100644 --- a/drivers/i2c/busses/i2c-qcom-geni.c +++ b/drivers/i2c/busses/i2c-qcom-geni.c @@ -82,6 +82,9 @@ struct geni_i2c_desc { char *icc_ddr; bool no_dma_support; unsigned int tx_fifo_depth; + int (*resources_init)(struct geni_se *se); + int (*set_rate)(struct geni_se *se, unsigned long freq); + int (*power_state)(struct geni_se *se, bool state); }; =20 #define QCOM_I2C_MIN_NUM_OF_MSGS_MULTI_DESC 2 @@ -203,8 +206,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 +221,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 +913,9 @@ static int geni_i2c_xfer(struct i2c_adapter *adap, return ret; } =20 - qcom_geni_i2c_conf(gi2c); + ret =3D gi2c->dev_data->set_rate(&gi2c->se, gi2c->clk_freq_out); + if (ret) + return ret; =20 if (gi2c->gpi_mode) ret =3D geni_i2c_gpi_xfer(gi2c, msgs, num); @@ -1041,8 +1048,9 @@ static int geni_i2c_init(struct geni_i2c_dev *gi2c) return ret; } =20 -static int geni_i2c_resources_init(struct geni_i2c_dev *gi2c) +static int geni_i2c_resources_init(struct geni_se *se) { + struct geni_i2c_dev *gi2c =3D dev_get_drvdata(se->dev); int ret; =20 ret =3D geni_se_resources_init(&gi2c->se); @@ -1095,7 +1103,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 @@ -1165,10 +1173,12 @@ static int __maybe_unused geni_i2c_runtime_suspend(= struct device *dev) =20 disable_irq(gi2c->irq); =20 - ret =3D geni_se_resources_state(&gi2c->se, false); - if (ret) { - enable_irq(gi2c->irq); - return ret; + if (gi2c->dev_data->power_state) { + ret =3D gi2c->dev_data->power_state(&gi2c->se, false); + if (ret) { + enable_irq(gi2c->irq); + return ret; + } } =20 gi2c->suspended =3D 1; @@ -1180,9 +1190,11 @@ static int __maybe_unused geni_i2c_runtime_resume(st= ruct device *dev) int ret; struct geni_i2c_dev *gi2c =3D dev_get_drvdata(dev); =20 - ret =3D geni_se_resources_state(&gi2c->se, true); - if (ret) - return ret; + if (gi2c->dev_data->power_state) { + ret =3D gi2c->dev_data->power_state(&gi2c->se, true); + if (ret) + return ret; + } =20 enable_irq(gi2c->irq); gi2c->suspended =3D 0; @@ -1221,6 +1233,9 @@ static const struct dev_pm_ops geni_i2c_pm_ops =3D { =20 static const struct geni_i2c_desc geni_i2c =3D { .icc_ddr =3D "qup-memory", + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_state =3D geni_se_resources_state, }; =20 static const struct geni_i2c_desc i2c_master_hub =3D { @@ -1228,11 +1243,20 @@ static const struct geni_i2c_desc i2c_master_hub = =3D { .icc_ddr =3D NULL, .no_dma_support =3D true, .tx_fifo_depth =3D 16, + .resources_init =3D geni_i2c_resources_init, + .set_rate =3D qcom_geni_i2c_conf, + .power_state =3D geni_se_resources_state, +}; + +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