mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
  • [parent not found: <CGME20190329064632epcas2p4d10ea099bfea4ad682d7312a75bfbe68@epcms1p8>]
  • [parent not found: <CGME20190329064636epcas1p13633ae078ef83ceda0b8189df1399753@epcms1p1>]
  • [parent not found: <CGME20190329064635epcas2p4e6120f002d4e535bb5b551224fccd83f@epcas2p4.samsung.com>]
  • [parent not found: <CGME20190329064630epcas5p216f8d9263dc6fea26bb71165b5673111@epcas5p2.samsung.com>]
  • * Re: [PATCH v2 2/4] opp: add API which get max freq by voltage
           [not found] <1553841972-19737-3-git-send-email-andrew-sh.cheng@mediatek.com>
           [not found] ` <1553841972-19737-1-git-send-email-andrew-sh.cheng@mediatek.com>
    @ 2019-04-03  4:32 ` Nicolas Boichat
      2019-04-10  6:29 ` Viresh Kumar
      2022-06-02  6:54 ` Viresh Kumar
      3 siblings, 0 replies; 9+ messages in thread
    From: Nicolas Boichat @ 2019-04-03  4:32 UTC (permalink / raw)
      To: Andrew-sh.Cheng
      Cc: MyungJoo Ham, Kyungmin Park, Chanwoo Choi, Rob Herring,
    	Mark Rutland, Matthias Brugger, Rafael J. Wysocki, Viresh Kumar,
    	devicetree, srv_heupstream, linux-pm, lkml, Fan Chen,
    	moderated list:ARM/Mediatek SoC support, linux-arm Mailing List
    
    On Fri, Mar 29, 2019 at 2:46 PM Andrew-sh.Cheng
    <andrew-sh.cheng@mediatek.com> wrote:
    >
    > This API will get voltage as input parameter.
    > Search all opp items for the item which with max frequency,
    > and the voltae is smaller than provided voltage.
    >
    > Signed-off-by: Andrew-sh.Cheng <andrew-sh.cheng@mediatek.com>
    > ---
    >  drivers/opp/core.c     | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
    >  include/linux/pm_opp.h |  8 ++++++++
    >  2 files changed, 63 insertions(+)
    >
    > diff --git a/drivers/opp/core.c b/drivers/opp/core.c
    > index 0420f7e..7323cd9 100644
    > --- a/drivers/opp/core.c
    > +++ b/drivers/opp/core.c
    > @@ -526,6 +526,61 @@ struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
    >  }
    >  EXPORT_SYMBOL_GPL(dev_pm_opp_find_freq_floor);
    >
    > +/**
    > + * dev_pm_opp_find_max_freq_by_volt() - Search for a opp with max freq
    > + * under provided voltage
    > + * @dev:       device for which we do this operation
    > + * @u_volt:    provided voltage
    > + *
    > + * Search for the matching available OPP which provide voltage can support.
    > + *
    > + * Return: matching *opp, 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
    > + *
    > + * The callers are required to call dev_pm_opp_put() for the returned OPP after
    > + * use.
    > + */
    > +struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
    > +                                             unsigned long u_volt)
    > +{
    > +       struct opp_table *opp_table;
    > +       struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE);
    > +
    > +       if (!dev || !u_volt) {
    > +               dev_err(dev, "%s: Invalid argument volt=%d\n", __func__,
    > +                       u_volt);
    
    u_volt is an unsigned long, so you should use %lu.
    
    drivers/opp/core.c:582:3: error: format '%d' expects argument of type
    'int', but argument 4 has type 'long unsigned int' [-Werror=format=]
      chromeos-kernel-4_19-4.19.32-r271:    dev_err(dev, "%s: Invalid
    argument volt=%d\n", __func__,
      chromeos-kernel-4_19-4.19.32-r271:    ^
    
    > +               return ERR_PTR(-EINVAL);
    > +       }
    > +
    > +       opp_table = _find_opp_table(dev);
    > +       if (IS_ERR(opp_table))
    > +               return ERR_CAST(opp_table);
    > +
    > +       mutex_lock(&opp_table->lock);
    > +
    > +       list_for_each_entry(temp_opp, &opp_table->opp_list, node) {
    > +               if (temp_opp->available) {
    > +                       /* go to the next node, before choosing prev */
    > +                       if (temp_opp->supplies[0].u_volt > u_volt)
    > +                               break;
    > +                       opp = temp_opp;
    > +               }
    > +       }
    > +
    > +       /* Increment the reference count of OPP */
    > +       if (!IS_ERR(opp))
    > +               dev_pm_opp_get(opp);
    > +       mutex_unlock(&opp_table->lock);
    > +       dev_pm_opp_put_opp_table(opp_table);
    > +
    > +       return opp;
    > +}
    > +EXPORT_SYMBOL_GPL(dev_pm_opp_find_max_freq_by_volt);
    > +
    >  static int _set_opp_voltage(struct device *dev, struct regulator *reg,
    >                             struct dev_pm_opp_supply *supply)
    >  {
    > diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
    > index 24c757a..57deef9 100644
    > --- a/include/linux/pm_opp.h
    > +++ b/include/linux/pm_opp.h
    > @@ -102,6 +102,8 @@ struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
    >
    >  struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
    >                                               unsigned long *freq);
    > +struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
    > +                                             unsigned long u_volt);
    >
    >  struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
    >                                              unsigned long *freq);
    > @@ -207,6 +209,12 @@ static inline struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
    >         return ERR_PTR(-ENOTSUPP);
    >  }
    >
    > +static inline struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
    > +                                             unsigned long u_volt)
    > +{
    > +       return ERR_PTR(-ENOTSUPP);
    > +}
    > +
    >  static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
    >                                         unsigned long *freq)
    >  {
    > --
    > 1.8.1.1.dirty
    >
    >
    > _______________________________________________
    > Linux-mediatek mailing list
    > Linux-mediatek@lists.infradead.org
    > http://lists.infradead.org/mailman/listinfo/linux-mediatek
    
    ^ permalink raw reply	[flat|nested] 9+ messages in thread
  • * Re: [PATCH v2 2/4] opp: add API which get max freq by voltage
           [not found] <1553841972-19737-3-git-send-email-andrew-sh.cheng@mediatek.com>
           [not found] ` <1553841972-19737-1-git-send-email-andrew-sh.cheng@mediatek.com>
      2019-04-03  4:32 ` [PATCH v2 2/4] opp: add API which get max freq by voltage Nicolas Boichat
    @ 2019-04-10  6:29 ` Viresh Kumar
      2022-06-02  6:54 ` Viresh Kumar
      3 siblings, 0 replies; 9+ messages in thread
    From: Viresh Kumar @ 2019-04-10  6:29 UTC (permalink / raw)
      To: Andrew-sh.Cheng
      Cc: MyungJoo Ham, Kyungmin Park, Chanwoo Choi, Rob Herring,
    	Mark Rutland, Matthias Brugger, Rafael J. Wysocki, linux-pm,
    	devicetree, linux-arm-kernel, linux-mediatek, linux-kernel,
    	srv_heupstream, fan.chen
    
    On 29-03-19, 14:46, Andrew-sh.Cheng wrote:
    > This API will get voltage as input parameter.
    > Search all opp items for the item which with max frequency,
    > and the voltae is smaller than provided voltage.
    > 
    > Signed-off-by: Andrew-sh.Cheng <andrew-sh.cheng@mediatek.com>
    > ---
    >  drivers/opp/core.c     | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
    >  include/linux/pm_opp.h |  8 ++++++++
    >  2 files changed, 63 insertions(+)
    
    I have applied this patch with some modifications, here is the diff:
    
    ---
     drivers/opp/core.c     | 29 ++++++++++++++---------------
     include/linux/pm_opp.h |  8 ++++----
     2 files changed, 18 insertions(+), 19 deletions(-)
    
    diff --git a/drivers/opp/core.c b/drivers/opp/core.c
    index 7323cd9aabf9..0e7703fe733f 100644
    --- a/drivers/opp/core.c
    +++ b/drivers/opp/core.c
    @@ -527,31 +527,30 @@ struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
     EXPORT_SYMBOL_GPL(dev_pm_opp_find_freq_floor);
     
     /**
    - * dev_pm_opp_find_max_freq_by_volt() - Search for a opp with max freq
    - * under provided voltage
    - * @dev:	device for which we do this operation
    - * @u_volt:	provided voltage
    + * dev_pm_opp_find_freq_ceil_by_volt() - Find OPP with highest frequency for
    + *					 target voltage.
    + * @dev:	Device for which we do this operation.
    + * @u_volt:	Target voltage.
    + *
    + * Search for OPP with highest (ceil) frequency and has voltage <= u_volt.
      *
    - * Search for the matching available OPP which provide voltage can support.
    + * Return: matching *opp, else returns ERR_PTR in case of error which should be
    + * handled using IS_ERR.
      *
    - * Return: matching *opp, 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
    + * EINVAL:	bad parameters
      *
      * The callers are required to call dev_pm_opp_put() for the returned OPP after
      * use.
      */
    -struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
    -					      unsigned long u_volt)
    +struct dev_pm_opp *dev_pm_opp_find_freq_ceil_by_volt(struct device *dev,
    +						     unsigned long u_volt)
     {
     	struct opp_table *opp_table;
     	struct dev_pm_opp *temp_opp, *opp = ERR_PTR(-ERANGE);
     
     	if (!dev || !u_volt) {
    -		dev_err(dev, "%s: Invalid argument volt=%d\n", __func__,
    +		dev_err(dev, "%s: Invalid argument volt=%lu\n", __func__,
     			u_volt);
     		return ERR_PTR(-EINVAL);
     	}
    @@ -564,7 +563,6 @@ struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
     
     	list_for_each_entry(temp_opp, &opp_table->opp_list, node) {
     		if (temp_opp->available) {
    -			/* go to the next node, before choosing prev */
     			if (temp_opp->supplies[0].u_volt > u_volt)
     				break;
     			opp = temp_opp;
    @@ -574,12 +572,13 @@ struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
     	/* Increment the reference count of OPP */
     	if (!IS_ERR(opp))
     		dev_pm_opp_get(opp);
    +
     	mutex_unlock(&opp_table->lock);
     	dev_pm_opp_put_opp_table(opp_table);
     
     	return opp;
     }
    -EXPORT_SYMBOL_GPL(dev_pm_opp_find_max_freq_by_volt);
    +EXPORT_SYMBOL_GPL(dev_pm_opp_find_freq_ceil_by_volt);
     
     static int _set_opp_voltage(struct device *dev, struct regulator *reg,
     			    struct dev_pm_opp_supply *supply)
    diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h
    index 57deef9cf5d3..b150fe97ce5a 100644
    --- a/include/linux/pm_opp.h
    +++ b/include/linux/pm_opp.h
    @@ -102,8 +102,8 @@ struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
     
     struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
     					      unsigned long *freq);
    -struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
    -					      unsigned long u_volt);
    +struct dev_pm_opp *dev_pm_opp_find_freq_ceil_by_volt(struct device *dev,
    +						     unsigned long u_volt);
     
     struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
     					     unsigned long *freq);
    @@ -209,8 +209,8 @@ static inline struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
     	return ERR_PTR(-ENOTSUPP);
     }
     
    -static inline struct dev_pm_opp *dev_pm_opp_find_max_freq_by_volt(struct device *dev,
    -					      unsigned long u_volt)
    +static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil_by_volt(struct device *dev,
    +					unsigned long u_volt)
     {
     	return ERR_PTR(-ENOTSUPP);
     }
    
    ^ permalink raw reply	[flat|nested] 9+ messages in thread
  • * Re: [PATCH v2 2/4] opp: add API which get max freq by voltage
           [not found] <1553841972-19737-3-git-send-email-andrew-sh.cheng@mediatek.com>
                       ` (2 preceding siblings ...)
      2019-04-10  6:29 ` Viresh Kumar
    @ 2022-06-02  6:54 ` Viresh Kumar
      3 siblings, 0 replies; 9+ messages in thread
    From: Viresh Kumar @ 2022-06-02  6:54 UTC (permalink / raw)
      To: Andrew-sh.Cheng
      Cc: MyungJoo Ham, Kyungmin Park, Chanwoo Choi, Rob Herring,
    	Mark Rutland, Matthias Brugger, Rafael J. Wysocki, linux-pm,
    	devicetree, linux-arm-kernel, linux-mediatek, linux-kernel,
    	srv_heupstream, fan.chen
    
    On Fri, 29 Mar 2019 at 12:16, Andrew-sh.Cheng
    <andrew-sh.cheng@mediatek.com> wrote:
    >
    > This API will get voltage as input parameter.
    > Search all opp items for the item which with max frequency,
    > and the voltae is smaller than provided voltage.
    >
    > Signed-off-by: Andrew-sh.Cheng <andrew-sh.cheng@mediatek.com>
    > ---
    >  drivers/opp/core.c     | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++
    >  include/linux/pm_opp.h |  8 ++++++++
    >  2 files changed, 63 insertions(+)
    
    This patch added dev_pm_opp_find_freq_ceil_by_volt() but I don't find anything
    in the kernel which uses it? The patchset for CCI never got merged ?
    
    I will remove the API now.
    
    --
    Viresh
    
    ^ permalink raw reply	[flat|nested] 9+ messages in thread

  • end of thread, other threads:[~2022-06-02  6:54 UTC | newest]
    
    Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
    -- links below jump to the message on this page --
         [not found] <1553841972-19737-3-git-send-email-andrew-sh.cheng@mediatek.com>
         [not found] ` <1553841972-19737-1-git-send-email-andrew-sh.cheng@mediatek.com>
         [not found]   ` <1553841972-19737-2-git-send-email-andrew-sh.cheng@mediatek.com>
    2019-03-31  0:06     ` [PATCH v2 1/4] cpufreq: mediatek: add mt8183 cpufreq support Nicolas Boichat
         [not found]   ` <CGME20190329064632epcas2p4d10ea099bfea4ad682d7312a75bfbe68@epcms1p8>
    2019-04-01  2:30     ` [PATCH v2 2/4] opp: add API which get max freq by voltage MyungJoo Ham
         [not found]   ` <CGME20190329064636epcas1p13633ae078ef83ceda0b8189df1399753@epcms1p1>
    2019-04-01  4:18     ` [PATCH v2 4/4] devfreq: add mediatek cci devfreq MyungJoo Ham
         [not found]   ` <CGME20190329064635epcas2p4e6120f002d4e535bb5b551224fccd83f@epcas2p4.samsung.com>
         [not found]     ` <1553841972-19737-5-git-send-email-andrew-sh.cheng@mediatek.com>
    2019-04-08 17:22       ` [v2,4/4] " Guenter Roeck
    2019-04-16  9:05       ` [PATCH v2 4/4] " Chanwoo Choi
         [not found]   ` <CGME20190329064630epcas5p216f8d9263dc6fea26bb71165b5673111@epcas5p2.samsung.com>
         [not found]     ` <1553841972-19737-4-git-send-email-andrew-sh.cheng@mediatek.com>
    2019-04-16  9:08       ` [PATCH v2 3/4] dt-bindings: devfreq: add compatible for mt8183 " Chanwoo Choi
    2019-04-03  4:32 ` [PATCH v2 2/4] opp: add API which get max freq by voltage Nicolas Boichat
    2019-04-10  6:29 ` Viresh Kumar
    2022-06-02  6:54 ` Viresh Kumar
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox

    all inboxes | Powered by JetHome®