On Wed, May 20, 2020 at 11:43:04AM +0800, Andrew-sh.Cheng wrote:
> + cci_df->proc_reg = devm_regulator_get_optional(cci_dev, "proc");
> + ret = PTR_ERR_OR_ZERO(cci_df->proc_reg);
> + if (ret) {
> + if (ret != -EPROBE_DEFER)
> + dev_err(cci_dev, "failed to get regulator for CCI: %d\n",
> + ret);
> + return ret;
> + }
> + ret = regulator_enable(cci_df->proc_reg);
The code appears to require a regulator (and I'm guessing the device
needs power) so why is this using regulator_get_optional()?
On Wed, 2020-05-20 at 13:31 +0100, Mark Brown wrote:
> On Wed, May 20, 2020 at 11:43:04AM +0800, Andrew-sh.Cheng wrote:
>
> > + cci_df->proc_reg = devm_regulator_get_optional(cci_dev, "proc");
> > + ret = PTR_ERR_OR_ZERO(cci_df->proc_reg);
> > + if (ret) {
> > + if (ret != -EPROBE_DEFER)
> > + dev_err(cci_dev, "failed to get regulator for CCI: %d\n",
> > + ret);
> > + return ret;
> > + }
> > + ret = regulator_enable(cci_df->proc_reg);
>
> The code appears to require a regulator (and I'm guessing the device
> needs power) so why is this using regulator_get_optional()?
Hi Mark,
Do you mean, why not use regulator_get_exclusive() or regulator_get()?
Because cci and cpu litter core shared buck, it cannot use
regulator_get_exclusive().
Because both cci and cpu want to tune voltage, it cannot use
regulator_get(), otherwise it will get dummy regulator even this buck
doesn't register.as regulator.
BR,
Andrew-sh.Cheng