> -----Original Message----- > From: Hongxing Zhu > Sent: 2022年2月14日 11:08 > To: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx> > Cc: l.stach@xxxxxxxxxxxxxx; bhelgaas@xxxxxxxxxx; broonie@xxxxxxxxxx; > lorenzo.pieralisi@xxxxxxx; jingoohan1@xxxxxxxxx; festevam@xxxxxxxxx; > linux-pci@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > kernel@xxxxxxxxxxxxxx > Subject: RE: [PATCH v6 5/8] PCI: imx6: Refine the regulator usage > > > -----Original Message----- > > From: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx> > > Sent: 2022年2月12日 0:28 > > To: Hongxing Zhu <hongxing.zhu@xxxxxxx> > > Cc: l.stach@xxxxxxxxxxxxxx; bhelgaas@xxxxxxxxxx; broonie@xxxxxxxxxx; > > lorenzo.pieralisi@xxxxxxx; jingoohan1@xxxxxxxxx; festevam@xxxxxxxxx; > > linux-pci@xxxxxxxxxxxxxxx; dl-linux-imx <linux-imx@xxxxxxx>; > > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > > kernel@xxxxxxxxxxxxxx > > Subject: Re: [PATCH v6 5/8] PCI: imx6: Refine the regulator usage > > > > Hello Richard, > > > > On Tue, Feb 08, 2022 at 11:25:32AM +0800, Richard Zhu wrote: > > > The driver should undo any enables it did itself. The regulator > > > disable shouldn't be basing decisions on regulator_is_enabled(). > > > > > > Signed-off-by: Richard Zhu <hongxing.zhu@xxxxxxx> > > > --- > > > drivers/pci/controller/dwc/pci-imx6.c | 14 ++------------ > > > 1 file changed, 2 insertions(+), 12 deletions(-) > > > > > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c > > > b/drivers/pci/controller/dwc/pci-imx6.c > > > index 0aca762d88a3..e165ad00989c 100644 > > > --- a/drivers/pci/controller/dwc/pci-imx6.c > > > +++ b/drivers/pci/controller/dwc/pci-imx6.c > > > @@ -369,8 +369,6 @@ static int imx6_pcie_attach_pd(struct device > > > *dev) > > > > > > static void imx6_pcie_assert_core_reset(struct imx6_pcie > > > *imx6_pcie) { > > > - struct device *dev = imx6_pcie->pci->dev; > > > - > > > switch (imx6_pcie->drvdata->variant) { > > > case IMX7D: > > > case IMX8MQ: > > > @@ -400,14 +398,6 @@ static void imx6_pcie_assert_core_reset(struct > > imx6_pcie *imx6_pcie) > > > IMX6Q_GPR1_PCIE_REF_CLK_EN, 0 << 16); > > > break; > > > } > > > - > > > - if (imx6_pcie->vpcie && regulator_is_enabled(imx6_pcie->vpcie) > 0) { > > > - int ret = regulator_disable(imx6_pcie->vpcie); > > > - > > > - if (ret) > > > - dev_err(dev, "failed to disable vpcie regulator: %d\n", > > > - ret); > > > - } > > > > This commit is not just cleaning up the regulator usage as you state > > in the commit message, this is removing the vpcie regulator_disable > > from imx6_pcie_assert_core_reset(). > > > > I would not do it, this is called for example on the shutdown callback > > where it makes sense. > Hi Francesco: > Thanks for your review. > Do you means that we should keep regulator_disable() here? > Okay, I would change it later. Hi Francesco: One more complementary that we can't disable this regulator here, because that the regulator might not be enabled at all. But in the case of suspend/resume operations, the regulator_disable() should be invoked behind of imx6_pcie_assert_core_reset () in resume callback to balance the enable/disable usage counter. I would add this change later. Thanks again for your review comments. Best Regards Richard > > Best Regards > Richard Zhu > > > > > Francesco