2022-06-15 23:30:39

by Bjorn Helgaas

[permalink] [raw]
Subject: [PATCH v12 13/13] PCI: imx6: Disable clocks in reverse order of enable

From: Bjorn Helgaas <[email protected]>

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 <[email protected]>
---
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


2022-06-15 23:31:27

by Bjorn Helgaas

[permalink] [raw]
Subject: Re: [PATCH v12 13/13] PCI: imx6: Disable clocks in reverse order of enable

On Wed, Jun 15, 2022 at 06:15:51PM -0500, Bjorn Helgaas wrote:
> From: Bjorn Helgaas <[email protected]>
>
> 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 <[email protected]>
> ---
> 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
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2022-06-16 02:28:13

by Richard Zhu

[permalink] [raw]
Subject: RE: [PATCH v12 13/13] PCI: imx6: Disable clocks in reverse order of enable

> -----Original Message-----
> From: Bjorn Helgaas <[email protected]>
> Sent: 2022??6??16?? 7:16
> To: Hongxing Zhu <[email protected]>; Lucas Stach
> <[email protected]>; Rob Herring <[email protected]>; Mark Brown
> <[email protected]>; Lorenzo Pieralisi <[email protected]>; Fabio
> Estevam <[email protected]>; Francesco Dolcini
> <[email protected]>
> Cc: [email protected]; [email protected];
> [email protected]; [email protected]; dl-linux-imx
> <[email protected]>; Bjorn Helgaas <[email protected]>
> Subject: [PATCH v12 13/13] PCI: imx6: Disable clocks in reverse order of enable
>
> From: Bjorn Helgaas <[email protected]>
>
> 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 <[email protected]>
Acked-by: Richard Zhu <[email protected]>

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