* [PATCH v2 0/4] [POWERPC] MPC5200: update gpt binding, add restart support
@ 2007-10-18 18:44 Marian Balakowicz
2007-10-18 18:44 ` [PATCH v2 1/4] [POWERPC] Add mpc52xx_find_and_map_path(), refactor utility functions Marian Balakowicz
` (3 more replies)
0 siblings, 4 replies; 9+ messages in thread
From: Marian Balakowicz @ 2007-10-18 18:44 UTC (permalink / raw)
To: linuxppc-dev
Here's the second version of MPC5200 patches, please review. Thanks!
[POWERPC] Enable restart support for lite5200 board
[POWERPC] Add restart support for mpc52xx based platforms
[POWERPC] Update device tree binding for mpc5200 gpt
[POWERPC] Add mpc52xx_find_and_map_path(), refactor utility functions
Cheers,
m.
^ permalink raw reply [flat|nested] 9+ messages in thread* [PATCH v2 1/4] [POWERPC] Add mpc52xx_find_and_map_path(), refactor utility functions 2007-10-18 18:44 [PATCH v2 0/4] [POWERPC] MPC5200: update gpt binding, add restart support Marian Balakowicz @ 2007-10-18 18:44 ` Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 2/4] [POWERPC] Update device tree binding for mpc5200 gpt Marian Balakowicz ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: Marian Balakowicz @ 2007-10-18 18:44 UTC (permalink / raw) To: linuxppc-dev Add helper routine mpc52xx_find_and_map_path(). Extract common code to mpc52xx_map_node() and refactor mpc52xx_find_and_map(). Signed-off-by: Jan Wrobel <wrr@semihalf.com> Reviewed-by: Grant Likely <grant.likely@secretlab.ca> --- arch/powerpc/platforms/52xx/mpc52xx_common.c | 21 +++++++++++++++++---- include/asm-powerpc/mpc52xx.h | 1 + 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c index 3bc201e..74b4b41 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_common.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c @@ -19,14 +19,12 @@ #include <asm/mpc52xx.h> -void __iomem * -mpc52xx_find_and_map(const char *compatible) +static void __iomem * +mpc52xx_map_node(struct device_node *ofn) { - struct device_node *ofn; const u32 *regaddr_p; u64 regaddr64, size64; - ofn = of_find_compatible_node(NULL, NULL, compatible); if (!ofn) return NULL; @@ -42,8 +40,23 @@ mpc52xx_find_and_map(const char *compatible) return ioremap((u32)regaddr64, (u32)size64); } + +void __iomem * +mpc52xx_find_and_map(const char *compatible) +{ + return mpc52xx_map_node( + of_find_compatible_node(NULL, NULL, compatible)); +} + EXPORT_SYMBOL(mpc52xx_find_and_map); +void __iomem * +mpc52xx_find_and_map_path(const char *path) +{ + return mpc52xx_map_node(of_find_node_by_path(path)); +} + +EXPORT_SYMBOL(mpc52xx_find_and_map_path); /** * mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device diff --git a/include/asm-powerpc/mpc52xx.h b/include/asm-powerpc/mpc52xx.h index 24751df..9cf05f9 100644 --- a/include/asm-powerpc/mpc52xx.h +++ b/include/asm-powerpc/mpc52xx.h @@ -242,6 +242,7 @@ struct mpc52xx_cdm { #ifndef __ASSEMBLY__ extern void __iomem * mpc52xx_find_and_map(const char *); +extern void __iomem * mpc52xx_find_and_map_path(const char *path); extern unsigned int mpc52xx_find_ipb_freq(struct device_node *node); extern void mpc5200_setup_xlb_arbiter(void); extern void mpc52xx_declare_of_platform_devices(void); ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 2/4] [POWERPC] Update device tree binding for mpc5200 gpt 2007-10-18 18:44 [PATCH v2 0/4] [POWERPC] MPC5200: update gpt binding, add restart support Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 1/4] [POWERPC] Add mpc52xx_find_and_map_path(), refactor utility functions Marian Balakowicz @ 2007-10-18 18:44 ` Marian Balakowicz 2007-10-21 16:54 ` Grant Likely 2007-10-18 18:44 ` [PATCH v2 3/4] [POWERPC] Add restart support for mpc52xx based platforms Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 4/4] [POWERPC] Enable restart support for lite5200 board Marian Balakowicz 3 siblings, 1 reply; 9+ messages in thread From: Marian Balakowicz @ 2007-10-18 18:44 UTC (permalink / raw) To: linuxppc-dev Add 'fsl,' prefix to 'compatible' property for gpt nodes. Add 'fsl,' prefix to empty, GPT0 specific 'has-wdt' property. Signed-off-by: Marian Balakowicz <m8@semihalf.com> --- .../powerpc/mpc52xx-device-tree-bindings.txt | 4 ++- arch/powerpc/boot/dts/lite5200.dts | 26 +++++++------------- arch/powerpc/boot/dts/lite5200b.dts | 26 +++++++------------- drivers/char/watchdog/mpc5200_wdt.c | 3 ++ 4 files changed, 23 insertions(+), 36 deletions(-) diff --git a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt index e59fcbb..fedf7ef 100644 --- a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt +++ b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt @@ -185,7 +185,7 @@ bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires Recommended soc5200 child nodes; populate as needed for your board name device_type compatible Description ---- ----------- ---------- ----------- -gpt@<addr> gpt mpc5200-gpt General purpose timers +gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers rtc@<addr> rtc mpc5200-rtc Real time clock mscan@<addr> mscan mpc5200-mscan CAN bus controller pci@<addr> pci mpc5200-pci PCI bridge @@ -213,7 +213,7 @@ cell-index int When multiple devices are present, is the 5) General Purpose Timer nodes (child of soc5200 node) On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board design supports the internal wdt, then the device node for GPT0 should -include the empty property 'has-wdt'. +include the empty property 'fsl,has-wdt'. 6) PSC nodes (child of soc5200 node) PSC nodes can define the optional 'port-number' property to force assignment diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts index bc45f5f..6731763 100644 --- a/arch/powerpc/boot/dts/lite5200.dts +++ b/arch/powerpc/boot/dts/lite5200.dts @@ -70,18 +70,16 @@ }; gpt@600 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <0>; reg = <600 10>; interrupts = <1 9 0>; interrupt-parent = <&mpc5200_pic>; - has-wdt; + fsl,has-wdt; }; gpt@610 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <1>; reg = <610 10>; interrupts = <1 a 0>; @@ -89,8 +87,7 @@ }; gpt@620 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <2>; reg = <620 10>; interrupts = <1 b 0>; @@ -98,8 +95,7 @@ }; gpt@630 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <3>; reg = <630 10>; interrupts = <1 c 0>; @@ -107,8 +103,7 @@ }; gpt@640 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <4>; reg = <640 10>; interrupts = <1 d 0>; @@ -116,8 +111,7 @@ }; gpt@650 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <5>; reg = <650 10>; interrupts = <1 e 0>; @@ -125,8 +119,7 @@ }; gpt@660 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <6>; reg = <660 10>; interrupts = <1 f 0>; @@ -134,8 +127,7 @@ }; gpt@670 { // General Purpose Timer - compatible = "mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200-gpt"; cell-index = <7>; reg = <670 10>; interrupts = <1 10 0>; diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts index 6582c9a..b540388 100644 --- a/arch/powerpc/boot/dts/lite5200b.dts +++ b/arch/powerpc/boot/dts/lite5200b.dts @@ -70,18 +70,16 @@ }; gpt@600 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <0>; reg = <600 10>; interrupts = <1 9 0>; interrupt-parent = <&mpc5200_pic>; - has-wdt; + fsl,has-wdt; }; gpt@610 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <1>; reg = <610 10>; interrupts = <1 a 0>; @@ -89,8 +87,7 @@ }; gpt@620 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <2>; reg = <620 10>; interrupts = <1 b 0>; @@ -98,8 +95,7 @@ }; gpt@630 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <3>; reg = <630 10>; interrupts = <1 c 0>; @@ -107,8 +103,7 @@ }; gpt@640 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <4>; reg = <640 10>; interrupts = <1 d 0>; @@ -116,8 +111,7 @@ }; gpt@650 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <5>; reg = <650 10>; interrupts = <1 e 0>; @@ -125,8 +119,7 @@ }; gpt@660 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <6>; reg = <660 10>; interrupts = <1 f 0>; @@ -134,8 +127,7 @@ }; gpt@670 { // General Purpose Timer - compatible = "mpc5200b-gpt","mpc5200-gpt"; - device_type = "gpt"; + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; cell-index = <7>; reg = <670 10>; interrupts = <1 10 0>; diff --git a/drivers/char/watchdog/mpc5200_wdt.c b/drivers/char/watchdog/mpc5200_wdt.c index 9cfb975..11f6a11 100644 --- a/drivers/char/watchdog/mpc5200_wdt.c +++ b/drivers/char/watchdog/mpc5200_wdt.c @@ -176,6 +176,8 @@ static int mpc5200_wdt_probe(struct of_device *op, const struct of_device_id *ma has_wdt = of_get_property(op->node, "has-wdt", NULL); if (!has_wdt) + has_wdt = of_get_property(op->node, "fsl,has-wdt", NULL); + if (!has_wdt) return -ENODEV; wdt = kzalloc(sizeof(*wdt), GFP_KERNEL); @@ -254,6 +256,7 @@ static int mpc5200_wdt_shutdown(struct of_device *op) static struct of_device_id mpc5200_wdt_match[] = { { .compatible = "mpc5200-gpt", }, + { .compatible = "fsl,mpc5200-gpt", }, {}, }; static struct of_platform_driver mpc5200_wdt_driver = { ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/4] [POWERPC] Update device tree binding for mpc5200 gpt 2007-10-18 18:44 ` [PATCH v2 2/4] [POWERPC] Update device tree binding for mpc5200 gpt Marian Balakowicz @ 2007-10-21 16:54 ` Grant Likely 2007-10-21 17:25 ` Grant Likely 0 siblings, 1 reply; 9+ messages in thread From: Grant Likely @ 2007-10-21 16:54 UTC (permalink / raw) To: Marian Balakowicz; +Cc: linuxppc-dev On 10/18/07, Marian Balakowicz <m8@semihalf.com> wrote: > Add 'fsl,' prefix to 'compatible' property for gpt nodes. > Add 'fsl,' prefix to empty, GPT0 specific 'has-wdt' property. Patch doesn't apply; mpc5200_wdt.c watchdog driver is not in the kernel. I'll pick up the dts change, but you'll need to coordinate w/ Domen to get the needed changes into his driver before it's picked for mainline. Cheers, g. > > Signed-off-by: Marian Balakowicz <m8@semihalf.com> > --- > > .../powerpc/mpc52xx-device-tree-bindings.txt | 4 ++- > arch/powerpc/boot/dts/lite5200.dts | 26 +++++++------------- > arch/powerpc/boot/dts/lite5200b.dts | 26 +++++++------------- > drivers/char/watchdog/mpc5200_wdt.c | 3 ++ > 4 files changed, 23 insertions(+), 36 deletions(-) > > > diff --git a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt > index e59fcbb..fedf7ef 100644 > --- a/Documentation/powerpc/mpc52xx-device-tree-bindings.txt > +++ b/Documentation/powerpc/mpc52xx-device-tree-bindings.txt > @@ -185,7 +185,7 @@ bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires > Recommended soc5200 child nodes; populate as needed for your board > name device_type compatible Description > ---- ----------- ---------- ----------- > -gpt@<addr> gpt mpc5200-gpt General purpose timers > +gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers > rtc@<addr> rtc mpc5200-rtc Real time clock > mscan@<addr> mscan mpc5200-mscan CAN bus controller > pci@<addr> pci mpc5200-pci PCI bridge > @@ -213,7 +213,7 @@ cell-index int When multiple devices are present, is the > 5) General Purpose Timer nodes (child of soc5200 node) > On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board > design supports the internal wdt, then the device node for GPT0 should > -include the empty property 'has-wdt'. > +include the empty property 'fsl,has-wdt'. > > 6) PSC nodes (child of soc5200 node) > PSC nodes can define the optional 'port-number' property to force assignment > diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts > index bc45f5f..6731763 100644 > --- a/arch/powerpc/boot/dts/lite5200.dts > +++ b/arch/powerpc/boot/dts/lite5200.dts > @@ -70,18 +70,16 @@ > }; > > gpt@600 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <0>; > reg = <600 10>; > interrupts = <1 9 0>; > interrupt-parent = <&mpc5200_pic>; > - has-wdt; > + fsl,has-wdt; > }; > > gpt@610 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <1>; > reg = <610 10>; > interrupts = <1 a 0>; > @@ -89,8 +87,7 @@ > }; > > gpt@620 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <2>; > reg = <620 10>; > interrupts = <1 b 0>; > @@ -98,8 +95,7 @@ > }; > > gpt@630 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <3>; > reg = <630 10>; > interrupts = <1 c 0>; > @@ -107,8 +103,7 @@ > }; > > gpt@640 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <4>; > reg = <640 10>; > interrupts = <1 d 0>; > @@ -116,8 +111,7 @@ > }; > > gpt@650 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <5>; > reg = <650 10>; > interrupts = <1 e 0>; > @@ -125,8 +119,7 @@ > }; > > gpt@660 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <6>; > reg = <660 10>; > interrupts = <1 f 0>; > @@ -134,8 +127,7 @@ > }; > > gpt@670 { // General Purpose Timer > - compatible = "mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200-gpt"; > cell-index = <7>; > reg = <670 10>; > interrupts = <1 10 0>; > diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts > index 6582c9a..b540388 100644 > --- a/arch/powerpc/boot/dts/lite5200b.dts > +++ b/arch/powerpc/boot/dts/lite5200b.dts > @@ -70,18 +70,16 @@ > }; > > gpt@600 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <0>; > reg = <600 10>; > interrupts = <1 9 0>; > interrupt-parent = <&mpc5200_pic>; > - has-wdt; > + fsl,has-wdt; > }; > > gpt@610 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <1>; > reg = <610 10>; > interrupts = <1 a 0>; > @@ -89,8 +87,7 @@ > }; > > gpt@620 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <2>; > reg = <620 10>; > interrupts = <1 b 0>; > @@ -98,8 +95,7 @@ > }; > > gpt@630 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <3>; > reg = <630 10>; > interrupts = <1 c 0>; > @@ -107,8 +103,7 @@ > }; > > gpt@640 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <4>; > reg = <640 10>; > interrupts = <1 d 0>; > @@ -116,8 +111,7 @@ > }; > > gpt@650 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <5>; > reg = <650 10>; > interrupts = <1 e 0>; > @@ -125,8 +119,7 @@ > }; > > gpt@660 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <6>; > reg = <660 10>; > interrupts = <1 f 0>; > @@ -134,8 +127,7 @@ > }; > > gpt@670 { // General Purpose Timer > - compatible = "mpc5200b-gpt","mpc5200-gpt"; > - device_type = "gpt"; > + compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt"; > cell-index = <7>; > reg = <670 10>; > interrupts = <1 10 0>; > diff --git a/drivers/char/watchdog/mpc5200_wdt.c b/drivers/char/watchdog/mpc5200_wdt.c > index 9cfb975..11f6a11 100644 > --- a/drivers/char/watchdog/mpc5200_wdt.c > +++ b/drivers/char/watchdog/mpc5200_wdt.c > @@ -176,6 +176,8 @@ static int mpc5200_wdt_probe(struct of_device *op, const struct of_device_id *ma > > has_wdt = of_get_property(op->node, "has-wdt", NULL); > if (!has_wdt) > + has_wdt = of_get_property(op->node, "fsl,has-wdt", NULL); > + if (!has_wdt) > return -ENODEV; > > wdt = kzalloc(sizeof(*wdt), GFP_KERNEL); > @@ -254,6 +256,7 @@ static int mpc5200_wdt_shutdown(struct of_device *op) > > static struct of_device_id mpc5200_wdt_match[] = { > { .compatible = "mpc5200-gpt", }, > + { .compatible = "fsl,mpc5200-gpt", }, > {}, > }; > static struct of_platform_driver mpc5200_wdt_driver = { > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-dev > -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. grant.likely@secretlab.ca (403) 399-0195 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 2/4] [POWERPC] Update device tree binding for mpc5200 gpt 2007-10-21 16:54 ` Grant Likely @ 2007-10-21 17:25 ` Grant Likely 0 siblings, 0 replies; 9+ messages in thread From: Grant Likely @ 2007-10-21 17:25 UTC (permalink / raw) To: Marian Balakowicz; +Cc: linuxppc-dev On 10/21/07, Grant Likely <grant.likely@secretlab.ca> wrote: > On 10/18/07, Marian Balakowicz <m8@semihalf.com> wrote: > > Add 'fsl,' prefix to 'compatible' property for gpt nodes. > > Add 'fsl,' prefix to empty, GPT0 specific 'has-wdt' property. > > Patch doesn't apply; mpc5200_wdt.c watchdog driver is not in the > kernel. I'll pick up the dts change, but you'll need to coordinate w/ > Domen to get the needed changes into his driver before it's picked for > mainline. Oops, it is there; drivers/char/watchdog has been moved to drivers/watchdog, so the patch didn't apply. I'll fix this up. Cheers, g. -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. grant.likely@secretlab.ca (403) 399-0195 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 3/4] [POWERPC] Add restart support for mpc52xx based platforms 2007-10-18 18:44 [PATCH v2 0/4] [POWERPC] MPC5200: update gpt binding, add restart support Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 1/4] [POWERPC] Add mpc52xx_find_and_map_path(), refactor utility functions Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 2/4] [POWERPC] Update device tree binding for mpc5200 gpt Marian Balakowicz @ 2007-10-18 18:44 ` Marian Balakowicz 2007-10-18 18:53 ` Grant Likely 2007-10-18 18:44 ` [PATCH v2 4/4] [POWERPC] Enable restart support for lite5200 board Marian Balakowicz 3 siblings, 1 reply; 9+ messages in thread From: Marian Balakowicz @ 2007-10-18 18:44 UTC (permalink / raw) To: linuxppc-dev Add common helper routines: mpc52xx_map_wdt() and mpc52xx_restart(). This patch relies on Sascha Hauer's patch published in: http://patchwork.ozlabs.org/linuxppc/patch?id=8910. Signed-off-by: Marian Balakowicz <m8@semihalf.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> --- arch/powerpc/platforms/52xx/mpc52xx_common.c | 50 ++++++++++++++++++++++++++ include/asm-powerpc/mpc52xx.h | 3 ++ 2 files changed, 53 insertions(+), 0 deletions(-) diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c index 74b4b41..9850685 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_common.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c @@ -18,6 +18,13 @@ #include <asm/prom.h> #include <asm/mpc52xx.h> +/* + * This variable is mapped in mpc52xx_map_wdt() and used in mpc52xx_restart(). + * Permanent mapping is required because mpc52xx_restart() can be called + * from interrupt context while node mapping (which calls ioremap()) + * cannot be used at such point. + */ +static volatile struct mpc52xx_gpt *mpc52xx_wdt = NULL; static void __iomem * mpc52xx_map_node(struct device_node *ofn) @@ -126,3 +133,46 @@ mpc52xx_declare_of_platform_devices(void) "Error while probing of_platform bus\n"); } +void __init +mpc52xx_map_wdt(void) +{ + const void *has_wdt; + struct device_node *np; + + /* mpc52xx_wdt is mapped here and used in mpc52xx_restart, + * possibly from a interrupt context. wdt is only implement + * on a gpt0, so check has-wdt property before mapping. + */ + for_each_compatible_node(np, NULL, "fsl,mpc5200-gpt") { + has_wdt = of_get_property(np, "fsl,has-wdt", NULL); + if (has_wdt) { + mpc52xx_wdt = mpc52xx_map_node(np); + return; + } + } + for_each_compatible_node(np, NULL, "mpc5200-gpt") { + has_wdt = of_get_property(np, "has-wdt", NULL); + if (has_wdt) { + mpc52xx_wdt = mpc52xx_map_node(np); + return; + } + } +} + +void +mpc52xx_restart(char *cmd) +{ + local_irq_disable(); + + /* Turn on the watchdog and wait for it to expire. + * It effectively does a reset. */ + if (mpc52xx_wdt) { + out_be32(&mpc52xx_wdt->mode, 0x00000000); + out_be32(&mpc52xx_wdt->count, 0x000000ff); + out_be32(&mpc52xx_wdt->mode, 0x00009004); + } else + printk("mpc52xx_restart: Can't access wdt. " + "Restart impossible, system halted.\n"); + + while (1); +} diff --git a/include/asm-powerpc/mpc52xx.h b/include/asm-powerpc/mpc52xx.h index 9cf05f9..39f619f 100644 --- a/include/asm-powerpc/mpc52xx.h +++ b/include/asm-powerpc/mpc52xx.h @@ -252,6 +252,9 @@ extern unsigned int mpc52xx_get_irq(void); extern int __init mpc52xx_add_bridge(struct device_node *node); +extern void __init mpc52xx_map_wdt(void); +extern void mpc52xx_restart(char *cmd); + #endif /* __ASSEMBLY__ */ #ifdef CONFIG_PM ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] [POWERPC] Add restart support for mpc52xx based platforms 2007-10-18 18:44 ` [PATCH v2 3/4] [POWERPC] Add restart support for mpc52xx based platforms Marian Balakowicz @ 2007-10-18 18:53 ` Grant Likely 2007-10-18 19:03 ` Marian Balakowicz 0 siblings, 1 reply; 9+ messages in thread From: Grant Likely @ 2007-10-18 18:53 UTC (permalink / raw) To: Marian Balakowicz; +Cc: linuxppc-dev On 10/18/07, Marian Balakowicz <m8@semihalf.com> wrote: > Add common helper routines: mpc52xx_map_wdt() and mpc52xx_restart(). > > This patch relies on Sascha Hauer's patch published in: > http://patchwork.ozlabs.org/linuxppc/patch?id=8910. By 'relies', do you mean "depends on" or "was derived from"? Cheers, g. -- Grant Likely, B.Sc., P.Eng. Secret Lab Technologies Ltd. grant.likely@secretlab.ca (403) 399-0195 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v2 3/4] [POWERPC] Add restart support for mpc52xx based platforms 2007-10-18 18:53 ` Grant Likely @ 2007-10-18 19:03 ` Marian Balakowicz 0 siblings, 0 replies; 9+ messages in thread From: Marian Balakowicz @ 2007-10-18 19:03 UTC (permalink / raw) To: Grant Likely; +Cc: linuxppc-dev Grant Likely wrote: > On 10/18/07, Marian Balakowicz <m8@semihalf.com> wrote: >> Add common helper routines: mpc52xx_map_wdt() and mpc52xx_restart(). >> >> This patch relies on Sascha Hauer's patch published in: >> http://patchwork.ozlabs.org/linuxppc/patch?id=8910. > > By 'relies', do you mean "depends on" or "was derived from"? Initial version was derived from, and since then it slightly evolved. m. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v2 4/4] [POWERPC] Enable restart support for lite5200 board 2007-10-18 18:44 [PATCH v2 0/4] [POWERPC] MPC5200: update gpt binding, add restart support Marian Balakowicz ` (2 preceding siblings ...) 2007-10-18 18:44 ` [PATCH v2 3/4] [POWERPC] Add restart support for mpc52xx based platforms Marian Balakowicz @ 2007-10-18 18:44 ` Marian Balakowicz 3 siblings, 0 replies; 9+ messages in thread From: Marian Balakowicz @ 2007-10-18 18:44 UTC (permalink / raw) To: linuxppc-dev Signed-off-by: Marian Balakowicz <m8@semihalf.com> --- arch/powerpc/platforms/52xx/lite5200.c | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c index 65b7ae4..25d2bfa 100644 --- a/arch/powerpc/platforms/52xx/lite5200.c +++ b/arch/powerpc/platforms/52xx/lite5200.c @@ -145,6 +145,9 @@ static void __init lite5200_setup_arch(void) /* Some mpc5200 & mpc5200b related configuration */ mpc5200_setup_xlb_arbiter(); + /* Map wdt for mpc52xx_restart() */ + mpc52xx_map_wdt(); + #ifdef CONFIG_PM mpc52xx_suspend.board_suspend_prepare = lite5200_suspend_prepare; mpc52xx_suspend.board_resume_finish = lite5200_resume_finish; @@ -183,5 +186,6 @@ define_machine(lite5200) { .init = mpc52xx_declare_of_platform_devices, .init_IRQ = mpc52xx_init_irq, .get_irq = mpc52xx_get_irq, + .restart = mpc52xx_restart, .calibrate_decr = generic_calibrate_decr, }; ^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2007-10-21 17:25 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-10-18 18:44 [PATCH v2 0/4] [POWERPC] MPC5200: update gpt binding, add restart support Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 1/4] [POWERPC] Add mpc52xx_find_and_map_path(), refactor utility functions Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 2/4] [POWERPC] Update device tree binding for mpc5200 gpt Marian Balakowicz 2007-10-21 16:54 ` Grant Likely 2007-10-21 17:25 ` Grant Likely 2007-10-18 18:44 ` [PATCH v2 3/4] [POWERPC] Add restart support for mpc52xx based platforms Marian Balakowicz 2007-10-18 18:53 ` Grant Likely 2007-10-18 19:03 ` Marian Balakowicz 2007-10-18 18:44 ` [PATCH v2 4/4] [POWERPC] Enable restart support for lite5200 board Marian Balakowicz
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.