Message ID | 20220615231551.1054753-14-helgaas@kernel.org |
---|---|
State | New |
Headers | show |
Series | PCI: imx6: refine codes and add the error propagation | expand |
On Wed, Jun 15, 2022 at 06:15:51PM -0500, Bjorn Helgaas wrote: > From: Bjorn Helgaas <bhelgaas@google.com> > > imx6_pcie_clk_enable() enables clocks in the order: > > pcie_phy > pcie_bus > pcie > imx6_pcie_enable_ref_clk > > Change imx6_pcie_clk_disable() to disable them in the reverse order. > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> > --- > drivers/pci/controller/dwc/pci-imx6.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c > index bd736aff94a3..738b5a732cef 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -655,10 +655,10 @@ static int imx6_pcie_clk_enable(struct imx6_pcie *imx6_pcie) > > static void imx6_pcie_clk_disable(struct imx6_pcie *imx6_pcie) > { > - clk_disable_unprepare(imx6_pcie->pcie); > - clk_disable_unprepare(imx6_pcie->pcie_phy); > - clk_disable_unprepare(imx6_pcie->pcie_bus); > imx6_pcie_disable_ref_clk(imx6_pcie); > + clk_disable_unprepare(imx6_pcie->pcie); > + clk_disable_unprepare(imx6_pcie->pcie_bus); > + clk_disable_unprepare(imx6_pcie->pcie_phy); Please comment on this. I have no actual information that this is the right thing, but normally we disable things in the reverse order that we enabled them. And the error path of imx6_pcie_deassert_core_reset() definitely disables pcie, pcie_bus, pcie_phy in that order, so it seems reasonable to do the same here. > } > > static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie) > -- > 2.25.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> -----Original Message----- > From: Bjorn Helgaas <helgaas@kernel.org> > Sent: 2022年6月16日 7:16 > To: Hongxing Zhu <hongxing.zhu@nxp.com>; Lucas Stach > <l.stach@pengutronix.de>; Rob Herring <robh+dt@kernel.org>; Mark Brown > <broonie@kernel.org>; Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>; Fabio > Estevam <festevam@gmail.com>; Francesco Dolcini > <francesco.dolcini@toradex.com> > Cc: linux-pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org; > linux-kernel@vger.kernel.org; kernel@pengutronix.de; dl-linux-imx > <linux-imx@nxp.com>; Bjorn Helgaas <bhelgaas@google.com> > Subject: [PATCH v12 13/13] PCI: imx6: Disable clocks in reverse order of enable > > From: Bjorn Helgaas <bhelgaas@google.com> > > imx6_pcie_clk_enable() enables clocks in the order: > > pcie_phy > pcie_bus > pcie > imx6_pcie_enable_ref_clk > > Change imx6_pcie_clk_disable() to disable them in the reverse order. > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Acked-by: Richard Zhu <hongxing.zhu@nxp.com> Best Regards Richard Zhu > --- > drivers/pci/controller/dwc/pci-imx6.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c > b/drivers/pci/controller/dwc/pci-imx6.c > index bd736aff94a3..738b5a732cef 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -655,10 +655,10 @@ static int imx6_pcie_clk_enable(struct imx6_pcie > *imx6_pcie) > > static void imx6_pcie_clk_disable(struct imx6_pcie *imx6_pcie) { > - clk_disable_unprepare(imx6_pcie->pcie); > - clk_disable_unprepare(imx6_pcie->pcie_phy); > - clk_disable_unprepare(imx6_pcie->pcie_bus); > imx6_pcie_disable_ref_clk(imx6_pcie); > + clk_disable_unprepare(imx6_pcie->pcie); > + clk_disable_unprepare(imx6_pcie->pcie_bus); > + clk_disable_unprepare(imx6_pcie->pcie_phy); > } > > static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie) > -- > 2.25.1
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index bd736aff94a3..738b5a732cef 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -655,10 +655,10 @@ static int imx6_pcie_clk_enable(struct imx6_pcie *imx6_pcie) static void imx6_pcie_clk_disable(struct imx6_pcie *imx6_pcie) { - clk_disable_unprepare(imx6_pcie->pcie); - clk_disable_unprepare(imx6_pcie->pcie_phy); - clk_disable_unprepare(imx6_pcie->pcie_bus); imx6_pcie_disable_ref_clk(imx6_pcie); + clk_disable_unprepare(imx6_pcie->pcie); + clk_disable_unprepare(imx6_pcie->pcie_bus); + clk_disable_unprepare(imx6_pcie->pcie_phy); } static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)