On Mon, Nov 25, 2019 at 06:42:18PM +0200, Leonard Crestez wrote: > This allows dev_pm_qos to embed freq_qos structs, which is done in the > next patch. Separate commit to make it easier to review. > > Signed-off-by: Leonard Crestez <leonard.crestez@xxxxxxx> > --- > include/linux/pm_qos.h | 74 ++++++++++++++++++++++-------------------- > 1 file changed, 38 insertions(+), 36 deletions(-) > > diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h > index 24a6263c9931..678fec6da5b9 100644 > --- a/include/linux/pm_qos.h > +++ b/include/linux/pm_qos.h > @@ -47,25 +47,10 @@ struct pm_qos_request { > struct pm_qos_flags_request { > struct list_head node; > s32 flags; /* Do not change to 64 bit */ > }; > > -enum dev_pm_qos_req_type { > - DEV_PM_QOS_RESUME_LATENCY = 1, > - DEV_PM_QOS_LATENCY_TOLERANCE, > - DEV_PM_QOS_FLAGS, > -}; > - > -struct dev_pm_qos_request { > - enum dev_pm_qos_req_type type; > - union { > - struct plist_node pnode; > - struct pm_qos_flags_request flr; > - } data; > - struct device *dev; > -}; > - > enum pm_qos_type { > PM_QOS_UNITIALIZED, > PM_QOS_MAX, /* return the largest value */ > PM_QOS_MIN, /* return the smallest value */ > PM_QOS_SUM /* return the sum */ > @@ -88,10 +73,48 @@ struct pm_qos_constraints { > struct pm_qos_flags { > struct list_head list; > s32 effective_flags; /* Do not change to 64 bit */ > }; > > + > +#define FREQ_QOS_MIN_DEFAULT_VALUE 0 > +#define FREQ_QOS_MAX_DEFAULT_VALUE S32_MAX > + > +enum freq_qos_req_type { > + FREQ_QOS_MIN = 1, > + FREQ_QOS_MAX, > +}; > + > +struct freq_constraints { > + struct pm_qos_constraints min_freq; > + struct blocking_notifier_head min_freq_notifiers; > + struct pm_qos_constraints max_freq; > + struct blocking_notifier_head max_freq_notifiers; > +}; > + > +struct freq_qos_request { > + enum freq_qos_req_type type; > + struct plist_node pnode; > + struct freq_constraints *qos; > +}; > + > + > +enum dev_pm_qos_req_type { > + DEV_PM_QOS_RESUME_LATENCY = 1, > + DEV_PM_QOS_LATENCY_TOLERANCE, > + DEV_PM_QOS_FLAGS, > +}; > + > +struct dev_pm_qos_request { > + enum dev_pm_qos_req_type type; > + union { > + struct plist_node pnode; > + struct pm_qos_flags_request flr; > + } data; > + struct device *dev; > +}; > + > struct dev_pm_qos { > struct pm_qos_constraints resume_latency; > struct pm_qos_constraints latency_tolerance; > struct pm_qos_flags flags; > struct dev_pm_qos_request *resume_latency_req; > @@ -253,31 +276,10 @@ static inline s32 dev_pm_qos_raw_resume_latency(struct device *dev) > { > return PM_QOS_RESUME_LATENCY_NO_CONSTRAINT; > } > #endif > > -#define FREQ_QOS_MIN_DEFAULT_VALUE 0 > -#define FREQ_QOS_MAX_DEFAULT_VALUE S32_MAX > - > -enum freq_qos_req_type { > - FREQ_QOS_MIN = 1, > - FREQ_QOS_MAX, > -}; > - > -struct freq_constraints { > - struct pm_qos_constraints min_freq; > - struct blocking_notifier_head min_freq_notifiers; > - struct pm_qos_constraints max_freq; > - struct blocking_notifier_head max_freq_notifiers; > -}; > - > -struct freq_qos_request { > - enum freq_qos_req_type type; > - struct plist_node pnode; > - struct freq_constraints *qos; > -}; > - > static inline int freq_qos_request_active(struct freq_qos_request *req) > { > return !IS_ERR_OR_NULL(req->qos); > } > > -- > 2.17.1 > Reviewed-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx>