From nobody Sat Oct 4 08:05:12 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 1B14E3101B4 for ; Tue, 19 Aug 2025 05:35:03 +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=1755581704; cv=none; b=eLBmSLWcMVaSS/JygnRRKzGmB78GHA8U5TXmqMzzN+AV5Z39qPETa2Lz+0RtTgP3754q/5hzaYMPhFcFo8jW0D+LP4nUNpI648lWi+mTjD06YhYeGhoKPvcUGVYxFSnRxLGB3/InW2GAg4QXQ1C2MadjHDmo5jt5+z+p7vJZUKQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755581704; c=relaxed/simple; bh=IGUYBqodeckAvkTwJGXLLcRUT+selbqJcsZemlSFEHs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qYsZDlsXEcnhFUaiSpKwupjxhWKhuWzLvy4y0oJvpUrwASQhZTtf/AFVUoFrvVEHXXuG3uVS1xYDc8BTV72/hAC5AYN9VWyNMTES7Ov41BpJ2mlOT1sCi6jU+rSpxObOL3JmIQjG3EJopwip5Tdci8vKXilj12wkMkJU/+rlh+w= 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=QzqZ7Jd9; 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="QzqZ7Jd9" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57J2XJGS025503 for ; Tue, 19 Aug 2025 05:35:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= oEfaylhhHT3PRMBgt77f7ADF//VSd924MmiZhS+q5SM=; b=QzqZ7Jd9CiM5OKHn v42Z08cLcobbNhw5FaKw1jZEJWgE2qfuLP5ZlMHrsfcAyFWgBUMJk6G7bew2ajlo yuNC235z9hJ0IGUsZxvoKDJdnxnosVcAso/VT7nEGwHuHCDgwaviPHA5EBS0setz b0Go36OXJs63XYpAr3GgwWf5G4WXopDk9g9BC/rMkRjBUkcpMHxbCKhlMdeidDFb 9v2daUxOe7+GT3n/WXMdFaO5+H/CCATnu9KjY3BBQ5ytZe11YkXmucKjDBknyDKb SKTJZ5ByUNU7RivmfhKPHCY4zD/CUA4FWUJZtXjcrtQ4ZJ7dB6a7PH7rekKSnLHA UMBbMA== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 48m71cj152-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 19 Aug 2025 05:35:02 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b47538030bfso573032a12.1 for ; Mon, 18 Aug 2025 22:35:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755581701; x=1756186501; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oEfaylhhHT3PRMBgt77f7ADF//VSd924MmiZhS+q5SM=; b=O7VVsxoLJxryLzSwSGT2SIdEGLJDmnC8KcJBECyj9Iq7YVrL9TpO6hF7zui81FXi/C 4Pk2cUJJj42IKWIMGCCGyQ8H+8Bh4LSYeo/lO5R5+Vj4zTT50JgSYYpwrJ3QN83QogOW ReABsDwZmxiKnL+sW+yNFuZSehQbEc4lM37zdtjYp0VNMWi6AHkaAhHd4Dq5QmklgIaz ghxa6QGyup6u4olqVSfLLGNvVIIfG+XNo+xej1v/Gbfe4R0UzQRoMAW/lVFr5lB6cggg OAv32V/VYiw90+VuITrEnhR628D06aCGUxD3XRbU1KO6QLOSA9j43iCrGLHTSA3ri5Kr QAvA== X-Forwarded-Encrypted: i=1; AJvYcCXpTMJnimkbDYJabg7WW4n+vOQjH1+d9X+DAHqb17B8c7Nc/OrdfJDD6M3C+dF/tMfqCsr88v1uY+wf2pk=@vger.kernel.org X-Gm-Message-State: AOJu0Yx7Ui9UIQyJTiBcq9Z1vR8sQevAZRO2ZlA/OWYBr0JVTPWlGSqh IbkyohXXxW1aYJB7+RgeFLvAgqHdOzz773bbE8D8F0xhFocfQH0U3Ydcm/xdNFBEFDXpVSs92x2 E9gzCkB8hY5TxOEBl+QLAJpREzcEPQIZw+7RiVDWQs7cnCNkClTEx42E72QoXg7Gz/Sg= X-Gm-Gg: ASbGncsnQ+HZgZjJdZvbQDLDzHDLEKZ4O0nxTAYcCeMuzMti0xMCUre002HP1E65GVA yb6fojIuGKqvq6R6Y/wRoSC0Y4SwhuFM1wf/yS/y1iyY8dhRmUf+IBCFqiLKo4NLhLREpppDny7 NwhVWCx+sqXnyPy7yv6NCjPDDr5h20fnlE2Vz0Z4ZPlmiPDH/a7GMVB0uldo4zSse2LpSyE9LGC ZeK+ZU+XCvdHLLikq1o18cDJLRbuOHaL9w+PyUaXFhdTY+nBxLogUahSNOnSPqODkG5/7X7Idhu +U7u3L1p9N6pRKye/9CZqoqjjYk2KIJtBS0LVfjCZVUpj6zLkJWFbUFWVp47NNZQZRkdncLpXuo = X-Received: by 2002:a17:902:e751:b0:240:9f9:46a0 with SMTP id d9443c01a7336-245e056ad16mr19552625ad.38.1755581701341; Mon, 18 Aug 2025 22:35:01 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGhygomeqN/twCLgtf4rIAeJ3WW/JSlAe0TPIExYym4m+qO/lkisrRXVqSA50IwU9v8z/7NNA== X-Received: by 2002:a17:902:e751:b0:240:9f9:46a0 with SMTP id d9443c01a7336-245e056ad16mr19552365ad.38.1755581700824; Mon, 18 Aug 2025 22:35:00 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2446d50f710sm97004785ad.86.2025.08.18.22.34.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Aug 2025 22:35:00 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Tue, 19 Aug 2025 11:04:42 +0530 Subject: [PATCH v3 1/3] OPP: Add support to find OPP for a set of keys Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250819-opp_pcie-v3-1-f8bd7e05ce41@oss.qualcomm.com> References: <20250819-opp_pcie-v3-0-f8bd7e05ce41@oss.qualcomm.com> In-Reply-To: <20250819-opp_pcie-v3-0-f8bd7e05ce41@oss.qualcomm.com> To: Viresh Kumar , Nishanth Menon , Stephen Boyd , "Rafael J. Wysocki" , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Bjorn Andersson , Konrad Dybcio , Krzysztof Kozlowski , Conor Dooley Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, Krishna Chaitanya Chundru X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755581690; l=7102; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=IGUYBqodeckAvkTwJGXLLcRUT+selbqJcsZemlSFEHs=; b=a6zu95us9JDdiwpabmh6OKUCpDnodAcucS+dYmBc/1vKwHkujn/U4oxMiwAFcmwS6YXwLIJ3c Op+POgi5A24Bd0WU5OqK0xB/zx2fhJsXe3+dbGfIpjRtxDrpCo9GVfY X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Proofpoint-ORIG-GUID: rnDCquk-liUOyVb4qfu_ZNPSV6N2IHa2 X-Proofpoint-GUID: rnDCquk-liUOyVb4qfu_ZNPSV6N2IHa2 X-Authority-Analysis: v=2.4 cv=IvQecK/g c=1 sm=1 tr=0 ts=68a40d06 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=76l3OPsZB85xAofE:21 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=Efh3igjAhhwdWKXb3DkA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODE4MDE0NyBTYWx0ZWRfX6P3epsqbmgZR GecqzL28Idi5iAqI2pxEZopn3fbW6hJeU1D+JNeVjDIs2E+9uFX5X082TCdXMigS2nKTVeRhXoe M9KkHhnYZDU4fjcqAK4H7lTecrZyBjpKoKJyg2oxcnJQB5bD8rrVPhlYNsXpsjF5r8MajyT33Gg tc6hE5lH0ST7F8HnA2T1WLmWplNv0SDkpvvWUTuGgWzMkF7niJmMkiiOTOexsF0n9pvlQHBcYJU yD5WccxEns08xI9uXkmMMDMloN/N9MYYnnTQe/UZus+WuaGPNWzGlSXJFftBOsjs/j4LXQAcoYw ak4d+QA8uQzh/3rQxTvzo9GiIbpY7zGnQCvwniw3C4fbtqgYgIFngfX8mAJj1nB7WpvsYdQwPvi hWFts2E2 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-19_01,2025-08-14_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 phishscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508180147 Some clients, such as PCIe, may operate at the same clock frequency across different data rates by varying link width. In such cases, frequency alone is not sufficient to uniquely identify an OPP. To support these scenarios, introduce a new API dev_pm_opp_find_key_exact() that allows OPP lookup with different set of keys like freq, level & bandwidth. Signed-off-by: Krishna Chaitanya Chundru --- drivers/opp/core.c | 100 +++++++++++++++++++++++++++++++++++++++++++++= ++++ include/linux/pm_opp.h | 23 ++++++++++++ 2 files changed, 123 insertions(+) diff --git a/drivers/opp/core.c b/drivers/opp/core.c index edbd60501cf00dfd1957f7d19b228d1c61bbbdcc..ce359a3d444b0b7099cdd2421ab= 1019963d05d9f 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -461,6 +461,15 @@ int dev_pm_opp_get_opp_count(struct device *dev) EXPORT_SYMBOL_GPL(dev_pm_opp_get_opp_count); =20 /* Helpers to read keys */ +static unsigned long _read_opp_key(struct dev_pm_opp *opp, int index, stru= ct dev_pm_opp_key *key) +{ + key->bandwidth =3D opp->bandwidth ? opp->bandwidth[index].peak : 0; + key->freq =3D opp->rates[index]; + key->level =3D opp->level; + + return true; +} + static unsigned long _read_freq(struct dev_pm_opp *opp, int index) { return opp->rates[index]; @@ -488,6 +497,23 @@ static bool _compare_exact(struct dev_pm_opp **opp, st= ruct dev_pm_opp *temp_opp, return false; } =20 +static bool _compare_opp_key_exact(struct dev_pm_opp **opp, struct dev_pm_= opp *temp_opp, + struct dev_pm_opp_key opp_key, struct dev_pm_opp_key key) +{ + bool level_match =3D (opp_key.level =3D=3D OPP_LEVEL_UNSET || + key.level =3D=3D OPP_LEVEL_UNSET || opp_key.level =3D=3D key.level); + bool bw_match =3D (opp_key.bandwidth =3D=3D 0 || + key.bandwidth =3D=3D 0 || opp_key.bandwidth =3D=3D key.bandwidth); + bool freq_match =3D (key.freq =3D=3D 0 || opp_key.freq =3D=3D key.freq); + + if (freq_match && level_match && bw_match) { + *opp =3D temp_opp; + return true; + } + + return false; +} + static bool _compare_ceil(struct dev_pm_opp **opp, struct dev_pm_opp *temp= _opp, unsigned long opp_key, unsigned long key) { @@ -541,6 +567,40 @@ static struct dev_pm_opp *_opp_table_find_key(struct o= pp_table *opp_table, return opp; } =20 +static struct dev_pm_opp *_opp_table_find_opp_key(struct opp_table *opp_ta= ble, + struct dev_pm_opp_key *key, int index, bool available, + unsigned long (*read)(struct dev_pm_opp *opp, int index, + struct dev_pm_opp_key *key), + bool (*compare)(struct dev_pm_opp **opp, struct dev_pm_opp *temp_opp, + struct dev_pm_opp_key opp_key, struct dev_pm_opp_key key), + bool (*assert)(struct opp_table *opp_table, unsigned int index)) +{ + struct dev_pm_opp *temp_opp, *opp =3D ERR_PTR(-ERANGE); + struct dev_pm_opp_key temp_key; + + /* Assert that the requirement is met */ + if (assert && !assert(opp_table, index)) + return ERR_PTR(-EINVAL); + + guard(mutex)(&opp_table->lock); + + list_for_each_entry(temp_opp, &opp_table->opp_list, node) { + if (temp_opp->available =3D=3D available) { + read(temp_opp, index, &temp_key); + if (compare(&opp, temp_opp, temp_key, *key)) + break; + } + } + + /* Increment the reference count of OPP */ + if (!IS_ERR(opp)) { + *key =3D temp_key; + dev_pm_opp_get(opp); + } + + return opp; +} + static struct dev_pm_opp * _find_key(struct device *dev, unsigned long *key, int index, bool availabl= e, unsigned long (*read)(struct dev_pm_opp *opp, int index), @@ -632,6 +692,46 @@ struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct d= evice *dev, } EXPORT_SYMBOL_GPL(dev_pm_opp_find_freq_exact); =20 +/** + * dev_pm_opp_find_key_exact() - Search for an exact OPP key + * @dev: Device for which the OPP is being searched + * @key: OPP key to match + * @available: true/false - match for available OPP + * + * Return: Searches for an exact match the OPP key in the OPP table and re= turns + * pointer to the matching opp if found, else returns ERR_PTR in case of= error + * and should be handled using IS_ERR. Error return values can be: + * EINVAL: for bad pointer + * ERANGE: no match found for search + * ENODEV: if device not found in list of registered devices + * + * Note: available is a modifier for the search. if available=3Dtrue, then= the + * match is for exact matching key and is available in the stored OPP + * table. if false, the match is for exact key which is not available. + * + * This provides a mechanism to enable an opp which is not available curre= ntly + * or the opposite as well. + * + * The callers are required to call dev_pm_opp_put() for the returned OPP = after + * use. + */ +struct dev_pm_opp *dev_pm_opp_find_key_exact(struct device *dev, + struct dev_pm_opp_key key, + bool available) +{ + struct opp_table *opp_table __free(put_opp_table) =3D _find_opp_table(dev= ); + + if (IS_ERR(opp_table)) { + dev_err(dev, "%s: OPP table not found (%ld)\n", __func__, + PTR_ERR(opp_table)); + return ERR_CAST(opp_table); + } + + return _opp_table_find_opp_key(opp_table, &key, 0, available, _read_opp_k= ey, + _compare_opp_key_exact, assert_single_clk); +} +EXPORT_SYMBOL_GPL(dev_pm_opp_find_key_exact); + /** * dev_pm_opp_find_freq_exact_indexed() - Search for an exact freq for the * clock corresponding to the index diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h index cf477beae4bbede88223566df5f43d85adc5a816..53e02098129d215970d0854b1f8= ffaf4499f2bd4 100644 --- a/include/linux/pm_opp.h +++ b/include/linux/pm_opp.h @@ -98,6 +98,18 @@ struct dev_pm_opp_data { unsigned long u_volt; }; =20 +/** + * struct dev_pm_opp_key - Key used to identify OPP entries + * @freq: Frequency in Hz + * @level: Performance level associated with the OPP entry + * @bandwidth: Bandwidth associated with the OPP entry + */ +struct dev_pm_opp_key { + unsigned long freq; + unsigned int level; + u32 bandwidth; +}; + #if defined(CONFIG_PM_OPP) =20 struct opp_table *dev_pm_opp_get_opp_table(struct device *dev); @@ -131,6 +143,10 @@ struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct d= evice *dev, unsigned long freq, bool available); =20 +struct dev_pm_opp *dev_pm_opp_find_key_exact(struct device *dev, + struct dev_pm_opp_key key, + bool available); + struct dev_pm_opp * dev_pm_opp_find_freq_exact_indexed(struct device *dev, unsigned long freq, u32 index, bool available); @@ -289,6 +305,13 @@ static inline struct dev_pm_opp *dev_pm_opp_find_freq_= exact(struct device *dev, return ERR_PTR(-EOPNOTSUPP); } =20 +static inline struct dev_pm_opp *dev_pm_opp_find_key_exact(struct device *= dev, + struct dev_pm_opp_key key, + bool available) +{ + return ERR_PTR(-EOPNOTSUPP); +} + static inline struct dev_pm_opp * dev_pm_opp_find_freq_exact_indexed(struct device *dev, unsigned long freq, u32 index, bool available) --=20 2.34.1 From nobody Sat Oct 4 08:05:12 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 873603112B0 for ; Tue, 19 Aug 2025 05:35:18 +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=1755581719; cv=none; b=G42CDiMkfAifXbDl084hRvhOaUmb95H/FvaALEXFZ0GQJ83KbqfkEMHGfBulSJOdS0tXoMx/4+73mCNldZj8Kw44tH+g7ucbJwNJ6UN+CIOzvJAhiQ82gtmeoIKbUC8/9PdjsXBgeoQgfCP5vSai9p520g+oCDKyrzEtT632h44= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755581719; c=relaxed/simple; bh=2rSyjnOXNH6jZxqRWat3S+IfaQ+klyL79lUq0adK6VI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f1XZWkhxaQ9efKdfEZ3vvhxNiODZRlLjZpWyufpReeb+RYuxeE07ZdMbK6IGM24DSOlNc0nUqBYUahaS7QLRsh1Tq5SUHnx4FhE/aT7ByXcKLUlGqz+SUoDGxwW95efqy0R2gZfHcUagEoLWZi921mNfoFeqrx9PnbH4rGKxPT8= 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=YCxSDkLu; 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="YCxSDkLu" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57J2A6f9015639 for ; Tue, 19 Aug 2025 05:35:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= B8vAYM0Ri6HzYPqPusEESOhjr79e1ErFVtCFN1cMUUQ=; b=YCxSDkLu5yz2f4Q3 RcDI3dRVpQtdarphXwI7VUURtKhFouxoneOiEpR6SkW/U/Om50feVe2HUmcbm+nZ AUbOtfMWinS5JdeFxIYwfirwbeCPQ0xZMVT0tO2TwJqOn9rreFHikevzQXnCC0V/ JT8Hnz6t18U/n+JlgPRQ0jyjUnmr3GuMSP35QNI5xoMgwc8eMfsTYE3L6qRUk0Nh Vv3qsJvZ/tZkFWIwDJh3Y0h+u9uHnSJ5LShHd9yhjF2P3Q9/2LnQUZZX962t0yoR SiIM94zAQGblgcawe1ippuoVDNQIMr0QxGBDrQv240dmXijMZc+Pc2G8+PTw5ZRP z6HoIQ== 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 48jk5mf7jk-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 19 Aug 2025 05:35:17 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-24457f4f3ecso58060735ad.0 for ; Mon, 18 Aug 2025 22:35:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755581707; x=1756186507; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=B8vAYM0Ri6HzYPqPusEESOhjr79e1ErFVtCFN1cMUUQ=; b=pOnCx8lHQyFS9fs4mebIw4ajYTq3A95ZFAOUQuWNUdHhU7qq8eh3vQRR9peW46I+w+ oYcaB1Z4BqocWM+wxCXQkmG7cnhzduni97MDpi0f5ePalgKlLbQDIflAEBckMHHBf5H6 C1aIXbrOh6GkTeDKzPN/FmYiuRcsoWsO5Q/QxGUnWjo6l0b/b04qzZFTPvvYL0OpWRg9 hGIbSYGm/dCAICkvxYwvxnV2P/qDT9w4gi3K3W6STFCGFDJsA6vUxPcB3cR1UWoKxQo2 B3JctErG+Hj7BCZ6nc8SwcmL5dhcliYSr+e7u0vDBjtNXCzp/vCGdFSyVaS1PAvbUqPB TxrQ== X-Forwarded-Encrypted: i=1; AJvYcCUHLUiuTaWUt/PXXOKhQ3nDnNNmkfd2HXsdJSWoXP8H//Sjl/l8SE85V5eBn8fq9beoQvxjYs7MZ2Qtox4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+KzqkL9Mw41wK5JXEEYPycZMtgyrQiKY2kpT/IMir9be1HOi2 ewKbBP1Vg7ARfONwLg+N1epO2xa/gjcJzJ0muN6ujCn4fSjtVf1BqSg/3unkfNjoVpGEMyaf3vV FjXsvwNzcbCbeGrMMMpa9z8Zkv3NCCYF4i9/aPgAoCaPPZeKFjzPOle/7j+atfWEM36s= X-Gm-Gg: ASbGncuDLETI0xcCgdLY+nl6u0+lU13f73yA5AXUC+Zwb1FDkdxA85smtC2CrG1PDHs aW4Twi71Q+z/DdVFNS1HpyneXddHdh9AKJhMAbZ+yNAiSTbLPpj+ndy+AxnOqHpnjOaiKeY89SN 437E+7Z8LITXVPS+yr+nZF5wQ0idT/MIUKAf0A9CcPqB4pfEhuETU45GuBfV13UyWzly8Ov+VON rxleOhx2+9z+I1yLLvI41I7BLHM/pa2BaGGj1N5kzmnqGgCNxi8rC5/LjaP/kF8H0WmNgpF5Web 8qp2BUu3L6Wz+0mhXxxZ+rZ6VTafq+7jU7GhQT+BoMireuZRhZAvzd3bOAKze8bV+Qr0jkGF7hk = X-Received: by 2002:a17:902:d4ca:b0:244:9a88:bf6 with SMTP id d9443c01a7336-245e0526b3dmr20781835ad.38.1755581706739; Mon, 18 Aug 2025 22:35:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IG3T2DWF0sM5aMCv7IQ1WuvOo+eJnBtoWO3vhU5xsD6yPrx9RP8y2lOdkUyfyrc1jBjsJmiIg== X-Received: by 2002:a17:902:d4ca:b0:244:9a88:bf6 with SMTP id d9443c01a7336-245e0526b3dmr20781465ad.38.1755581706220; Mon, 18 Aug 2025 22:35:06 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2446d50f710sm97004785ad.86.2025.08.18.22.35.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Aug 2025 22:35:05 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Tue, 19 Aug 2025 11:04:43 +0530 Subject: [PATCH v3 2/3] arm64: dts: qcom: sm8450: Add opp-level to indicate PCIe data rates Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250819-opp_pcie-v3-2-f8bd7e05ce41@oss.qualcomm.com> References: <20250819-opp_pcie-v3-0-f8bd7e05ce41@oss.qualcomm.com> In-Reply-To: <20250819-opp_pcie-v3-0-f8bd7e05ce41@oss.qualcomm.com> To: Viresh Kumar , Nishanth Menon , Stephen Boyd , "Rafael J. Wysocki" , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Bjorn Andersson , Konrad Dybcio , Krzysztof Kozlowski , Conor Dooley Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, Krishna Chaitanya Chundru X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755581690; l=3189; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=2rSyjnOXNH6jZxqRWat3S+IfaQ+klyL79lUq0adK6VI=; b=JlhlQ7TUFYilxYzRYBEH44c1xz4YIwI0fcVfxHuf0FM5xfY9kBMX68LMdQPURjW1d48qfMVRb jBzsfMXLcBvDWMTBKEoi+XFYXQByPcCDsCWFyRQW4zGN/lvwwIpaDi7 X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Authority-Analysis: v=2.4 cv=Sdn3duRu c=1 sm=1 tr=0 ts=68a40d16 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=qQkGquXN9PvF_GGjQ98A:9 a=QEXdDO2ut3YA:10 a=GvdueXVYPmCkWapjIL-Q:22 X-Proofpoint-ORIG-GUID: IcZHRM59g1Lo3p1rsFysleVHuDtedSZo X-Proofpoint-GUID: IcZHRM59g1Lo3p1rsFysleVHuDtedSZo X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODE2MDA0MiBTYWx0ZWRfX/DFMJbnL0jBe PDynM5LO6Ry0rf7uPgM2HlcfmQKSpAd6sYwgpBuolNUusW3JC021dkAaowBD5r9KG4IEoUIGRUD HQ7YHtEyAtaFkRcZnvZzDOkJZuRUuMlKPLgXUUHlXG9M5Z6ALonBCD8d07hMJCc/vpTxX5fn/DR 85pixwuotFnuNBeCeBDP7sTn7UdV3jFACFi7Q174PRu69GES7Fg8SJ8KVMlDIdHv7dsegWHWucg v/0zYcfHQPeCqOfcIlKbakW7uvu59KLhXFIqGK6kEF2xjNIfsPxj7w29IlWBvjeASyJFWRQKBli +i8qX8WLVp9KbDZ2hwvboau2ygEC8WK9JGU/9gLZWUI6jcL9Lo1MCZn0CMOwo7p33cf1Me70SW8 ulEjnCOY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-19_01,2025-08-14_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 clxscore=1015 suspectscore=0 priorityscore=1501 spamscore=0 adultscore=0 malwarescore=0 bulkscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508160042 Add opp-level to indicate PCIe data rates and also define OPP enteries for each link width and data rate. Append the opp level to name of the opp node to indicate both frequency and level. Signed-off-by: Krishna Chaitanya Chundru Reviewed-by: Konrad Dybcio --- arch/arm64/boot/dts/qcom/sm8450.dtsi | 41 +++++++++++++++++++++++++++++---= ---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/arch/arm64/boot/dts/qcom/sm8450.dtsi b/arch/arm64/boot/dts/qco= m/sm8450.dtsi index 33574ad706b915136546c7f92c7cd0b8a0d62b7e..d7f8706ca4949e253a4102474c9= 2b393a345262f 100644 --- a/arch/arm64/boot/dts/qcom/sm8450.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8450.dtsi @@ -2052,6 +2052,7 @@ opp-2500000 { opp-hz =3D /bits/ 64 <2500000>; required-opps =3D <&rpmhpd_opp_low_svs>; opp-peak-kBps =3D <250000 1>; + opp-level =3D <1>; }; =20 /* GEN 2 x1 */ @@ -2059,6 +2060,7 @@ opp-5000000 { opp-hz =3D /bits/ 64 <5000000>; required-opps =3D <&rpmhpd_opp_low_svs>; opp-peak-kBps =3D <500000 1>; + opp-level =3D <2>; }; =20 /* GEN 3 x1 */ @@ -2066,6 +2068,7 @@ opp-8000000 { opp-hz =3D /bits/ 64 <8000000>; required-opps =3D <&rpmhpd_opp_nom>; opp-peak-kBps =3D <984500 1>; + opp-level =3D <3>; }; }; =20 @@ -2210,45 +2213,67 @@ pcie1_opp_table: opp-table { compatible =3D "operating-points-v2"; =20 /* GEN 1 x1 */ - opp-2500000 { + opp-2500000-1 { opp-hz =3D /bits/ 64 <2500000>; required-opps =3D <&rpmhpd_opp_low_svs>; opp-peak-kBps =3D <250000 1>; + opp-level =3D <1>; }; =20 - /* GEN 1 x2 and GEN 2 x1 */ - opp-5000000 { + /* GEN 1 x2 */ + opp-5000000-1 { + opp-hz =3D /bits/ 64 <5000000>; + required-opps =3D <&rpmhpd_opp_low_svs>; + opp-peak-kBps =3D <500000 1>; + opp-level =3D <1>; + }; + + /* GEN 2 x1 */ + opp-5000000-2 { opp-hz =3D /bits/ 64 <5000000>; required-opps =3D <&rpmhpd_opp_low_svs>; opp-peak-kBps =3D <500000 1>; + opp-level =3D <2>; }; =20 /* GEN 2 x2 */ - opp-10000000 { + opp-10000000-2 { opp-hz =3D /bits/ 64 <10000000>; required-opps =3D <&rpmhpd_opp_low_svs>; opp-peak-kBps =3D <1000000 1>; + opp-level =3D <2>; }; =20 /* GEN 3 x1 */ - opp-8000000 { + opp-8000000-3 { opp-hz =3D /bits/ 64 <8000000>; required-opps =3D <&rpmhpd_opp_nom>; opp-peak-kBps =3D <984500 1>; + opp-level =3D <3>; + }; + + /* GEN 3 x2 */ + opp-16000000-3 { + opp-hz =3D /bits/ 64 <16000000>; + required-opps =3D <&rpmhpd_opp_nom>; + opp-peak-kBps =3D <1969000 1>; + opp-level =3D <3>; }; =20 - /* GEN 3 x2 and GEN 4 x1 */ - opp-16000000 { + /* GEN 4 x1 */ + opp-16000000-4 { opp-hz =3D /bits/ 64 <16000000>; required-opps =3D <&rpmhpd_opp_nom>; opp-peak-kBps =3D <1969000 1>; + opp-level =3D <4>; }; =20 /* GEN 4 x2 */ - opp-32000000 { + opp-32000000-4 { opp-hz =3D /bits/ 64 <32000000>; required-opps =3D <&rpmhpd_opp_nom>; opp-peak-kBps =3D <3938000 1>; + opp-level =3D <4>; }; }; =20 --=20 2.34.1 From nobody Sat Oct 4 08:05:12 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 BA01930FF06 for ; Tue, 19 Aug 2025 05:35:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755581715; cv=none; b=tg331iCILLdoifmj9WfxVPizXPD00+mLTEYjyQTJlTTyYkGG9ZDiPrmdPZ82Sg0vqoEC0/mtCyzOgEEPI6MVEhDmyPM0+aBsJbTp1w9iuUyKxJViSXrjRFVn8Ixd8APwPmnoOcj/p0mPSJMHJRSng7iWhF1/MGpTQMXpfjBQ/os= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755581715; c=relaxed/simple; bh=zNNsKODeITIq9p5C4zPwt5vGWZ3TBF1so1nIBED9rGw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ErqlMOr06XsZX6wedA5mHXHaZeFoThU5ZqIpQLvDwXs2eGGx813p8nWQIn0jhU8nKP1uzoG6YKAuZ16zSpAqebL3MNWsoAhFCpzVhgGlzdvltw5/7Py+c/C3MsAL1GkkcFNrddio62X9G13qvz42rpAnKp1oiT9bBy0C2ZmU/J8= 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=gpoFfe4U; 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="gpoFfe4U" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57J2SNaL025494 for ; Tue, 19 Aug 2025 05:35:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= E2kyA8hwKaH90uvk2Xmr6w2kxbT4ZU7HruVvyuzREbE=; b=gpoFfe4UFOaDA9bU r9jDeKQzo0SMU99M0zQJ151VvKu4U7McC6qE51lNUIFuvbYxMnj2/prmj4NZq1+y cqQvxoDxsiPgGjrKGOU1T+eoCJt6PC00vnkvvtK3M7PD3WHy9ZxZLoK4OP6AGeZw emT9WmHmHG+8oQQfAmEsTDlkW7qIpsvZ6G1U+AQxYquH6hXxx/NzJ6KUeFjqG1xN SBmKDFBsHHwIEe8L4fh/M3gRtH6qkh+W18WoQzt6Cm9tkFeB90Fqixvr5bubneHk 8Yr6QAV7UkJXK5bgNHEoH9jODoYV9h40iOGmknvuzESgi+rI7rsRmvTkcTQvTfAT xuZhCg== 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 48m71cj15p-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 19 Aug 2025 05:35:13 +0000 (GMT) Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-244570600a1so58835035ad.1 for ; Mon, 18 Aug 2025 22:35:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755581712; x=1756186512; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=E2kyA8hwKaH90uvk2Xmr6w2kxbT4ZU7HruVvyuzREbE=; b=oSLbfDESettphsYZ5nYHyaK1uMEWxbDGRdDBSZO8Rxxlarh7o8LtYcFFziV6Ubgn++ feZJAh37ibjblNSD+RVtjzdzSSxhd3dx+uNoIcNnwhcZSMsQDQor5ypTrlpT64KQN9S2 sjWlDA6/e/P2rGut80GlJB6vSOPdJJ9kAP8kdyeeuL2+hdhVxm3D60IqrXJAzy7fVaPh pCqJIbpzu9UtQfNdli5S4NHsOTyL2X2hzy0qOkg2DC0fdavG8mbFW74WlluGSP9vaQCz JKtUlxX02WKN78O2O0ES6TRvUbU3STD6w8rssn3TIcuoUXdy/ZIXUjOKrWGcd5j1n9Vh nnQA== X-Forwarded-Encrypted: i=1; AJvYcCUf3Y/7R7yC+kAOBIU/zwVxwOkkk9dI2VGsFMdxpb9T6dB8DltANeRiOkLXKhD8TvP9+x4MHY0frOGj2qM=@vger.kernel.org X-Gm-Message-State: AOJu0YzN58EZa3+XY+X46X/cDq23zNgKp1TWx1D7D9/VsaP9td1uT0l+ /3Gy8qXuMAF7FV5TievJP3B7SU8PIxcGckS+BXGT8AszOzTkWN+XT8u9jZwUCa7eDj1R86rcoj8 dLj7/+qyms8JU8D8VkP9Xka1OTE/zHzBPsHc3/FDpkXH/1AMPUJ2DiPbbQU4iwbKG6zY= X-Gm-Gg: ASbGnctJLJpnmlAlWcP4H6ZVPg1lCaXgwzFi84m5rDN3EKDtHKOnbkRJPUPf12GPO7s JWjkAt0UWZc3xJ5UIzMDXwjIe7v92viNRLGPx/HzGkXwpGTNhwY5J0G+pZkBC0xNAHNY/3VmJXY csouuqX+REJ+BESRpsFovsl2u8Ashv7nZehGzXydbO3ga8EuniuD3X/Numt5Ss13oHzbdlYWMaC 57R1MBebLlCaXz4raT9wSVAGf8LKS9kaLmQUjQxOSOysOY0L9ru2alSJkikzCZ81ClDLfH3/3Ju G5j44nYgIp93M4fIN9vWWKQkA51P3y55GzSS5vGMT6uxuDJa9WUbeoXatT46mbD0V6Xy2ns9vCU = X-Received: by 2002:a17:902:fb0b:b0:240:8381:45b9 with SMTP id d9443c01a7336-245e0e7e446mr10287245ad.8.1755581712158; Mon, 18 Aug 2025 22:35:12 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFlQWzbteHJo76hpEH20uaQnkd1jnlahQtMpjZ67WAow1lhts+lyKQezKrKBUYJNQS0+C1iDw== X-Received: by 2002:a17:902:fb0b:b0:240:8381:45b9 with SMTP id d9443c01a7336-245e0e7e446mr10286985ad.8.1755581711630; Mon, 18 Aug 2025 22:35:11 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2446d50f710sm97004785ad.86.2025.08.18.22.35.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Aug 2025 22:35:11 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Tue, 19 Aug 2025 11:04:44 +0530 Subject: [PATCH v3 3/3] PCI: qcom: Use frequency and level based OPP lookup Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250819-opp_pcie-v3-3-f8bd7e05ce41@oss.qualcomm.com> References: <20250819-opp_pcie-v3-0-f8bd7e05ce41@oss.qualcomm.com> In-Reply-To: <20250819-opp_pcie-v3-0-f8bd7e05ce41@oss.qualcomm.com> To: Viresh Kumar , Nishanth Menon , Stephen Boyd , "Rafael J. Wysocki" , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Rob Herring , Bjorn Helgaas , Bjorn Andersson , Konrad Dybcio , Krzysztof Kozlowski , Conor Dooley Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, Krishna Chaitanya Chundru X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755581690; l=1508; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=zNNsKODeITIq9p5C4zPwt5vGWZ3TBF1so1nIBED9rGw=; b=eMVsS4IDFU8hFcD2F6t7VUAbSugqg0W2QV7+j5cYp/puvGByR2nitDuJVhUEL2MRqHpkfdIKl VnFRKOAoOXPD998biJlrKBmMT5FS56JhLQvtb+clOi+AEl3ORrhDtLc X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Proofpoint-ORIG-GUID: 4aDVVoNPFh7aZcRCEwdRA18lu2-GziZV X-Proofpoint-GUID: 4aDVVoNPFh7aZcRCEwdRA18lu2-GziZV X-Authority-Analysis: v=2.4 cv=IvQecK/g c=1 sm=1 tr=0 ts=68a40d11 cx=c_pps a=JL+w9abYAAE89/QcEU+0QA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=2OwXVqhp2XgA:10 a=EUspDBNiAAAA:8 a=Py5lcOcq67Lbq8UMOfUA:9 a=QEXdDO2ut3YA:10 a=324X-CrmTo6CU4MGRt3R:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODE4MDE0NyBTYWx0ZWRfX0pfsDy9cTYLR RHucpAADa1d2HlGzGRCQiKdJoOiEHVVSLdHGHwYBWOXk1x+0lB+JA8eGN7O47WAJLJKMdZrB5qp XkPy2PbxtLSzuXtFhjIanS9fhz+33N2zj7gSJN5r/ry+ZeyD7dWLqrp0r5QYJfCWn8OtBNWl1HO B0HusxiGfIG8TabLf03YsBBl63C0NxVCx8WJjoI4bDY8/kfE+NGgslNkxotcbO76Fyfm34Es4Ce Xxv8P3B2KuwouPKHQmbcgsSHmArWja9ViEUh8HqJ6O4asNaRXiCvOWUnFIXMDxSYBVwXaUCpgZO 1TOcj1hvjVygbZi9AiwW6FSdAWlSb+am5tLHfB6DIgXbODYO7YWS75fyTghZrQSNjOOpnsnJweV D6AChLxj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-19_01,2025-08-14_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 malwarescore=0 priorityscore=1501 clxscore=1015 phishscore=0 bulkscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508180147 PCIe supports multiple data rates that may operate at the same clock frequency by varying the link width. In such cases, frequency alone is insufficient to identify the correct OPP. Use the newly introduced dev_pm_opp_find_key_exact() API to match both frequency and level when selecting an OPP, here level indicates PCIe data rate. Signed-off-by: Krishna Chaitanya Chundru --- drivers/pci/controller/dwc/pcie-qcom.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controlle= r/dwc/pcie-qcom.c index 294babe1816e4d0c2b2343fe22d89af72afcd6cd..831c9138841ac089c6dd6b08a4a= 206751dfebc91 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -1555,6 +1555,7 @@ static void qcom_pcie_icc_opp_update(struct qcom_pcie= *pcie) { u32 offset, status, width, speed; struct dw_pcie *pci =3D pcie->pci; + struct dev_pm_opp_key key; unsigned long freq_kbps; struct dev_pm_opp *opp; int ret, freq_mbps; @@ -1582,8 +1583,9 @@ static void qcom_pcie_icc_opp_update(struct qcom_pcie= *pcie) return; =20 freq_kbps =3D freq_mbps * KILO; - opp =3D dev_pm_opp_find_freq_exact(pci->dev, freq_kbps * width, - true); + key.freq =3D freq_kbps * width; + key.level =3D speed; + opp =3D dev_pm_opp_find_key_exact(pci->dev, key, true); if (!IS_ERR(opp)) { ret =3D dev_pm_opp_set_opp(pci->dev, opp); if (ret) --=20 2.34.1