RE: [RFC][PATCH 2/3] OMAP PM: Add support for bypassing VP/VC in Voltage layer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> -----Original Message-----
> From: Menon, Nishanth [mailto:nm@xxxxxx]
> Sent: Tuesday, March 15, 2011 8:46 PM
> To: Vishwanath BS
> Cc: linux-omap@xxxxxxxxxxxxxxx
> Subject: Re: [RFC][PATCH 2/3] OMAP PM: Add support for bypassing
> VP/VC in Voltage layer
>
> On Tue, Mar 15, 2011 at 20:03, Vishwanath BS
> <vishwanath.bs@xxxxxx> wrote:
> > Currently Voltage layer assumes that all PMICs use VP/VC for Voltage
> scaling.
> > There can be some instances where PMIC would want to bypass VP/VC
> for voltage
> > scaling. So make VOltage layer flexible enough to handle this.
> please fix VOltage.
>
> The commit message does'nt actually explain enough. it is too vague.
>
> >
> > Signed-off-by: Vishwanath BS <vishwanath.bs@xxxxxx>
> > ---
> >  arch/arm/mach-omap2/omap_twl.c |    5 +++++
> >  arch/arm/mach-omap2/voltage.c  |   12 +++++++-----
> >  arch/arm/mach-omap2/voltage.h  |    6 ++++++
> >  3 files changed, 18 insertions(+), 5 deletions(-)
> >
> > diff --git a/arch/arm/mach-omap2/omap_twl.c b/arch/arm/mach-
> omap2/omap_twl.c
> > index f96d4b2..42f66c6 100644
> > --- a/arch/arm/mach-omap2/omap_twl.c
> > +++ b/arch/arm/mach-omap2/omap_twl.c
> > @@ -157,6 +157,7 @@ static struct omap_volt_pmic_info
> omap3_mpu_volt_info = {
> >        .onlp_cmd               = twl4030_uv_to_vsel,
> >        .ret_cmd                = twl4030_uv_to_vsel,
> >        .off_cmd                = twl4030_uv_to_vsel,
> > +       .voltage_class  = VP_VC_CLASS,
>
> Do you need this all unassigned params in a static struct is 0 which
> is basically VP_VC_CLASS.
I did not get this. You do not need to fill all these parameters if you
are not using VP/VC.
>
> >  };
> >
> >  static struct omap_volt_pmic_info omap3_core_volt_info = {
> > @@ -176,6 +177,7 @@ static struct omap_volt_pmic_info
> omap3_core_volt_info = {
> >        .onlp_cmd               = twl4030_uv_to_vsel,
> >        .ret_cmd                = twl4030_uv_to_vsel,
> >        .off_cmd                = twl4030_uv_to_vsel,
> > +       .voltage_class  = VP_VC_CLASS,
> here as well
>
> >  };
> >
> >  static struct omap_volt_pmic_info omap4_mpu_volt_info = {
> > @@ -195,6 +197,7 @@ static struct omap_volt_pmic_info
> omap4_mpu_volt_info = {
> >        .onlp_cmd               = twl4030_uv_to_vsel,
> >        .ret_cmd                = twl4030_uv_to_vsel,
> >        .off_cmd                = twl4030_uv_to_vsel,
> > +       .voltage_class  = VP_VC_CLASS,
> again
>
> >  };
> >
> >  static struct omap_volt_pmic_info omap4_iva_volt_info = {
> > @@ -214,6 +217,7 @@ static struct omap_volt_pmic_info
> omap4_iva_volt_info = {
> >        .onlp_cmd               = twl4030_uv_to_vsel,
> >        .ret_cmd                = twl4030_uv_to_vsel,
> >        .off_cmd                = twl4030_uv_to_vsel,
> > +       .voltage_class  = VP_VC_CLASS,
> and again
>
> >  };
> >
> >  static struct omap_volt_pmic_info omap4_core_volt_info = {
> > @@ -233,6 +237,7 @@ static struct omap_volt_pmic_info
> omap4_core_volt_info = {
> >        .onlp_cmd               = twl4030_uv_to_vsel,
> >        .ret_cmd                = twl4030_uv_to_vsel,
> >        .off_cmd                = twl4030_uv_to_vsel,
> > +       .voltage_class  = VP_VC_CLASS,
> and here
> >  };
> >
> >  int __init omap4_twl_init(void)
> > diff --git a/arch/arm/mach-omap2/voltage.c b/arch/arm/mach-
> omap2/voltage.c
> > index 2ac990f..73fa3ee 100644
> > --- a/arch/arm/mach-omap2/voltage.c
> > +++ b/arch/arm/mach-omap2/voltage.c
> > @@ -1194,11 +1194,13 @@ int __init omap_voltage_late_init(void)
> >                pr_err("%s: Unable to create voltage debugfs main
dir\n",
> >                        __func__);
> >        for (i = 0; i < nr_scalable_vdd; i++) {
> > -               if (omap_vdd_data_configure(vdd_info[i]))
> > -                       continue;
> > -               omap_vc_init(vdd_info[i]);
> > -               vp_init(vdd_info[i]);
> > -               vdd_debugfs_init(vdd_info[i]);
> > +               if (vdd_info[i]->pmic_info->voltage_class ==
> VP_VC_CLASS) {
> > +                       if (omap_vdd_data_configure(vdd_info[i]))
> > +                               continue;
> > +                       omap_vc_init(vdd_info[i]);
> > +                       vp_init(vdd_info[i]);
> > +                       vdd_debugfs_init(vdd_info[i]);
> > +               }
>
> >        }
> >
> >        return 0;
> > diff --git a/arch/arm/mach-omap2/voltage.h b/arch/arm/mach-
> omap2/voltage.h
> > index de4e09b..17b1e10
> > --- a/arch/arm/mach-omap2/voltage.h
> > +++ b/arch/arm/mach-omap2/voltage.h
> > @@ -23,6 +23,9 @@
> >  #define VOLTSCALE_VPFORCEUPDATE                1
> >  #define VOLTSCALE_VCBYPASS             2
> >
> > +#define VP_VC_CLASS 0
> > +#define REGULATOR_CLASS 1
> please - could you ensure namespace is proper in macro usage?
> I dont understand usage difference between VP_VC_CLASS and
> REGULATOR_CLASS
Use regulator class if you do not want to use OMAP Voltage layer.
>
> > +
> >  /**
> >  * struct omap_vfsm_instance_data - per-voltage manager FSM
> register/bitfield
> >  * data
> > @@ -87,6 +90,8 @@ struct omap_volt_data {
> >  * @onlp_cmd:  PMIC API to send onlp command instruction
> >  * @ret_cmd:   PMIC API to send ret command instruction
> >  * @off_cmd:   PMIC API to send off command instruction
> > + * @voltage_class: Voltage class used for voltage scaling (can be
> VP/VC method
> > + *                             or regulator based method for now).
> >  */
> >  struct omap_volt_pmic_info {
> >        int slew_rate;
> > @@ -105,6 +110,7 @@ struct omap_volt_pmic_info {
> >        unsigned char (*onlp_cmd)(unsigned long uV);
> >        unsigned char (*ret_cmd)(unsigned long uV);
> >        unsigned char (*off_cmd)(unsigned long uV);
> > +       u8 voltage_class;
> >  };
> >
> >  /**
> > --
> > 1.7.0.4
> overall, other than deciding to initialize or not initialize VP/VC
> based on class, I dont see how you have achieved $subject or $commit
> message in terms of bring in bypass ability to VP/VC by introducing
> class.
>
> A) the $subject is wrong. you have just introduced voltage_class - I
> suggest you state that instead.
> B) how your patch achieves support for bypassing vp/vc is not clear
> unfortunately.
I am not sure if you have really understood the patch.
The issue I am trying to address is, if someone wants to boot up OMAP +
some PMIC which does not use VP/VC for voltage scaling, how to achieve
that.

What do you mean by bypass ability?
If Voltage layer initialization is skipped (that's the case for regulator
class), then all subsequent voltage_scale calls will fail which is the
expected behavior.

Vishwa

>
> Regards,
> Nishanth Menon
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux