The existing OPP table in the device tree for PCIe is shared across different link configurations such as data rates 8GT/s x2 and 16GT/s x1. These configurations often operate at the same frequency, allowing them to reuse the same OPP entries. However, 8GT/s and 16 GT/s may have different characteristics beyond frequency—such as RPMh votes in QCOM case, which cannot be represented accurately when sharing a single OPP. 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 for set of keys like frequency, level & bandwidth. Signed-off-by: Krishna Chaitanya Chundru <krishna.chundru@xxxxxxxxxxxxxxxx> --- Changes in v4: - Included dtsi changes for all platforms. - Made the changes as requested by Viresh like adding comments, some coding styles etc. - Link to v3: https://lore.kernel.org/r/20250819-opp_pcie-v3-0-f8bd7e05ce41@xxxxxxxxxxxxxxxx Changes in v3: - Always check for frequency match unless user doesn't pass it (Viresh). - Make dev_pm_opp_key public and let user pass the key (Viresh). - Include bandwidth as part of dev_pm_opp_key (Viresh). - Link to v2: https://lore.kernel.org/r/20250818-opp_pcie-v2-0-071524d98967@xxxxxxxxxxxxxxxx Changes in v2: - Use opp-level to indentify data rate and use both frequency and level to identify the OPP. (Viresh) - Link to v1: https://lore.kernel.org/r/20250717-opp_pcie-v1-0-dde6f452571b@xxxxxxxxxxxxxxxx --- Krishna Chaitanya Chundru (7): OPP: Add support to find OPP for a set of keys OPP: Move refcount and key update for readability in _opp_table_find_key() arm64: dts: qcom: sm8450: Add opp-level to indicate PCIe data rates arm64: dts: qcom: sm8550: Add opp-level to indicate PCIe data rates arm64: dts: qcom: sm8650: Add opp-level to indicate PCIe data rates arm64: dts: qcom: x1e80100: Add opp-level to indicate PCIe data rates PCI: qcom: Use frequency and level based OPP lookup arch/arm64/boot/dts/qcom/sm8450.dtsi | 41 ++++++++++--- arch/arm64/boot/dts/qcom/sm8550.dtsi | 63 ++++++++++++++----- arch/arm64/boot/dts/qcom/sm8650.dtsi | 63 ++++++++++++++----- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 90 ++++++++++++++++++++++----- drivers/opp/core.c | 107 +++++++++++++++++++++++++++++++-- drivers/pci/controller/dwc/pcie-qcom.c | 7 ++- include/linux/pm_opp.h | 30 +++++++++ 7 files changed, 341 insertions(+), 60 deletions(-) --- base-commit: c17b750b3ad9f45f2b6f7e6f7f4679844244f0b9 change-id: 20250717-opp_pcie-793160b2b113 Best regards, -- Krishna Chaitanya Chundru <krishna.chundru@xxxxxxxxxxxxxxxx>