Merge branches 'pm-devfreq' and 'pm-opp'

Merge devfreq and OPP (Operating Performance Points) updates for 6.14:

 - Clean up the Exynos devfreq driver and devfreq core (Markus Elfring,
   Jeongjun Park).

 - Minor cleanups and fixes for OPP (Dan Carpenter, Neil Armstrong, Joe
   Hattori).

 - Implement dev_pm_opp_get_bw() (Neil Armstrong).

 - Expose OPP reference counting helpers for Rust (Viresh Kumar).

* pm-devfreq:
  PM / devfreq: exynos: remove unused function parameter
  PM / devfreq: event: Call of_node_put() only once in devfreq_event_get_edev_by_phandle()

* pm-opp:
  PM / OPP: Add reference counting helpers for Rust implementation
  OPP: OF: Fix an OF node leak in _opp_add_static_v2()
  OPP: fix dev_pm_opp_find_bw_*() when bandwidth table not initialized
  OPP: add index check to assert to avoid buffer overflow in _read_freq()
  opp: core: Fix off by one in dev_pm_opp_get_bw()
  opp: core: implement dev_pm_opp_get_bw
This commit is contained in:
Rafael J. Wysocki
2025-01-20 20:56:33 +01:00
6 changed files with 97 additions and 33 deletions

View File

@@ -100,8 +100,11 @@ struct dev_pm_opp_data {
#if defined(CONFIG_PM_OPP)
struct opp_table *dev_pm_opp_get_opp_table(struct device *dev);
void dev_pm_opp_get_opp_table_ref(struct opp_table *opp_table);
void dev_pm_opp_put_opp_table(struct opp_table *opp_table);
unsigned long dev_pm_opp_get_bw(struct dev_pm_opp *opp, bool peak, int index);
unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp);
int dev_pm_opp_get_supplies(struct dev_pm_opp *opp, struct dev_pm_opp_supply *supplies);
@@ -158,6 +161,7 @@ struct dev_pm_opp *dev_pm_opp_find_bw_ceil(struct device *dev,
struct dev_pm_opp *dev_pm_opp_find_bw_floor(struct device *dev,
unsigned int *bw, int index);
void dev_pm_opp_get(struct dev_pm_opp *opp);
void dev_pm_opp_put(struct dev_pm_opp *opp);
int dev_pm_opp_add_dynamic(struct device *dev, struct dev_pm_opp_data *opp);
@@ -203,8 +207,15 @@ static inline struct opp_table *dev_pm_opp_get_opp_table_indexed(struct device *
return ERR_PTR(-EOPNOTSUPP);
}
static inline void dev_pm_opp_get_opp_table_ref(struct opp_table *opp_table) {}
static inline void dev_pm_opp_put_opp_table(struct opp_table *opp_table) {}
static inline unsigned long dev_pm_opp_get_bw(struct dev_pm_opp *opp, bool peak, int index)
{
return 0;
}
static inline unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp)
{
return 0;
@@ -334,6 +345,8 @@ static inline struct dev_pm_opp *dev_pm_opp_find_bw_floor(struct device *dev,
return ERR_PTR(-EOPNOTSUPP);
}
static inline void dev_pm_opp_get(struct dev_pm_opp *opp) {}
static inline void dev_pm_opp_put(struct dev_pm_opp *opp) {}
static inline int