* [PATCH 0/3] mtd: rawnand: renesas: Runtime PM use @ 2022-04-29 10:52 Miquel Raynal 2022-04-29 10:52 ` [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description Miquel Raynal ` (2 more replies) 0 siblings, 3 replies; 9+ messages in thread From: Miquel Raynal @ 2022-04-29 10:52 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: linux-renesas-soc, Magnus Damm, Gareth Williams, Phil Edworthy, Geert Uytterhoeven, Rob Herring, Krzysztof Kozlowski, devicetree, Miquel Raynal There was a small mistake when first introducing this controller driver: the power-domain property was missing in the device tree because there was only one controller supported at this time (UART) and this is a Synopsis IP which did not support power domains. The idea is to always use these power domains when available, so let's add it to the bindings, the DT and use it from the driver through the runtimpe PM API instead of doing raw clk API calls. Miquel Raynal (3): dt-bindings: mtd: renesas: Fix the NAND controller description ARM: dts: r9a06g032: Fix the NAND controller node mtd: rawnand: renesas: Use runtime PM instead of the raw clock API .../bindings/mtd/renesas-nandc.yaml | 5 ++ arch/arm/boot/dts/r9a06g032.dtsi | 1 + .../mtd/nand/raw/renesas-nand-controller.c | 58 +++++++++---------- 3 files changed, 32 insertions(+), 32 deletions(-) -- 2.27.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description 2022-04-29 10:52 [PATCH 0/3] mtd: rawnand: renesas: Runtime PM use Miquel Raynal @ 2022-04-29 10:52 ` Miquel Raynal 2022-05-02 14:46 ` Geert Uytterhoeven 2022-05-04 20:31 ` Rob Herring 2022-04-29 10:52 ` [PATCH 2/3] ARM: dts: r9a06g032: Fix the NAND controller node Miquel Raynal 2022-04-29 10:52 ` [PATCH 3/3] mtd: rawnand: renesas: Use runtime PM instead of the raw clock API Miquel Raynal 2 siblings, 2 replies; 9+ messages in thread From: Miquel Raynal @ 2022-04-29 10:52 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: linux-renesas-soc, Magnus Damm, Gareth Williams, Phil Edworthy, Geert Uytterhoeven, Rob Herring, Krzysztof Kozlowski, devicetree, Miquel Raynal, Geert Uytterhoeven Add the missing power-domain property which is needed on all the RZ/N1 SoC IPs. Suggested-by: Geert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- Documentation/devicetree/bindings/mtd/renesas-nandc.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/devicetree/bindings/mtd/renesas-nandc.yaml b/Documentation/devicetree/bindings/mtd/renesas-nandc.yaml index 2870d36361c4..7b18bc5cc8b3 100644 --- a/Documentation/devicetree/bindings/mtd/renesas-nandc.yaml +++ b/Documentation/devicetree/bindings/mtd/renesas-nandc.yaml @@ -36,11 +36,15 @@ properties: - const: hclk - const: eclk + power-domains: + maxItems: 1 + required: - compatible - reg - clocks - clock-names + - power-domains - interrupts unevaluatedProperties: false @@ -56,6 +60,7 @@ examples: interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>; clocks = <&sysctrl R9A06G032_HCLK_NAND>, <&sysctrl R9A06G032_CLK_NAND>; clock-names = "hclk", "eclk"; + power-domains = <&sysctrl>; #address-cells = <1>; #size-cells = <0>; }; -- 2.27.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description 2022-04-29 10:52 ` [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description Miquel Raynal @ 2022-05-02 14:46 ` Geert Uytterhoeven 2022-05-04 20:31 ` Rob Herring 1 sibling, 0 replies; 9+ messages in thread From: Geert Uytterhoeven @ 2022-05-02 14:46 UTC (permalink / raw) To: Miquel Raynal Cc: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, MTD Maling List, Linux-Renesas, Magnus Damm, Gareth Williams, Phil Edworthy, Rob Herring, Krzysztof Kozlowski, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, Geert Uytterhoeven On Fri, Apr 29, 2022 at 12:52 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > Add the missing power-domain property which is needed on all the > RZ/N1 SoC IPs. > > Suggested-by: Geert Uytterhoeven <geert+renesas@glider.be> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description 2022-04-29 10:52 ` [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description Miquel Raynal 2022-05-02 14:46 ` Geert Uytterhoeven @ 2022-05-04 20:31 ` Rob Herring 1 sibling, 0 replies; 9+ messages in thread From: Rob Herring @ 2022-05-04 20:31 UTC (permalink / raw) To: Miquel Raynal Cc: Krzysztof Kozlowski, Geert Uytterhoeven, Geert Uytterhoeven, Pratyush Yadav, Vignesh Raghavendra, Phil Edworthy, Rob Herring, linux-mtd, Gareth Williams, devicetree, Magnus Damm, Tudor Ambarus, linux-renesas-soc, Richard Weinberger, Michael Walle On Fri, 29 Apr 2022 12:52:27 +0200, Miquel Raynal wrote: > Add the missing power-domain property which is needed on all the > RZ/N1 SoC IPs. > > Suggested-by: Geert Uytterhoeven <geert+renesas@glider.be> > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> > --- > Documentation/devicetree/bindings/mtd/renesas-nandc.yaml | 5 +++++ > 1 file changed, 5 insertions(+) > Acked-by: Rob Herring <robh@kernel.org> ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/3] ARM: dts: r9a06g032: Fix the NAND controller node 2022-04-29 10:52 [PATCH 0/3] mtd: rawnand: renesas: Runtime PM use Miquel Raynal 2022-04-29 10:52 ` [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description Miquel Raynal @ 2022-04-29 10:52 ` Miquel Raynal 2022-05-02 14:47 ` Geert Uytterhoeven 2022-04-29 10:52 ` [PATCH 3/3] mtd: rawnand: renesas: Use runtime PM instead of the raw clock API Miquel Raynal 2 siblings, 1 reply; 9+ messages in thread From: Miquel Raynal @ 2022-04-29 10:52 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: linux-renesas-soc, Magnus Damm, Gareth Williams, Phil Edworthy, Geert Uytterhoeven, Rob Herring, Krzysztof Kozlowski, devicetree, Miquel Raynal Add the missing power-domains property which is mandatory. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- arch/arm/boot/dts/r9a06g032.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/boot/dts/r9a06g032.dtsi b/arch/arm/boot/dts/r9a06g032.dtsi index a35bd19c616a..b3ca904c8647 100644 --- a/arch/arm/boot/dts/r9a06g032.dtsi +++ b/arch/arm/boot/dts/r9a06g032.dtsi @@ -234,6 +234,7 @@ nand_controller: nand-controller@40102000 { interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>; clocks = <&sysctrl R9A06G032_HCLK_NAND>, <&sysctrl R9A06G032_CLK_NAND>; clock-names = "hclk", "eclk"; + power-domains = <&sysctrl>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; -- 2.27.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] ARM: dts: r9a06g032: Fix the NAND controller node 2022-04-29 10:52 ` [PATCH 2/3] ARM: dts: r9a06g032: Fix the NAND controller node Miquel Raynal @ 2022-05-02 14:47 ` Geert Uytterhoeven 0 siblings, 0 replies; 9+ messages in thread From: Geert Uytterhoeven @ 2022-05-02 14:47 UTC (permalink / raw) To: Miquel Raynal Cc: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, MTD Maling List, Linux-Renesas, Magnus Damm, Gareth Williams, Phil Edworthy, Rob Herring, Krzysztof Kozlowski, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS On Fri, Apr 29, 2022 at 12:52 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > Add the missing power-domains property which is mandatory. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> i.e. will queue in renesas-devel for v5.19. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] mtd: rawnand: renesas: Use runtime PM instead of the raw clock API 2022-04-29 10:52 [PATCH 0/3] mtd: rawnand: renesas: Runtime PM use Miquel Raynal 2022-04-29 10:52 ` [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description Miquel Raynal 2022-04-29 10:52 ` [PATCH 2/3] ARM: dts: r9a06g032: Fix the NAND controller node Miquel Raynal @ 2022-04-29 10:52 ` Miquel Raynal 2022-05-02 14:53 ` Geert Uytterhoeven 2 siblings, 1 reply; 9+ messages in thread From: Miquel Raynal @ 2022-04-29 10:52 UTC (permalink / raw) To: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, linux-mtd Cc: linux-renesas-soc, Magnus Damm, Gareth Williams, Phil Edworthy, Geert Uytterhoeven, Rob Herring, Krzysztof Kozlowski, devicetree, Miquel Raynal This NAND controller is part of a well defined power domain handled by the runtime PM core. Let's keep the harmony with the other RZ/N1 drivers and exclusively use the runtime PM API to enable/disable the clocks. We still need to retrieve the external clock rate in order to derive the NAND timings, but that is not a big deal, we can still do that in the probe and just save this value to reuse it later. Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> --- .../mtd/nand/raw/renesas-nand-controller.c | 58 +++++++++---------- 1 file changed, 26 insertions(+), 32 deletions(-) diff --git a/drivers/mtd/nand/raw/renesas-nand-controller.c b/drivers/mtd/nand/raw/renesas-nand-controller.c index 6db063b230a9..72dfbc7fd424 100644 --- a/drivers/mtd/nand/raw/renesas-nand-controller.c +++ b/drivers/mtd/nand/raw/renesas-nand-controller.c @@ -16,6 +16,7 @@ #include <linux/mtd/rawnand.h> #include <linux/of.h> #include <linux/platform_device.h> +#include <linux/pm_runtime.h> #include <linux/slab.h> #define COMMAND_REG 0x00 @@ -216,8 +217,7 @@ struct rnandc { struct nand_controller controller; struct device *dev; void __iomem *regs; - struct clk *hclk; - struct clk *eclk; + unsigned long ext_clk_rate; unsigned long assigned_cs; struct list_head chips; struct nand_chip *selected_chip; @@ -891,7 +891,7 @@ static int rnandc_setup_interface(struct nand_chip *chip, int chipnr, { struct rnand_chip *rnand = to_rnand(chip); struct rnandc *rnandc = to_rnandc(chip->controller); - unsigned int period_ns = 1000000000 / clk_get_rate(rnandc->eclk); + unsigned int period_ns = 1000000000 / rnandc->ext_clk_rate; const struct nand_sdr_timings *sdr; unsigned int cyc, cle, ale, bef_dly, ca_to_data; @@ -1319,6 +1319,7 @@ static int rnandc_chips_init(struct rnandc *rnandc) static int rnandc_probe(struct platform_device *pdev) { struct rnandc *rnandc; + struct clk *eclk; int irq, ret; rnandc = devm_kzalloc(&pdev->dev, sizeof(*rnandc), GFP_KERNEL); @@ -1335,29 +1336,10 @@ static int rnandc_probe(struct platform_device *pdev) if (IS_ERR(rnandc->regs)) return PTR_ERR(rnandc->regs); - /* APB clock */ - rnandc->hclk = devm_clk_get(&pdev->dev, "hclk"); - if (IS_ERR(rnandc->hclk)) - return PTR_ERR(rnandc->hclk); - - /* External NAND bus clock */ - rnandc->eclk = devm_clk_get(&pdev->dev, "eclk"); - if (IS_ERR(rnandc->eclk)) - return PTR_ERR(rnandc->eclk); - - ret = clk_prepare_enable(rnandc->hclk); - if (ret) - return ret; - - ret = clk_prepare_enable(rnandc->eclk); - if (ret) - goto disable_hclk; - rnandc_dis_interrupts(rnandc); irq = platform_get_irq_optional(pdev, 0); if (irq == -EPROBE_DEFER) { - ret = irq; - goto disable_eclk; + return irq; } else if (irq < 0) { dev_info(&pdev->dev, "No IRQ found, fallback to polling\n"); rnandc->use_polling = true; @@ -1365,12 +1347,25 @@ static int rnandc_probe(struct platform_device *pdev) ret = devm_request_irq(&pdev->dev, irq, rnandc_irq_handler, 0, "renesas-nand-controller", rnandc); if (ret < 0) - goto disable_eclk; + return ret; } ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); if (ret) - goto disable_eclk; + return ret; + + pm_runtime_enable(&pdev->dev); + pm_runtime_get_sync(&pdev->dev); + + /* The external NAND bus clock rate is needed for computing timings */ + eclk = clk_get(&pdev->dev, "eclk"); + if (IS_ERR(eclk)) { + ret = PTR_ERR(eclk); + goto dis_runtime_pm; + } + + rnandc->ext_clk_rate = clk_get_rate(eclk); + clk_put(eclk); rnandc_clear_fifo(rnandc); @@ -1378,14 +1373,13 @@ static int rnandc_probe(struct platform_device *pdev) ret = rnandc_chips_init(rnandc); if (ret) - goto disable_eclk; + goto dis_runtime_pm; return 0; -disable_eclk: - clk_disable_unprepare(rnandc->eclk); -disable_hclk: - clk_disable_unprepare(rnandc->hclk); +dis_runtime_pm: + pm_runtime_put_sync(&pdev->dev); + pm_runtime_disable(&pdev->dev); return ret; } @@ -1396,8 +1390,8 @@ static int rnandc_remove(struct platform_device *pdev) rnandc_chips_cleanup(rnandc); - clk_disable_unprepare(rnandc->eclk); - clk_disable_unprepare(rnandc->hclk); + pm_runtime_put_sync(&pdev->dev); + pm_runtime_disable(&pdev->dev); return 0; } -- 2.27.0 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] mtd: rawnand: renesas: Use runtime PM instead of the raw clock API 2022-04-29 10:52 ` [PATCH 3/3] mtd: rawnand: renesas: Use runtime PM instead of the raw clock API Miquel Raynal @ 2022-05-02 14:53 ` Geert Uytterhoeven 2022-05-09 15:34 ` Miquel Raynal 0 siblings, 1 reply; 9+ messages in thread From: Geert Uytterhoeven @ 2022-05-02 14:53 UTC (permalink / raw) To: Miquel Raynal Cc: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, MTD Maling List, Linux-Renesas, Magnus Damm, Gareth Williams, Phil Edworthy, Rob Herring, Krzysztof Kozlowski, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS Hi Miquel, On Fri, Apr 29, 2022 at 12:52 PM Miquel Raynal <miquel.raynal@bootlin.com> wrote: > This NAND controller is part of a well defined power domain handled by > the runtime PM core. Let's keep the harmony with the other RZ/N1 drivers > and exclusively use the runtime PM API to enable/disable the clocks. > > We still need to retrieve the external clock rate in order to derive the > NAND timings, but that is not a big deal, we can still do that in the > probe and just save this value to reuse it later. > > Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Thanks for your patch! > --- a/drivers/mtd/nand/raw/renesas-nand-controller.c > +++ b/drivers/mtd/nand/raw/renesas-nand-controller.c > @@ -1319,6 +1319,7 @@ static int rnandc_chips_init(struct rnandc *rnandc) > static int rnandc_probe(struct platform_device *pdev) > { > struct rnandc *rnandc; > + struct clk *eclk; > int irq, ret; > > rnandc = devm_kzalloc(&pdev->dev, sizeof(*rnandc), GFP_KERNEL); > @@ -1335,29 +1336,10 @@ static int rnandc_probe(struct platform_device *pdev) > if (IS_ERR(rnandc->regs)) > return PTR_ERR(rnandc->regs); > > - /* APB clock */ > - rnandc->hclk = devm_clk_get(&pdev->dev, "hclk"); > - if (IS_ERR(rnandc->hclk)) > - return PTR_ERR(rnandc->hclk); > - > - /* External NAND bus clock */ > - rnandc->eclk = devm_clk_get(&pdev->dev, "eclk"); > - if (IS_ERR(rnandc->eclk)) > - return PTR_ERR(rnandc->eclk); > - > - ret = clk_prepare_enable(rnandc->hclk); > - if (ret) > - return ret; > - > - ret = clk_prepare_enable(rnandc->eclk); > - if (ret) > - goto disable_hclk; > - > rnandc_dis_interrupts(rnandc); > irq = platform_get_irq_optional(pdev, 0); > if (irq == -EPROBE_DEFER) { > - ret = irq; > - goto disable_eclk; > + return irq; > } else if (irq < 0) { > dev_info(&pdev->dev, "No IRQ found, fallback to polling\n"); > rnandc->use_polling = true; > @@ -1365,12 +1347,25 @@ static int rnandc_probe(struct platform_device *pdev) > ret = devm_request_irq(&pdev->dev, irq, rnandc_irq_handler, 0, > "renesas-nand-controller", rnandc); > if (ret < 0) > - goto disable_eclk; > + return ret; > } > > ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); > if (ret) > - goto disable_eclk; > + return ret; > + > + pm_runtime_enable(&pdev->dev); > + pm_runtime_get_sync(&pdev->dev); ret = pm_runtime_resume_and_get)...); if (ret < 0) ... > + > + /* The external NAND bus clock rate is needed for computing timings */ > + eclk = clk_get(&pdev->dev, "eclk"); > + if (IS_ERR(eclk)) { > + ret = PTR_ERR(eclk); > + goto dis_runtime_pm; > + } > + > + rnandc->ext_clk_rate = clk_get_rate(eclk); > + clk_put(eclk); > > rnandc_clear_fifo(rnandc); > > @@ -1378,14 +1373,13 @@ static int rnandc_probe(struct platform_device *pdev) > > ret = rnandc_chips_init(rnandc); > if (ret) > - goto disable_eclk; > + goto dis_runtime_pm; > > return 0; > > -disable_eclk: > - clk_disable_unprepare(rnandc->eclk); > -disable_hclk: > - clk_disable_unprepare(rnandc->hclk); > +dis_runtime_pm: > + pm_runtime_put_sync(&pdev->dev); pm_runtime_put() > + pm_runtime_disable(&pdev->dev); > > return ret; > } > @@ -1396,8 +1390,8 @@ static int rnandc_remove(struct platform_device *pdev) > > rnandc_chips_cleanup(rnandc); > > - clk_disable_unprepare(rnandc->eclk); > - clk_disable_unprepare(rnandc->hclk); > + pm_runtime_put_sync(&pdev->dev); pm_runtime_put() > + pm_runtime_disable(&pdev->dev); Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] mtd: rawnand: renesas: Use runtime PM instead of the raw clock API 2022-05-02 14:53 ` Geert Uytterhoeven @ 2022-05-09 15:34 ` Miquel Raynal 0 siblings, 0 replies; 9+ messages in thread From: Miquel Raynal @ 2022-05-09 15:34 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Richard Weinberger, Vignesh Raghavendra, Tudor Ambarus, Pratyush Yadav, Michael Walle, MTD Maling List, Linux-Renesas, Magnus Damm, Gareth Williams, Phil Edworthy, Rob Herring, Krzysztof Kozlowski, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS Hi Geert, > > ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32)); > > if (ret) > > - goto disable_eclk; > > + return ret; > > + > > + pm_runtime_enable(&pdev->dev); > > + pm_runtime_get_sync(&pdev->dev); > > ret = pm_runtime_resume_and_get)...); > if (ret < 0) ... I also changed the enable call to use devm_pm_runtime_enable() and dropped the calls to pm_runtime_disable() below (same in the RTC driver). > > > + > > + /* The external NAND bus clock rate is needed for computing timings */ > > + eclk = clk_get(&pdev->dev, "eclk"); > > + if (IS_ERR(eclk)) { > > + ret = PTR_ERR(eclk); > > + goto dis_runtime_pm; > > + } > > + > > + rnandc->ext_clk_rate = clk_get_rate(eclk); > > + clk_put(eclk); > > Thanks, Miquèl ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/ ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2022-05-09 15:34 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-04-29 10:52 [PATCH 0/3] mtd: rawnand: renesas: Runtime PM use Miquel Raynal 2022-04-29 10:52 ` [PATCH 1/3] dt-bindings: mtd: renesas: Fix the NAND controller description Miquel Raynal 2022-05-02 14:46 ` Geert Uytterhoeven 2022-05-04 20:31 ` Rob Herring 2022-04-29 10:52 ` [PATCH 2/3] ARM: dts: r9a06g032: Fix the NAND controller node Miquel Raynal 2022-05-02 14:47 ` Geert Uytterhoeven 2022-04-29 10:52 ` [PATCH 3/3] mtd: rawnand: renesas: Use runtime PM instead of the raw clock API Miquel Raynal 2022-05-02 14:53 ` Geert Uytterhoeven 2022-05-09 15:34 ` Miquel Raynal
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).