Nishanth Menon <n...@ti.com> writes:

> Passing the volt_data pointers across allows us to save us the effort
> of looking up the voltage data pointer from the voltage value at
> multiple layers, we need to look at the voltage data in DVFS layer
> for further processing, so modify the APIs to pass the voltage data
> pointer all the way through to lower layers to the SmartReflex AVS class
> drivers.
>
> Signed-off-by: Nishanth Menon <n...@ti.com>

Isn't volt_data already reachable from voltdm?

I'd rather than clutter up the APIs with another argument, especially
one that should be derivable from the current one

Kevin

> ---
>  arch/arm/mach-omap2/smartreflex-class3.c |   13 +++----------
>  arch/arm/mach-omap2/smartreflex.c        |   22 ++++++++++------------
>  arch/arm/mach-omap2/smartreflex.h        |    8 +++++---
>  3 files changed, 18 insertions(+), 25 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/smartreflex-class3.c 
> b/arch/arm/mach-omap2/smartreflex-class3.c
> index 2ee48af..1d3eb11 100644
> --- a/arch/arm/mach-omap2/smartreflex-class3.c
> +++ b/arch/arm/mach-omap2/smartreflex-class3.c
> @@ -13,19 +13,12 @@
>  
>  #include "smartreflex.h"
>  
> -static int sr_class3_enable(struct voltagedomain *voltdm)
> +static int sr_class3_enable(struct voltagedomain *voltdm,
> +             struct omap_volt_data *volt_data)
>  {
> -     unsigned long volt = omap_get_operation_voltage(
> -             omap_voltage_get_nom_volt(voltdm));
> -
> -     if (!volt) {
> -             pr_warning("%s: Curr voltage unknown. Cannot enable sr_%s\n",
> -                             __func__, voltdm->name);
> -             return -ENODATA;
> -     }
>  
>       omap_vp_enable(voltdm);
> -     return sr_enable(voltdm, volt);
> +     return sr_enable(voltdm, volt_data);
>  }
>  
>  static int sr_class3_disable(struct voltagedomain *voltdm, int is_volt_reset)
> diff --git a/arch/arm/mach-omap2/smartreflex.c 
> b/arch/arm/mach-omap2/smartreflex.c
> index b1a7cfe..5c549b9 100644
> --- a/arch/arm/mach-omap2/smartreflex.c
> +++ b/arch/arm/mach-omap2/smartreflex.c
> @@ -306,7 +306,7 @@ static void sr_start_vddautocomp(struct omap_sr *sr, bool 
> class_start)
>               return;
>       }
>  
> -     r = sr_class->enable(sr->voltdm);
> +     r = sr_class->enable(sr->voltdm, omap_voltage_get_nom_volt(sr->voltdm));
>       if (!r && class_start)
>               sr->autocomp_active = true;
>  }
> @@ -626,7 +626,7 @@ int sr_configure_minmax(struct voltagedomain *voltdm)
>  /**
>   * sr_enable() - Enables the smartreflex module.
>   * @voltdm:  VDD pointer to which the SR module to be configured belongs to.
> - * @volt:    The voltage at which the Voltage domain associated with
> + * @volt_data:       The voltage at which the Voltage domain associated with
>   *           the smartreflex module is operating at.
>   *           This is required only to program the correct Ntarget value.
>   *
> @@ -634,10 +634,9 @@ int sr_configure_minmax(struct voltagedomain *voltdm)
>   * enable a smartreflex module. Returns 0 on success. Returns error
>   * value if the voltage passed is wrong or if ntarget value is wrong.
>   */
> -int sr_enable(struct voltagedomain *voltdm, unsigned long volt)
> +int sr_enable(struct voltagedomain *voltdm, struct omap_volt_data *volt_data)
>  {
>       u32 nvalue_reciprocal;
> -     struct omap_volt_data *volt_data;
>       struct omap_sr *sr = _sr_lookup(voltdm);
>       int ret;
>  
> @@ -647,19 +646,16 @@ int sr_enable(struct voltagedomain *voltdm, unsigned 
> long volt)
>               return -EINVAL;
>       }
>  
> -     volt_data = omap_voltage_get_voltdata(sr->voltdm, volt);
> -
> -     if (IS_ERR(volt_data)) {
> -             dev_warn(&sr->pdev->dev, "%s: Unable to get voltage table"
> -                     "for nominal voltage %ld\n", __func__, volt);
> -             return -ENODATA;
> +     if (IS_ERR_OR_NULL(volt_data)) {
> +             dev_warn(&sr->pdev->dev, "%s: bad voltage data\n", __func__);
> +             return -EINVAL;
>       }
>  
>       nvalue_reciprocal = sr_retrieve_nvalue(sr, volt_data->sr_efuse_offs);
>  
>       if (!nvalue_reciprocal) {
>               dev_warn(&sr->pdev->dev, "%s: NVALUE = 0 at voltage %ld\n",
> -                     __func__, volt);
> +                     __func__, omap_get_operation_voltage(volt_data));
>               return -ENODATA;
>       }
>  
> @@ -816,13 +812,15 @@ int sr_register_class(struct omap_sr_class_data 
> *class_data)
>   * omap_sr_enable() -  API to enable SR clocks and to call into the
>   *                   registered smartreflex class enable API.
>   * @voltdm:  VDD pointer to which the SR module to be configured belongs to.
> + * @volt_data:       Voltage data to go to
>   *
>   * This API is to be called from the kernel in order to enable
>   * a particular smartreflex module. This API will do the initial
>   * configurations to turn on the smartreflex module and in turn call
>   * into the registered smartreflex class enable API.
>   */
> -void omap_sr_enable(struct voltagedomain *voltdm)
> +void omap_sr_enable(struct voltagedomain *voltdm,
> +                     struct omap_volt_data *volt_data)
>  {
>       struct omap_sr *sr = _sr_lookup(voltdm);
>  
> diff --git a/arch/arm/mach-omap2/smartreflex.h 
> b/arch/arm/mach-omap2/smartreflex.h
> index 4a1ada4..812e86d 100644
> --- a/arch/arm/mach-omap2/smartreflex.h
> +++ b/arch/arm/mach-omap2/smartreflex.h
> @@ -186,7 +186,8 @@ struct omap_sr_pmic_data {
>   * @class_priv_data: Class specific private data (optional)
>   */
>  struct omap_sr_class_data {
> -     int (*enable)(struct voltagedomain *voltdm);
> +     int (*enable)(struct voltagedomain *voltdm,
> +                     struct omap_volt_data *volt_data);
>       int (*disable)(struct voltagedomain *voltdm, int is_volt_reset);
>       int (*start)(struct voltagedomain *voltdm, void *class_priv_data);
>       int (*stop)(struct voltagedomain *voltdm, void *class_priv_data);
> @@ -232,7 +233,8 @@ struct omap_sr_data {
>  };
>  
>  /* Smartreflex module enable/disable interface */
> -void omap_sr_enable(struct voltagedomain *voltdm);
> +void omap_sr_enable(struct voltagedomain *voltdm,
> +                     struct omap_volt_data *volt_data);
>  void omap_sr_disable(struct voltagedomain *voltdm);
>  void omap_sr_disable_reset_volt(struct voltagedomain *voltdm);
>  
> @@ -240,7 +242,7 @@ void omap_sr_disable_reset_volt(struct voltagedomain 
> *voltdm);
>  void omap_sr_register_pmic(struct omap_sr_pmic_data *pmic_data);
>  
>  /* Smartreflex driver hooks to be called from Smartreflex class driver */
> -int sr_enable(struct voltagedomain *voltdm, unsigned long volt);
> +int sr_enable(struct voltagedomain *voltdm, struct omap_volt_data 
> *volt_data);
>  void sr_disable(struct voltagedomain *voltdm);
>  int sr_notifier_control(struct voltagedomain *voltdm, bool enable);
>  int sr_configure_errgen(struct voltagedomain *voltdm);
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to