From nobody Tue Feb 10 07:21:27 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D7D6E41C2EE for ; Fri, 6 Feb 2026 17:41:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399706; cv=none; b=dDjwL3PIrAOfjvAF16DR2xfKzZm7rAqeb4B8kPmschXRtSvVrhSbcW5rIYO7JrBlHXPH6vIcZgNkOKgsn2b/Zc+1gSyHHEoHm0UdDuxS2Bi1rvkeHBYzNWCqQ5hk/UcCSiYjtv6gBPp8ihmnJTjc/thuvpNkHmPrM+xO2XyS7CI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770399706; c=relaxed/simple; bh=ugzI2X4T4Eu6du95zdaOBWO3+LJFBYSONj4KCG0BUk8=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mJJtelUsqIKQOc4nSPt+nsmfv2UbAvvyXQyuExYGPdWouXp2yXxXJBbAl72tcyTe09v1lXBF7gnAkwbWt7K3O1Qj2GtiloeEOKZx3I86UcpyRVlJ7z6pVJ6ghettiSOaOvsmPDwNxqsNMEX3VHc1LYLDKpY65OfAGLymVB5aQ40= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=K7YKkf7c; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=CyPGBzov; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="K7YKkf7c"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="CyPGBzov" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 616GKm642314345 for ; Fri, 6 Feb 2026 17:41:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=slQCzeC9waI 6hA1xDFtb4CgPu+7qSKt+eKegC+Sl/tk=; b=K7YKkf7cErmTavUwI7SKaJQ9v/D QQkQGBhiXb1/ldL41nvpjRelbComZ1GsQo22ZtuRBA7l+TlkPMYOt3fPjvLnBCud x2rAH4CwiSrBlmHDBqyekg8EfYeec4ZMzjBeAkikpHEjENljh2AX0Tmt0eZud6Qg DCm7IHslIkUDuviuhSlE6KTvOLooe82eUMo+89BO74fNBGhPozb1H+CkBXIutlS3 DUjrz0ohSdA8++FO0hTs/WqRvgH+CF7rDF0wcM39CldjfrWoaFJFXnoUGIaTf5GI FtTGki7kui3mKUtJqoJ2gy0nTiZJYD6rScxh/kpzjDrbxSjjOAXXW2Vu9kQ== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4c52mrkr5h-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 06 Feb 2026 17:41:45 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c6b1b22b134so1400977a12.2 for ; Fri, 06 Feb 2026 09:41:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1770399704; x=1771004504; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=slQCzeC9waI6hA1xDFtb4CgPu+7qSKt+eKegC+Sl/tk=; b=CyPGBzovAvAPdyvgiHCtdUSEDKJAG7Av3qG0K0cAQoFuzYVobDAs7T+Wy3E64each+ VcL3om384uMm7UWMWoolSM0Z5Wx9vh824/GzxUe4UYYzH892uWbUzsgSe9iZnACDTUFS NHCRxdzsx6dgf0xfnhXTpbkGFbaM1xr4gCuRg7w4riqEEKzJT9bTFKeiKKatdqmdmHLk /pXBo7cEzje5Lwm93DKLrtg8GirP7VZQN0za44JIxJXXmpiS5xhDUWX9hOKLOEzIWuHp KdTVF08VgI0YRvbE4F1P5VQsDCBHn70zq+rxX5qdvryaHxN0zf4oNV6HpUq19VP1eQUC VFxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770399704; x=1771004504; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=slQCzeC9waI6hA1xDFtb4CgPu+7qSKt+eKegC+Sl/tk=; b=X9/UvNHNkDCUI4WDQlyihV4a+CfJs76WyEkT5E0EmIVB8mh3AAjKby31rzSG+I4KaC xqqj0K1/ze6Bsnclrj3gmmHr/DaKZXAw4seq7Ke7o3UvbuOPR/6m9+MB5u98MQ5wInU0 f+GfIKJeTAL56ruZH9TOl6AA1BKpGdP29/5mcMOgoU3xuYiFUb632pxry/zpVfqKjXRK TSePiDrCZIVV8GMNAC3tZWJ1HL0YzPQrjaNeqsLP564Bslcm/D/kfv/zXTX/w4cecssT wxsXuXjUdrvxW9nnBpZz6L3m4EtcGBx+r/oBLGicNQlxNT6Y3z6CKny14YMCCSajk0Ks yVcA== X-Forwarded-Encrypted: i=1; AJvYcCUvVuReUFyTiaY2G03bq7uHkAUu2rGLCyjSp1Hc/JMcIBkAHOyELFtY6GDmzMCXL8Cl7QPxjU5pNwDswGE=@vger.kernel.org X-Gm-Message-State: AOJu0YzwDeoSmCVsV0qnjONzCXblWiWwmGrN4TjAH79sKIsmywE2LAU7 RkuHOkxGv0sdNL9wDV30szWB/TRmMXOCb7rsmLf0uCmGxw0EifEO6g+az99lbfgnJzkYVcKQhe1 mXcBNAmhgbJKzNPaFahmVuLKCzi3EgEw8w/bA48/PjyYGgB9l16+8clwXvh6D/BvNRhY= X-Gm-Gg: AZuq6aKl5S0qkZg6dLe9ywvHN0oWEMnE+4hz70ANHCO6er9TYVl2W0S3iyQoJLmROTi 6bjxdkEKJ86U3QOpU8n/Yyz5tHu069dVTHe8nIe+xpHEZM/6BRncVr+cXmDcwwtOTYWwx2fI/YZ 63jiURtaKQBCn/2Z4/LN/P7TSxNvsPowiwaenzivsXUtSAzBa8bCHo5CmhCu2v+moy4OiTId3hp h9UdAmI82DK5PryCgMUQorEGPE9pjhoo/PUwZSzg7hfp4o0ZAHnh/8+SCD9ZBqK/hHIM8Ury9xK o0R7lvpdMmGOKehIZIcWAQ8cBuPAR0ADd5ztkz9wKAXZO/eyeuSgJ6wWmIKcv49mN/WNSCsor6Z 6oug0nbzMTMtT18KaxNwlpic0BvfUurRkeLUUaOOTLtI= X-Received: by 2002:a05:6a20:2586:b0:392:e81f:6711 with SMTP id adf61e73a8af0-393acfb10aemr3598660637.8.1770399704391; Fri, 06 Feb 2026 09:41:44 -0800 (PST) X-Received: by 2002:a05:6a20:2586:b0:392:e81f:6711 with SMTP id adf61e73a8af0-393acfb10aemr3598642637.8.1770399703828; Fri, 06 Feb 2026 09:41:43 -0800 (PST) Received: from hu-ptalari-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c6dcb5eccbdsm2639387a12.19.2026.02.06.09.41.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 06 Feb 2026 09:41:43 -0800 (PST) From: Praveen Talari To: Andi Shyti , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Mukesh Kumar Savaliya , Viken Dadhaniya , Bjorn Andersson , Konrad Dybcio , Praveen Talari , linux-arm-msm@vger.kernel.org, linux-i2c@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, bjorn.andersson@oss.qualcomm.com, dmitry.baryshkov@oss.qualcomm.com, konrad.dybcio@oss.qualcomm.com Cc: prasad.sodagudi@oss.qualcomm.com, quic_vtanuku@quicinc.com, aniket.randive@oss.qualcomm.com, chandana.chiluveru@oss.qualcomm.com, jyothi.seerapu@oss.qualcomm.com, chiluka.harish@oss.qualcomm.com Subject: [PATCH v5 03/13] soc: qcom: geni-se: Introduce helper API for resource initialization Date: Fri, 6 Feb 2026 23:11:02 +0530 Message-Id: <20260206174112.4149893-4-praveen.talari@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> References: <20260206174112.4149893-1-praveen.talari@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjA2MDEyOSBTYWx0ZWRfX84oZRUewgcaW /iRQqCNFKQYj+UcTad/GEDTz3erR8GKRUzh9163FXkrLEVtDEPfI/1OiWKVvCIoWYMjcAj2BS28 I95AROJKGYriA9D2EFN3p8LLuUbeUkt9s+9M/hPElqKEAP0wTXSJO6Rg9i43l0rLUeynmUe0Xkp m+Wls9W5fdG392If7OCXT6mWjx7q9S6U9Z6b2ycnwfIlre6JWMkppEOaaUlbxic96RfWt9H2yIF 9N5MH3+o9UJKzvj9rCu4duNv8AOh/ynJmVaybSjYswoLKTi+NxORQGVWDzXv1wrTGvVMQHphQxO u6kaypdQM3Xn3lo6K7ms7eALcRmnwWshdiA6dDrY4yWxva0ignKGZ8y/Zyir7IPPW/OMEWtKAH7 hMhpOXj3fHAT9o2ht+aFKp4NUJzWQ3/cp/bf+0/LiSf6WfS5z3hMp69fFOixndxfp+KlOh1HVEe 6mcJC2pnW6veGWbWg8A== X-Proofpoint-GUID: Q_wTG2YNL-Ev2sH12RDjAyrMkFUryvc8 X-Authority-Analysis: v=2.4 cv=e4kLiKp/ c=1 sm=1 tr=0 ts=698627d9 cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=HzLeVaNsDn8A:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=EUspDBNiAAAA:8 a=OYYzyx7XpuDNtx8IVW4A:9 a=_Vgx9l1VpLgwpw_dHYaR:22 X-Proofpoint-ORIG-GUID: Q_wTG2YNL-Ev2sH12RDjAyrMkFUryvc8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-06_05,2026-02-05_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 clxscore=1015 adultscore=0 malwarescore=0 bulkscore=0 spamscore=0 lowpriorityscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602060129 Content-Type: text/plain; charset="utf-8" The GENI Serial Engine drivers (I2C, SPI, and SERIAL) currently duplicate code for initializing shared resources such as clocks and interconnect paths. Introduce a new helper API, geni_se_resources_init(), to centralize this initialization logic, improving modularity and simplifying the probe function. Reviewed-by: Konrad Dybcio Signed-off-by: Praveen Talari --- v4 -> v5: - Added a Reviewed-by tag v1 -> v2: From kernel test robot - Updated proper return value for devm_pm_opp_set_clkname() --- drivers/soc/qcom/qcom-geni-se.c | 47 ++++++++++++++++++++++++++++++++ include/linux/soc/qcom/geni-se.h | 6 ++++ 2 files changed, 53 insertions(+) diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-s= e.c index b0542f836453..75e722cd1a94 100644 --- a/drivers/soc/qcom/qcom-geni-se.c +++ b/drivers/soc/qcom/qcom-geni-se.c @@ -19,6 +19,7 @@ #include #include #include +#include #include =20 /** @@ -1012,6 +1013,52 @@ int geni_icc_disable(struct geni_se *se) } EXPORT_SYMBOL_GPL(geni_icc_disable); =20 +/** + * geni_se_resources_init() - Initialize resources for a GENI SE device. + * @se: Pointer to the geni_se structure representing the GENI SE device. + * + * This function initializes various resources required by the GENI Serial= Engine + * (SE) device, including clock resources (core and SE clocks), interconne= ct + * paths for communication. + * It retrieves optional and mandatory clock resources, adds an OF-based + * operating performance point (OPP) table, and sets up interconnect paths + * with default bandwidths. The function also sets a flag (`has_opp`) to + * indicate whether OPP support is available for the device. + * + * Return: 0 on success, or a negative errno on failure. + */ +int geni_se_resources_init(struct geni_se *se) +{ + int ret; + + se->core_clk =3D devm_clk_get_optional(se->dev, "core"); + if (IS_ERR(se->core_clk)) + return dev_err_probe(se->dev, PTR_ERR(se->core_clk), + "Failed to get optional core clk\n"); + + se->clk =3D devm_clk_get(se->dev, "se"); + if (IS_ERR(se->clk) && !has_acpi_companion(se->dev)) + return dev_err_probe(se->dev, PTR_ERR(se->clk), + "Failed to get SE clk\n"); + + ret =3D devm_pm_opp_set_clkname(se->dev, "se"); + if (ret) + return ret; + + ret =3D devm_pm_opp_of_add_table(se->dev); + if (ret && ret !=3D -ENODEV) + return dev_err_probe(se->dev, ret, "Failed to add OPP table\n"); + + se->has_opp =3D (ret =3D=3D 0); + + ret =3D geni_icc_get(se, "qup-memory"); + if (ret) + return ret; + + return geni_icc_set_bw_ab(se, GENI_DEFAULT_BW, GENI_DEFAULT_BW, GENI_DEFA= ULT_BW); +} +EXPORT_SYMBOL_GPL(geni_se_resources_init); + /** * geni_find_protocol_fw() - Locate and validate SE firmware for a protoco= l. * @dev: Pointer to the device structure. diff --git a/include/linux/soc/qcom/geni-se.h b/include/linux/soc/qcom/geni= -se.h index 980aabea2157..c182dd0f0bde 100644 --- a/include/linux/soc/qcom/geni-se.h +++ b/include/linux/soc/qcom/geni-se.h @@ -60,18 +60,22 @@ struct geni_icc_path { * @dev: Pointer to the Serial Engine device * @wrapper: Pointer to the parent QUP Wrapper core * @clk: Handle to the core serial engine clock + * @core_clk: Auxiliary clock, which may be required by a protocol * @num_clk_levels: Number of valid clock levels in clk_perf_tbl * @clk_perf_tbl: Table of clock frequency input to serial engine clock * @icc_paths: Array of ICC paths for SE + * @has_opp: Indicates if OPP is supported */ struct geni_se { void __iomem *base; struct device *dev; struct geni_wrapper *wrapper; struct clk *clk; + struct clk *core_clk; unsigned int num_clk_levels; unsigned long *clk_perf_tbl; struct geni_icc_path icc_paths[3]; + bool has_opp; }; =20 /* Common SE registers */ @@ -535,6 +539,8 @@ int geni_icc_enable(struct geni_se *se); =20 int geni_icc_disable(struct geni_se *se); =20 +int geni_se_resources_init(struct geni_se *se); + int geni_load_se_firmware(struct geni_se *se, enum geni_se_protocol_type p= rotocol); #endif #endif --=20 2.34.1