Message ID | 20210613233041.128961-2-alexander.sverdlin@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | Prepare EP93xx drivers for Common Clock Framework | expand |
On Mon, 14 Jun 2021 01:30:35 +0200 Alexander Sverdlin <alexander.sverdlin@gmail.com> wrote: > Use clk_prepare_enable()/clk_disable_unprepare() in preparation for switch > to Common Clock Framework, otherwise the following is visible: > > WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:1011 clk_core_enable+0x9c/0xbc > Enabling unprepared ep93xx-adc > CPU: 0 PID: 1 Comm: swapper Not tainted 5.13.0-rc5-... #1 > Hardware name: Cirrus Logic EDB9302 Evaluation Board > [<c000d5b0>] (unwind_backtrace) from [<c000c590>] (show_stack+0x10/0x18) > [<c000c590>] (show_stack) from [<c03a5f38>] (dump_stack+0x20/0x2c) > [<c03a5f38>] (dump_stack) from [<c03a2098>] (__warn+0x98/0xc0) > [<c03a2098>] (__warn) from [<c03a2150>] (warn_slowpath_fmt+0x90/0xc0) > [<c03a2150>] (warn_slowpath_fmt) from [<c01d8358>] (clk_core_enable+0x9c/0xbc) > [<c01d8358>] (clk_core_enable) from [<c01d8698>] (clk_core_enable_lock+0x18/0x30) > [<c01d8698>] (clk_core_enable_lock) from [<c0266560>] (ep93xx_adc_probe+0xe4/0x1a0) > [<c0266560>] (ep93xx_adc_probe) from [<c02126e0>] (platform_probe+0x34/0x80) > [<c02126e0>] (platform_probe) from [<c0210bf8>] (really_probe+0xe8/0x394) > [<c0210bf8>] (really_probe) from [<c0211464>] (device_driver_attach+0x5c/0x64) > [<c0211464>] (device_driver_attach) from [<c02114e8>] (__driver_attach+0x7c/0xec) > [<c02114e8>] (__driver_attach) from [<c020f1b4>] (bus_for_each_dev+0x78/0xc4) > [<c020f1b4>] (bus_for_each_dev) from [<c0211570>] (driver_attach+0x18/0x24) > [<c0211570>] (driver_attach) from [<c020fab4>] (bus_add_driver+0x140/0x1cc) > [<c020fab4>] (bus_add_driver) from [<c0211c44>] (driver_register+0x74/0x114) > [<c0211c44>] (driver_register) from [<c02134f8>] (__platform_driver_register+0x18/0x24) > [<c02134f8>] (__platform_driver_register) from [<c0470148>] (ep93xx_adc_driver_init+0x10/0x1c) > [<c0470148>] (ep93xx_adc_driver_init) from [<c045ce88>] (do_one_initcall+0x7c/0x1a4) > [<c045ce88>] (do_one_initcall) from [<c045d184>] (kernel_init_freeable+0x17c/0x1fc) > [<c045d184>] (kernel_init_freeable) from [<c03a64d0>] (kernel_init+0x8/0xf8) > [<c03a64d0>] (kernel_init) from [<c00082d8>] (ret_from_fork+0x14/0x3c) > ... > ep93xx-adc ep93xx-adc: Cannot enable clock > ep93xx-adc: probe of ep93xx-adc failed with error -108 > > Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com> Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> From cover letter I'm assuming you want these to go through same route as the common clock conversion? If not shout and I can pick this one up. Jonathan > --- > drivers/iio/adc/ep93xx_adc.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/iio/adc/ep93xx_adc.c b/drivers/iio/adc/ep93xx_adc.c > index c08ab3c6dfaf..5c85257b814c 100644 > --- a/drivers/iio/adc/ep93xx_adc.c > +++ b/drivers/iio/adc/ep93xx_adc.c > @@ -207,7 +207,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) > */ > } > > - ret = clk_enable(priv->clk); > + ret = clk_prepare_enable(priv->clk); > if (ret) { > dev_err(&pdev->dev, "Cannot enable clock\n"); > return ret; > @@ -215,7 +215,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) > > ret = iio_device_register(iiodev); > if (ret) > - clk_disable(priv->clk); > + clk_disable_unprepare(priv->clk); > > return ret; > } > @@ -226,7 +226,7 @@ static int ep93xx_adc_remove(struct platform_device *pdev) > struct ep93xx_adc_priv *priv = iio_priv(iiodev); > > iio_device_unregister(iiodev); > - clk_disable(priv->clk); > + clk_disable_unprepare(priv->clk); > > return 0; > }
Hello Jonathan! On Mon, 2021-06-14 at 11:50 +0100, Jonathan Cameron wrote: > > ... > > ep93xx-adc ep93xx-adc: Cannot enable clock > > ep93xx-adc: probe of ep93xx-adc failed with error -108 > > > > Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com> > Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > From cover letter I'm assuming you want these to go through same route as > the common clock conversion? If not shout and I can pick this one up. Thank you for the quick reply! Yes, it makes sense to take the same route as the CCF conversion, I'll try it first. Maybe I'll need to strip these stacktraces as well, I've got the whole bunch of complaints on them...
Hello Jonathan! On 14/06/2021 12:50, Jonathan Cameron wrote: > On Mon, 14 Jun 2021 01:30:35 +0200 > Alexander Sverdlin <alexander.sverdlin@gmail.com> wrote: > >> Use clk_prepare_enable()/clk_disable_unprepare() in preparation for switch >> to Common Clock Framework, otherwise the following is visible: >> >> WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:1011 clk_core_enable+0x9c/0xbc >> Enabling unprepared ep93xx-adc >> CPU: 0 PID: 1 Comm: swapper Not tainted 5.13.0-rc5-... #1 >> Hardware name: Cirrus Logic EDB9302 Evaluation Board >> [<c000d5b0>] (unwind_backtrace) from [<c000c590>] (show_stack+0x10/0x18) >> [<c000c590>] (show_stack) from [<c03a5f38>] (dump_stack+0x20/0x2c) >> [<c03a5f38>] (dump_stack) from [<c03a2098>] (__warn+0x98/0xc0) >> [<c03a2098>] (__warn) from [<c03a2150>] (warn_slowpath_fmt+0x90/0xc0) >> [<c03a2150>] (warn_slowpath_fmt) from [<c01d8358>] (clk_core_enable+0x9c/0xbc) >> [<c01d8358>] (clk_core_enable) from [<c01d8698>] (clk_core_enable_lock+0x18/0x30) >> [<c01d8698>] (clk_core_enable_lock) from [<c0266560>] (ep93xx_adc_probe+0xe4/0x1a0) >> [<c0266560>] (ep93xx_adc_probe) from [<c02126e0>] (platform_probe+0x34/0x80) >> [<c02126e0>] (platform_probe) from [<c0210bf8>] (really_probe+0xe8/0x394) >> [<c0210bf8>] (really_probe) from [<c0211464>] (device_driver_attach+0x5c/0x64) >> [<c0211464>] (device_driver_attach) from [<c02114e8>] (__driver_attach+0x7c/0xec) >> [<c02114e8>] (__driver_attach) from [<c020f1b4>] (bus_for_each_dev+0x78/0xc4) >> [<c020f1b4>] (bus_for_each_dev) from [<c0211570>] (driver_attach+0x18/0x24) >> [<c0211570>] (driver_attach) from [<c020fab4>] (bus_add_driver+0x140/0x1cc) >> [<c020fab4>] (bus_add_driver) from [<c0211c44>] (driver_register+0x74/0x114) >> [<c0211c44>] (driver_register) from [<c02134f8>] (__platform_driver_register+0x18/0x24) >> [<c02134f8>] (__platform_driver_register) from [<c0470148>] (ep93xx_adc_driver_init+0x10/0x1c) >> [<c0470148>] (ep93xx_adc_driver_init) from [<c045ce88>] (do_one_initcall+0x7c/0x1a4) >> [<c045ce88>] (do_one_initcall) from [<c045d184>] (kernel_init_freeable+0x17c/0x1fc) >> [<c045d184>] (kernel_init_freeable) from [<c03a64d0>] (kernel_init+0x8/0xf8) >> [<c03a64d0>] (kernel_init) from [<c00082d8>] (ret_from_fork+0x14/0x3c) >> ... >> ep93xx-adc ep93xx-adc: Cannot enable clock >> ep93xx-adc: probe of ep93xx-adc failed with error -108 >> >> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com> > Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > From cover letter I'm assuming you want these to go through same route as > the common clock conversion? If not shout and I can pick this one up. We didn't manage to consolidate the delivery path for this series, could you please take this patch alone, as you proposed initially? >> --- >> drivers/iio/adc/ep93xx_adc.c | 6 +++--- >> 1 file changed, 3 insertions(+), 3 deletions(-) >> >> diff --git a/drivers/iio/adc/ep93xx_adc.c b/drivers/iio/adc/ep93xx_adc.c >> index c08ab3c6dfaf..5c85257b814c 100644 >> --- a/drivers/iio/adc/ep93xx_adc.c >> +++ b/drivers/iio/adc/ep93xx_adc.c >> @@ -207,7 +207,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) >> */ >> } >> >> - ret = clk_enable(priv->clk); >> + ret = clk_prepare_enable(priv->clk); >> if (ret) { >> dev_err(&pdev->dev, "Cannot enable clock\n"); >> return ret; >> @@ -215,7 +215,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) >> >> ret = iio_device_register(iiodev); >> if (ret) >> - clk_disable(priv->clk); >> + clk_disable_unprepare(priv->clk); >> >> return ret; >> } >> @@ -226,7 +226,7 @@ static int ep93xx_adc_remove(struct platform_device *pdev) >> struct ep93xx_adc_priv *priv = iio_priv(iiodev); >> >> iio_device_unregister(iiodev); >> - clk_disable(priv->clk); >> + clk_disable_unprepare(priv->clk); >> >> return 0; >> } >
On Mon, 2 Aug 2021 09:30:23 +0200 Alexander Sverdlin <alexander.sverdlin@gmail.com> wrote: > Hello Jonathan! > > On 14/06/2021 12:50, Jonathan Cameron wrote: > > On Mon, 14 Jun 2021 01:30:35 +0200 > > Alexander Sverdlin <alexander.sverdlin@gmail.com> wrote: > > > >> Use clk_prepare_enable()/clk_disable_unprepare() in preparation for switch > >> to Common Clock Framework, otherwise the following is visible: > >> > >> WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:1011 clk_core_enable+0x9c/0xbc > >> Enabling unprepared ep93xx-adc > >> CPU: 0 PID: 1 Comm: swapper Not tainted 5.13.0-rc5-... #1 > >> Hardware name: Cirrus Logic EDB9302 Evaluation Board > >> [<c000d5b0>] (unwind_backtrace) from [<c000c590>] (show_stack+0x10/0x18) > >> [<c000c590>] (show_stack) from [<c03a5f38>] (dump_stack+0x20/0x2c) > >> [<c03a5f38>] (dump_stack) from [<c03a2098>] (__warn+0x98/0xc0) > >> [<c03a2098>] (__warn) from [<c03a2150>] (warn_slowpath_fmt+0x90/0xc0) > >> [<c03a2150>] (warn_slowpath_fmt) from [<c01d8358>] (clk_core_enable+0x9c/0xbc) > >> [<c01d8358>] (clk_core_enable) from [<c01d8698>] (clk_core_enable_lock+0x18/0x30) > >> [<c01d8698>] (clk_core_enable_lock) from [<c0266560>] (ep93xx_adc_probe+0xe4/0x1a0) > >> [<c0266560>] (ep93xx_adc_probe) from [<c02126e0>] (platform_probe+0x34/0x80) > >> [<c02126e0>] (platform_probe) from [<c0210bf8>] (really_probe+0xe8/0x394) > >> [<c0210bf8>] (really_probe) from [<c0211464>] (device_driver_attach+0x5c/0x64) > >> [<c0211464>] (device_driver_attach) from [<c02114e8>] (__driver_attach+0x7c/0xec) > >> [<c02114e8>] (__driver_attach) from [<c020f1b4>] (bus_for_each_dev+0x78/0xc4) > >> [<c020f1b4>] (bus_for_each_dev) from [<c0211570>] (driver_attach+0x18/0x24) > >> [<c0211570>] (driver_attach) from [<c020fab4>] (bus_add_driver+0x140/0x1cc) > >> [<c020fab4>] (bus_add_driver) from [<c0211c44>] (driver_register+0x74/0x114) > >> [<c0211c44>] (driver_register) from [<c02134f8>] (__platform_driver_register+0x18/0x24) > >> [<c02134f8>] (__platform_driver_register) from [<c0470148>] (ep93xx_adc_driver_init+0x10/0x1c) > >> [<c0470148>] (ep93xx_adc_driver_init) from [<c045ce88>] (do_one_initcall+0x7c/0x1a4) > >> [<c045ce88>] (do_one_initcall) from [<c045d184>] (kernel_init_freeable+0x17c/0x1fc) > >> [<c045d184>] (kernel_init_freeable) from [<c03a64d0>] (kernel_init+0x8/0xf8) > >> [<c03a64d0>] (kernel_init) from [<c00082d8>] (ret_from_fork+0x14/0x3c) > >> ... > >> ep93xx-adc ep93xx-adc: Cannot enable clock > >> ep93xx-adc: probe of ep93xx-adc failed with error -108 > >> > >> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com> > > Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > > > > From cover letter I'm assuming you want these to go through same route as > > the common clock conversion? If not shout and I can pick this one up. > > We didn't manage to consolidate the delivery path for this series, could > you please take this patch alone, as you proposed initially? Sure. Applied to the togreg branch of iio.git and pushed out as testing for 0-day to see if it can find anything we missed. Thanks, Jonathan > > >> --- > >> drivers/iio/adc/ep93xx_adc.c | 6 +++--- > >> 1 file changed, 3 insertions(+), 3 deletions(-) > >> > >> diff --git a/drivers/iio/adc/ep93xx_adc.c b/drivers/iio/adc/ep93xx_adc.c > >> index c08ab3c6dfaf..5c85257b814c 100644 > >> --- a/drivers/iio/adc/ep93xx_adc.c > >> +++ b/drivers/iio/adc/ep93xx_adc.c > >> @@ -207,7 +207,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) > >> */ > >> } > >> > >> - ret = clk_enable(priv->clk); > >> + ret = clk_prepare_enable(priv->clk); > >> if (ret) { > >> dev_err(&pdev->dev, "Cannot enable clock\n"); > >> return ret; > >> @@ -215,7 +215,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) > >> > >> ret = iio_device_register(iiodev); > >> if (ret) > >> - clk_disable(priv->clk); > >> + clk_disable_unprepare(priv->clk); > >> > >> return ret; > >> } > >> @@ -226,7 +226,7 @@ static int ep93xx_adc_remove(struct platform_device *pdev) > >> struct ep93xx_adc_priv *priv = iio_priv(iiodev); > >> > >> iio_device_unregister(iiodev); > >> - clk_disable(priv->clk); > >> + clk_disable_unprepare(priv->clk); > >> > >> return 0; > >> } > >
diff --git a/drivers/iio/adc/ep93xx_adc.c b/drivers/iio/adc/ep93xx_adc.c index c08ab3c6dfaf..5c85257b814c 100644 --- a/drivers/iio/adc/ep93xx_adc.c +++ b/drivers/iio/adc/ep93xx_adc.c @@ -207,7 +207,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) */ } - ret = clk_enable(priv->clk); + ret = clk_prepare_enable(priv->clk); if (ret) { dev_err(&pdev->dev, "Cannot enable clock\n"); return ret; @@ -215,7 +215,7 @@ static int ep93xx_adc_probe(struct platform_device *pdev) ret = iio_device_register(iiodev); if (ret) - clk_disable(priv->clk); + clk_disable_unprepare(priv->clk); return ret; } @@ -226,7 +226,7 @@ static int ep93xx_adc_remove(struct platform_device *pdev) struct ep93xx_adc_priv *priv = iio_priv(iiodev); iio_device_unregister(iiodev); - clk_disable(priv->clk); + clk_disable_unprepare(priv->clk); return 0; }
Use clk_prepare_enable()/clk_disable_unprepare() in preparation for switch to Common Clock Framework, otherwise the following is visible: WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:1011 clk_core_enable+0x9c/0xbc Enabling unprepared ep93xx-adc CPU: 0 PID: 1 Comm: swapper Not tainted 5.13.0-rc5-... #1 Hardware name: Cirrus Logic EDB9302 Evaluation Board [<c000d5b0>] (unwind_backtrace) from [<c000c590>] (show_stack+0x10/0x18) [<c000c590>] (show_stack) from [<c03a5f38>] (dump_stack+0x20/0x2c) [<c03a5f38>] (dump_stack) from [<c03a2098>] (__warn+0x98/0xc0) [<c03a2098>] (__warn) from [<c03a2150>] (warn_slowpath_fmt+0x90/0xc0) [<c03a2150>] (warn_slowpath_fmt) from [<c01d8358>] (clk_core_enable+0x9c/0xbc) [<c01d8358>] (clk_core_enable) from [<c01d8698>] (clk_core_enable_lock+0x18/0x30) [<c01d8698>] (clk_core_enable_lock) from [<c0266560>] (ep93xx_adc_probe+0xe4/0x1a0) [<c0266560>] (ep93xx_adc_probe) from [<c02126e0>] (platform_probe+0x34/0x80) [<c02126e0>] (platform_probe) from [<c0210bf8>] (really_probe+0xe8/0x394) [<c0210bf8>] (really_probe) from [<c0211464>] (device_driver_attach+0x5c/0x64) [<c0211464>] (device_driver_attach) from [<c02114e8>] (__driver_attach+0x7c/0xec) [<c02114e8>] (__driver_attach) from [<c020f1b4>] (bus_for_each_dev+0x78/0xc4) [<c020f1b4>] (bus_for_each_dev) from [<c0211570>] (driver_attach+0x18/0x24) [<c0211570>] (driver_attach) from [<c020fab4>] (bus_add_driver+0x140/0x1cc) [<c020fab4>] (bus_add_driver) from [<c0211c44>] (driver_register+0x74/0x114) [<c0211c44>] (driver_register) from [<c02134f8>] (__platform_driver_register+0x18/0x24) [<c02134f8>] (__platform_driver_register) from [<c0470148>] (ep93xx_adc_driver_init+0x10/0x1c) [<c0470148>] (ep93xx_adc_driver_init) from [<c045ce88>] (do_one_initcall+0x7c/0x1a4) [<c045ce88>] (do_one_initcall) from [<c045d184>] (kernel_init_freeable+0x17c/0x1fc) [<c045d184>] (kernel_init_freeable) from [<c03a64d0>] (kernel_init+0x8/0xf8) [<c03a64d0>] (kernel_init) from [<c00082d8>] (ret_from_fork+0x14/0x3c) ... ep93xx-adc ep93xx-adc: Cannot enable clock ep93xx-adc: probe of ep93xx-adc failed with error -108 Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com> --- drivers/iio/adc/ep93xx_adc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)