Re: [PATCH 1/2] hw_random: mxc-rnga: Adapt clocks to new i.mx clock framework
On Mon, Jul 9, 2012 at 4:41 AM, Sascha Hauer wrote: > Uhh, that's a driver bug that should be fixed. Although right now there > is no reference counting for clocks, the driver should keep the clk > internally instead of simply calling clk_get whenever it needs access to > a clk. Yes, I just sent a fix for this. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] hw_random: mxc-rnga: Adapt clocks to new i.mx clock framework
On Mon, Jul 9, 2012 at 4:41 AM, Sascha Hauer s.ha...@pengutronix.de wrote: Uhh, that's a driver bug that should be fixed. Although right now there is no reference counting for clocks, the driver should keep the clk internally instead of simply calling clk_get whenever it needs access to a clk. Yes, I just sent a fix for this. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] hw_random: mxc-rnga: Adapt clocks to new i.mx clock framework
On Fri, Jul 06, 2012 at 05:20:19PM -0300, Fabio Estevam wrote: > Cc: Theodore Ts'o > Cc: Herbert Xu > Cc: > Signed-off-by: Fabio Estevam > --- > drivers/char/hw_random/mxc-rnga.c |8 > 1 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/char/hw_random/mxc-rnga.c > b/drivers/char/hw_random/mxc-rnga.c > index 85074de..c49c0b8 100644 > --- a/drivers/char/hw_random/mxc-rnga.c > +++ b/drivers/char/hw_random/mxc-rnga.c > @@ -152,14 +152,14 @@ static int __init mxc_rnga_probe(struct platform_device > *pdev) > if (rng_dev) > return -EBUSY; > > - clk = clk_get(>dev, "rng"); > + clk = clk_get(>dev, NULL); > if (IS_ERR(clk)) { > dev_err(>dev, "Could not get rng_clk!\n"); > err = PTR_ERR(clk); > goto out; > } > > - clk_enable(clk); > + clk_prepare_enable(clk); > > res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > if (!res) { > @@ -201,7 +201,7 @@ err_ioremap: > release_mem_region(res->start, resource_size(res)); > > err_region: > - clk_disable(clk); > + clk_disable_unprepare(clk); > clk_put(clk); > > out: > @@ -212,7 +212,7 @@ static int __exit mxc_rnga_remove(struct platform_device > *pdev) > { > struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > void __iomem *rng_base = (void __iomem *)mxc_rnga.priv; > - struct clk *clk = clk_get(>dev, "rng"); > + struct clk *clk = clk_get(>dev, NULL); Uhh, that's a driver bug that should be fixed. Although right now there is no reference counting for clocks, the driver should keep the clk internally instead of simply calling clk_get whenever it needs access to a clk. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0| Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917- | -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 1/2] hw_random: mxc-rnga: Adapt clocks to new i.mx clock framework
On Fri, Jul 06, 2012 at 05:20:19PM -0300, Fabio Estevam wrote: Cc: Theodore Ts'o ty...@mit.edu Cc: Herbert Xu herb...@gondor.apana.org.au Cc: linux-kernel@vger.kernel.org Signed-off-by: Fabio Estevam fabio.este...@freescale.com --- drivers/char/hw_random/mxc-rnga.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/char/hw_random/mxc-rnga.c b/drivers/char/hw_random/mxc-rnga.c index 85074de..c49c0b8 100644 --- a/drivers/char/hw_random/mxc-rnga.c +++ b/drivers/char/hw_random/mxc-rnga.c @@ -152,14 +152,14 @@ static int __init mxc_rnga_probe(struct platform_device *pdev) if (rng_dev) return -EBUSY; - clk = clk_get(pdev-dev, rng); + clk = clk_get(pdev-dev, NULL); if (IS_ERR(clk)) { dev_err(pdev-dev, Could not get rng_clk!\n); err = PTR_ERR(clk); goto out; } - clk_enable(clk); + clk_prepare_enable(clk); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { @@ -201,7 +201,7 @@ err_ioremap: release_mem_region(res-start, resource_size(res)); err_region: - clk_disable(clk); + clk_disable_unprepare(clk); clk_put(clk); out: @@ -212,7 +212,7 @@ static int __exit mxc_rnga_remove(struct platform_device *pdev) { struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); void __iomem *rng_base = (void __iomem *)mxc_rnga.priv; - struct clk *clk = clk_get(pdev-dev, rng); + struct clk *clk = clk_get(pdev-dev, NULL); Uhh, that's a driver bug that should be fixed. Although right now there is no reference counting for clocks, the driver should keep the clk internally instead of simply calling clk_get whenever it needs access to a clk. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0| Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917- | -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 1/2] hw_random: mxc-rnga: Adapt clocks to new i.mx clock framework
Adapt clocks to the new i.mx clock framework and fix the following warning: [ cut here ] WARNING: at drivers/clk/clk.c:511 __clk_enable+0x9c/0xac() Modules linked in: Backtrace: [<800124c8>] (dump_backtrace+0x0/0x10c) from [<804172dc>] (dump_stack+0x18/0x1c) r7:0009 r6:01ff r5:8032cb50 r4: [<804172c4>] (dump_stack+0x0/0x1c) from [<80021834>] (warn_slowpath_common+0x54) [<800217e0>] (warn_slowpath_common+0x0/0x6c) from [<80021870>] (warn_slowpath_n) r9:80581cac r8:8700a9c0 r7:805ab070 r6:8013 r5:806133d4 r4:8700a9c0 [<8002184c>] (warn_slowpath_null+0x0/0x2c) from [<8032cb50>] (__clk_enable+0x9c) [<8032cab4>] (__clk_enable+0x0/0xac) from [<8032cb88>] (clk_enable+0x28/0x44) r5:806133d4 r4:8700a9c0 [<8032cb60>] (clk_enable+0x0/0x44) from [<80560f14>] (mxc_rnga_probe+0x68/0x164) r7:805ab070 r6:8706ec00 r5:80611314 r4: [<80560eac>] (mxc_rnga_probe+0x0/0x164) from [<8025914c>] (platform_drv_probe+0) [<8025912c>] (platform_drv_probe+0x0/0x24) from [<80257c7c>] (driver_probe_devi) [<80257bfc>] (driver_probe_device+0x0/0x204) from [<80257e94>] (__driver_attach) r9:80581cac r8:008e r7: r6:8706ec3c r5:805ab070 r4:8706ec08 [<80257e00>] (__driver_attach+0x0/0x98) from [<8025642c>] (bus_for_each_dev+0x6) r7: r6:80257e00 r5:87035e98 r4:805ab070 [<802563c4>] (bus_for_each_dev+0x0/0x94) from [<80257adc>] (driver_attach+0x20/) r7: r6:873f2380 r5:805ab338 r4:805ab070 [<80257abc>] (driver_attach+0x0/0x28) from [<80256d50>] (bus_add_driver+0x18c/0) [<80256bc4>] (bus_add_driver+0x0/0x268) from [<802584c4>] (driver_register+0x80) [<80258444>] (driver_register+0x0/0x134) from [<802594f4>] (platform_driver_reg) r7: r6:805c2e00 r5:0007 r4:805ab05c [<802594a8>] (platform_driver_register+0x0/0x60) from [<80259528>] (platform_dr) [<80259508>] (platform_driver_probe+0x0/0xa4) from [<80560ea0>] (mod_init+0x18/) r7: r6:805c2e00 r5:0007 r4:87034000 [<80560e88>] (mod_init+0x0/0x24) from [<800086b4>] (do_one_initcall+0x40/0x194) [<80008674>] (do_one_initcall+0x0/0x194) from [<8053d3f4>] (kernel_init+0xfc/0x) [<8053d2f8>] (kernel_init+0x0/0x1cc) from [<80027190>] (do_exit+0x0/0x7ec) ---[ end trace 4198eed02050f461 ]--- mxc_rnga mxc_rnga: MXC RNGA Registered Cc: Theodore Ts'o Cc: Herbert Xu Cc: Signed-off-by: Fabio Estevam --- drivers/char/hw_random/mxc-rnga.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/char/hw_random/mxc-rnga.c b/drivers/char/hw_random/mxc-rnga.c index 85074de..c49c0b8 100644 --- a/drivers/char/hw_random/mxc-rnga.c +++ b/drivers/char/hw_random/mxc-rnga.c @@ -152,14 +152,14 @@ static int __init mxc_rnga_probe(struct platform_device *pdev) if (rng_dev) return -EBUSY; - clk = clk_get(>dev, "rng"); + clk = clk_get(>dev, NULL); if (IS_ERR(clk)) { dev_err(>dev, "Could not get rng_clk!\n"); err = PTR_ERR(clk); goto out; } - clk_enable(clk); + clk_prepare_enable(clk); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { @@ -201,7 +201,7 @@ err_ioremap: release_mem_region(res->start, resource_size(res)); err_region: - clk_disable(clk); + clk_disable_unprepare(clk); clk_put(clk); out: @@ -212,7 +212,7 @@ static int __exit mxc_rnga_remove(struct platform_device *pdev) { struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); void __iomem *rng_base = (void __iomem *)mxc_rnga.priv; - struct clk *clk = clk_get(>dev, "rng"); + struct clk *clk = clk_get(>dev, NULL); hwrng_unregister(_rnga); -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH 1/2] hw_random: mxc-rnga: Adapt clocks to new i.mx clock framework
Adapt clocks to the new i.mx clock framework and fix the following warning: [ cut here ] WARNING: at drivers/clk/clk.c:511 __clk_enable+0x9c/0xac() Modules linked in: Backtrace: [800124c8] (dump_backtrace+0x0/0x10c) from [804172dc] (dump_stack+0x18/0x1c) r7:0009 r6:01ff r5:8032cb50 r4: [804172c4] (dump_stack+0x0/0x1c) from [80021834] (warn_slowpath_common+0x54) [800217e0] (warn_slowpath_common+0x0/0x6c) from [80021870] (warn_slowpath_n) r9:80581cac r8:8700a9c0 r7:805ab070 r6:8013 r5:806133d4 r4:8700a9c0 [8002184c] (warn_slowpath_null+0x0/0x2c) from [8032cb50] (__clk_enable+0x9c) [8032cab4] (__clk_enable+0x0/0xac) from [8032cb88] (clk_enable+0x28/0x44) r5:806133d4 r4:8700a9c0 [8032cb60] (clk_enable+0x0/0x44) from [80560f14] (mxc_rnga_probe+0x68/0x164) r7:805ab070 r6:8706ec00 r5:80611314 r4: [80560eac] (mxc_rnga_probe+0x0/0x164) from [8025914c] (platform_drv_probe+0) [8025912c] (platform_drv_probe+0x0/0x24) from [80257c7c] (driver_probe_devi) [80257bfc] (driver_probe_device+0x0/0x204) from [80257e94] (__driver_attach) r9:80581cac r8:008e r7: r6:8706ec3c r5:805ab070 r4:8706ec08 [80257e00] (__driver_attach+0x0/0x98) from [8025642c] (bus_for_each_dev+0x6) r7: r6:80257e00 r5:87035e98 r4:805ab070 [802563c4] (bus_for_each_dev+0x0/0x94) from [80257adc] (driver_attach+0x20/) r7: r6:873f2380 r5:805ab338 r4:805ab070 [80257abc] (driver_attach+0x0/0x28) from [80256d50] (bus_add_driver+0x18c/0) [80256bc4] (bus_add_driver+0x0/0x268) from [802584c4] (driver_register+0x80) [80258444] (driver_register+0x0/0x134) from [802594f4] (platform_driver_reg) r7: r6:805c2e00 r5:0007 r4:805ab05c [802594a8] (platform_driver_register+0x0/0x60) from [80259528] (platform_dr) [80259508] (platform_driver_probe+0x0/0xa4) from [80560ea0] (mod_init+0x18/) r7: r6:805c2e00 r5:0007 r4:87034000 [80560e88] (mod_init+0x0/0x24) from [800086b4] (do_one_initcall+0x40/0x194) [80008674] (do_one_initcall+0x0/0x194) from [8053d3f4] (kernel_init+0xfc/0x) [8053d2f8] (kernel_init+0x0/0x1cc) from [80027190] (do_exit+0x0/0x7ec) ---[ end trace 4198eed02050f461 ]--- mxc_rnga mxc_rnga: MXC RNGA Registered Cc: Theodore Ts'o ty...@mit.edu Cc: Herbert Xu herb...@gondor.apana.org.au Cc: linux-kernel@vger.kernel.org Signed-off-by: Fabio Estevam fabio.este...@freescale.com --- drivers/char/hw_random/mxc-rnga.c |8 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/char/hw_random/mxc-rnga.c b/drivers/char/hw_random/mxc-rnga.c index 85074de..c49c0b8 100644 --- a/drivers/char/hw_random/mxc-rnga.c +++ b/drivers/char/hw_random/mxc-rnga.c @@ -152,14 +152,14 @@ static int __init mxc_rnga_probe(struct platform_device *pdev) if (rng_dev) return -EBUSY; - clk = clk_get(pdev-dev, rng); + clk = clk_get(pdev-dev, NULL); if (IS_ERR(clk)) { dev_err(pdev-dev, Could not get rng_clk!\n); err = PTR_ERR(clk); goto out; } - clk_enable(clk); + clk_prepare_enable(clk); res = platform_get_resource(pdev, IORESOURCE_MEM, 0); if (!res) { @@ -201,7 +201,7 @@ err_ioremap: release_mem_region(res-start, resource_size(res)); err_region: - clk_disable(clk); + clk_disable_unprepare(clk); clk_put(clk); out: @@ -212,7 +212,7 @@ static int __exit mxc_rnga_remove(struct platform_device *pdev) { struct resource *res = platform_get_resource(pdev, IORESOURCE_MEM, 0); void __iomem *rng_base = (void __iomem *)mxc_rnga.priv; - struct clk *clk = clk_get(pdev-dev, rng); + struct clk *clk = clk_get(pdev-dev, NULL); hwrng_unregister(mxc_rnga); -- 1.7.1 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/