* [PATCH 0/4] thermal: rcar: Add missing clock handling
@ 2014-01-07 18:57 Geert Uytterhoeven
2014-01-07 18:57 ` [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree Geert Uytterhoeven
` (4 more replies)
0 siblings, 5 replies; 23+ messages in thread
From: Geert Uytterhoeven @ 2014-01-07 18:57 UTC (permalink / raw)
To: linux-arm-kernel
Hi all,
This patch series fixes a problem when the thermal-rcar device is
instantiated from the device tree on the r8a7791-based Koelsch development
board. The driver fails during initialization with:
rcar_thermal e61f0000.thermal: thermal sensor was broken
This does not happen when using legacy platform devices.
This series was tested using Koelsch reference (DT) and non-reference
(legacy) kernel configurations. It was not tested on r8a7790/Lager
(which is very similar).
[1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree
[2/4] ARM: shmobile: r8a7790: Add thermal clock in device tree
[3/4] thermal: rcar: Add missing clock handling
[4/4] thermal: rcar: Spelling s/delaye/delay/g
Thanks for your comments!
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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
^ permalink raw reply [flat|nested] 23+ messages in thread* [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree 2014-01-07 18:57 [PATCH 0/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven @ 2014-01-07 18:57 ` Geert Uytterhoeven 2014-01-08 0:20 ` Laurent Pinchart 2014-01-07 18:57 ` [PATCH 2/4] ARM: shmobile: r8a7790: " Geert Uytterhoeven ` (3 subsequent siblings) 4 siblings, 1 reply; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-07 18:57 UTC (permalink / raw) To: linux-arm-kernel From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> Add the missing thermal MSTP clock to the thermal device node. Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> --- arch/arm/boot/dts/r8a7791.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi index d8dbf7e7b6a9..3233041d8a44 100644 --- a/arch/arm/boot/dts/r8a7791.dtsi +++ b/arch/arm/boot/dts/r8a7791.dtsi @@ -151,6 +151,7 @@ reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>; interrupt-parent = <&gic>; interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&mstp5_clks R8A7791_CLK_THERMAL>; }; timer { -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree 2014-01-07 18:57 ` [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree Geert Uytterhoeven @ 2014-01-08 0:20 ` Laurent Pinchart 2014-01-08 0:52 ` Simon Horman 0 siblings, 1 reply; 23+ messages in thread From: Laurent Pinchart @ 2014-01-08 0:20 UTC (permalink / raw) To: linux-arm-kernel Hi Geert, Thank you for the patch. On Tuesday 07 January 2014 19:57:13 Geert Uytterhoeven wrote: > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > Add the missing thermal MSTP clock to the thermal device node. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > arch/arm/boot/dts/r8a7791.dtsi | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi > index d8dbf7e7b6a9..3233041d8a44 100644 > --- a/arch/arm/boot/dts/r8a7791.dtsi > +++ b/arch/arm/boot/dts/r8a7791.dtsi > @@ -151,6 +151,7 @@ > reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>; > interrupt-parent = <&gic>; > interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&mstp5_clks R8A7791_CLK_THERMAL>; > }; > > timer { -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree 2014-01-08 0:20 ` Laurent Pinchart @ 2014-01-08 0:52 ` Simon Horman 0 siblings, 0 replies; 23+ messages in thread From: Simon Horman @ 2014-01-08 0:52 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jan 08, 2014 at 01:20:09AM +0100, Laurent Pinchart wrote: > Hi Geert, > > Thank you for the patch. > > On Tuesday 07 January 2014 19:57:13 Geert Uytterhoeven wrote: > > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > > > Add the missing thermal MSTP clock to the thermal device node. > > > > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Thanks, I will queue this up. ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 2/4] ARM: shmobile: r8a7790: Add thermal clock in device tree 2014-01-07 18:57 [PATCH 0/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven 2014-01-07 18:57 ` [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree Geert Uytterhoeven @ 2014-01-07 18:57 ` Geert Uytterhoeven 2014-01-08 0:20 ` Laurent Pinchart 2014-01-07 18:57 ` [PATCH 3/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven ` (2 subsequent siblings) 4 siblings, 1 reply; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-07 18:57 UTC (permalink / raw) To: linux-arm-kernel From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> Add the missing thermal MSTP clock to the thermal device node. Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> --- arch/arm/boot/dts/r8a7790.dtsi | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi index f48487c2a970..b53834e6a55f 100644 --- a/arch/arm/boot/dts/r8a7790.dtsi +++ b/arch/arm/boot/dts/r8a7790.dtsi @@ -168,6 +168,7 @@ reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>; interrupt-parent = <&gic>; interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&mstp5_clks R8A7790_CLK_THERMAL>; }; timer { -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 2/4] ARM: shmobile: r8a7790: Add thermal clock in device tree 2014-01-07 18:57 ` [PATCH 2/4] ARM: shmobile: r8a7790: " Geert Uytterhoeven @ 2014-01-08 0:20 ` Laurent Pinchart 2014-01-08 0:52 ` Simon Horman 0 siblings, 1 reply; 23+ messages in thread From: Laurent Pinchart @ 2014-01-08 0:20 UTC (permalink / raw) To: linux-arm-kernel Hi Geert, Thank you for the patch. On Tuesday 07 January 2014 19:57:14 Geert Uytterhoeven wrote: > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > Add the missing thermal MSTP clock to the thermal device node. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > arch/arm/boot/dts/r8a7790.dtsi | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/arm/boot/dts/r8a7790.dtsi b/arch/arm/boot/dts/r8a7790.dtsi > index f48487c2a970..b53834e6a55f 100644 > --- a/arch/arm/boot/dts/r8a7790.dtsi > +++ b/arch/arm/boot/dts/r8a7790.dtsi > @@ -168,6 +168,7 @@ > reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>; > interrupt-parent = <&gic>; > interrupts = <0 69 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&mstp5_clks R8A7790_CLK_THERMAL>; > }; > > timer { -- Regards, Laurent Pinchart ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 2/4] ARM: shmobile: r8a7790: Add thermal clock in device tree 2014-01-08 0:20 ` Laurent Pinchart @ 2014-01-08 0:52 ` Simon Horman 0 siblings, 0 replies; 23+ messages in thread From: Simon Horman @ 2014-01-08 0:52 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jan 08, 2014 at 01:20:08AM +0100, Laurent Pinchart wrote: > Hi Geert, > > Thank you for the patch. > > On Tuesday 07 January 2014 19:57:14 Geert Uytterhoeven wrote: > > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > > > Add the missing thermal MSTP clock to the thermal device node. > > > > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Thanks, I will queue this up. ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-07 18:57 [PATCH 0/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven 2014-01-07 18:57 ` [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree Geert Uytterhoeven 2014-01-07 18:57 ` [PATCH 2/4] ARM: shmobile: r8a7790: " Geert Uytterhoeven @ 2014-01-07 18:57 ` Geert Uytterhoeven 2014-01-07 20:04 ` Sergei Shtylyov ` (3 more replies) 2014-01-07 18:57 ` [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g Geert Uytterhoeven 2014-01-07 21:52 ` [PATCH 0/4] thermal: rcar: Add missing clock handling Valentine 4 siblings, 4 replies; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-07 18:57 UTC (permalink / raw) To: linux-arm-kernel From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> When using DT to instantiate the rcar-thermal device, it prints the following error: rcar_thermal e61f0000.thermal: thermal sensor was broken Explicitly request and enable the thermal clock to fix this. Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> --- drivers/thermal/rcar_thermal.c | 40 +++++++++++++++++++++++++++++++++------- 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c index 88f92e1a9944..a5629500723a 100644 --- a/drivers/thermal/rcar_thermal.c +++ b/drivers/thermal/rcar_thermal.c @@ -17,6 +17,7 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <linux/clk.h> #include <linux/delay.h> #include <linux/err.h> #include <linux/irq.h> @@ -53,6 +54,7 @@ struct rcar_thermal_common { struct device *dev; struct list_head head; spinlock_t lock; + struct clk *clk; }; struct rcar_thermal_priv { @@ -378,23 +380,38 @@ static int rcar_thermal_probe(struct platform_device *pdev) spin_lock_init(&common->lock); common->dev = dev; + common->clk = devm_clk_get(&pdev->dev, NULL); + if (IS_ERR(common->clk)) { + dev_err(&pdev->dev, "cannot get clock\n"); + return PTR_ERR(common->clk); + } + + ret = clk_prepare(common->clk); + if (ret < 0) { + dev_err(&pdev->dev, "unable to prepare clock\n"); + return ret; + } + + clk_enable(common->clk); + pm_runtime_enable(dev); pm_runtime_get_sync(dev); irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (irq) { - int ret; + int ret2; /* * platform has IRQ support. * Then, drier use common register */ - ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0, - dev_name(dev), common); - if (ret) { + ret2 = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0, + dev_name(dev), common); + if (ret2) { dev_err(dev, "irq request failed\n "); - return ret; + ret = ret2; + goto error_unpm; } /* @@ -402,8 +419,10 @@ static int rcar_thermal_probe(struct platform_device *pdev) */ res = platform_get_resource(pdev, IORESOURCE_MEM, mres++); common->base = devm_ioremap_resource(dev, res); - if (IS_ERR(common->base)) - return PTR_ERR(common->base); + if (IS_ERR(common->base)) { + ret = PTR_ERR(common->base); + goto error_unpm; + } /* enable temperature comparation */ rcar_thermal_common_write(common, ENR, 0x00030303); @@ -465,9 +484,13 @@ error_unregister: rcar_thermal_irq_disable(priv); } +error_unpm: pm_runtime_put_sync(dev); pm_runtime_disable(dev); + clk_disable(common->clk); + clk_unprepare(common->clk); + return ret; } @@ -486,6 +509,9 @@ static int rcar_thermal_remove(struct platform_device *pdev) pm_runtime_put_sync(dev); pm_runtime_disable(dev); + clk_disable(common->clk); + clk_unprepare(common->clk); + return 0; } -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-07 18:57 ` [PATCH 3/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven @ 2014-01-07 20:04 ` Sergei Shtylyov 2014-01-07 20:57 ` Gerhard Sittig ` (2 subsequent siblings) 3 siblings, 0 replies; 23+ messages in thread From: Sergei Shtylyov @ 2014-01-07 20:04 UTC (permalink / raw) To: linux-arm-kernel Hello. On 07-01-2014 22:57, Geert Uytterhoeven wrote: > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > When using DT to instantiate the rcar-thermal device, it prints the > following error: > rcar_thermal e61f0000.thermal: thermal sensor was broken > Explicitly request and enable the thermal clock to fix this. > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > --- > drivers/thermal/rcar_thermal.c | 40 +++++++++++++++++++++++++++++++++------- > 1 file changed, 33 insertions(+), 7 deletions(-) > diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c > index 88f92e1a9944..a5629500723a 100644 > --- a/drivers/thermal/rcar_thermal.c > +++ b/drivers/thermal/rcar_thermal.c [...] > @@ -378,23 +380,38 @@ static int rcar_thermal_probe(struct platform_device *pdev) [...] > + ret = clk_prepare(common->clk); > + if (ret < 0) { > + dev_err(&pdev->dev, "unable to prepare clock\n"); > + return ret; > + } > + > + clk_enable(common->clk); > + Why not just clk_prepare_enable()? [...] > @@ -465,9 +484,13 @@ error_unregister: > rcar_thermal_irq_disable(priv); > } > > +error_unpm: > pm_runtime_put_sync(dev); > pm_runtime_disable(dev); > > + clk_disable(common->clk); > + clk_unprepare(common->clk); > + Why not just clk_disable_unprepare()? > return ret; > } > > @@ -486,6 +509,9 @@ static int rcar_thermal_remove(struct platform_device *pdev) > pm_runtime_put_sync(dev); > pm_runtime_disable(dev); > > + clk_disable(common->clk); > + clk_unprepare(common->clk); > + Likewise. WBR, Sergei ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-07 18:57 ` [PATCH 3/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven 2014-01-07 20:04 ` Sergei Shtylyov @ 2014-01-07 20:57 ` Gerhard Sittig 2014-01-08 12:20 ` Ben Dooks 2014-01-08 1:08 ` Kuninori Morimoto 2014-01-08 12:23 ` Ben Dooks 3 siblings, 1 reply; 23+ messages in thread From: Gerhard Sittig @ 2014-01-07 20:57 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jan 07, 2014 at 19:57 +0100, Geert Uytterhoeven wrote: > > @@ -378,23 +380,38 @@ static int rcar_thermal_probe(struct platform_device *pdev) > spin_lock_init(&common->lock); > common->dev = dev; > > + common->clk = devm_clk_get(&pdev->dev, NULL); > + if (IS_ERR(common->clk)) { > + dev_err(&pdev->dev, "cannot get clock\n"); > + return PTR_ERR(common->clk); > + } > + > + ret = clk_prepare(common->clk); > + if (ret < 0) { > + dev_err(&pdev->dev, "unable to prepare clock\n"); > + return ret; > + } > + > + clk_enable(common->clk); > + > pm_runtime_enable(dev); > pm_runtime_get_sync(dev); clk_enable() can fail, too, so you should check its return value virtually yours Gerhard Sittig -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr. 5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-07 20:57 ` Gerhard Sittig @ 2014-01-08 12:20 ` Ben Dooks 0 siblings, 0 replies; 23+ messages in thread From: Ben Dooks @ 2014-01-08 12:20 UTC (permalink / raw) To: linux-arm-kernel On 07/01/14 20:57, Gerhard Sittig wrote: > On Tue, Jan 07, 2014 at 19:57 +0100, Geert Uytterhoeven wrote: >> >> @@ -378,23 +380,38 @@ static int rcar_thermal_probe(struct platform_device *pdev) >> spin_lock_init(&common->lock); >> common->dev = dev; >> >> + common->clk = devm_clk_get(&pdev->dev, NULL); >> + if (IS_ERR(common->clk)) { >> + dev_err(&pdev->dev, "cannot get clock\n"); >> + return PTR_ERR(common->clk); >> + } >> + >> + ret = clk_prepare(common->clk); >> + if (ret < 0) { >> + dev_err(&pdev->dev, "unable to prepare clock\n"); >> + return ret; >> + } >> + >> + clk_enable(common->clk); >> + >> pm_runtime_enable(dev); >> pm_runtime_get_sync(dev); > > clk_enable() can fail, too, so you should check its return value Also, if you enable the pm-runtime then the device clock is actually handled by the common pm-clock framework. -- Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-07 18:57 ` [PATCH 3/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven 2014-01-07 20:04 ` Sergei Shtylyov 2014-01-07 20:57 ` Gerhard Sittig @ 2014-01-08 1:08 ` Kuninori Morimoto 2014-01-08 10:23 ` Geert Uytterhoeven 2014-01-08 12:23 ` Ben Dooks 3 siblings, 1 reply; 23+ messages in thread From: Kuninori Morimoto @ 2014-01-08 1:08 UTC (permalink / raw) To: linux-arm-kernel Hi Geert > + common->clk = devm_clk_get(&pdev->dev, NULL); > + if (IS_ERR(common->clk)) { > + dev_err(&pdev->dev, "cannot get clock\n"); > + return PTR_ERR(common->clk); > + } > + > + ret = clk_prepare(common->clk); > + if (ret < 0) { > + dev_err(&pdev->dev, "unable to prepare clock\n"); > + return ret; > + } > + > + clk_enable(common->clk); > + > pm_runtime_enable(dev); > pm_runtime_get_sync(dev); You can use "dev" instead of "&pdev->dev" :) And this patch seems strange for me. pm_runtime_xxx() is doing same things. If it didn't work, wrong place is not driver, clock side ? ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-08 1:08 ` Kuninori Morimoto @ 2014-01-08 10:23 ` Geert Uytterhoeven 2014-01-13 8:57 ` Geert Uytterhoeven 0 siblings, 1 reply; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-08 10:23 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jan 8, 2014 at 2:08 AM, Kuninori Morimoto <kuninori.morimoto.gx@gmail.com> wrote: >> + common->clk = devm_clk_get(&pdev->dev, NULL); >> + if (IS_ERR(common->clk)) { >> + dev_err(&pdev->dev, "cannot get clock\n"); >> + return PTR_ERR(common->clk); >> + } >> + >> + ret = clk_prepare(common->clk); >> + if (ret < 0) { >> + dev_err(&pdev->dev, "unable to prepare clock\n"); >> + return ret; >> + } >> + >> + clk_enable(common->clk); >> + >> pm_runtime_enable(dev); >> pm_runtime_get_sync(dev); > > And this patch seems strange for me. > pm_runtime_xxx() is doing same things. > If it didn't work, wrong place is not driver, clock side ? That's an interesting observation... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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 ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-08 10:23 ` Geert Uytterhoeven @ 2014-01-13 8:57 ` Geert Uytterhoeven 2014-01-14 0:20 ` Kuninori Morimoto 2014-01-14 1:27 ` Simon Horman 0 siblings, 2 replies; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-13 8:57 UTC (permalink / raw) To: linux-arm-kernel Hi Morimoto-san, On Wed, Jan 8, 2014 at 11:23 AM, Geert Uytterhoeven <geert@linux-m68k.org> wrote: > On Wed, Jan 8, 2014 at 2:08 AM, Kuninori Morimoto > <kuninori.morimoto.gx@gmail.com> wrote: >>> + common->clk = devm_clk_get(&pdev->dev, NULL); >>> + if (IS_ERR(common->clk)) { >>> + dev_err(&pdev->dev, "cannot get clock\n"); >>> + return PTR_ERR(common->clk); >>> + } >>> + >>> + ret = clk_prepare(common->clk); >>> + if (ret < 0) { >>> + dev_err(&pdev->dev, "unable to prepare clock\n"); >>> + return ret; >>> + } >>> + >>> + clk_enable(common->clk); >>> + >>> pm_runtime_enable(dev); >>> pm_runtime_get_sync(dev); >> >> And this patch seems strange for me. >> pm_runtime_xxx() is doing same things. >> If it didn't work, wrong place is not driver, clock side ? > > That's an interesting observation... You were right. After applying both of "ARM: shmobile: compile drivers/sh for CONFIG_ARCH_SHMOBILE_MULTI" and "power: clock_ops.c: fixup clk prepare/unprepare count" from Ben Dooks the issue went away. So my patch can be dropped. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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 ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-13 8:57 ` Geert Uytterhoeven @ 2014-01-14 0:20 ` Kuninori Morimoto 2014-01-14 1:27 ` Simon Horman 1 sibling, 0 replies; 23+ messages in thread From: Kuninori Morimoto @ 2014-01-14 0:20 UTC (permalink / raw) To: linux-arm-kernel Hi Geert > >> And this patch seems strange for me. > >> pm_runtime_xxx() is doing same things. > >> If it didn't work, wrong place is not driver, clock side ? (snipO > You were right. After applying both of "ARM: shmobile: compile drivers/sh > for CONFIG_ARCH_SHMOBILE_MULTI" and "power: clock_ops.c: fixup clk > prepare/unprepare count" from Ben Dooks the issue went away. Nice ! Thank you for your help :) Best regards --- Kuninori Morimoto ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-13 8:57 ` Geert Uytterhoeven 2014-01-14 0:20 ` Kuninori Morimoto @ 2014-01-14 1:27 ` Simon Horman 1 sibling, 0 replies; 23+ messages in thread From: Simon Horman @ 2014-01-14 1:27 UTC (permalink / raw) To: linux-arm-kernel On Mon, Jan 13, 2014 at 09:57:08AM +0100, Geert Uytterhoeven wrote: > Hi Morimoto-san, > > On Wed, Jan 8, 2014 at 11:23 AM, Geert Uytterhoeven > <geert@linux-m68k.org> wrote: > > On Wed, Jan 8, 2014 at 2:08 AM, Kuninori Morimoto > > <kuninori.morimoto.gx@gmail.com> wrote: > >>> + common->clk = devm_clk_get(&pdev->dev, NULL); > >>> + if (IS_ERR(common->clk)) { > >>> + dev_err(&pdev->dev, "cannot get clock\n"); > >>> + return PTR_ERR(common->clk); > >>> + } > >>> + > >>> + ret = clk_prepare(common->clk); > >>> + if (ret < 0) { > >>> + dev_err(&pdev->dev, "unable to prepare clock\n"); > >>> + return ret; > >>> + } > >>> + > >>> + clk_enable(common->clk); > >>> + > >>> pm_runtime_enable(dev); > >>> pm_runtime_get_sync(dev); > >> > >> And this patch seems strange for me. > >> pm_runtime_xxx() is doing same things. > >> If it didn't work, wrong place is not driver, clock side ? > > > > That's an interesting observation... > > You were right. After applying both of "ARM: shmobile: compile drivers/sh > for CONFIG_ARCH_SHMOBILE_MULTI" and "power: clock_ops.c: fixup clk > prepare/unprepare count" from Ben Dooks the issue went away. There seems to be some lively discussion around Ben's patch. > So my patch can be dropped. I have marked this patch as Rejected accordingly. ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-07 18:57 ` [PATCH 3/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven ` (2 preceding siblings ...) 2014-01-08 1:08 ` Kuninori Morimoto @ 2014-01-08 12:23 ` Ben Dooks 2014-01-08 12:58 ` Geert Uytterhoeven 3 siblings, 1 reply; 23+ messages in thread From: Ben Dooks @ 2014-01-08 12:23 UTC (permalink / raw) To: linux-arm-kernel On 07/01/14 18:57, Geert Uytterhoeven wrote: > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > When using DT to instantiate the rcar-thermal device, it prints the > following error: > > rcar_thermal e61f0000.thermal: thermal sensor was broken > > Explicitly request and enable the thermal clock to fix this. > > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > --- > drivers/thermal/rcar_thermal.c | 40 +++++++++++++++++++++++++++++++++------- > 1 file changed, 33 insertions(+), 7 deletions(-) > > diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c > index 88f92e1a9944..a5629500723a 100644 > --- a/drivers/thermal/rcar_thermal.c > +++ b/drivers/thermal/rcar_thermal.c > @@ -17,6 +17,7 @@ > * with this program; if not, write to the Free Software Foundation, Inc., > * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. > */ > +#include <linux/clk.h> > #include <linux/delay.h> > #include <linux/err.h> > #include <linux/irq.h> > @@ -53,6 +54,7 @@ struct rcar_thermal_common { > struct device *dev; > struct list_head head; > spinlock_t lock; > + struct clk *clk; > }; > > struct rcar_thermal_priv { > @@ -378,23 +380,38 @@ static int rcar_thermal_probe(struct platform_device *pdev) > spin_lock_init(&common->lock); > common->dev = dev; > > + common->clk = devm_clk_get(&pdev->dev, NULL); > + if (IS_ERR(common->clk)) { > + dev_err(&pdev->dev, "cannot get clock\n"); > + return PTR_ERR(common->clk); > + } > + > + ret = clk_prepare(common->clk); > + if (ret < 0) { > + dev_err(&pdev->dev, "unable to prepare clock\n"); > + return ret; > + } > + > + clk_enable(common->clk); > + > pm_runtime_enable(dev); > pm_runtime_get_sync(dev); > > irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); > if (irq) { > - int ret; > + int ret2; > > /* > * platform has IRQ support. > * Then, drier use common register > */ > > - ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0, > - dev_name(dev), common); > - if (ret) { > + ret2 = devm_request_irq(dev, irq->start, rcar_thermal_irq, 0, > + dev_name(dev), common); > + if (ret2) { > dev_err(dev, "irq request failed\n "); > - return ret; > + ret = ret2; > + goto error_unpm; > } I'd suggest not renaming ret2 and just use the original ret. -- Ben Dooks http://www.codethink.co.uk/ Senior Engineer Codethink - Providing Genius ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 3/4] thermal: rcar: Add missing clock handling 2014-01-08 12:23 ` Ben Dooks @ 2014-01-08 12:58 ` Geert Uytterhoeven 0 siblings, 0 replies; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-08 12:58 UTC (permalink / raw) To: linux-arm-kernel On Wed, Jan 8, 2014 at 1:23 PM, Ben Dooks <ben.dooks@codethink.co.uk> wrote: >> @@ -378,23 +380,38 @@ static int rcar_thermal_probe(struct platform_device >> *pdev) >> spin_lock_init(&common->lock); >> common->dev = dev; >> >> + common->clk = devm_clk_get(&pdev->dev, NULL); >> + if (IS_ERR(common->clk)) { >> + dev_err(&pdev->dev, "cannot get clock\n"); >> + return PTR_ERR(common->clk); >> + } >> + >> + ret = clk_prepare(common->clk); >> + if (ret < 0) { >> + dev_err(&pdev->dev, "unable to prepare clock\n"); >> + return ret; >> + } >> + >> + clk_enable(common->clk); >> + >> pm_runtime_enable(dev); >> pm_runtime_get_sync(dev); >> >> irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); >> if (irq) { >> - int ret; >> + int ret2; >> >> /* >> * platform has IRQ support. >> * Then, drier use common register >> */ >> >> - ret = devm_request_irq(dev, irq->start, rcar_thermal_irq, >> 0, >> - dev_name(dev), common); >> - if (ret) { >> + ret2 = devm_request_irq(dev, irq->start, rcar_thermal_irq, >> 0, >> + dev_name(dev), common); >> + if (ret2) { >> dev_err(dev, "irq request failed\n "); >> - return ret; >> + ret = ret2; >> + goto error_unpm; >> } > > I'd suggest not renaming ret2 and just use the original ret. I did that because the for loop after that block depends on ret still being -ENODEV. Upon closer look, I did break that myself by assigning it the return value of clk_prepare(). So I'll use the original ret, and reset it to -ENODEV before the for loop (unless we manage to fix it in pm_runtime_*()). Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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 ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g 2014-01-07 18:57 [PATCH 0/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven ` (2 preceding siblings ...) 2014-01-07 18:57 ` [PATCH 3/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven @ 2014-01-07 18:57 ` Geert Uytterhoeven 2014-01-08 0:12 ` Simon Horman 2014-01-17 8:23 ` Zhang Rui 2014-01-07 21:52 ` [PATCH 0/4] thermal: rcar: Add missing clock handling Valentine 4 siblings, 2 replies; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-07 18:57 UTC (permalink / raw) To: linux-arm-kernel From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> Cc: Jiri Kosina <trivial@kernel.org> --- drivers/thermal/rcar_thermal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c index a5629500723a..32d591087307 100644 --- a/drivers/thermal/rcar_thermal.c +++ b/drivers/thermal/rcar_thermal.c @@ -427,7 +427,7 @@ static int rcar_thermal_probe(struct platform_device *pdev) /* enable temperature comparation */ rcar_thermal_common_write(common, ENR, 0x00030303); - idle = 0; /* polling delaye is not needed */ + idle = 0; /* polling delay is not needed */ } for (i = 0;; i++) { -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 23+ messages in thread
* [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g 2014-01-07 18:57 ` [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g Geert Uytterhoeven @ 2014-01-08 0:12 ` Simon Horman 2014-01-17 8:23 ` Zhang Rui 1 sibling, 0 replies; 23+ messages in thread From: Simon Horman @ 2014-01-08 0:12 UTC (permalink / raw) To: linux-arm-kernel On Tue, Jan 07, 2014 at 07:57:16PM +0100, Geert Uytterhoeven wrote: > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > Cc: Jiri Kosina <trivial@kernel.org> Acked-by: Simon Horman <horms+renesas@verge.net.au> > --- > drivers/thermal/rcar_thermal.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c > index a5629500723a..32d591087307 100644 > --- a/drivers/thermal/rcar_thermal.c > +++ b/drivers/thermal/rcar_thermal.c > @@ -427,7 +427,7 @@ static int rcar_thermal_probe(struct platform_device *pdev) > /* enable temperature comparation */ > rcar_thermal_common_write(common, ENR, 0x00030303); > > - idle = 0; /* polling delaye is not needed */ > + idle = 0; /* polling delay is not needed */ > } > > for (i = 0;; i++) { > -- > 1.7.9.5 > ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g 2014-01-07 18:57 ` [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g Geert Uytterhoeven 2014-01-08 0:12 ` Simon Horman @ 2014-01-17 8:23 ` Zhang Rui 1 sibling, 0 replies; 23+ messages in thread From: Zhang Rui @ 2014-01-17 8:23 UTC (permalink / raw) To: linux-arm-kernel On Tue, 2014-01-07 at 19:57 +0100, Geert Uytterhoeven wrote: > From: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > > Signed-off-by: Geert Uytterhoeven <geert+renesas@linux-m68k.org> > Cc: Jiri Kosina <trivial@kernel.org> applied. thanks, rui > --- > drivers/thermal/rcar_thermal.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/thermal/rcar_thermal.c b/drivers/thermal/rcar_thermal.c > index a5629500723a..32d591087307 100644 > --- a/drivers/thermal/rcar_thermal.c > +++ b/drivers/thermal/rcar_thermal.c > @@ -427,7 +427,7 @@ static int rcar_thermal_probe(struct platform_device *pdev) > /* enable temperature comparation */ > rcar_thermal_common_write(common, ENR, 0x00030303); > > - idle = 0; /* polling delaye is not needed */ > + idle = 0; /* polling delay is not needed */ > } > > for (i = 0;; i++) { ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 0/4] thermal: rcar: Add missing clock handling 2014-01-07 18:57 [PATCH 0/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven ` (3 preceding siblings ...) 2014-01-07 18:57 ` [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g Geert Uytterhoeven @ 2014-01-07 21:52 ` Valentine 2014-01-07 22:13 ` Geert Uytterhoeven 4 siblings, 1 reply; 23+ messages in thread From: Valentine @ 2014-01-07 21:52 UTC (permalink / raw) To: linux-arm-kernel On 01/07/2014 10:57 PM, Geert Uytterhoeven wrote: > Hi all, Hi Geert, > > This patch series fixes a problem when the thermal-rcar device is > instantiated from the device tree on the r8a7791-based Koelsch development > board. The driver fails during initialization with: I think explicitly acquiring the clocks should not be needed. Could you please try the patches from the following series instead? http://marc.info/?l=linux-sh&m=138823255807611&w=2 Thanks, Val. > > rcar_thermal e61f0000.thermal: thermal sensor was broken > > This does not happen when using legacy platform devices. > > This series was tested using Koelsch reference (DT) and non-reference > (legacy) kernel configurations. It was not tested on r8a7790/Lager > (which is very similar). > > [1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree > [2/4] ARM: shmobile: r8a7790: Add thermal clock in device tree > [3/4] thermal: rcar: Add missing clock handling > [4/4] thermal: rcar: Spelling s/delaye/delay/g > > Thanks for your comments! > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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 > -- > To unsubscribe from this list: send the line "unsubscribe linux-sh" in > the body of a message to majordomo at vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > ^ permalink raw reply [flat|nested] 23+ messages in thread
* [PATCH 0/4] thermal: rcar: Add missing clock handling 2014-01-07 21:52 ` [PATCH 0/4] thermal: rcar: Add missing clock handling Valentine @ 2014-01-07 22:13 ` Geert Uytterhoeven 0 siblings, 0 replies; 23+ messages in thread From: Geert Uytterhoeven @ 2014-01-07 22:13 UTC (permalink / raw) To: linux-arm-kernel Hi Valentine, On Tue, Jan 7, 2014 at 10:52 PM, Valentine <valentine.barshak@cogentembedded.com> wrote: > On 01/07/2014 10:57 PM, Geert Uytterhoeven wrote: >> This patch series fixes a problem when the thermal-rcar device is >> instantiated from the device tree on the r8a7791-based Koelsch development >> board. The driver fails during initialization with: > > > I think explicitly acquiring the clocks should not be needed. > Could you please try the patches from the following series instead? > > http://marc.info/?l=linux-sh&m=138823255807611&w=2 I already had these applied, and the problem persists. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at 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 ^ permalink raw reply [flat|nested] 23+ messages in thread
end of thread, other threads:[~2014-01-17 8:23 UTC | newest] Thread overview: 23+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-07 18:57 [PATCH 0/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven 2014-01-07 18:57 ` [PATCH 1/4] ARM: shmobile: r8a7791: Add thermal clock in device tree Geert Uytterhoeven 2014-01-08 0:20 ` Laurent Pinchart 2014-01-08 0:52 ` Simon Horman 2014-01-07 18:57 ` [PATCH 2/4] ARM: shmobile: r8a7790: " Geert Uytterhoeven 2014-01-08 0:20 ` Laurent Pinchart 2014-01-08 0:52 ` Simon Horman 2014-01-07 18:57 ` [PATCH 3/4] thermal: rcar: Add missing clock handling Geert Uytterhoeven 2014-01-07 20:04 ` Sergei Shtylyov 2014-01-07 20:57 ` Gerhard Sittig 2014-01-08 12:20 ` Ben Dooks 2014-01-08 1:08 ` Kuninori Morimoto 2014-01-08 10:23 ` Geert Uytterhoeven 2014-01-13 8:57 ` Geert Uytterhoeven 2014-01-14 0:20 ` Kuninori Morimoto 2014-01-14 1:27 ` Simon Horman 2014-01-08 12:23 ` Ben Dooks 2014-01-08 12:58 ` Geert Uytterhoeven 2014-01-07 18:57 ` [PATCH -trivial 4/4] thermal: rcar: Spelling s/delaye/delay/g Geert Uytterhoeven 2014-01-08 0:12 ` Simon Horman 2014-01-17 8:23 ` Zhang Rui 2014-01-07 21:52 ` [PATCH 0/4] thermal: rcar: Add missing clock handling Valentine 2014-01-07 22:13 ` Geert Uytterhoeven
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).