Patchwork [3/8] powerpc/5200: Trim cruft from device trees

login
register
mail settings
Submitter Grant Likely
Date Jan. 21, 2009, 8:55 p.m.
Message ID <20090121205518.31232.58846.stgit@localhost.localdomain>
Download mbox | patch
Permalink /patch/19695/
State Superseded, archived
Delegated to: Grant Likely
Headers show

Comments

Grant Likely - Jan. 21, 2009, 8:55 p.m.
From: Grant Likely <grant.likely@secretlab.ca>

Trim out obsolete/extraneous properties and tighten up some usage
conventions.  Changes include:
- removal of device_type properties
- removal of cell-index properties
- Addition of gpio-controller and #gpio-cells properties to gpio
  nodes
- Move common interrupt-parent property out of device nodes and
  into top level parent node.

This patch also include what looks to be just trivial editorial
whitespace/format changes, but there is real method in this
madness.  Editorial changes were made to keep the all the
mpc5200 board device trees as similar as possible so that diffs
between them only show the real differences between the boards.
The pcm030 device tree was most affected by this because many
of the comments had been changed from // to /* */ style and
some cell values where changed from decimal to hex format when
it was cloned from one of the other 5200 device trees.

Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
CC: Wolfram Sang <w.sang@pengutronix.de>
CC: Wolfgang Grandegger <wg@grandegger.com>
CC: Sascha Hauer <s.hauer@pengutronix.de>
CC: Marian Balakowicz <m8@semihalf.com>
---

 arch/powerpc/boot/dts/cm5200.dts    |   45 ++-------
 arch/powerpc/boot/dts/lite5200.dts  |   52 ----------
 arch/powerpc/boot/dts/lite5200b.dts |   63 ++----------
 arch/powerpc/boot/dts/motionpro.dts |   42 ++------
 arch/powerpc/boot/dts/pcm030.dts    |  182 +++++++++++++----------------------
 arch/powerpc/boot/dts/tqm5200.dts   |   32 +-----
 6 files changed, 104 insertions(+), 312 deletions(-)
Wolfram Sang - Jan. 29, 2009, 9:21 p.m.
On Wed, Jan 21, 2009 at 01:55:18PM -0700, Grant Likely wrote:
> From: Grant Likely <grant.likely@secretlab.ca>
> 
> Trim out obsolete/extraneous properties and tighten up some usage
> conventions.  Changes include:
> - removal of device_type properties
> - removal of cell-index properties
> - Addition of gpio-controller and #gpio-cells properties to gpio
>   nodes
> - Move common interrupt-parent property out of device nodes and
>   into top level parent node.
> 
> This patch also include what looks to be just trivial editorial
> whitespace/format changes, but there is real method in this
> madness.  Editorial changes were made to keep the all the
> mpc5200 board device trees as similar as possible so that diffs
> between them only show the real differences between the boards.
> The pcm030 device tree was most affected by this because many
> of the comments had been changed from // to /* */ style and
> some cell values where changed from decimal to hex format when
> it was cloned from one of the other 5200 device trees.

Thanks for this and especially for fixing the wrong interrupt in one of
the pcm030 PSCs! My phyCORE-MPC5200B-tiny still works fine with the new
dts. The other changes were only audited, not tested on real hardware.

> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>

Reviewed-by: Wolfram Sang <w.sang@pengutronix.de>

> CC: Wolfram Sang <w.sang@pengutronix.de>
> CC: Wolfgang Grandegger <wg@grandegger.com>
> CC: Sascha Hauer <s.hauer@pengutronix.de>
> CC: Marian Balakowicz <m8@semihalf.com>
> ---
> 
>  arch/powerpc/boot/dts/cm5200.dts    |   45 ++-------
>  arch/powerpc/boot/dts/lite5200.dts  |   52 ----------
>  arch/powerpc/boot/dts/lite5200b.dts |   63 ++----------
>  arch/powerpc/boot/dts/motionpro.dts |   42 ++------
>  arch/powerpc/boot/dts/pcm030.dts    |  182 +++++++++++++----------------------
>  arch/powerpc/boot/dts/tqm5200.dts   |   32 +-----
>  6 files changed, 104 insertions(+), 312 deletions(-)
> 
> 
> diff --git a/arch/powerpc/boot/dts/cm5200.dts b/arch/powerpc/boot/dts/cm5200.dts
> index 2f74cc4..11ada32 100644
> --- a/arch/powerpc/boot/dts/cm5200.dts
> +++ b/arch/powerpc/boot/dts/cm5200.dts
> @@ -17,6 +17,7 @@
>  	compatible = "schindler,cm5200";
>  	#address-cells = <1>;
>  	#size-cells = <1>;
> +	interrupt-parent = <&mpc5200_pic>;
>  
>  	cpus {
>  		#address-cells = <1>;
> @@ -66,7 +67,6 @@
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x600 0x10>;
>  			interrupts = <1 9 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl,has-wdt;
>  		};
>  
> @@ -74,84 +74,76 @@
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x610 0x10>;
>  			interrupts = <1 10 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@620 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x620 0x10>;
>  			interrupts = <1 11 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@630 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x630 0x10>;
>  			interrupts = <1 12 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@640 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x640 0x10>;
>  			interrupts = <1 13 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@650 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x650 0x10>;
>  			interrupts = <1 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@660 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x660 0x10>;
>  			interrupts = <1 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@670 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x670 0x10>;
>  			interrupts = <1 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		rtc@800 {	// Real time clock
>  			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
>  			reg = <0x800 0x100>;
>  			interrupts = <1 5 0 1 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
> -		gpio@b00 {
> +		gpio_simple: gpio@b00 {
>  			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
>  			reg = <0xb00 0x40>;
>  			interrupts = <1 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
>  		};
>  
> -		gpio@c00 {
> +		gpio_wkup: gpio@c00 {
>  			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
>  			reg = <0xc00 0x40>;
>  			interrupts = <1 8 0 0 3 0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
>  		};
>  
>  		spi@f00 {
>  			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
>  			reg = <0xf00 0x20>;
>  			interrupts = <2 13 0 2 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		usb@1000 {
>  			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
>  			reg = <0x1000 0xff>;
>  			interrupts = <2 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		dma-controller@1200 {
> @@ -161,7 +153,6 @@
>  			              3 4 0  3 5 0  3 6 0  3 7 0
>  			              3 8 0  3 9 0  3 10 0  3 11 0
>  			              3 12 0  3 13 0  3 14 0  3 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		xlb@1f00 {
> @@ -170,48 +161,34 @@
>  		};
>  
>  		serial@2000 {		// PSC1
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
> -			port-number = <0>;  // Logical port assignment
>  			reg = <0x2000 0x100>;
>  			interrupts = <2 1 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		serial@2200 {		// PSC2
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200-psc-uart";
> -			port-number = <1>;  // Logical port assignment
>  			reg = <0x2200 0x100>;
>  			interrupts = <2 2 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		serial@2400 {		// PSC3
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200-psc-uart";
> -			port-number = <2>;  // Logical port assignment
>  			reg = <0x2400 0x100>;
>  			interrupts = <2 3 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		serial@2c00 {		// PSC6
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
> -			port-number = <5>;  // Logical port assignment
>  			reg = <0x2c00 0x100>;
>  			interrupts = <2 4 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		ethernet@3000 {
> -			device_type = "network";
>  			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
>  			reg = <0x3000 0x400>;
>  			local-mac-address = [ 00 00 00 00 00 00 ];
>  			interrupts = <2 5 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			phy-handle = <&phy0>;
>  		};
>  
> @@ -221,10 +198,8 @@
>  			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
>  			reg = <0x3000 0x400>;       // fec range, since we need to setup fec interrupts
>  			interrupts = <2 5 0>;   // these are for "mii command finished", not link changes & co.
> -			interrupt-parent = <&mpc5200_pic>;
>  
>  			phy0: ethernet-phy@0 {
> -				device_type = "ethernet-phy";
>  				reg = <0>;
>  			};
>  		};
> @@ -235,7 +210,6 @@
>  			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
>  			reg = <0x3d40 0x40>;
>  			interrupts = <2 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl5200-clocking;
>  		};
>  
> @@ -245,9 +219,8 @@
>  		};
>  	};
>  
> -	lpb {
> -		model = "fsl,lpb";
> -		compatible = "fsl,lpb";
> +	localbus {
> +		compatible = "fsl,mpc5200b-lpb","simple-bus";
>  		#address-cells = <2>;
>  		#size-cells = <1>;
>  		ranges = <0 0 0xfc000000 0x2000000>;
> diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
> index 3f7a5dc..de30b3f 100644
> --- a/arch/powerpc/boot/dts/lite5200.dts
> +++ b/arch/powerpc/boot/dts/lite5200.dts
> @@ -17,6 +17,7 @@
>  	compatible = "fsl,lite5200";
>  	#address-cells = <1>;
>  	#size-cells = <1>;
> +	interrupt-parent = <&mpc5200_pic>;
>  
>  	cpus {
>  		#address-cells = <1>;
> @@ -58,96 +59,74 @@
>  			// 5200 interrupts are encoded into two levels;
>  			interrupt-controller;
>  			#interrupt-cells = <3>;
> -			device_type = "interrupt-controller";
>  			compatible = "fsl,mpc5200-pic";
>  			reg = <0x500 0x80>;
>  		};
>  
>  		timer@600 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <0>;
>  			reg = <0x600 0x10>;
>  			interrupts = <1 9 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl,has-wdt;
>  		};
>  
>  		timer@610 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <1>;
>  			reg = <0x610 0x10>;
>  			interrupts = <1 10 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@620 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <2>;
>  			reg = <0x620 0x10>;
>  			interrupts = <1 11 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@630 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <3>;
>  			reg = <0x630 0x10>;
>  			interrupts = <1 12 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@640 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <4>;
>  			reg = <0x640 0x10>;
>  			interrupts = <1 13 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@650 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <5>;
>  			reg = <0x650 0x10>;
>  			interrupts = <1 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@660 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <6>;
>  			reg = <0x660 0x10>;
>  			interrupts = <1 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@670 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200-gpt";
> -			cell-index = <7>;
>  			reg = <0x670 0x10>;
>  			interrupts = <1 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		rtc@800 {	// Real time clock
>  			compatible = "fsl,mpc5200-rtc";
>  			reg = <0x800 0x100>;
>  			interrupts = <1 5 0 1 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		can@900 {
>  			compatible = "fsl,mpc5200-mscan";
> -			cell-index = <0>;
>  			interrupts = <2 17 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			reg = <0x900 0x80>;
>  		};
>  
>  		can@980 {
>  			compatible = "fsl,mpc5200-mscan";
> -			cell-index = <1>;
>  			interrupts = <2 18 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			reg = <0x980 0x80>;
>  		};
>  
> @@ -155,39 +134,33 @@
>  			compatible = "fsl,mpc5200-gpio";
>  			reg = <0xb00 0x40>;
>  			interrupts = <1 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		gpio@c00 {
>  			compatible = "fsl,mpc5200-gpio-wkup";
>  			reg = <0xc00 0x40>;
>  			interrupts = <1 8 0 0 3 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		spi@f00 {
>  			compatible = "fsl,mpc5200-spi";
>  			reg = <0xf00 0x20>;
>  			interrupts = <2 13 0 2 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		usb@1000 {
>  			compatible = "fsl,mpc5200-ohci","ohci-be";
>  			reg = <0x1000 0xff>;
>  			interrupts = <2 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		dma-controller@1200 {
> -			device_type = "dma-controller";
>  			compatible = "fsl,mpc5200-bestcomm";
>  			reg = <0x1200 0x80>;
>  			interrupts = <3 0 0  3 1 0  3 2 0  3 3 0
>  			              3 4 0  3 5 0  3 6 0  3 7 0
>  			              3 8 0  3 9 0  3 10 0  3 11 0
>  			              3 12 0  3 13 0  3 14 0  3 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		xlb@1f00 {
> @@ -196,13 +169,10 @@
>  		};
>  
>  		serial@2000 {		// PSC1
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200-psc-uart";
> -			port-number = <0>;  // Logical port assignment
>  			cell-index = <0>;
>  			reg = <0x2000 0x100>;
>  			interrupts = <2 1 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		// PSC2 in ac97 mode example
> @@ -211,7 +181,6 @@
>  		//	cell-index = <1>;
>  		//	reg = <0x2200 0x100>;
>  		//	interrupts = <2 2 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC3 in CODEC mode example
> @@ -220,27 +189,22 @@
>  		//	cell-index = <2>;
>  		//	reg = <0x2400 0x100>;
>  		//	interrupts = <2 3 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC4 in uart mode example
>  		//serial@2600 {		// PSC4
> -		//	device_type = "serial";
>  		//	compatible = "fsl,mpc5200-psc-uart";
>  		//	cell-index = <3>;
>  		//	reg = <0x2600 0x100>;
>  		//	interrupts = <2 11 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC5 in uart mode example
>  		//serial@2800 {		// PSC5
> -		//	device_type = "serial";
>  		//	compatible = "fsl,mpc5200-psc-uart";
>  		//	cell-index = <4>;
>  		//	reg = <0x2800 0x100>;
>  		//	interrupts = <2 12 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC6 in spi mode example
> @@ -249,16 +213,13 @@
>  		//	cell-index = <5>;
>  		//	reg = <0x2c00 0x100>;
>  		//	interrupts = <2 4 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		ethernet@3000 {
> -			device_type = "network";
>  			compatible = "fsl,mpc5200-fec";
>  			reg = <0x3000 0x400>;
>  			local-mac-address = [ 00 00 00 00 00 00 ];
>  			interrupts = <2 5 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			phy-handle = <&phy0>;
>  		};
>  
> @@ -268,30 +229,24 @@
>  			compatible = "fsl,mpc5200-mdio";
>  			reg = <0x3000 0x400>;	// fec range, since we need to setup fec interrupts
>  			interrupts = <2 5 0>;	// these are for "mii command finished", not link changes & co.
> -			interrupt-parent = <&mpc5200_pic>;
>  
>  			phy0: ethernet-phy@1 {
> -				device_type = "ethernet-phy";
>  				reg = <1>;
>  			};
>  		};
>  
>  		ata@3a00 {
> -			device_type = "ata";
>  			compatible = "fsl,mpc5200-ata";
>  			reg = <0x3a00 0x100>;
>  			interrupts = <2 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		i2c@3d00 {
>  			#address-cells = <1>;
>  			#size-cells = <0>;
>  			compatible = "fsl,mpc5200-i2c","fsl-i2c";
> -			cell-index = <0>;
>  			reg = <0x3d00 0x40>;
>  			interrupts = <2 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl5200-clocking;
>  		};
>  
> @@ -299,14 +254,12 @@
>  			#address-cells = <1>;
>  			#size-cells = <0>;
>  			compatible = "fsl,mpc5200-i2c","fsl-i2c";
> -			cell-index = <1>;
>  			reg = <0x3d40 0x40>;
>  			interrupts = <2 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl5200-clocking;
>  		};
>  		sram@8000 {
> -			compatible = "fsl,mpc5200-sram","sram";
> +			compatible = "fsl,mpc5200-sram";
>  			reg = <0x8000 0x4000>;
>  		};
>  	};
> @@ -325,7 +278,6 @@
>  				 0xc000 0 0 4 &mpc5200_pic 0 0 3>;
>  		clock-frequency = <0>; // From boot loader
>  		interrupts = <2 8 0 2 9 0 2 10 0>;
> -		interrupt-parent = <&mpc5200_pic>;
>  		bus-range = <0 0>;
>  		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000
>  			  0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
> diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
> index 63e3bb4..c63e356 100644
> --- a/arch/powerpc/boot/dts/lite5200b.dts
> +++ b/arch/powerpc/boot/dts/lite5200b.dts
> @@ -17,6 +17,7 @@
>  	compatible = "fsl,lite5200b";
>  	#address-cells = <1>;
>  	#size-cells = <1>;
> +	interrupt-parent = <&mpc5200_pic>;
>  
>  	cpus {
>  		#address-cells = <1>;
> @@ -58,136 +59,112 @@
>  			// 5200 interrupts are encoded into two levels;
>  			interrupt-controller;
>  			#interrupt-cells = <3>;
> -			device_type = "interrupt-controller";
>  			compatible = "fsl,mpc5200b-pic","fsl,mpc5200-pic";
>  			reg = <0x500 0x80>;
>  		};
>  
>  		timer@600 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <0>;
>  			reg = <0x600 0x10>;
>  			interrupts = <1 9 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl,has-wdt;
>  		};
>  
>  		timer@610 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <1>;
>  			reg = <0x610 0x10>;
>  			interrupts = <1 10 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@620 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <2>;
>  			reg = <0x620 0x10>;
>  			interrupts = <1 11 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@630 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <3>;
>  			reg = <0x630 0x10>;
>  			interrupts = <1 12 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@640 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <4>;
>  			reg = <0x640 0x10>;
>  			interrupts = <1 13 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@650 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <5>;
>  			reg = <0x650 0x10>;
>  			interrupts = <1 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@660 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <6>;
>  			reg = <0x660 0x10>;
>  			interrupts = <1 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@670 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <7>;
>  			reg = <0x670 0x10>;
>  			interrupts = <1 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		rtc@800 {	// Real time clock
>  			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
>  			reg = <0x800 0x100>;
>  			interrupts = <1 5 0 1 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		can@900 {
>  			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
> -			cell-index = <0>;
>  			interrupts = <2 17 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			reg = <0x900 0x80>;
>  		};
>  
>  		can@980 {
>  			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
> -			cell-index = <1>;
>  			interrupts = <2 18 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			reg = <0x980 0x80>;
>  		};
>  
> -		gpio@b00 {
> +		gpio_simple: gpio@b00 {
>  			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
>  			reg = <0xb00 0x40>;
>  			interrupts = <1 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
>  		};
>  
> -		gpio@c00 {
> +		gpio_wkup: gpio@c00 {
>  			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
>  			reg = <0xc00 0x40>;
>  			interrupts = <1 8 0 0 3 0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
>  		};
>  
>  		spi@f00 {
>  			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
>  			reg = <0xf00 0x20>;
>  			interrupts = <2 13 0 2 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		usb@1000 {
>  			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
>  			reg = <0x1000 0xff>;
>  			interrupts = <2 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		dma-controller@1200 {
> -			device_type = "dma-controller";
>  			compatible = "fsl,mpc5200b-bestcomm","fsl,mpc5200-bestcomm";
>  			reg = <0x1200 0x80>;
>  			interrupts = <3 0 0  3 1 0  3 2 0  3 3 0
>  			              3 4 0  3 5 0  3 6 0  3 7 0
>  			              3 8 0  3 9 0  3 10 0  3 11 0
>  			              3 12 0  3 13 0  3 14 0  3 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		xlb@1f00 {
> @@ -196,13 +173,10 @@
>  		};
>  
>  		serial@2000 {		// PSC1
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
> -			port-number = <0>;  // Logical port assignment
>  			cell-index = <0>;
>  			reg = <0x2000 0x100>;
>  			interrupts = <2 1 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		// PSC2 in ac97 mode example
> @@ -211,7 +185,6 @@
>  		//	cell-index = <1>;
>  		//	reg = <0x2200 0x100>;
>  		//	interrupts = <2 2 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC3 in CODEC mode example
> @@ -220,27 +193,22 @@
>  		//	cell-index = <2>;
>  		//	reg = <0x2400 0x100>;
>  		//	interrupts = <2 3 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC4 in uart mode example
>  		//serial@2600 {		// PSC4
> -		//	device_type = "serial";
>  		//	compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
>  		//	cell-index = <3>;
>  		//	reg = <0x2600 0x100>;
>  		//	interrupts = <2 11 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC5 in uart mode example
>  		//serial@2800 {		// PSC5
> -		//	device_type = "serial";
>  		//	compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
>  		//	cell-index = <4>;
>  		//	reg = <0x2800 0x100>;
>  		//	interrupts = <2 12 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		// PSC6 in spi mode example
> @@ -249,49 +217,40 @@
>  		//	cell-index = <5>;
>  		//	reg = <0x2c00 0x100>;
>  		//	interrupts = <2 4 0>;
> -		//	interrupt-parent = <&mpc5200_pic>;
>  		//};
>  
>  		ethernet@3000 {
> -			device_type = "network";
>  			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
>  			reg = <0x3000 0x400>;
>  			local-mac-address = [ 00 00 00 00 00 00 ];
>  			interrupts = <2 5 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			phy-handle = <&phy0>;
>  		};
>  
>  		mdio@3000 {
>  			#address-cells = <1>;
>  			#size-cells = <0>;
> -			compatible = "fsl,mpc5200b-mdio", "fsl,mpc5200-mdio";
> +			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
>  			reg = <0x3000 0x400>;	// fec range, since we need to setup fec interrupts
>  			interrupts = <2 5 0>;	// these are for "mii command finished", not link changes & co.
> -			interrupt-parent = <&mpc5200_pic>;
>  
>  			phy0: ethernet-phy@0 {
> -				device_type = "ethernet-phy";
>  				reg = <0>;
>  			};
>  		};
>  
>  		ata@3a00 {
> -			device_type = "ata";
>  			compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
>  			reg = <0x3a00 0x100>;
>  			interrupts = <2 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		i2c@3d00 {
>  			#address-cells = <1>;
>  			#size-cells = <0>;
>  			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
> -			cell-index = <0>;
>  			reg = <0x3d00 0x40>;
>  			interrupts = <2 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl5200-clocking;
>  		};
>  
> @@ -299,14 +258,13 @@
>  			#address-cells = <1>;
>  			#size-cells = <0>;
>  			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
> -			cell-index = <1>;
>  			reg = <0x3d40 0x40>;
>  			interrupts = <2 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl5200-clocking;
>  		};
> +
>  		sram@8000 {
> -			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram","sram";
> +			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
>  			reg = <0x8000 0x4000>;
>  		};
>  	};
> @@ -330,7 +288,6 @@
>  				 0xc800 0 0 4 &mpc5200_pic 0 0 3>;
>  		clock-frequency = <0>; // From boot loader
>  		interrupts = <2 8 0 2 9 0 2 10 0>;
> -		interrupt-parent = <&mpc5200_pic>;
>  		bus-range = <0 0>;
>  		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000
>  			  0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
> diff --git a/arch/powerpc/boot/dts/motionpro.dts b/arch/powerpc/boot/dts/motionpro.dts
> index 52ba6f9..7be8ca0 100644
> --- a/arch/powerpc/boot/dts/motionpro.dts
> +++ b/arch/powerpc/boot/dts/motionpro.dts
> @@ -17,6 +17,7 @@
>  	compatible = "promess,motionpro";
>  	#address-cells = <1>;
>  	#size-cells = <1>;
> +	interrupt-parent = <&mpc5200_pic>;
>  
>  	cpus {
>  		#address-cells = <1>;
> @@ -66,7 +67,6 @@
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x600 0x10>;
>  			interrupts = <1 9 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl,has-wdt;
>  		};
>  
> @@ -74,35 +74,30 @@
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x610 0x10>;
>  			interrupts = <1 10 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@620 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x620 0x10>;
>  			interrupts = <1 11 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@630 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x630 0x10>;
>  			interrupts = <1 12 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@640 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x640 0x10>;
>  			interrupts = <1 13 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		timer@650 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
>  			reg = <0x650 0x10>;
>  			interrupts = <1 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		motionpro-led@660 {	// Motion-PRO status LED
> @@ -110,7 +105,6 @@
>  			label = "motionpro-statusled";
>  			reg = <0x660 0x10>;
>  			interrupts = <1 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			blink-delay = <100>; // 100 msec
>  		};
>  
> @@ -119,49 +113,46 @@
>  			label = "motionpro-readyled";
>  			reg = <0x670 0x10>;
>  			interrupts = <1 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		rtc@800 {	// Real time clock
>  			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
>  			reg = <0x800 0x100>;
>  			interrupts = <1 5 0 1 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		can@980 {
>  			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
>  			interrupts = <2 18 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			reg = <0x980 0x80>;
>  		};
>  
> -		gpio@b00 {
> +		gpio_simple: gpio@b00 {
>  			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
>  			reg = <0xb00 0x40>;
>  			interrupts = <1 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
>  		};
>  
> -		gpio@c00 {
> +		gpio_wkup: gpio@c00 {
>  			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
>  			reg = <0xc00 0x40>;
>  			interrupts = <1 8 0 0 3 0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
>  		};
>  
>  		spi@f00 {
>  			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
>  			reg = <0xf00 0x20>;
>  			interrupts = <2 13 0 2 14 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		usb@1000 {
>  			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
>  			reg = <0x1000 0xff>;
>  			interrupts = <2 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		dma-controller@1200 {
> @@ -171,7 +162,6 @@
>  			              3 4 0  3 5 0  3 6 0  3 7 0
>  			              3 8 0  3 9 0  3 10 0  3 11 0
>  			              3 12 0  3 13 0  3 14 0  3 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		xlb@1f00 {
> @@ -180,12 +170,9 @@
>  		};
>  
>  		serial@2000 {		// PSC1
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
> -			port-number = <0>;  // Logical port assignment
>  			reg = <0x2000 0x100>;
>  			interrupts = <2 1 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		// PSC2 in spi master mode 
> @@ -194,26 +181,20 @@
>  			cell-index = <1>;
>  			reg = <0x2200 0x100>;
>  			interrupts = <2 2 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		// PSC5 in uart mode
>  		serial@2800 {		// PSC5
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
> -			port-number = <4>;  // Logical port assignment
>  			reg = <0x2800 0x100>;
>  			interrupts = <2 12 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		ethernet@3000 {
> -			device_type = "network";
>  			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
>  			reg = <0x3000 0x400>;
>  			local-mac-address = [ 00 00 00 00 00 00 ];
>  			interrupts = <2 5 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			phy-handle = <&phy0>;
>  		};
>  
> @@ -223,10 +204,8 @@
>  			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
>  			reg = <0x3000 0x400>;       // fec range, since we need to setup fec interrupts
>  			interrupts = <2 5 0>;   // these are for "mii command finished", not link changes & co.
> -			interrupt-parent = <&mpc5200_pic>;
>  
>  			phy0: ethernet-phy@2 {
> -				device_type = "ethernet-phy";
>  				reg = <2>;
>  			};
>  		};
> @@ -235,7 +214,6 @@
>  			compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
>  			reg = <0x3a00 0x100>;
>  			interrupts = <2 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		i2c@3d40 {
> @@ -244,7 +222,6 @@
>  			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
>  			reg = <0x3d40 0x40>;
>  			interrupts = <2 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl5200-clocking;
>  
>  			rtc@68 {
> @@ -259,8 +236,8 @@
>  		};
>  	};
>  
> -	lpb {
> -		compatible = "fsl,lpb";
> +	localbus {
> +		compatible = "fsl,mpc5200b-lpb","simple-bus";
>  		#address-cells = <2>;
>  		#size-cells = <1>;
>  		ranges = <0 0 0xff000000 0x01000000
> @@ -273,7 +250,6 @@
>  			compatible = "promess,motionpro-kollmorgen";
>  			reg = <1 0 0x10000>;
>  			interrupts = <1 1 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		// 8-bit board CPLD on LocalPlus Bus CS2
> diff --git a/arch/powerpc/boot/dts/pcm030.dts b/arch/powerpc/boot/dts/pcm030.dts
> index be2c11c..8958347 100644
> --- a/arch/powerpc/boot/dts/pcm030.dts
> +++ b/arch/powerpc/boot/dts/pcm030.dts
> @@ -19,6 +19,7 @@
>  	compatible = "phytec,pcm030";
>  	#address-cells = <1>;
>  	#size-cells = <1>;
> +	interrupt-parent = <&mpc5200_pic>;
>  
>  	cpus {
>  		#address-cells = <1>;
> @@ -29,26 +30,26 @@
>  			reg = <0>;
>  			d-cache-line-size = <32>;
>  			i-cache-line-size = <32>;
> -			d-cache-size = <0x4000>;	/* L1, 16K          */
> -			i-cache-size = <0x4000>;	/* L1, 16K          */
> -			timebase-frequency = <0>;	/* From Bootloader  */
> -			bus-frequency = <0>;		/* From Bootloader  */
> -			clock-frequency = <0>;		/* From Bootloader  */
> +			d-cache-size = <0x4000>;	// L1, 16K
> +			i-cache-size = <0x4000>;	// L1, 16K
> +			timebase-frequency = <0>;	// from bootloader
> +			bus-frequency = <0>;		// from bootloader
> +			clock-frequency = <0>;		// from bootloader
>  		};
>  	};
>  
>  	memory {
>  		device_type = "memory";
> -		reg = <0x00000000 0x04000000>;	/* 64MB */
> +		reg = <0x00000000 0x04000000>;	// 64MB
>  	};
>  
>  	soc5200@f0000000 {
>  		#address-cells = <1>;
>  		#size-cells = <1>;
>  		compatible = "fsl,mpc5200b-immr";
> -		ranges = <0x0 0xf0000000 0x0000c000>;
> -		bus-frequency = <0>;		/* From bootloader */
> -		system-frequency = <0>;		/* From bootloader */
> +		ranges = <0 0xf0000000 0x0000c000>;
> +		bus-frequency = <0>;		// from bootloader
> +		system-frequency = <0>;		// from bootloader
>  
>  		cdm@200 {
>  			compatible = "fsl,mpc5200b-cdm","fsl,mpc5200-cdm";
> @@ -56,87 +57,70 @@
>  		};
>  
>  		mpc5200_pic: interrupt-controller@500 {
> -			/* 5200 interrupts are encoded into two levels; */
> +			// 5200 interrupts are encoded into two levels;
>  			interrupt-controller;
>  			#interrupt-cells = <3>;
> -			device_type = "interrupt-controller";
>  			compatible = "fsl,mpc5200b-pic","fsl,mpc5200-pic";
>  			reg = <0x500 0x80>;
>  		};
>  
> -		timer@600 {	/* General Purpose Timer */
> +		timer@600 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <0>;
>  			reg = <0x600 0x10>;
> -			interrupts = <0x1 0x9 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 9 0>;
>  			fsl,has-wdt;
>  		};
>  
> -		timer@610 {	/* General Purpose Timer */
> +		timer@610 {	// General Purpose Timer
>  			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
> -			cell-index = <1>;
>  			reg = <0x610 0x10>;
> -			interrupts = <0x1 0xa 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 10 0>;
>  		};
>  
> -		gpt2: timer@620 { /* General Purpose Timer in GPIO mode */
> +		gpt2: timer@620 {	// General Purpose Timer in GPIO mode
>  			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
> -			cell-index = <2>;
>  			reg = <0x620 0x10>;
> -			interrupts = <0x1 0xb 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 11 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
>  
> -		gpt3: timer@630 { /* General Purpose Timer in GPIO mode */
> +		gpt3: timer@630 {	// General Purpose Timer in GPIO mode
>  			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
> -			cell-index = <3>;
>  			reg = <0x630 0x10>;
> -			interrupts = <0x1 0xc 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 12 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
>  
> -		gpt4: timer@640 { /* General Purpose Timer in GPIO mode */
> +		gpt4: timer@640 {	// General Purpose Timer in GPIO mode
>  			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
> -			cell-index = <4>;
>  			reg = <0x640 0x10>;
> -			interrupts = <0x1 0xd 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 13 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
>  
> -		gpt5: timer@650 { /* General Purpose Timer in GPIO mode */
> +		gpt5: timer@650 {	// General Purpose Timer in GPIO mode
>  			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
> -			cell-index = <5>;
>  			reg = <0x650 0x10>;
> -			interrupts = <0x1 0xe 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 14 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
>  
> -		gpt6: timer@660 { /* General Purpose Timer in GPIO mode */
> +		gpt6: timer@660 {	// General Purpose Timer in GPIO mode
>  			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
> -			cell-index = <6>;
>  			reg = <0x660 0x10>;
> -			interrupts = <0x1 0xf 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 15 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
>  
> -		gpt7: timer@670 { /* General Purpose Timer in GPIO mode */
> +		gpt7: timer@670 {	// General Purpose Timer in GPIO mode
>  			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
> -			cell-index = <7>;
>  			reg = <0x670 0x10>;
> -			interrupts = <0x1 0x10 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 16 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
> @@ -144,40 +128,33 @@
>  		rtc@800 {	// Real time clock
>  			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
>  			reg = <0x800 0x100>;
> -			interrupts = <0x1 0x5 0x0 0x1 0x6 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 5 0 1 6 0>;
>  		};
>  
>  		can@900 {
>  			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
> -			cell-index = <0>;
> -			interrupts = <0x2 0x11 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 17 0>;
>  			reg = <0x900 0x80>;
>  		};
>  
>  		can@980 {
>  			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
> -			cell-index = <1>;
> -			interrupts = <0x2 0x12 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 18 0>;
>  			reg = <0x980 0x80>;
>  		};
>  
>  		gpio_simple: gpio@b00 {
>  			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
>  			reg = <0xb00 0x40>;
> -			interrupts = <0x1 0x7 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 7 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
>  
> -		gpio_wkup: gpio-wkup@c00 {
> +		gpio_wkup: gpio@c00 {
>  			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
>  			reg = <0xc00 0x40>;
> -			interrupts = <0x1 0x8 0x0 0x0 0x3 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <1 8 0 0 3 0>;
>  			gpio-controller;
>  			#gpio-cells = <2>;
>  		};
> @@ -185,26 +162,22 @@
>  		spi@f00 {
>  			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
>  			reg = <0xf00 0x20>;
> -			interrupts = <0x2 0xd 0x0 0x2 0xe 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 13 0 2 14 0>;
>  		};
>  
>  		usb@1000 {
>  			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
>  			reg = <0x1000 0xff>;
> -			interrupts = <0x2 0x6 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 6 0>;
>  		};
>  
>  		dma-controller@1200 {
> -			device_type = "dma-controller";
>  			compatible = "fsl,mpc5200b-bestcomm","fsl,mpc5200-bestcomm";
>  			reg = <0x1200 0x80>;
> -			interrupts = <0x3 0x0 0x0  0x3 0x1 0x0  0x3 0x2 0x0  0x3 0x3 0x0
> -			              0x3 0x4 0x0  0x3 0x5 0x0  0x3 0x6 0x0  0x3 0x7 0x0
> -			              0x3 0x8 0x0  0x3 0x9 0x0  0x3 0xa 0x0  0x3 0xb 0x0
> -			              0x3 0xc 0x0  0x3 0xd 0x0  0x3 0xe 0x0  0x3 0xf 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <3 0 0  3 1 0  3 2 0  3 3 0
> +			              3 4 0  3 5 0  3 6 0  3 7 0
> +			              3 8 0  3 9 0  3 10 0  3 11 0
> +			              3 12 0  3 13 0  3 14 0  3 15 0>;
>  		};
>  
>  		xlb@1f00 {
> @@ -213,24 +186,19 @@
>  		};
>  
>  		ac97@2000 { /* PSC1 in ac97 mode */
> -			device_type = "sound";
>  			compatible = "mpc5200b-psc-ac97","fsl,mpc5200b-psc-ac97";
>  			cell-index = <0>;
>  			reg = <0x2000 0x100>;
> -			interrupts = <0x2 0x2 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 1 0>;
>  		};
>  
>  		/* PSC2 port is used by CAN1/2 */
>  
>  		serial@2400 { /* PSC3 in UART mode */
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
> -			port-number = <0>;
>  			cell-index = <2>;
>  			reg = <0x2400 0x100>;
> -			interrupts = <0x2 0x3 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 3 0>;
>  		};
>  
>  		/* PSC4 is ??? */
> @@ -238,55 +206,44 @@
>  		/* PSC5 is ??? */
>  
>  		serial@2c00 { /* PSC6 in UART mode */
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
> -			port-number = <1>;
>  			cell-index = <5>;
>  			reg = <0x2c00 0x100>;
> -			interrupts = <0x2 0x4 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 4 0>;
>  		};
>  
>  		ethernet@3000 {
> -			device_type = "network";
>  			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
>  			reg = <0x3000 0x400>;
> -			local-mac-address = [00 00 00 00 00 00];
> -			interrupts = <0x2 0x5 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			local-mac-address = [ 00 00 00 00 00 00 ];
> +			interrupts = <2 5 0>;
>  			phy-handle = <&phy0>;
>  		};
>  
>  		mdio@3000 {
>  			#address-cells = <1>;
>  			#size-cells = <0>;
> -			compatible = "fsl,mpc5200b-mdio", "fsl,mpc5200-mdio";
> -			reg = <0x3000 0x400>;	/* fec range, since we need to setup fec interrupts */
> -			interrupts = <0x2 0x5 0x0>;	/* these are for "mii command finished", not link changes & co. */
> -			interrupt-parent = <&mpc5200_pic>;
> -
> -			phy0:ethernet-phy@0 {
> -				device_type = "ethernet-phy";
> -				reg = <0x0>;
> +			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
> +			reg = <0x3000 0x400>;	// fec range, since we need to setup fec interrupts
> +			interrupts = <2 5 0>;	// these are for "mii command finished", not link changes & co.
> +
> +			phy0: ethernet-phy@0 {
> +				reg = <0>;
>  			};
>  		};
>  
>  		ata@3a00 {
> -			device_type = "ata";
>  			compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
>  			reg = <0x3a00 0x100>;
> -			interrupts = <0x2 0x7 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 7 0>;
>  		};
>  
>  		i2c@3d00 {
>  			#address-cells = <1>;
>  			#size-cells = <0>;
>  			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
> -			cell-index = <0>;
>  			reg = <0x3d00 0x40>;
> -			interrupts = <0x2 0xf 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 15 0>;
>  			fsl5200-clocking;
>  		};
>  
> @@ -294,10 +251,8 @@
>  			#address-cells = <1>;
>  			#size-cells = <0>;
>  			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
> -			cell-index = <1>;
>  			reg = <0x3d40 0x40>;
> -			interrupts = <0x2 0x10 0x0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			interrupts = <2 16 0>;
>  			fsl5200-clocking;
>  			rtc@51 {
>  				compatible = "nxp,pcf8563";
> @@ -307,7 +262,7 @@
>  		};
>  
>  		sram@8000 {
> -			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram","sram";
> +			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
>  			reg = <0x8000 0x4000>;
>  		};
>  
> @@ -340,22 +295,21 @@
>  		device_type = "pci";
>  		compatible = "fsl,mpc5200b-pci","fsl,mpc5200-pci";
>  		reg = <0xf0000d00 0x100>;
> -		interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
> -		interrupt-map = <0xc000 0x0 0x0 0x1 &mpc5200_pic 0x0 0x0 0x3 /* 1st slot */
> -				 0xc000 0x0 0x0 0x2 &mpc5200_pic 0x1 0x1 0x3
> -				 0xc000 0x0 0x0 0x3 &mpc5200_pic 0x1 0x2 0x3
> -				 0xc000 0x0 0x0 0x4 &mpc5200_pic 0x1 0x3 0x3
> -
> -				 0xc800 0x0 0x0 0x1 &mpc5200_pic 0x1 0x1 0x3 /* 2nd slot */
> -				 0xc800 0x0 0x0 0x2 &mpc5200_pic 0x1 0x2 0x3
> -				 0xc800 0x0 0x0 0x3 &mpc5200_pic 0x1 0x3 0x3
> -				 0xc800 0x0 0x0 0x4 &mpc5200_pic 0x0 0x0 0x3>;
> +		interrupt-map-mask = <0xf800 0 0 7>;
> +		interrupt-map = <0xc000 0 0 1 &mpc5200_pic 0 0 3 // 1st slot
> +				 0xc000 0 0 2 &mpc5200_pic 1 1 3
> +				 0xc000 0 0 3 &mpc5200_pic 1 2 3
> +				 0xc000 0 0 4 &mpc5200_pic 1 3 3
> +
> +				 0xc800 0 0 1 &mpc5200_pic 1 1 3 // 2nd slot
> +				 0xc800 0 0 2 &mpc5200_pic 1 2 3
> +				 0xc800 0 0 3 &mpc5200_pic 1 3 3
> +				 0xc800 0 0 4 &mpc5200_pic 0 0 3>;
>  		clock-frequency = <0>; // From boot loader
> -		interrupts = <0x2 0x8 0x0 0x2 0x9 0x0 0x2 0xa 0x0>;
> -		interrupt-parent = <&mpc5200_pic>;
> +		interrupts = <2 8 0 2 9 0 2 10 0>;
>  		bus-range = <0 0>;
> -		ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x20000000
> -			  0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
> -			  0x01000000 0x0 0x00000000 0xb0000000 0x0 0x01000000>;
> +		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000
> +			  0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
> +			  0x01000000 0 0x00000000 0xb0000000 0 0x01000000>;
>  	};
>  };
> diff --git a/arch/powerpc/boot/dts/tqm5200.dts b/arch/powerpc/boot/dts/tqm5200.dts
> index 906302e..c9590b5 100644
> --- a/arch/powerpc/boot/dts/tqm5200.dts
> +++ b/arch/powerpc/boot/dts/tqm5200.dts
> @@ -17,6 +17,7 @@
>  	compatible = "tqc,tqm5200";
>  	#address-cells = <1>;
>  	#size-cells = <1>;
> +	interrupt-parent = <&mpc5200_pic>;
>  
>  	cpus {
>  		#address-cells = <1>;
> @@ -66,36 +67,33 @@
>  			compatible = "fsl,mpc5200-gpt";
>  			reg = <0x600 0x10>;
>  			interrupts = <1 9 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl,has-wdt;
>  		};
>  
>  		can@900 {
>  			compatible = "fsl,mpc5200-mscan";
>  			interrupts = <2 17 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			reg = <0x900 0x80>;
>  		};
>  
>  		can@980 {
>  			compatible = "fsl,mpc5200-mscan";
>  			interrupts = <2 18 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			reg = <0x980 0x80>;
>  		};
>  
> -		gpio@b00 {
> +		gpio_simple: gpio@b00 {
>  			compatible = "fsl,mpc5200-gpio";
>  			reg = <0xb00 0x40>;
>  			interrupts = <1 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
>  		};
>  
>  		usb@1000 {
>  			compatible = "fsl,mpc5200-ohci","ohci-be";
>  			reg = <0x1000 0xff>;
>  			interrupts = <2 6 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		dma-controller@1200 {
> @@ -105,7 +103,6 @@
>  			              3 4 0  3 5 0  3 6 0  3 7 0
>  			              3 8 0  3 9 0  3 10 0  3 11 0
>  			              3 12 0  3 13 0  3 14 0  3 15 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		xlb@1f00 {
> @@ -114,39 +111,28 @@
>  		};
>  
>  		serial@2000 {		// PSC1
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200-psc-uart";
> -			port-number = <0>;  // Logical port assignment
>  			reg = <0x2000 0x100>;
>  			interrupts = <2 1 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		serial@2200 {		// PSC2
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200-psc-uart";
> -			port-number = <1>;  // Logical port assignment
>  			reg = <0x2200 0x100>;
>  			interrupts = <2 2 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		serial@2400 {		// PSC3
> -			device_type = "serial";
>  			compatible = "fsl,mpc5200-psc-uart";
> -			port-number = <2>;  // Logical port assignment
>  			reg = <0x2400 0x100>;
>  			interrupts = <2 3 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		ethernet@3000 {
> -			device_type = "network";
>  			compatible = "fsl,mpc5200-fec";
>  			reg = <0x3000 0x400>;
>  			local-mac-address = [ 00 00 00 00 00 00 ];
>  			interrupts = <2 5 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			phy-handle = <&phy0>;
>  		};
>  
> @@ -156,10 +142,8 @@
>  			compatible = "fsl,mpc5200-mdio";
>  			reg = <0x3000 0x400>;       // fec range, since we need to setup fec interrupts
>  			interrupts = <2 5 0>;   // these are for "mii command finished", not link changes & co.
> -			interrupt-parent = <&mpc5200_pic>;
>  
>  			phy0: ethernet-phy@0 {
> -				device_type = "ethernet-phy";
>  				reg = <0>;
>  			};
>  		};
> @@ -168,7 +152,6 @@
>  			compatible = "fsl,mpc5200-ata";
>  			reg = <0x3a00 0x100>;
>  			interrupts = <2 7 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  		};
>  
>  		i2c@3d40 {
> @@ -177,7 +160,6 @@
>  			compatible = "fsl,mpc5200-i2c","fsl-i2c";
>  			reg = <0x3d40 0x40>;
>  			interrupts = <2 16 0>;
> -			interrupt-parent = <&mpc5200_pic>;
>  			fsl5200-clocking;
>  
>  			 rtc@68 {
> @@ -192,9 +174,8 @@
>  		};
>  	};
>  
> -	lpb {
> -		model = "fsl,lpb";
> -		compatible = "fsl,lpb";
> +	localbus {
> +		compatible = "fsl,mpc5200-lpb","simple-bus";
>  		#address-cells = <2>;
>  		#size-cells = <1>;
>  		ranges = <0 0 0xfc000000 0x02000000>;
> @@ -223,7 +204,6 @@
>  				 0xc000 0 0 4 &mpc5200_pic 0 0 3>;
>  		clock-frequency = <0>; // From boot loader
>  		interrupts = <2 8 0 2 9 0 2 10 0>;
> -		interrupt-parent = <&mpc5200_pic>;
>  		bus-range = <0 0>;
>  		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x10000000
>  			  0x02000000 0 0x90000000 0x90000000 0 0x10000000
>

Patch

diff --git a/arch/powerpc/boot/dts/cm5200.dts b/arch/powerpc/boot/dts/cm5200.dts
index 2f74cc4..11ada32 100644
--- a/arch/powerpc/boot/dts/cm5200.dts
+++ b/arch/powerpc/boot/dts/cm5200.dts
@@ -17,6 +17,7 @@ 
 	compatible = "schindler,cm5200";
 	#address-cells = <1>;
 	#size-cells = <1>;
+	interrupt-parent = <&mpc5200_pic>;
 
 	cpus {
 		#address-cells = <1>;
@@ -66,7 +67,6 @@ 
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x600 0x10>;
 			interrupts = <1 9 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl,has-wdt;
 		};
 
@@ -74,84 +74,76 @@ 
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x610 0x10>;
 			interrupts = <1 10 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@620 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x620 0x10>;
 			interrupts = <1 11 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@630 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x630 0x10>;
 			interrupts = <1 12 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@640 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x640 0x10>;
 			interrupts = <1 13 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@650 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x650 0x10>;
 			interrupts = <1 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@660 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x660 0x10>;
 			interrupts = <1 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@670 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x670 0x10>;
 			interrupts = <1 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		rtc@800 {	// Real time clock
 			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
 			reg = <0x800 0x100>;
 			interrupts = <1 5 0 1 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
-		gpio@b00 {
+		gpio_simple: gpio@b00 {
 			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
 			reg = <0xb00 0x40>;
 			interrupts = <1 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
+			gpio-controller;
+			#gpio-cells = <2>;
 		};
 
-		gpio@c00 {
+		gpio_wkup: gpio@c00 {
 			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
 			reg = <0xc00 0x40>;
 			interrupts = <1 8 0 0 3 0>;
-			interrupt-parent = <&mpc5200_pic>;
+			gpio-controller;
+			#gpio-cells = <2>;
 		};
 
 		spi@f00 {
 			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
 			reg = <0xf00 0x20>;
 			interrupts = <2 13 0 2 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		usb@1000 {
 			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
 			reg = <0x1000 0xff>;
 			interrupts = <2 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		dma-controller@1200 {
@@ -161,7 +153,6 @@ 
 			              3 4 0  3 5 0  3 6 0  3 7 0
 			              3 8 0  3 9 0  3 10 0  3 11 0
 			              3 12 0  3 13 0  3 14 0  3 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		xlb@1f00 {
@@ -170,48 +161,34 @@ 
 		};
 
 		serial@2000 {		// PSC1
-			device_type = "serial";
 			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
-			port-number = <0>;  // Logical port assignment
 			reg = <0x2000 0x100>;
 			interrupts = <2 1 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		serial@2200 {		// PSC2
-			device_type = "serial";
 			compatible = "fsl,mpc5200-psc-uart";
-			port-number = <1>;  // Logical port assignment
 			reg = <0x2200 0x100>;
 			interrupts = <2 2 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		serial@2400 {		// PSC3
-			device_type = "serial";
 			compatible = "fsl,mpc5200-psc-uart";
-			port-number = <2>;  // Logical port assignment
 			reg = <0x2400 0x100>;
 			interrupts = <2 3 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		serial@2c00 {		// PSC6
-			device_type = "serial";
 			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
-			port-number = <5>;  // Logical port assignment
 			reg = <0x2c00 0x100>;
 			interrupts = <2 4 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		ethernet@3000 {
-			device_type = "network";
 			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
 			reg = <0x3000 0x400>;
 			local-mac-address = [ 00 00 00 00 00 00 ];
 			interrupts = <2 5 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			phy-handle = <&phy0>;
 		};
 
@@ -221,10 +198,8 @@ 
 			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
 			reg = <0x3000 0x400>;       // fec range, since we need to setup fec interrupts
 			interrupts = <2 5 0>;   // these are for "mii command finished", not link changes & co.
-			interrupt-parent = <&mpc5200_pic>;
 
 			phy0: ethernet-phy@0 {
-				device_type = "ethernet-phy";
 				reg = <0>;
 			};
 		};
@@ -235,7 +210,6 @@ 
 			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
 			reg = <0x3d40 0x40>;
 			interrupts = <2 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl5200-clocking;
 		};
 
@@ -245,9 +219,8 @@ 
 		};
 	};
 
-	lpb {
-		model = "fsl,lpb";
-		compatible = "fsl,lpb";
+	localbus {
+		compatible = "fsl,mpc5200b-lpb","simple-bus";
 		#address-cells = <2>;
 		#size-cells = <1>;
 		ranges = <0 0 0xfc000000 0x2000000>;
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index 3f7a5dc..de30b3f 100644
--- a/arch/powerpc/boot/dts/lite5200.dts
+++ b/arch/powerpc/boot/dts/lite5200.dts
@@ -17,6 +17,7 @@ 
 	compatible = "fsl,lite5200";
 	#address-cells = <1>;
 	#size-cells = <1>;
+	interrupt-parent = <&mpc5200_pic>;
 
 	cpus {
 		#address-cells = <1>;
@@ -58,96 +59,74 @@ 
 			// 5200 interrupts are encoded into two levels;
 			interrupt-controller;
 			#interrupt-cells = <3>;
-			device_type = "interrupt-controller";
 			compatible = "fsl,mpc5200-pic";
 			reg = <0x500 0x80>;
 		};
 
 		timer@600 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <0>;
 			reg = <0x600 0x10>;
 			interrupts = <1 9 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl,has-wdt;
 		};
 
 		timer@610 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <1>;
 			reg = <0x610 0x10>;
 			interrupts = <1 10 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@620 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <2>;
 			reg = <0x620 0x10>;
 			interrupts = <1 11 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@630 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <3>;
 			reg = <0x630 0x10>;
 			interrupts = <1 12 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@640 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <4>;
 			reg = <0x640 0x10>;
 			interrupts = <1 13 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@650 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <5>;
 			reg = <0x650 0x10>;
 			interrupts = <1 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@660 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <6>;
 			reg = <0x660 0x10>;
 			interrupts = <1 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@670 {	// General Purpose Timer
 			compatible = "fsl,mpc5200-gpt";
-			cell-index = <7>;
 			reg = <0x670 0x10>;
 			interrupts = <1 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		rtc@800 {	// Real time clock
 			compatible = "fsl,mpc5200-rtc";
 			reg = <0x800 0x100>;
 			interrupts = <1 5 0 1 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		can@900 {
 			compatible = "fsl,mpc5200-mscan";
-			cell-index = <0>;
 			interrupts = <2 17 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			reg = <0x900 0x80>;
 		};
 
 		can@980 {
 			compatible = "fsl,mpc5200-mscan";
-			cell-index = <1>;
 			interrupts = <2 18 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			reg = <0x980 0x80>;
 		};
 
@@ -155,39 +134,33 @@ 
 			compatible = "fsl,mpc5200-gpio";
 			reg = <0xb00 0x40>;
 			interrupts = <1 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		gpio@c00 {
 			compatible = "fsl,mpc5200-gpio-wkup";
 			reg = <0xc00 0x40>;
 			interrupts = <1 8 0 0 3 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		spi@f00 {
 			compatible = "fsl,mpc5200-spi";
 			reg = <0xf00 0x20>;
 			interrupts = <2 13 0 2 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		usb@1000 {
 			compatible = "fsl,mpc5200-ohci","ohci-be";
 			reg = <0x1000 0xff>;
 			interrupts = <2 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		dma-controller@1200 {
-			device_type = "dma-controller";
 			compatible = "fsl,mpc5200-bestcomm";
 			reg = <0x1200 0x80>;
 			interrupts = <3 0 0  3 1 0  3 2 0  3 3 0
 			              3 4 0  3 5 0  3 6 0  3 7 0
 			              3 8 0  3 9 0  3 10 0  3 11 0
 			              3 12 0  3 13 0  3 14 0  3 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		xlb@1f00 {
@@ -196,13 +169,10 @@ 
 		};
 
 		serial@2000 {		// PSC1
-			device_type = "serial";
 			compatible = "fsl,mpc5200-psc-uart";
-			port-number = <0>;  // Logical port assignment
 			cell-index = <0>;
 			reg = <0x2000 0x100>;
 			interrupts = <2 1 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		// PSC2 in ac97 mode example
@@ -211,7 +181,6 @@ 
 		//	cell-index = <1>;
 		//	reg = <0x2200 0x100>;
 		//	interrupts = <2 2 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC3 in CODEC mode example
@@ -220,27 +189,22 @@ 
 		//	cell-index = <2>;
 		//	reg = <0x2400 0x100>;
 		//	interrupts = <2 3 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC4 in uart mode example
 		//serial@2600 {		// PSC4
-		//	device_type = "serial";
 		//	compatible = "fsl,mpc5200-psc-uart";
 		//	cell-index = <3>;
 		//	reg = <0x2600 0x100>;
 		//	interrupts = <2 11 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC5 in uart mode example
 		//serial@2800 {		// PSC5
-		//	device_type = "serial";
 		//	compatible = "fsl,mpc5200-psc-uart";
 		//	cell-index = <4>;
 		//	reg = <0x2800 0x100>;
 		//	interrupts = <2 12 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC6 in spi mode example
@@ -249,16 +213,13 @@ 
 		//	cell-index = <5>;
 		//	reg = <0x2c00 0x100>;
 		//	interrupts = <2 4 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		ethernet@3000 {
-			device_type = "network";
 			compatible = "fsl,mpc5200-fec";
 			reg = <0x3000 0x400>;
 			local-mac-address = [ 00 00 00 00 00 00 ];
 			interrupts = <2 5 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			phy-handle = <&phy0>;
 		};
 
@@ -268,30 +229,24 @@ 
 			compatible = "fsl,mpc5200-mdio";
 			reg = <0x3000 0x400>;	// fec range, since we need to setup fec interrupts
 			interrupts = <2 5 0>;	// these are for "mii command finished", not link changes & co.
-			interrupt-parent = <&mpc5200_pic>;
 
 			phy0: ethernet-phy@1 {
-				device_type = "ethernet-phy";
 				reg = <1>;
 			};
 		};
 
 		ata@3a00 {
-			device_type = "ata";
 			compatible = "fsl,mpc5200-ata";
 			reg = <0x3a00 0x100>;
 			interrupts = <2 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		i2c@3d00 {
 			#address-cells = <1>;
 			#size-cells = <0>;
 			compatible = "fsl,mpc5200-i2c","fsl-i2c";
-			cell-index = <0>;
 			reg = <0x3d00 0x40>;
 			interrupts = <2 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl5200-clocking;
 		};
 
@@ -299,14 +254,12 @@ 
 			#address-cells = <1>;
 			#size-cells = <0>;
 			compatible = "fsl,mpc5200-i2c","fsl-i2c";
-			cell-index = <1>;
 			reg = <0x3d40 0x40>;
 			interrupts = <2 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl5200-clocking;
 		};
 		sram@8000 {
-			compatible = "fsl,mpc5200-sram","sram";
+			compatible = "fsl,mpc5200-sram";
 			reg = <0x8000 0x4000>;
 		};
 	};
@@ -325,7 +278,6 @@ 
 				 0xc000 0 0 4 &mpc5200_pic 0 0 3>;
 		clock-frequency = <0>; // From boot loader
 		interrupts = <2 8 0 2 9 0 2 10 0>;
-		interrupt-parent = <&mpc5200_pic>;
 		bus-range = <0 0>;
 		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000
 			  0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index 63e3bb4..c63e356 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -17,6 +17,7 @@ 
 	compatible = "fsl,lite5200b";
 	#address-cells = <1>;
 	#size-cells = <1>;
+	interrupt-parent = <&mpc5200_pic>;
 
 	cpus {
 		#address-cells = <1>;
@@ -58,136 +59,112 @@ 
 			// 5200 interrupts are encoded into two levels;
 			interrupt-controller;
 			#interrupt-cells = <3>;
-			device_type = "interrupt-controller";
 			compatible = "fsl,mpc5200b-pic","fsl,mpc5200-pic";
 			reg = <0x500 0x80>;
 		};
 
 		timer@600 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <0>;
 			reg = <0x600 0x10>;
 			interrupts = <1 9 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl,has-wdt;
 		};
 
 		timer@610 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <1>;
 			reg = <0x610 0x10>;
 			interrupts = <1 10 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@620 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <2>;
 			reg = <0x620 0x10>;
 			interrupts = <1 11 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@630 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <3>;
 			reg = <0x630 0x10>;
 			interrupts = <1 12 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@640 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <4>;
 			reg = <0x640 0x10>;
 			interrupts = <1 13 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@650 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <5>;
 			reg = <0x650 0x10>;
 			interrupts = <1 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@660 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <6>;
 			reg = <0x660 0x10>;
 			interrupts = <1 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@670 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <7>;
 			reg = <0x670 0x10>;
 			interrupts = <1 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		rtc@800 {	// Real time clock
 			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
 			reg = <0x800 0x100>;
 			interrupts = <1 5 0 1 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		can@900 {
 			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
-			cell-index = <0>;
 			interrupts = <2 17 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			reg = <0x900 0x80>;
 		};
 
 		can@980 {
 			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
-			cell-index = <1>;
 			interrupts = <2 18 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			reg = <0x980 0x80>;
 		};
 
-		gpio@b00 {
+		gpio_simple: gpio@b00 {
 			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
 			reg = <0xb00 0x40>;
 			interrupts = <1 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
+			gpio-controller;
+			#gpio-cells = <2>;
 		};
 
-		gpio@c00 {
+		gpio_wkup: gpio@c00 {
 			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
 			reg = <0xc00 0x40>;
 			interrupts = <1 8 0 0 3 0>;
-			interrupt-parent = <&mpc5200_pic>;
+			gpio-controller;
+			#gpio-cells = <2>;
 		};
 
 		spi@f00 {
 			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
 			reg = <0xf00 0x20>;
 			interrupts = <2 13 0 2 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		usb@1000 {
 			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
 			reg = <0x1000 0xff>;
 			interrupts = <2 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		dma-controller@1200 {
-			device_type = "dma-controller";
 			compatible = "fsl,mpc5200b-bestcomm","fsl,mpc5200-bestcomm";
 			reg = <0x1200 0x80>;
 			interrupts = <3 0 0  3 1 0  3 2 0  3 3 0
 			              3 4 0  3 5 0  3 6 0  3 7 0
 			              3 8 0  3 9 0  3 10 0  3 11 0
 			              3 12 0  3 13 0  3 14 0  3 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		xlb@1f00 {
@@ -196,13 +173,10 @@ 
 		};
 
 		serial@2000 {		// PSC1
-			device_type = "serial";
 			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
-			port-number = <0>;  // Logical port assignment
 			cell-index = <0>;
 			reg = <0x2000 0x100>;
 			interrupts = <2 1 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		// PSC2 in ac97 mode example
@@ -211,7 +185,6 @@ 
 		//	cell-index = <1>;
 		//	reg = <0x2200 0x100>;
 		//	interrupts = <2 2 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC3 in CODEC mode example
@@ -220,27 +193,22 @@ 
 		//	cell-index = <2>;
 		//	reg = <0x2400 0x100>;
 		//	interrupts = <2 3 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC4 in uart mode example
 		//serial@2600 {		// PSC4
-		//	device_type = "serial";
 		//	compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
 		//	cell-index = <3>;
 		//	reg = <0x2600 0x100>;
 		//	interrupts = <2 11 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC5 in uart mode example
 		//serial@2800 {		// PSC5
-		//	device_type = "serial";
 		//	compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
 		//	cell-index = <4>;
 		//	reg = <0x2800 0x100>;
 		//	interrupts = <2 12 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		// PSC6 in spi mode example
@@ -249,49 +217,40 @@ 
 		//	cell-index = <5>;
 		//	reg = <0x2c00 0x100>;
 		//	interrupts = <2 4 0>;
-		//	interrupt-parent = <&mpc5200_pic>;
 		//};
 
 		ethernet@3000 {
-			device_type = "network";
 			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
 			reg = <0x3000 0x400>;
 			local-mac-address = [ 00 00 00 00 00 00 ];
 			interrupts = <2 5 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			phy-handle = <&phy0>;
 		};
 
 		mdio@3000 {
 			#address-cells = <1>;
 			#size-cells = <0>;
-			compatible = "fsl,mpc5200b-mdio", "fsl,mpc5200-mdio";
+			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
 			reg = <0x3000 0x400>;	// fec range, since we need to setup fec interrupts
 			interrupts = <2 5 0>;	// these are for "mii command finished", not link changes & co.
-			interrupt-parent = <&mpc5200_pic>;
 
 			phy0: ethernet-phy@0 {
-				device_type = "ethernet-phy";
 				reg = <0>;
 			};
 		};
 
 		ata@3a00 {
-			device_type = "ata";
 			compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
 			reg = <0x3a00 0x100>;
 			interrupts = <2 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		i2c@3d00 {
 			#address-cells = <1>;
 			#size-cells = <0>;
 			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
-			cell-index = <0>;
 			reg = <0x3d00 0x40>;
 			interrupts = <2 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl5200-clocking;
 		};
 
@@ -299,14 +258,13 @@ 
 			#address-cells = <1>;
 			#size-cells = <0>;
 			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
-			cell-index = <1>;
 			reg = <0x3d40 0x40>;
 			interrupts = <2 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl5200-clocking;
 		};
+
 		sram@8000 {
-			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram","sram";
+			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
 			reg = <0x8000 0x4000>;
 		};
 	};
@@ -330,7 +288,6 @@ 
 				 0xc800 0 0 4 &mpc5200_pic 0 0 3>;
 		clock-frequency = <0>; // From boot loader
 		interrupts = <2 8 0 2 9 0 2 10 0>;
-		interrupt-parent = <&mpc5200_pic>;
 		bus-range = <0 0>;
 		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000
 			  0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
diff --git a/arch/powerpc/boot/dts/motionpro.dts b/arch/powerpc/boot/dts/motionpro.dts
index 52ba6f9..7be8ca0 100644
--- a/arch/powerpc/boot/dts/motionpro.dts
+++ b/arch/powerpc/boot/dts/motionpro.dts
@@ -17,6 +17,7 @@ 
 	compatible = "promess,motionpro";
 	#address-cells = <1>;
 	#size-cells = <1>;
+	interrupt-parent = <&mpc5200_pic>;
 
 	cpus {
 		#address-cells = <1>;
@@ -66,7 +67,6 @@ 
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x600 0x10>;
 			interrupts = <1 9 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl,has-wdt;
 		};
 
@@ -74,35 +74,30 @@ 
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x610 0x10>;
 			interrupts = <1 10 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@620 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x620 0x10>;
 			interrupts = <1 11 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@630 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x630 0x10>;
 			interrupts = <1 12 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@640 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x640 0x10>;
 			interrupts = <1 13 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		timer@650 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
 			reg = <0x650 0x10>;
 			interrupts = <1 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		motionpro-led@660 {	// Motion-PRO status LED
@@ -110,7 +105,6 @@ 
 			label = "motionpro-statusled";
 			reg = <0x660 0x10>;
 			interrupts = <1 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			blink-delay = <100>; // 100 msec
 		};
 
@@ -119,49 +113,46 @@ 
 			label = "motionpro-readyled";
 			reg = <0x670 0x10>;
 			interrupts = <1 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		rtc@800 {	// Real time clock
 			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
 			reg = <0x800 0x100>;
 			interrupts = <1 5 0 1 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		can@980 {
 			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
 			interrupts = <2 18 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			reg = <0x980 0x80>;
 		};
 
-		gpio@b00 {
+		gpio_simple: gpio@b00 {
 			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
 			reg = <0xb00 0x40>;
 			interrupts = <1 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
+			gpio-controller;
+			#gpio-cells = <2>;
 		};
 
-		gpio@c00 {
+		gpio_wkup: gpio@c00 {
 			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
 			reg = <0xc00 0x40>;
 			interrupts = <1 8 0 0 3 0>;
-			interrupt-parent = <&mpc5200_pic>;
+			gpio-controller;
+			#gpio-cells = <2>;
 		};
 
 		spi@f00 {
 			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
 			reg = <0xf00 0x20>;
 			interrupts = <2 13 0 2 14 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		usb@1000 {
 			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
 			reg = <0x1000 0xff>;
 			interrupts = <2 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		dma-controller@1200 {
@@ -171,7 +162,6 @@ 
 			              3 4 0  3 5 0  3 6 0  3 7 0
 			              3 8 0  3 9 0  3 10 0  3 11 0
 			              3 12 0  3 13 0  3 14 0  3 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		xlb@1f00 {
@@ -180,12 +170,9 @@ 
 		};
 
 		serial@2000 {		// PSC1
-			device_type = "serial";
 			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
-			port-number = <0>;  // Logical port assignment
 			reg = <0x2000 0x100>;
 			interrupts = <2 1 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		// PSC2 in spi master mode 
@@ -194,26 +181,20 @@ 
 			cell-index = <1>;
 			reg = <0x2200 0x100>;
 			interrupts = <2 2 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		// PSC5 in uart mode
 		serial@2800 {		// PSC5
-			device_type = "serial";
 			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
-			port-number = <4>;  // Logical port assignment
 			reg = <0x2800 0x100>;
 			interrupts = <2 12 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		ethernet@3000 {
-			device_type = "network";
 			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
 			reg = <0x3000 0x400>;
 			local-mac-address = [ 00 00 00 00 00 00 ];
 			interrupts = <2 5 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			phy-handle = <&phy0>;
 		};
 
@@ -223,10 +204,8 @@ 
 			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
 			reg = <0x3000 0x400>;       // fec range, since we need to setup fec interrupts
 			interrupts = <2 5 0>;   // these are for "mii command finished", not link changes & co.
-			interrupt-parent = <&mpc5200_pic>;
 
 			phy0: ethernet-phy@2 {
-				device_type = "ethernet-phy";
 				reg = <2>;
 			};
 		};
@@ -235,7 +214,6 @@ 
 			compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
 			reg = <0x3a00 0x100>;
 			interrupts = <2 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		i2c@3d40 {
@@ -244,7 +222,6 @@ 
 			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
 			reg = <0x3d40 0x40>;
 			interrupts = <2 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl5200-clocking;
 
 			rtc@68 {
@@ -259,8 +236,8 @@ 
 		};
 	};
 
-	lpb {
-		compatible = "fsl,lpb";
+	localbus {
+		compatible = "fsl,mpc5200b-lpb","simple-bus";
 		#address-cells = <2>;
 		#size-cells = <1>;
 		ranges = <0 0 0xff000000 0x01000000
@@ -273,7 +250,6 @@ 
 			compatible = "promess,motionpro-kollmorgen";
 			reg = <1 0 0x10000>;
 			interrupts = <1 1 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		// 8-bit board CPLD on LocalPlus Bus CS2
diff --git a/arch/powerpc/boot/dts/pcm030.dts b/arch/powerpc/boot/dts/pcm030.dts
index be2c11c..8958347 100644
--- a/arch/powerpc/boot/dts/pcm030.dts
+++ b/arch/powerpc/boot/dts/pcm030.dts
@@ -19,6 +19,7 @@ 
 	compatible = "phytec,pcm030";
 	#address-cells = <1>;
 	#size-cells = <1>;
+	interrupt-parent = <&mpc5200_pic>;
 
 	cpus {
 		#address-cells = <1>;
@@ -29,26 +30,26 @@ 
 			reg = <0>;
 			d-cache-line-size = <32>;
 			i-cache-line-size = <32>;
-			d-cache-size = <0x4000>;	/* L1, 16K          */
-			i-cache-size = <0x4000>;	/* L1, 16K          */
-			timebase-frequency = <0>;	/* From Bootloader  */
-			bus-frequency = <0>;		/* From Bootloader  */
-			clock-frequency = <0>;		/* From Bootloader  */
+			d-cache-size = <0x4000>;	// L1, 16K
+			i-cache-size = <0x4000>;	// L1, 16K
+			timebase-frequency = <0>;	// from bootloader
+			bus-frequency = <0>;		// from bootloader
+			clock-frequency = <0>;		// from bootloader
 		};
 	};
 
 	memory {
 		device_type = "memory";
-		reg = <0x00000000 0x04000000>;	/* 64MB */
+		reg = <0x00000000 0x04000000>;	// 64MB
 	};
 
 	soc5200@f0000000 {
 		#address-cells = <1>;
 		#size-cells = <1>;
 		compatible = "fsl,mpc5200b-immr";
-		ranges = <0x0 0xf0000000 0x0000c000>;
-		bus-frequency = <0>;		/* From bootloader */
-		system-frequency = <0>;		/* From bootloader */
+		ranges = <0 0xf0000000 0x0000c000>;
+		bus-frequency = <0>;		// from bootloader
+		system-frequency = <0>;		// from bootloader
 
 		cdm@200 {
 			compatible = "fsl,mpc5200b-cdm","fsl,mpc5200-cdm";
@@ -56,87 +57,70 @@ 
 		};
 
 		mpc5200_pic: interrupt-controller@500 {
-			/* 5200 interrupts are encoded into two levels; */
+			// 5200 interrupts are encoded into two levels;
 			interrupt-controller;
 			#interrupt-cells = <3>;
-			device_type = "interrupt-controller";
 			compatible = "fsl,mpc5200b-pic","fsl,mpc5200-pic";
 			reg = <0x500 0x80>;
 		};
 
-		timer@600 {	/* General Purpose Timer */
+		timer@600 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <0>;
 			reg = <0x600 0x10>;
-			interrupts = <0x1 0x9 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 9 0>;
 			fsl,has-wdt;
 		};
 
-		timer@610 {	/* General Purpose Timer */
+		timer@610 {	// General Purpose Timer
 			compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
-			cell-index = <1>;
 			reg = <0x610 0x10>;
-			interrupts = <0x1 0xa 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 10 0>;
 		};
 
-		gpt2: timer@620 { /* General Purpose Timer in GPIO mode */
+		gpt2: timer@620 {	// General Purpose Timer in GPIO mode
 			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
-			cell-index = <2>;
 			reg = <0x620 0x10>;
-			interrupts = <0x1 0xb 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 11 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpt3: timer@630 { /* General Purpose Timer in GPIO mode */
+		gpt3: timer@630 {	// General Purpose Timer in GPIO mode
 			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
-			cell-index = <3>;
 			reg = <0x630 0x10>;
-			interrupts = <0x1 0xc 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 12 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpt4: timer@640 { /* General Purpose Timer in GPIO mode */
+		gpt4: timer@640 {	// General Purpose Timer in GPIO mode
 			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
-			cell-index = <4>;
 			reg = <0x640 0x10>;
-			interrupts = <0x1 0xd 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 13 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpt5: timer@650 { /* General Purpose Timer in GPIO mode */
+		gpt5: timer@650 {	// General Purpose Timer in GPIO mode
 			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
-			cell-index = <5>;
 			reg = <0x650 0x10>;
-			interrupts = <0x1 0xe 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 14 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpt6: timer@660 { /* General Purpose Timer in GPIO mode */
+		gpt6: timer@660 {	// General Purpose Timer in GPIO mode
 			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
-			cell-index = <6>;
 			reg = <0x660 0x10>;
-			interrupts = <0x1 0xf 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 15 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpt7: timer@670 { /* General Purpose Timer in GPIO mode */
+		gpt7: timer@670 {	// General Purpose Timer in GPIO mode
 			compatible = "fsl,mpc5200b-gpt-gpio","fsl,mpc5200-gpt-gpio";
-			cell-index = <7>;
 			reg = <0x670 0x10>;
-			interrupts = <0x1 0x10 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 16 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
@@ -144,40 +128,33 @@ 
 		rtc@800 {	// Real time clock
 			compatible = "fsl,mpc5200b-rtc","fsl,mpc5200-rtc";
 			reg = <0x800 0x100>;
-			interrupts = <0x1 0x5 0x0 0x1 0x6 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 5 0 1 6 0>;
 		};
 
 		can@900 {
 			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
-			cell-index = <0>;
-			interrupts = <0x2 0x11 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 17 0>;
 			reg = <0x900 0x80>;
 		};
 
 		can@980 {
 			compatible = "fsl,mpc5200b-mscan","fsl,mpc5200-mscan";
-			cell-index = <1>;
-			interrupts = <0x2 0x12 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 18 0>;
 			reg = <0x980 0x80>;
 		};
 
 		gpio_simple: gpio@b00 {
 			compatible = "fsl,mpc5200b-gpio","fsl,mpc5200-gpio";
 			reg = <0xb00 0x40>;
-			interrupts = <0x1 0x7 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 7 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
 
-		gpio_wkup: gpio-wkup@c00 {
+		gpio_wkup: gpio@c00 {
 			compatible = "fsl,mpc5200b-gpio-wkup","fsl,mpc5200-gpio-wkup";
 			reg = <0xc00 0x40>;
-			interrupts = <0x1 0x8 0x0 0x0 0x3 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <1 8 0 0 3 0>;
 			gpio-controller;
 			#gpio-cells = <2>;
 		};
@@ -185,26 +162,22 @@ 
 		spi@f00 {
 			compatible = "fsl,mpc5200b-spi","fsl,mpc5200-spi";
 			reg = <0xf00 0x20>;
-			interrupts = <0x2 0xd 0x0 0x2 0xe 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 13 0 2 14 0>;
 		};
 
 		usb@1000 {
 			compatible = "fsl,mpc5200b-ohci","fsl,mpc5200-ohci","ohci-be";
 			reg = <0x1000 0xff>;
-			interrupts = <0x2 0x6 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 6 0>;
 		};
 
 		dma-controller@1200 {
-			device_type = "dma-controller";
 			compatible = "fsl,mpc5200b-bestcomm","fsl,mpc5200-bestcomm";
 			reg = <0x1200 0x80>;
-			interrupts = <0x3 0x0 0x0  0x3 0x1 0x0  0x3 0x2 0x0  0x3 0x3 0x0
-			              0x3 0x4 0x0  0x3 0x5 0x0  0x3 0x6 0x0  0x3 0x7 0x0
-			              0x3 0x8 0x0  0x3 0x9 0x0  0x3 0xa 0x0  0x3 0xb 0x0
-			              0x3 0xc 0x0  0x3 0xd 0x0  0x3 0xe 0x0  0x3 0xf 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <3 0 0  3 1 0  3 2 0  3 3 0
+			              3 4 0  3 5 0  3 6 0  3 7 0
+			              3 8 0  3 9 0  3 10 0  3 11 0
+			              3 12 0  3 13 0  3 14 0  3 15 0>;
 		};
 
 		xlb@1f00 {
@@ -213,24 +186,19 @@ 
 		};
 
 		ac97@2000 { /* PSC1 in ac97 mode */
-			device_type = "sound";
 			compatible = "mpc5200b-psc-ac97","fsl,mpc5200b-psc-ac97";
 			cell-index = <0>;
 			reg = <0x2000 0x100>;
-			interrupts = <0x2 0x2 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 1 0>;
 		};
 
 		/* PSC2 port is used by CAN1/2 */
 
 		serial@2400 { /* PSC3 in UART mode */
-			device_type = "serial";
 			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
-			port-number = <0>;
 			cell-index = <2>;
 			reg = <0x2400 0x100>;
-			interrupts = <0x2 0x3 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 3 0>;
 		};
 
 		/* PSC4 is ??? */
@@ -238,55 +206,44 @@ 
 		/* PSC5 is ??? */
 
 		serial@2c00 { /* PSC6 in UART mode */
-			device_type = "serial";
 			compatible = "fsl,mpc5200b-psc-uart","fsl,mpc5200-psc-uart";
-			port-number = <1>;
 			cell-index = <5>;
 			reg = <0x2c00 0x100>;
-			interrupts = <0x2 0x4 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 4 0>;
 		};
 
 		ethernet@3000 {
-			device_type = "network";
 			compatible = "fsl,mpc5200b-fec","fsl,mpc5200-fec";
 			reg = <0x3000 0x400>;
-			local-mac-address = [00 00 00 00 00 00];
-			interrupts = <0x2 0x5 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			local-mac-address = [ 00 00 00 00 00 00 ];
+			interrupts = <2 5 0>;
 			phy-handle = <&phy0>;
 		};
 
 		mdio@3000 {
 			#address-cells = <1>;
 			#size-cells = <0>;
-			compatible = "fsl,mpc5200b-mdio", "fsl,mpc5200-mdio";
-			reg = <0x3000 0x400>;	/* fec range, since we need to setup fec interrupts */
-			interrupts = <0x2 0x5 0x0>;	/* these are for "mii command finished", not link changes & co. */
-			interrupt-parent = <&mpc5200_pic>;
-
-			phy0:ethernet-phy@0 {
-				device_type = "ethernet-phy";
-				reg = <0x0>;
+			compatible = "fsl,mpc5200b-mdio","fsl,mpc5200-mdio";
+			reg = <0x3000 0x400>;	// fec range, since we need to setup fec interrupts
+			interrupts = <2 5 0>;	// these are for "mii command finished", not link changes & co.
+
+			phy0: ethernet-phy@0 {
+				reg = <0>;
 			};
 		};
 
 		ata@3a00 {
-			device_type = "ata";
 			compatible = "fsl,mpc5200b-ata","fsl,mpc5200-ata";
 			reg = <0x3a00 0x100>;
-			interrupts = <0x2 0x7 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 7 0>;
 		};
 
 		i2c@3d00 {
 			#address-cells = <1>;
 			#size-cells = <0>;
 			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
-			cell-index = <0>;
 			reg = <0x3d00 0x40>;
-			interrupts = <0x2 0xf 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 15 0>;
 			fsl5200-clocking;
 		};
 
@@ -294,10 +251,8 @@ 
 			#address-cells = <1>;
 			#size-cells = <0>;
 			compatible = "fsl,mpc5200b-i2c","fsl,mpc5200-i2c","fsl-i2c";
-			cell-index = <1>;
 			reg = <0x3d40 0x40>;
-			interrupts = <0x2 0x10 0x0>;
-			interrupt-parent = <&mpc5200_pic>;
+			interrupts = <2 16 0>;
 			fsl5200-clocking;
 			rtc@51 {
 				compatible = "nxp,pcf8563";
@@ -307,7 +262,7 @@ 
 		};
 
 		sram@8000 {
-			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram","sram";
+			compatible = "fsl,mpc5200b-sram","fsl,mpc5200-sram";
 			reg = <0x8000 0x4000>;
 		};
 
@@ -340,22 +295,21 @@ 
 		device_type = "pci";
 		compatible = "fsl,mpc5200b-pci","fsl,mpc5200-pci";
 		reg = <0xf0000d00 0x100>;
-		interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
-		interrupt-map = <0xc000 0x0 0x0 0x1 &mpc5200_pic 0x0 0x0 0x3 /* 1st slot */
-				 0xc000 0x0 0x0 0x2 &mpc5200_pic 0x1 0x1 0x3
-				 0xc000 0x0 0x0 0x3 &mpc5200_pic 0x1 0x2 0x3
-				 0xc000 0x0 0x0 0x4 &mpc5200_pic 0x1 0x3 0x3
-
-				 0xc800 0x0 0x0 0x1 &mpc5200_pic 0x1 0x1 0x3 /* 2nd slot */
-				 0xc800 0x0 0x0 0x2 &mpc5200_pic 0x1 0x2 0x3
-				 0xc800 0x0 0x0 0x3 &mpc5200_pic 0x1 0x3 0x3
-				 0xc800 0x0 0x0 0x4 &mpc5200_pic 0x0 0x0 0x3>;
+		interrupt-map-mask = <0xf800 0 0 7>;
+		interrupt-map = <0xc000 0 0 1 &mpc5200_pic 0 0 3 // 1st slot
+				 0xc000 0 0 2 &mpc5200_pic 1 1 3
+				 0xc000 0 0 3 &mpc5200_pic 1 2 3
+				 0xc000 0 0 4 &mpc5200_pic 1 3 3
+
+				 0xc800 0 0 1 &mpc5200_pic 1 1 3 // 2nd slot
+				 0xc800 0 0 2 &mpc5200_pic 1 2 3
+				 0xc800 0 0 3 &mpc5200_pic 1 3 3
+				 0xc800 0 0 4 &mpc5200_pic 0 0 3>;
 		clock-frequency = <0>; // From boot loader
-		interrupts = <0x2 0x8 0x0 0x2 0x9 0x0 0x2 0xa 0x0>;
-		interrupt-parent = <&mpc5200_pic>;
+		interrupts = <2 8 0 2 9 0 2 10 0>;
 		bus-range = <0 0>;
-		ranges = <0x42000000 0x0 0x80000000 0x80000000 0x0 0x20000000
-			  0x02000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
-			  0x01000000 0x0 0x00000000 0xb0000000 0x0 0x01000000>;
+		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x20000000
+			  0x02000000 0 0xa0000000 0xa0000000 0 0x10000000
+			  0x01000000 0 0x00000000 0xb0000000 0 0x01000000>;
 	};
 };
diff --git a/arch/powerpc/boot/dts/tqm5200.dts b/arch/powerpc/boot/dts/tqm5200.dts
index 906302e..c9590b5 100644
--- a/arch/powerpc/boot/dts/tqm5200.dts
+++ b/arch/powerpc/boot/dts/tqm5200.dts
@@ -17,6 +17,7 @@ 
 	compatible = "tqc,tqm5200";
 	#address-cells = <1>;
 	#size-cells = <1>;
+	interrupt-parent = <&mpc5200_pic>;
 
 	cpus {
 		#address-cells = <1>;
@@ -66,36 +67,33 @@ 
 			compatible = "fsl,mpc5200-gpt";
 			reg = <0x600 0x10>;
 			interrupts = <1 9 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl,has-wdt;
 		};
 
 		can@900 {
 			compatible = "fsl,mpc5200-mscan";
 			interrupts = <2 17 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			reg = <0x900 0x80>;
 		};
 
 		can@980 {
 			compatible = "fsl,mpc5200-mscan";
 			interrupts = <2 18 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			reg = <0x980 0x80>;
 		};
 
-		gpio@b00 {
+		gpio_simple: gpio@b00 {
 			compatible = "fsl,mpc5200-gpio";
 			reg = <0xb00 0x40>;
 			interrupts = <1 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
+			gpio-controller;
+			#gpio-cells = <2>;
 		};
 
 		usb@1000 {
 			compatible = "fsl,mpc5200-ohci","ohci-be";
 			reg = <0x1000 0xff>;
 			interrupts = <2 6 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		dma-controller@1200 {
@@ -105,7 +103,6 @@ 
 			              3 4 0  3 5 0  3 6 0  3 7 0
 			              3 8 0  3 9 0  3 10 0  3 11 0
 			              3 12 0  3 13 0  3 14 0  3 15 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		xlb@1f00 {
@@ -114,39 +111,28 @@ 
 		};
 
 		serial@2000 {		// PSC1
-			device_type = "serial";
 			compatible = "fsl,mpc5200-psc-uart";
-			port-number = <0>;  // Logical port assignment
 			reg = <0x2000 0x100>;
 			interrupts = <2 1 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		serial@2200 {		// PSC2
-			device_type = "serial";
 			compatible = "fsl,mpc5200-psc-uart";
-			port-number = <1>;  // Logical port assignment
 			reg = <0x2200 0x100>;
 			interrupts = <2 2 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		serial@2400 {		// PSC3
-			device_type = "serial";
 			compatible = "fsl,mpc5200-psc-uart";
-			port-number = <2>;  // Logical port assignment
 			reg = <0x2400 0x100>;
 			interrupts = <2 3 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		ethernet@3000 {
-			device_type = "network";
 			compatible = "fsl,mpc5200-fec";
 			reg = <0x3000 0x400>;
 			local-mac-address = [ 00 00 00 00 00 00 ];
 			interrupts = <2 5 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			phy-handle = <&phy0>;
 		};
 
@@ -156,10 +142,8 @@ 
 			compatible = "fsl,mpc5200-mdio";
 			reg = <0x3000 0x400>;       // fec range, since we need to setup fec interrupts
 			interrupts = <2 5 0>;   // these are for "mii command finished", not link changes & co.
-			interrupt-parent = <&mpc5200_pic>;
 
 			phy0: ethernet-phy@0 {
-				device_type = "ethernet-phy";
 				reg = <0>;
 			};
 		};
@@ -168,7 +152,6 @@ 
 			compatible = "fsl,mpc5200-ata";
 			reg = <0x3a00 0x100>;
 			interrupts = <2 7 0>;
-			interrupt-parent = <&mpc5200_pic>;
 		};
 
 		i2c@3d40 {
@@ -177,7 +160,6 @@ 
 			compatible = "fsl,mpc5200-i2c","fsl-i2c";
 			reg = <0x3d40 0x40>;
 			interrupts = <2 16 0>;
-			interrupt-parent = <&mpc5200_pic>;
 			fsl5200-clocking;
 
 			 rtc@68 {
@@ -192,9 +174,8 @@ 
 		};
 	};
 
-	lpb {
-		model = "fsl,lpb";
-		compatible = "fsl,lpb";
+	localbus {
+		compatible = "fsl,mpc5200-lpb","simple-bus";
 		#address-cells = <2>;
 		#size-cells = <1>;
 		ranges = <0 0 0xfc000000 0x02000000>;
@@ -223,7 +204,6 @@ 
 				 0xc000 0 0 4 &mpc5200_pic 0 0 3>;
 		clock-frequency = <0>; // From boot loader
 		interrupts = <2 8 0 2 9 0 2 10 0>;
-		interrupt-parent = <&mpc5200_pic>;
 		bus-range = <0 0>;
 		ranges = <0x42000000 0 0x80000000 0x80000000 0 0x10000000
 			  0x02000000 0 0x90000000 0x90000000 0 0x10000000