LinuxPPC-Dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH] powerpc/fsl: update compatiable on fsl 16550 uart nodes
From: Martyn Welch @ 2011-12-08  9:53 UTC (permalink / raw)
  To: linuxppc-dev
In-Reply-To: <1323326750-6554-1-git-send-email-galak@kernel.crashing.org>

On 08/12/11 06:45, Kumar Gala wrote:
> The Freescale serial port's are pretty much a 16550, however there are
> some FSL specific bugs and features.  Add a "fsl,ns16550" compatiable
> string to allow code to handle those FSL specific issues.
> 
> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>

For what it's worth, for the gef_ppc9a, gef_sbc310 & gef_sbc610:

Acked-by: Martyn Welch <martyn.welch@ge.com>

> ---
>  arch/powerpc/boot/dts/asp834x-redboot.dts    |    4 ++--
>  arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi   |    4 ++--
>  arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi |    4 ++--
>  arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi |    4 ++--
>  arch/powerpc/boot/dts/gef_ppc9a.dts          |    4 ++--
>  arch/powerpc/boot/dts/gef_sbc310.dts         |    4 ++--
>  arch/powerpc/boot/dts/gef_sbc610.dts         |    4 ++--
>  arch/powerpc/boot/dts/kmeter1.dts            |    2 +-
>  arch/powerpc/boot/dts/kuroboxHD.dts          |    4 ++--
>  arch/powerpc/boot/dts/kuroboxHG.dts          |    4 ++--
>  arch/powerpc/boot/dts/mpc8308_p1m.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8308rdb.dts         |    4 ++--
>  arch/powerpc/boot/dts/mpc8313erdb.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8315erdb.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc832x_mds.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc832x_rdb.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8349emitx.dts       |    4 ++--
>  arch/powerpc/boot/dts/mpc8349emitxgp.dts     |    4 ++--
>  arch/powerpc/boot/dts/mpc834x_mds.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc836x_mds.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc836x_rdk.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8377_mds.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8377_rdb.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8377_wlan.dts       |    4 ++--
>  arch/powerpc/boot/dts/mpc8378_mds.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8378_rdb.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8379_mds.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8379_rdb.dts        |    4 ++--
>  arch/powerpc/boot/dts/mpc8540ads.dts         |    4 ++--
>  arch/powerpc/boot/dts/mpc8541cds.dts         |    4 ++--
>  arch/powerpc/boot/dts/mpc8555cds.dts         |    4 ++--
>  arch/powerpc/boot/dts/mpc8610_hpcd.dts       |    4 ++--
>  arch/powerpc/boot/dts/mpc8641_hpcn.dts       |    4 ++--
>  arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts   |    4 ++--
>  arch/powerpc/boot/dts/sbc8349.dts            |    4 ++--
>  arch/powerpc/boot/dts/sbc8548.dts            |    4 ++--
>  arch/powerpc/boot/dts/sbc8641d.dts           |    4 ++--
>  arch/powerpc/boot/dts/socrates.dts           |    4 ++--
>  arch/powerpc/boot/dts/storcenter.dts         |    4 ++--
>  arch/powerpc/boot/dts/stxssa8555.dts         |    4 ++--
>  arch/powerpc/boot/dts/tqm8540.dts            |    4 ++--
>  arch/powerpc/boot/dts/tqm8541.dts            |    4 ++--
>  arch/powerpc/boot/dts/tqm8548-bigflash.dts   |    4 ++--
>  arch/powerpc/boot/dts/tqm8548.dts            |    4 ++--
>  arch/powerpc/boot/dts/tqm8555.dts            |    4 ++--
>  arch/powerpc/boot/dts/xcalibur1501.dts       |    4 ++--
>  arch/powerpc/boot/dts/xpedite5200.dts        |    4 ++--
>  arch/powerpc/boot/dts/xpedite5200_xmon.dts   |    4 ++--
>  arch/powerpc/boot/dts/xpedite5301.dts        |    4 ++--
>  arch/powerpc/boot/dts/xpedite5330.dts        |    4 ++--
>  arch/powerpc/boot/dts/xpedite5370.dts        |    4 ++--
>  51 files changed, 101 insertions(+), 101 deletions(-)
> 
> diff --git a/arch/powerpc/boot/dts/asp834x-redboot.dts b/arch/powerpc/boot/dts/asp834x-redboot.dts
> index 261d10c..227290d 100644
> --- a/arch/powerpc/boot/dts/asp834x-redboot.dts
> +++ b/arch/powerpc/boot/dts/asp834x-redboot.dts
> @@ -256,7 +256,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <400000000>;
>  			interrupts = <9 0x8>;
> @@ -266,7 +266,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <400000000>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi b/arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi
> index 00fa1fd..5e268fd 100644
> --- a/arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/pq3-duart-0.dtsi
> @@ -35,7 +35,7 @@
>  serial0: serial@4500 {
>  	cell-index = <0>;
>  	device_type = "serial";
> -	compatible = "ns16550";
> +	compatible = "fsl,ns16550", "ns16550";
>  	reg = <0x4500 0x100>;
>  	clock-frequency = <0>;
>  	interrupts = <42 2 0 0>;
> @@ -44,7 +44,7 @@ serial0: serial@4500 {
>  serial1: serial@4600 {
>  	cell-index = <1>;
>  	device_type = "serial";
> -	compatible = "ns16550";
> +	compatible = "fsl,ns16550", "ns16550";
>  	reg = <0x4600 0x100>;
>  	clock-frequency = <0>;
>  	interrupts = <42 2 0 0>;
> diff --git a/arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi b/arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi
> index 66271e3..225c07b 100644
> --- a/arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/qoriq-duart-0.dtsi
> @@ -35,7 +35,7 @@
>  serial0: serial@11c500 {
>  	cell-index = <0>;
>  	device_type = "serial";
> -	compatible = "ns16550";
> +	compatible = "fsl,ns16550", "ns16550";
>  	reg = <0x11c500 0x100>;
>  	clock-frequency = <0>;
>  	interrupts = <36 2 0 0>;
> @@ -44,7 +44,7 @@ serial0: serial@11c500 {
>  serial1: serial@11c600 {
>  	cell-index = <1>;
>  	device_type = "serial";
> -	compatible = "ns16550";
> +	compatible = "fsl,ns16550", "ns16550";
>  	reg = <0x11c600 0x100>;
>  	clock-frequency = <0>;
>  	interrupts = <36 2 0 0>;
> diff --git a/arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi b/arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi
> index cf1a0ac..d23233a 100644
> --- a/arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/qoriq-duart-1.dtsi
> @@ -35,7 +35,7 @@
>  serial2: serial@11d500 {
>  	cell-index = <2>;
>  	device_type = "serial";
> -	compatible = "ns16550";
> +	compatible = "fsl,ns16550", "ns16550";
>  	reg = <0x11d500 0x100>;
>  	clock-frequency = <0>;
>  	interrupts = <37 2 0 0>;
> @@ -44,7 +44,7 @@ serial2: serial@11d500 {
>  serial3: serial@11d600 {
>  	cell-index = <3>;
>  	device_type = "serial";
> -	compatible = "ns16550";
> +	compatible = "fsl,ns16550", "ns16550";
>  	reg = <0x11d600 0x100>;
>  	clock-frequency = <0>;
>  	interrupts = <37 2 0 0>;
> diff --git a/arch/powerpc/boot/dts/gef_ppc9a.dts b/arch/powerpc/boot/dts/gef_ppc9a.dts
> index 2266bbb..38dcb96 100644
> --- a/arch/powerpc/boot/dts/gef_ppc9a.dts
> +++ b/arch/powerpc/boot/dts/gef_ppc9a.dts
> @@ -339,7 +339,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <0x2a 0x2>;
> @@ -349,7 +349,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <0x1c 0x2>;
> diff --git a/arch/powerpc/boot/dts/gef_sbc310.dts b/arch/powerpc/boot/dts/gef_sbc310.dts
> index 429e87d..5ab8932 100644
> --- a/arch/powerpc/boot/dts/gef_sbc310.dts
> +++ b/arch/powerpc/boot/dts/gef_sbc310.dts
> @@ -337,7 +337,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <0x2a 0x2>;
> @@ -347,7 +347,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <0x1c 0x2>;
> diff --git a/arch/powerpc/boot/dts/gef_sbc610.dts b/arch/powerpc/boot/dts/gef_sbc610.dts
> index d81201a..d5341f5 100644
> --- a/arch/powerpc/boot/dts/gef_sbc610.dts
> +++ b/arch/powerpc/boot/dts/gef_sbc610.dts
> @@ -337,7 +337,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <0x2a 0x2>;
> @@ -347,7 +347,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <0x1c 0x2>;
> diff --git a/arch/powerpc/boot/dts/kmeter1.dts b/arch/powerpc/boot/dts/kmeter1.dts
> index d16bae1..983aee1 100644
> --- a/arch/powerpc/boot/dts/kmeter1.dts
> +++ b/arch/powerpc/boot/dts/kmeter1.dts
> @@ -80,7 +80,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <264000000>;
>  			interrupts = <9 0x8>;
> diff --git a/arch/powerpc/boot/dts/kuroboxHD.dts b/arch/powerpc/boot/dts/kuroboxHD.dts
> index 8d725d1..0a45451 100644
> --- a/arch/powerpc/boot/dts/kuroboxHD.dts
> +++ b/arch/powerpc/boot/dts/kuroboxHD.dts
> @@ -84,7 +84,7 @@ XXXX add flash parts, rtc, ??
>  		serial0: serial@80004500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x80004500 0x8>;
>  			clock-frequency = <97553800>;
>  			current-speed = <9600>;
> @@ -95,7 +95,7 @@ XXXX add flash parts, rtc, ??
>  		serial1: serial@80004600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x80004600 0x8>;
>  			clock-frequency = <97553800>;
>  			current-speed = <57600>;
> diff --git a/arch/powerpc/boot/dts/kuroboxHG.dts b/arch/powerpc/boot/dts/kuroboxHG.dts
> index b13a11e..0e758b3 100644
> --- a/arch/powerpc/boot/dts/kuroboxHG.dts
> +++ b/arch/powerpc/boot/dts/kuroboxHG.dts
> @@ -84,7 +84,7 @@ XXXX add flash parts, rtc, ??
>  		serial0: serial@80004500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x80004500 0x8>;
>  			clock-frequency = <130041000>;
>  			current-speed = <9600>;
> @@ -95,7 +95,7 @@ XXXX add flash parts, rtc, ??
>  		serial1: serial@80004600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x80004600 0x8>;
>  			clock-frequency = <130041000>;
>  			current-speed = <57600>;
> diff --git a/arch/powerpc/boot/dts/mpc8308_p1m.dts b/arch/powerpc/boot/dts/mpc8308_p1m.dts
> index 697b3f6..22b0832 100644
> --- a/arch/powerpc/boot/dts/mpc8308_p1m.dts
> +++ b/arch/powerpc/boot/dts/mpc8308_p1m.dts
> @@ -233,7 +233,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <133333333>;
>  			interrupts = <9 0x8>;
> @@ -243,7 +243,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <133333333>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8308rdb.dts b/arch/powerpc/boot/dts/mpc8308rdb.dts
> index a0bd188..f66d10d 100644
> --- a/arch/powerpc/boot/dts/mpc8308rdb.dts
> +++ b/arch/powerpc/boot/dts/mpc8308rdb.dts
> @@ -208,7 +208,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <133333333>;
>  			interrupts = <9 0x8>;
> @@ -218,7 +218,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <133333333>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8313erdb.dts b/arch/powerpc/boot/dts/mpc8313erdb.dts
> index ac1eb32..1c836c6 100644
> --- a/arch/powerpc/boot/dts/mpc8313erdb.dts
> +++ b/arch/powerpc/boot/dts/mpc8313erdb.dts
> @@ -261,7 +261,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -271,7 +271,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8315erdb.dts b/arch/powerpc/boot/dts/mpc8315erdb.dts
> index 4dd08c3..811848e 100644
> --- a/arch/powerpc/boot/dts/mpc8315erdb.dts
> +++ b/arch/powerpc/boot/dts/mpc8315erdb.dts
> @@ -265,7 +265,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <133333333>;
>  			interrupts = <9 0x8>;
> @@ -275,7 +275,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <133333333>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc832x_mds.dts b/arch/powerpc/boot/dts/mpc832x_mds.dts
> index 05ad8c9..da9c72d 100644
> --- a/arch/powerpc/boot/dts/mpc832x_mds.dts
> +++ b/arch/powerpc/boot/dts/mpc832x_mds.dts
> @@ -105,7 +105,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -115,7 +115,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc832x_rdb.dts b/arch/powerpc/boot/dts/mpc832x_rdb.dts
> index f4fadb23a..ff7b15b 100644
> --- a/arch/powerpc/boot/dts/mpc832x_rdb.dts
> +++ b/arch/powerpc/boot/dts/mpc832x_rdb.dts
> @@ -83,7 +83,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -93,7 +93,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8349emitx.dts b/arch/powerpc/boot/dts/mpc8349emitx.dts
> index 505dc84..2608679 100644
> --- a/arch/powerpc/boot/dts/mpc8349emitx.dts
> +++ b/arch/powerpc/boot/dts/mpc8349emitx.dts
> @@ -283,7 +283,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;		// from bootloader
>  			interrupts = <9 0x8>;
> @@ -293,7 +293,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;		// from bootloader
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8349emitxgp.dts b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
> index eb73211..6cd044d 100644
> --- a/arch/powerpc/boot/dts/mpc8349emitxgp.dts
> +++ b/arch/powerpc/boot/dts/mpc8349emitxgp.dts
> @@ -189,7 +189,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;		// from bootloader
>  			interrupts = <9 0x8>;
> @@ -199,7 +199,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;		// from bootloader
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc834x_mds.dts b/arch/powerpc/boot/dts/mpc834x_mds.dts
> index 230febb..4552864 100644
> --- a/arch/powerpc/boot/dts/mpc834x_mds.dts
> +++ b/arch/powerpc/boot/dts/mpc834x_mds.dts
> @@ -242,7 +242,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -252,7 +252,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc836x_mds.dts b/arch/powerpc/boot/dts/mpc836x_mds.dts
> index 45cfa1c5..c0e450a 100644
> --- a/arch/powerpc/boot/dts/mpc836x_mds.dts
> +++ b/arch/powerpc/boot/dts/mpc836x_mds.dts
> @@ -136,7 +136,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <264000000>;
>  			interrupts = <9 0x8>;
> @@ -146,7 +146,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <264000000>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc836x_rdk.dts b/arch/powerpc/boot/dts/mpc836x_rdk.dts
> index bdf4459..b6e9aec 100644
> --- a/arch/powerpc/boot/dts/mpc836x_rdk.dts
> +++ b/arch/powerpc/boot/dts/mpc836x_rdk.dts
> @@ -102,7 +102,7 @@
>  
>  		serial0: serial@4500 {
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			interrupts = <9 8>;
>  			interrupt-parent = <&ipic>;
> @@ -112,7 +112,7 @@
>  
>  		serial1: serial@4600 {
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			interrupts = <10 8>;
>  			interrupt-parent = <&ipic>;
> diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts
> index 855782c..cfccef5 100644
> --- a/arch/powerpc/boot/dts/mpc8377_mds.dts
> +++ b/arch/powerpc/boot/dts/mpc8377_mds.dts
> @@ -276,7 +276,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -286,7 +286,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8377_rdb.dts b/arch/powerpc/boot/dts/mpc8377_rdb.dts
> index dbc1b98..353deff 100644
> --- a/arch/powerpc/boot/dts/mpc8377_rdb.dts
> +++ b/arch/powerpc/boot/dts/mpc8377_rdb.dts
> @@ -321,7 +321,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -331,7 +331,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8377_wlan.dts b/arch/powerpc/boot/dts/mpc8377_wlan.dts
> index 9ea7830..ef4a305 100644
> --- a/arch/powerpc/boot/dts/mpc8377_wlan.dts
> +++ b/arch/powerpc/boot/dts/mpc8377_wlan.dts
> @@ -304,7 +304,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -314,7 +314,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts
> index f70cf60..538fcb9 100644
> --- a/arch/powerpc/boot/dts/mpc8378_mds.dts
> +++ b/arch/powerpc/boot/dts/mpc8378_mds.dts
> @@ -315,7 +315,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -325,7 +325,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8378_rdb.dts b/arch/powerpc/boot/dts/mpc8378_rdb.dts
> index 3447eb9..32333a9 100644
> --- a/arch/powerpc/boot/dts/mpc8378_rdb.dts
> +++ b/arch/powerpc/boot/dts/mpc8378_rdb.dts
> @@ -321,7 +321,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -331,7 +331,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts
> index 645ec51..5387092 100644
> --- a/arch/powerpc/boot/dts/mpc8379_mds.dts
> +++ b/arch/powerpc/boot/dts/mpc8379_mds.dts
> @@ -313,7 +313,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -323,7 +323,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8379_rdb.dts b/arch/powerpc/boot/dts/mpc8379_rdb.dts
> index 15560c6..46224c2 100644
> --- a/arch/powerpc/boot/dts/mpc8379_rdb.dts
> +++ b/arch/powerpc/boot/dts/mpc8379_rdb.dts
> @@ -319,7 +319,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -329,7 +329,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/mpc8540ads.dts b/arch/powerpc/boot/dts/mpc8540ads.dts
> index 8d1bf0f..f99fb11 100644
> --- a/arch/powerpc/boot/dts/mpc8540ads.dts
> +++ b/arch/powerpc/boot/dts/mpc8540ads.dts
> @@ -243,7 +243,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>; 	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> @@ -253,7 +253,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/mpc8541cds.dts b/arch/powerpc/boot/dts/mpc8541cds.dts
> index 87ff965..0f5e939 100644
> --- a/arch/powerpc/boot/dts/mpc8541cds.dts
> +++ b/arch/powerpc/boot/dts/mpc8541cds.dts
> @@ -209,7 +209,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>; 	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> @@ -219,7 +219,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/mpc8555cds.dts b/arch/powerpc/boot/dts/mpc8555cds.dts
> index 5c5614f..fe10438 100644
> --- a/arch/powerpc/boot/dts/mpc8555cds.dts
> +++ b/arch/powerpc/boot/dts/mpc8555cds.dts
> @@ -209,7 +209,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>; 	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> @@ -219,7 +219,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
> index 83c3218..6a109a0 100644
> --- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts
> +++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts
> @@ -175,7 +175,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -186,7 +186,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn.dts b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
> index fb8640e..1e8666c 100644
> --- a/arch/powerpc/boot/dts/mpc8641_hpcn.dts
> +++ b/arch/powerpc/boot/dts/mpc8641_hpcn.dts
> @@ -328,7 +328,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -338,7 +338,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <28 2>;
> diff --git a/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts b/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts
> index 8be8e70..fd4cd4d 100644
> --- a/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts
> +++ b/arch/powerpc/boot/dts/mpc8641_hpcn_36b.dts
> @@ -328,7 +328,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -338,7 +338,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <28 2>;
> diff --git a/arch/powerpc/boot/dts/sbc8349.dts b/arch/powerpc/boot/dts/sbc8349.dts
> index 0dc90f9..b1e45a8 100644
> --- a/arch/powerpc/boot/dts/sbc8349.dts
> +++ b/arch/powerpc/boot/dts/sbc8349.dts
> @@ -222,7 +222,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <9 0x8>;
> @@ -232,7 +232,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <10 0x8>;
> diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts
> index 94a3322..77be771 100644
> --- a/arch/powerpc/boot/dts/sbc8548.dts
> +++ b/arch/powerpc/boot/dts/sbc8548.dts
> @@ -316,7 +316,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;	// reg base, size
>  			clock-frequency = <0>;	// should we fill in in uboot?
>  			interrupts = <0x2a 0x2>;
> @@ -326,7 +326,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>;	// should we fill in in uboot?
>  			interrupts = <0x2a 0x2>;
> diff --git a/arch/powerpc/boot/dts/sbc8641d.dts b/arch/powerpc/boot/dts/sbc8641d.dts
> index ee5538f..56bebce 100644
> --- a/arch/powerpc/boot/dts/sbc8641d.dts
> +++ b/arch/powerpc/boot/dts/sbc8641d.dts
> @@ -347,7 +347,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -357,7 +357,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <28 2>;
> diff --git a/arch/powerpc/boot/dts/socrates.dts b/arch/powerpc/boot/dts/socrates.dts
> index 38c3540..134a5ff 100644
> --- a/arch/powerpc/boot/dts/socrates.dts
> +++ b/arch/powerpc/boot/dts/socrates.dts
> @@ -199,7 +199,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -209,7 +209,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/storcenter.dts b/arch/powerpc/boot/dts/storcenter.dts
> index eab680c..2a55573 100644
> --- a/arch/powerpc/boot/dts/storcenter.dts
> +++ b/arch/powerpc/boot/dts/storcenter.dts
> @@ -74,7 +74,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x20>;
>  			clock-frequency = <97553800>; /* Hz */
>  			current-speed = <115200>;
> @@ -85,7 +85,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x20>;
>  			clock-frequency = <97553800>; /* Hz */
>  			current-speed = <9600>;
> diff --git a/arch/powerpc/boot/dts/stxssa8555.dts b/arch/powerpc/boot/dts/stxssa8555.dts
> index 49efd44..4f166b0 100644
> --- a/arch/powerpc/boot/dts/stxssa8555.dts
> +++ b/arch/powerpc/boot/dts/stxssa8555.dts
> @@ -210,7 +210,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>; 	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> @@ -220,7 +220,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/tqm8540.dts b/arch/powerpc/boot/dts/tqm8540.dts
> index 0a4cedb..ed264d9 100644
> --- a/arch/powerpc/boot/dts/tqm8540.dts
> +++ b/arch/powerpc/boot/dts/tqm8540.dts
> @@ -250,7 +250,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>; 	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> @@ -260,7 +260,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/tqm8541.dts b/arch/powerpc/boot/dts/tqm8541.dts
> index f49d091..9252421 100644
> --- a/arch/powerpc/boot/dts/tqm8541.dts
> +++ b/arch/powerpc/boot/dts/tqm8541.dts
> @@ -224,7 +224,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>; 	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> @@ -234,7 +234,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/tqm8548-bigflash.dts b/arch/powerpc/boot/dts/tqm8548-bigflash.dts
> index 9452c3c..7adab94 100644
> --- a/arch/powerpc/boot/dts/tqm8548-bigflash.dts
> +++ b/arch/powerpc/boot/dts/tqm8548-bigflash.dts
> @@ -305,7 +305,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;	// reg base, size
>  			clock-frequency = <0>;	// should we fill in in uboot?
>  			current-speed = <115200>;
> @@ -316,7 +316,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>;	// should we fill in in uboot?
>  			current-speed = <115200>;
> diff --git a/arch/powerpc/boot/dts/tqm8548.dts b/arch/powerpc/boot/dts/tqm8548.dts
> index 619776f..589860e 100644
> --- a/arch/powerpc/boot/dts/tqm8548.dts
> +++ b/arch/powerpc/boot/dts/tqm8548.dts
> @@ -305,7 +305,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;	// reg base, size
>  			clock-frequency = <0>;	// should we fill in in uboot?
>  			current-speed = <115200>;
> @@ -316,7 +316,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>;	// should we fill in in uboot?
>  			current-speed = <115200>;
> diff --git a/arch/powerpc/boot/dts/tqm8555.dts b/arch/powerpc/boot/dts/tqm8555.dts
> index 81bad8c..aa6ff0d 100644
> --- a/arch/powerpc/boot/dts/tqm8555.dts
> +++ b/arch/powerpc/boot/dts/tqm8555.dts
> @@ -224,7 +224,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>; 	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> @@ -234,7 +234,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;	// reg base, size
>  			clock-frequency = <0>; 	// should we fill in in uboot?
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/xcalibur1501.dts b/arch/powerpc/boot/dts/xcalibur1501.dts
> index ac0a617..cc00f4d 100644
> --- a/arch/powerpc/boot/dts/xcalibur1501.dts
> +++ b/arch/powerpc/boot/dts/xcalibur1501.dts
> @@ -531,7 +531,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -542,7 +542,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/xpedite5200.dts b/arch/powerpc/boot/dts/xpedite5200.dts
> index c41a80c..8fd7b70 100644
> --- a/arch/powerpc/boot/dts/xpedite5200.dts
> +++ b/arch/powerpc/boot/dts/xpedite5200.dts
> @@ -333,7 +333,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			current-speed = <115200>;
> @@ -344,7 +344,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			current-speed = <115200>;
> diff --git a/arch/powerpc/boot/dts/xpedite5200_xmon.dts b/arch/powerpc/boot/dts/xpedite5200_xmon.dts
> index c0efcbb..0baa828 100644
> --- a/arch/powerpc/boot/dts/xpedite5200_xmon.dts
> +++ b/arch/powerpc/boot/dts/xpedite5200_xmon.dts
> @@ -337,7 +337,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			current-speed = <9600>;
> @@ -348,7 +348,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			current-speed = <9600>;
> diff --git a/arch/powerpc/boot/dts/xpedite5301.dts b/arch/powerpc/boot/dts/xpedite5301.dts
> index db7faf5..53c1c6a 100644
> --- a/arch/powerpc/boot/dts/xpedite5301.dts
> +++ b/arch/powerpc/boot/dts/xpedite5301.dts
> @@ -441,7 +441,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -452,7 +452,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/xpedite5330.dts b/arch/powerpc/boot/dts/xpedite5330.dts
> index c364ca6..2152259 100644
> --- a/arch/powerpc/boot/dts/xpedite5330.dts
> +++ b/arch/powerpc/boot/dts/xpedite5330.dts
> @@ -477,7 +477,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -488,7 +488,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> diff --git a/arch/powerpc/boot/dts/xpedite5370.dts b/arch/powerpc/boot/dts/xpedite5370.dts
> index 7a8a4af..11dbda1 100644
> --- a/arch/powerpc/boot/dts/xpedite5370.dts
> +++ b/arch/powerpc/boot/dts/xpedite5370.dts
> @@ -439,7 +439,7 @@
>  		serial0: serial@4500 {
>  			cell-index = <0>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4500 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;
> @@ -450,7 +450,7 @@
>  		serial1: serial@4600 {
>  			cell-index = <1>;
>  			device_type = "serial";
> -			compatible = "ns16550";
> +			compatible = "fsl,ns16550", "ns16550";
>  			reg = <0x4600 0x100>;
>  			clock-frequency = <0>;
>  			interrupts = <42 2>;


-- 
Martyn Welch (Lead Software Engineer)  | Registered in England and Wales
GE Intelligent Platforms               | (3828642) at 100 Barbirolli Square
T +44(0)1327322748                     | Manchester, M2 3AB
E martyn.welch@ge.com                  | VAT:GB 927559189

^ permalink raw reply

* Re: [PATCH 3/3] mtd/nand : workaround for Freescale FCM to support large-page Nand chip
From: LiuShuo @ 2011-12-08 10:44 UTC (permalink / raw)
  To: Scott Wood
  Cc: Artem.Bityutskiy, linuxppc-dev, linux-kernel, shuo.liu, linux-mtd,
	akpm, dwmw2
In-Reply-To: <4EDFBA6D.9080500@freescale.com>

=E4=BA=8E 2011=E5=B9=B412=E6=9C=8808=E6=97=A5 03:11, Scott Wood =E5=86=99=
=E9=81=93:
> On 12/06/2011 09:55 PM, LiuShuo wrote:
>> =E4=BA=8E 2011=E5=B9=B412=E6=9C=8807=E6=97=A5 08:09, Scott Wood =E5=86=
=99=E9=81=93:
>>> On 12/03/2011 10:31 PM, shuo.liu@freescale.com wrote:
>>>> From: Liu Shuo<shuo.liu@freescale.com>
>>>>
>>>> Freescale FCM controller has a 2K size limitation of buffer RAM. In
>>>> order
>>>> to support the Nand flash chip whose page size is larger than 2K byt=
es,
>>>> we read/write 2k data repeatedly by issuing FIR_OP_RB/FIR_OP_WB and =
save
>>>> them to a large buffer.
>>>>
>>>> Signed-off-by: Liu Shuo<shuo.liu@freescale.com>
>>>> ---
>>>> v3:
>>>>       -remove page_size of struct fsl_elbc_mtd.
>>>>       -do a oob write by NAND_CMD_RNDIN.
>>>>
>>>>    drivers/mtd/nand/fsl_elbc_nand.c |  243
>>>> ++++++++++++++++++++++++++++++++++----
>>>>    1 files changed, 218 insertions(+), 25 deletions(-)
>>> What is the plan for bad block marker migration?
>> This patch has been ported to uboot now, I think we can make a special
>> uboot image for bad
>> block marker migration when first use the chip.
> It should not be a special image, and there should be some way to mark
> that the migration has happened.  Even if we do the migration in U-Boot=
,
> Linux could check for the marker and if absent, disallow access and tel=
l
> the user to run the migration tool.
>
>>>> @@ -473,13 +568,72 @@ static void fsl_elbc_cmdfunc(struct mtd_info
>>>> *mtd, unsigned int command,
>>>>             * write so the HW generates the ECC.
>>>>             */
>>>>            if (elbc_fcm_ctrl->oob || elbc_fcm_ctrl->column !=3D 0 ||
>>>> -            elbc_fcm_ctrl->index !=3D mtd->writesize + mtd->oobsize=
)
>>>> -            out_be32(&lbc->fbcr,
>>>> -                elbc_fcm_ctrl->index - elbc_fcm_ctrl->column);
>>>> -        else
>>>> +            elbc_fcm_ctrl->index !=3D mtd->writesize + mtd->oobsize=
) {
>>>> +            if (elbc_fcm_ctrl->oob&&   mtd->writesize>   2048) {
>>>> +                out_be32(&lbc->fbcr, 64);
>>>> +            } else {
>>>> +                out_be32(&lbc->fbcr, elbc_fcm_ctrl->index
>>>> +                        - elbc_fcm_ctrl->column);
>>>> +            }
>>> We need to limit ourselves to the regions that have actually been
>>> written to in the buffer.  fbcr needs to be set separately for first =
and
>>> last subpages, with intermediate subpages having 0, 64, or 2112 as
>>> appropriate.  Subpages that are entirely before column or entirely af=
ter
>>> column + index should be skipped.
>> I have considered this case, but I don't think it is useful.
>>      1.There isn't a 'length' parameter in driver interface, although =
we
>> can get it from 'index - column'.
> Right.  column is start, and index is end + 1.  We have the bounds of
> what has been written.
>
>>      2.To see nand_do_write_oob() in nand_base.c, it fill '0xff' to
>> entire oob area first and write the user data by nand_fill_oob(), then
>> call ecc.write_oob (default is nand_write_oob_std()).
> Do we really want to assume that that's what it will always do?
>
> And if we do want to make such assumptions, we could rip out all usage
> of index/column here, and just handle "oob" and "full page" cases.
The function nand_do_write_ops() in nandbase.c is a Nand internal interfa=
ce.
It always is called when application write to nand flash. (e.g. dd)
In this function, partial page write is dealt with by filling '0xff' to=20
buffer before data copy.
(nand_do_write_oob() is similar)
So I don't think we need to do it in our controller driver again, it=20
should be a job of upper layer.


I found that 'column' for NAND_CMD_SEQIN is always 0 or writesize except=20
for oob write with
  NAND_ECC_HW_SYNDROME, but it's not useful case for our controller.

-LiuShuo
> -Scott

^ permalink raw reply

* [PATCH 0/2] Changes to PowerPC ptrace flags using watchpoints - v2
From: K.Prasad @ 2011-12-08 11:12 UTC (permalink / raw)
  To: dwg; +Cc: linuxppc-dev, Thiago Jung Bauermann, Edjunior Barbosa Machado

Hi David,
	Please find a revised version of the patchset which have
incorporated the various suggestions made by you.

Kindly review the patches and let me know if they look fine.

Changelog - v2
--------------
v1 posted at
http://lists.ozlabs.org/pipermail/linuxppc-dev/2011-August/092463.html

- Introduction of a new version number for the hw-breakpoint structures
  dropped.
- The ptrace flag operations are expected to make more precise requests
  and suitable error return codes have been added for incorrect
  requests.
- Modification of an existing breakpoint is not possible. Request an
  delete, followed by set breakpoint request instead.

Thanks,
K.Prasad

^ permalink raw reply

* cpu idle time going backward
From: Andreas Schwab @ 2011-12-08 11:15 UTC (permalink / raw)
  To: linuxppc-dev

There seems to be something wrong with cpu idle time accounting at least
on G5.  The value as reported in the cpu lines in /proc/stat seems to be
stuck in the interval [100000,210000] for each cpu, jumping back at
random points.  Any idea what could be the problem?

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply

* [PATCH 1/2] [hw-breakpoint] Use generic hw-breakpoint interfaces for new PPC ptrace flags
From: K.Prasad @ 2011-12-08 11:19 UTC (permalink / raw)
  To: dwg; +Cc: linuxppc-dev, Thiago Jung Bauermann, Edjunior Barbosa Machado
In-Reply-To: <20111208111212.GB3720@in.ibm.com>

PPC_PTRACE_GETHWDBGINFO, PPC_PTRACE_SETHWDEBUG and PPC_PTRACE_DELHWDEBUG are
PowerPC specific ptrace flags that use the watchpoint register. While they are
targeted primarily towards BookE users, user-space applications such as GDB
have started using them for BookS too. This patch enables the use of generic
hardware breakpoint interfaces for these new flags.

Apart from the usual benefits of using generic hw-breakpoint interfaces, these
changes allow debuggers (such as GDB) to use a common set of ptrace flags for
their watchpoint needs and allow more precise breakpoint specification (length
of the variable can be specified).

Signed-off-by: K.Prasad <prasad@linux.vnet.ibm.com>
---
 Documentation/powerpc/ptrace.txt |   16 ++++++++
 arch/powerpc/kernel/ptrace.c     |   77 +++++++++++++++++++++++++++++++++++---
 2 files changed, 87 insertions(+), 6 deletions(-)

diff --git a/Documentation/powerpc/ptrace.txt b/Documentation/powerpc/ptrace.txt
index f4a5499..f2a7a39 100644
--- a/Documentation/powerpc/ptrace.txt
+++ b/Documentation/powerpc/ptrace.txt
@@ -127,6 +127,22 @@ Some examples of using the structure to:
   p.addr2           = (uint64_t) end_range;
   p.condition_value = 0;
 
+- set a watchpoint in server processors (BookS)
+
+  p.version         = 1;
+  p.trigger_type    = PPC_BREAKPOINT_TRIGGER_RW;
+  p.addr_mode       = PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE;
+  or
+  p.addr_mode       = PPC_BREAKPOINT_MODE_EXACT;
+
+  p.condition_mode  = PPC_BREAKPOINT_CONDITION_NONE;
+  p.addr            = (uint64_t) begin_range;
+  /* For PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE addr2 needs to be specified, where
+   * addr2 - addr <= 8 Bytes.
+   */
+  p.addr2           = (uint64_t) end_range;
+  p.condition_value = 0;
+
 3. PTRACE_DELHWDEBUG
 
 Takes an integer which identifies an existing breakpoint or watchpoint
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 05b7dd2..cd41c78 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -1339,6 +1339,12 @@ static int set_dac_range(struct task_struct *child,
 static long ppc_set_hwdebug(struct task_struct *child,
 		     struct ppc_hw_breakpoint *bp_info)
 {
+#ifdef CONFIG_HAVE_HW_BREAKPOINT
+	int ret, len = 0;
+	struct thread_struct *thread = &(child->thread);
+	struct perf_event *bp;
+	struct perf_event_attr attr;
+#endif /* CONFIG_HAVE_HW_BREAKPOINT */
 #ifndef CONFIG_PPC_ADV_DEBUG_REGS
 	unsigned long dabr;
 #endif
@@ -1382,13 +1388,9 @@ static long ppc_set_hwdebug(struct task_struct *child,
 	 */
 	if ((bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_RW) == 0 ||
 	    (bp_info->trigger_type & ~PPC_BREAKPOINT_TRIGGER_RW) != 0 ||
-	    bp_info->addr_mode != PPC_BREAKPOINT_MODE_EXACT ||
 	    bp_info->condition_mode != PPC_BREAKPOINT_CONDITION_NONE)
 		return -EINVAL;
 
-	if (child->thread.dabr)
-		return -ENOSPC;
-
 	if ((unsigned long)bp_info->addr >= TASK_SIZE)
 		return -EIO;
 
@@ -1398,15 +1400,63 @@ static long ppc_set_hwdebug(struct task_struct *child,
 		dabr |= DABR_DATA_READ;
 	if (bp_info->trigger_type & PPC_BREAKPOINT_TRIGGER_WRITE)
 		dabr |= DABR_DATA_WRITE;
+#ifdef CONFIG_HAVE_HW_BREAKPOINT
+	if (ptrace_get_breakpoints(child) < 0)
+		return -ESRCH;
 
-	child->thread.dabr = dabr;
+	/*
+	 * Check if the request is for 'range' breakpoints. We can
+	 * support it if range < 8 bytes.
+	 */
+	if (bp_info->addr_mode == PPC_BREAKPOINT_MODE_RANGE_INCLUSIVE) {
+		len = bp_info->addr2 - bp_info->addr;
+	} else if (bp_info->addr_mode != PPC_BREAKPOINT_MODE_EXACT) {
+		ptrace_put_breakpoints(child);
+		return -EINVAL;
+	}
+	bp = thread->ptrace_bps[0];
+	if (bp) {
+		ptrace_put_breakpoints(child);
+		return -ENOSPC;
+	}
+
+	/* Create a new breakpoint request if one doesn't exist already */
+	hw_breakpoint_init(&attr);
+	attr.bp_addr = (unsigned long)bp_info->addr & ~HW_BREAKPOINT_ALIGN;
+	attr.bp_len = len;
+	arch_bp_generic_fields(dabr & (DABR_DATA_WRITE | DABR_DATA_READ),
+								&attr.bp_type);
+
+	thread->ptrace_bps[0] = bp = register_user_hw_breakpoint(&attr,
+					       ptrace_triggered, NULL, child);
+	if (IS_ERR(bp)) {
+		thread->ptrace_bps[0] = NULL;
+		ptrace_put_breakpoints(child);
+		return PTR_ERR(bp);
+	}
 
+	ptrace_put_breakpoints(child);
+	return 1;
+#endif /* CONFIG_HAVE_HW_BREAKPOINT */
+
+	if (bp_info->addr_mode != PPC_BREAKPOINT_MODE_EXACT)
+		return -EINVAL;
+
+	if (child->thread.dabr)
+		return -ENOSPC;
+
+	child->thread.dabr = dabr;
 	return 1;
 #endif /* !CONFIG_PPC_ADV_DEBUG_DVCS */
 }
 
 static long ppc_del_hwdebug(struct task_struct *child, long addr, long data)
 {
+#ifdef CONFIG_HAVE_HW_BREAKPOINT
+	int ret = 0;
+	struct thread_struct *thread = &(child->thread);
+	struct perf_event *bp;
+#endif /* CONFIG_HAVE_HW_BREAKPOINT */
 #ifdef CONFIG_PPC_ADV_DEBUG_REGS
 	int rc;
 
@@ -1426,10 +1476,25 @@ static long ppc_del_hwdebug(struct task_struct *child, long addr, long data)
 #else
 	if (data != 1)
 		return -EINVAL;
+
+#ifdef CONFIG_HAVE_HW_BREAKPOINT
+	if (ptrace_get_breakpoints(child) < 0)
+		return -ESRCH;
+
+	bp = thread->ptrace_bps[0];
+	if (bp) {
+		unregister_hw_breakpoint(bp);
+		thread->ptrace_bps[0] = NULL;
+	} else
+		ret = -ENOENT;
+	ptrace_put_breakpoints(child);
+	return ret;
+#else /* CONFIG_HAVE_HW_BREAKPOINT */
 	if (child->thread.dabr == 0)
 		return -ENOENT;
 
 	child->thread.dabr = 0;
+#endif /* CONFIG_HAVE_HW_BREAKPOINT */
 
 	return 0;
 #endif
@@ -1560,7 +1625,7 @@ long arch_ptrace(struct task_struct *child, long request,
 		dbginfo.data_bp_alignment = 4;
 #endif
 		dbginfo.sizeof_condition = 0;
-		dbginfo.features = 0;
+		dbginfo.features = PPC_DEBUG_FEATURE_DATA_BP_RANGE;
 #endif /* CONFIG_PPC_ADV_DEBUG_REGS */
 
 		if (!access_ok(VERIFY_WRITE, datavp,
-- 
1.7.4.1

^ permalink raw reply related

* [PATCH 2/2] [PowerPC Book3E] Introduce new ptrace debug feature flag
From: K.Prasad @ 2011-12-08 11:23 UTC (permalink / raw)
  To: dwg; +Cc: linuxppc-dev, Thiago Jung Bauermann, Edjunior Barbosa Machado
In-Reply-To: <20111208111212.GB3720@in.ibm.com>

While PPC_PTRACE_SETHWDEBUG ptrace flag in PowerPC accepts
PPC_BREAKPOINT_MODE_EXACT mode of breakpoint, the same is not intimated to the
user-space debuggers (like GDB) who may want to use it. Hence we introduce a
new PPC_DEBUG_FEATURE_DATA_BP_EXACT flag which will be populated on the
"features" member of "struct ppc_debug_info" to advertise support for the
same on Book3E PowerPC processors.

Signed-off-by: K.Prasad <prasad@linux.vnet.ibm.com>
---
 arch/powerpc/include/asm/ptrace.h |    1 +
 arch/powerpc/kernel/ptrace.c      |    1 +
 2 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/include/asm/ptrace.h b/arch/powerpc/include/asm/ptrace.h
index 48223f9..cf014f9 100644
--- a/arch/powerpc/include/asm/ptrace.h
+++ b/arch/powerpc/include/asm/ptrace.h
@@ -380,6 +380,7 @@ struct ppc_debug_info {
 #define PPC_DEBUG_FEATURE_INSN_BP_MASK		0x0000000000000002
 #define PPC_DEBUG_FEATURE_DATA_BP_RANGE		0x0000000000000004
 #define PPC_DEBUG_FEATURE_DATA_BP_MASK		0x0000000000000008
+#define PPC_DEBUG_FEATURE_DATA_BP_EXACT		0x0000000000000010
 
 #ifndef __ASSEMBLY__
 
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 18d28b6..71db5a6 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -1636,6 +1636,7 @@ long arch_ptrace(struct task_struct *child, long request,
 #ifdef CONFIG_PPC_ADV_DEBUG_DAC_RANGE
 		dbginfo.features |=
 				   PPC_DEBUG_FEATURE_DATA_BP_RANGE |
+				   PPC_DEBUG_FEATURE_DATA_BP_EXACT |
 				   PPC_DEBUG_FEATURE_DATA_BP_MASK;
 #endif
 #else /* !CONFIG_PPC_ADV_DEBUG_REGS */

^ permalink raw reply related

* Re: [PATCH 01/16 v3] pmac_zilog: fix unexpected irq
From: Finn Thain @ 2011-12-08 11:26 UTC (permalink / raw)
  To: Benjamin Herrenschmidt
  Cc: linuxppc-dev, linux-m68k, Geert Uytterhoeven, linux-serial
In-Reply-To: <1323318638.12793.23.camel@pasglop>


On Thu, 8 Dec 2011, Benjamin Herrenschmidt wrote:

> On Thu, 2011-12-08 at 15:20 +1100, Benjamin Herrenschmidt wrote:
> 
> > So basic operations seem to work, I've applied the patch to 
> > powerpc-next.

Then I guess Geert should not push this for 3.3 -- or does it make no 
difference?

> > However, the internal modem on my Pismo powerbook doesn't appear to 
> > survive suspend/resume. I'll dig into that and merge a fixup patch 
> > asap.
> 
> BTW. I applied anyway because suspend/resume was already broken (you 
> spotted that we don't clear the suspended flag for example).
> 
> Fixing the flag alone helps a bit. We can't use the modem if we 
> suspend/resume with the open port,

If the SCC IRQ counters change across suspend/resume, perhaps the modem 
itself is not powering up...

> but closing and re-opening works.

Maybe the modem wants a transition on DTR or similar, but it hasn't had 
time to initialise when that happens during SCC resumption.

If so, calling pmz_shutdown() then pmz_startup() from the tail of 
pmz_resume() without delay should probably fail to revive it...

> 
> Lockdep also picked-up a A->B B->A between the port mutex and the pmz 
> irq mutex on suspend.
> 
> I'll try to fix all these, and will let you know (I may not have time 
> today).

Thanks.

Finn

> 
> Cheers,
> Ben.
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply

* Re: [PATCH 01/16 v3] pmac_zilog: fix unexpected irq
From: Geert Uytterhoeven @ 2011-12-08 11:54 UTC (permalink / raw)
  To: Finn Thain; +Cc: linux-m68k, linuxppc-dev, linux-serial
In-Reply-To: <alpine.LNX.2.00.1112082128330.2357@nippy.intranet>

Hi Finn,

On Thu, Dec 8, 2011 at 12:26, Finn Thain <fthain@telegraphics.com.au> wrote=
:
> On Thu, 8 Dec 2011, Benjamin Herrenschmidt wrote:
>> On Thu, 2011-12-08 at 15:20 +1100, Benjamin Herrenschmidt wrote:
>> > So basic operations seem to work, I've applied the patch to
>> > powerpc-next.
>
> Then I guess Geert should not push this for 3.3 -- or does it make no
> difference?

I do not plan to push it myself, that's why it's not in my for-next branch.
The for-3.3 is just indicative.

Gr{oetje,eeting}s,

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k=
.org

In personal conversations with technical people, I call myself a hacker. Bu=
t
when I'm talking to journalists I just say "programmer" or something like t=
hat.
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0 =C2=A0=C2=A0 -- Linus Torvalds

^ permalink raw reply

* Re: [PATCH v3 2/3] hvc_init(): Enforce one-time initialization.
From: Amit Shah @ 2011-12-08 12:08 UTC (permalink / raw)
  To: Miche Baker-Harvey
  Cc: Stephen Rothwell, xen-devel, Konrad Rzeszutek Wilk, Rusty Russell,
	linux-kernel, virtualization, Anton Blanchard, Mike Waychison,
	ppc-dev, Greg Kroah-Hartman, Eric Northrup
In-Reply-To: <CAB8Rdar=qOokxZkjQVRmo=zN_f75jPwzU+6=WBRo0g+P7w+pAw@mail.gmail.com>

On (Tue) 06 Dec 2011 [09:05:38], Miche Baker-Harvey wrote:
> Amit,
> 
> Ah, indeed.  I am not using MSI-X, so virtio_pci::vp_try_to_find_vqs()
> calls vp_request_intx() and sets up an interrupt callback.  From
> there, when an interrupt occurs, the stack looks something like this:
> 
> virtio_pci::vp_interrupt()
>   virtio_pci::vp_vring_interrupt()
>     virtio_ring::vring_interrupt()
>       vq->vq.callback()  <-- in this case, that's virtio_console::control_intr()
>         workqueue::schedule_work()
>           workqueue::queue_work()
>             queue_work_on(get_cpu())  <-- queues the work on the current CPU.
> 
> I'm not doing anything to keep multiple control message from being
> sent concurrently to the guest, and we will take those interrupts on
> any CPU. I've confirmed that the two instances of
> handle_control_message() are occurring on different CPUs.

So let's have a new helper, port_lock() that takes the port-specific
spinlock.  There has to be a new helper, since the port lock should
depend on the portdev lock being taken too.  For the port addition
case, just the portdev lock should be taken.  For any other
operations, the port lock should be taken.

My assumption was that we would be able to serialise the work items,
but that will be too restrictive.  Taking port locks sounds like a
better idea.

We'd definitely need the port lock in the control work handler.  We
might need it in a few more places (like module removal), but we'll
worry about that later.

Does this sound fine?

		Amit

^ permalink raw reply

* Re: ibm_newemac tx problem with jumbo frame enabled
From: Prashant Bhole @ 2011-12-08 13:01 UTC (permalink / raw)
  To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1323295383.12793.3.camel@pasglop>

[-- Attachment #1: Type: text/plain, Size: 2238 bytes --]

On Thu, Dec 8, 2011 at 3:33 AM, Benjamin Herrenschmidt <
benh@kernel.crashing.org> wrote:

> On Wed, 2011-12-07 at 13:35 +0530, Prashant Bhole wrote:
> > Still couldn't find anything like fifo overflow...
> > I noticed one more thing, this problem happens only when mtu size on
> > the initiator (the other end) is set to 4088, regardless of any mtu
> > size set for EMAC.
>
> Did you check all the registers that may carry errors ? Nothing showed
> up ? Did you check that things like Pause frames were properly
> negociated on both sides ? Tried playing with the pause and FIFO
> thresholds ?
>
> Other than using the tx timeout to perform resets I don't see a good way
> to fix that problem.
>
> Cheers,
> Ben.
>
>
I checked RX descriptor status and TX descriptor status and ethtool output.
However I don't know about pause packet/frame, how do I check if pause
frames are properly negotiated on both sides?
I need to try changing pause and FIFO thresholds.

ethtool output after disconnection is as follows:
# ethtool -S eth0
NIC statistics:
     rx_packets: 330939
     rx_bytes: 804963241
     tx_packets: 248554
     tx_bytes: 798853638
     rx_packets_csum: 330716
     tx_packets_csum: 179526
     tx_undo: 0
     rx_dropped_stack: 0
     rx_dropped_oom: 0
     rx_dropped_error: 0
     rx_dropped_resize: 0
     rx_dropped_mtu: 0
     rx_stopped: 0
     rx_bd_errors: 0
     rx_bd_overrun: 0
     rx_bd_bad_packet: 0
     rx_bd_runt_packet: 0
     rx_bd_short_event: 0
     rx_bd_alignment_error: 0
     rx_bd_bad_fcs: 0
     rx_bd_packet_too_long: 0
     rx_bd_out_of_range: 0
     rx_bd_in_range: 0
     rx_parity: 0
     rx_fifo_overrun: 0
     rx_overrun: 0
     rx_bad_packet: 0
     rx_runt_packet: 0
     rx_short_event: 0
     rx_alignment_error: 0
     rx_bad_fcs: 0
     rx_packet_too_long: 0
     rx_out_of_range: 0
     rx_in_range: 0
     tx_dropped: 0
     tx_bd_errors: 0
     tx_bd_bad_fcs: 0
     tx_bd_carrier_loss: 0
     tx_bd_excessive_deferral: 0
     tx_bd_excessive_collisions: 0
     tx_bd_late_collision: 0
     tx_bd_multple_collisions: 0
     tx_bd_single_collision: 0
     tx_bd_underrun: 0
     tx_bd_sqe: 0
     tx_parity: 0
     tx_underrun: 0
     tx_sqe: 0
     tx_errors: 0


Thanks,
Prashant

[-- Attachment #2: Type: text/html, Size: 2804 bytes --]

^ permalink raw reply

* Re: [PATCH] powerpc: POWER7 optimised copy_to_user/copy_from_user using VMX
From: Segher Boessenkool @ 2011-12-08 13:31 UTC (permalink / raw)
  To: Anton Blanchard; +Cc: linuxppc-dev, Michael Neuling, sukadev, paulus
In-Reply-To: <20111208170450.22247a4b@kryten>

>> I hate the idea of having a POWER7 FTR bit.  Every loon will (and has
>> tried to in the past) attach every POWER7 related thing to it, rather
>> than thinking about what the feature really is for.
>>
>> What about other processors which could also benefit from this copy
>> loop?  Turning on CPU_FTR_POWER7 for them is gonna look a bit silly.
>
> As we discussed online, we could call it CPU_FTR_VMX_COPY and start
> thinking about a better way to solve the CPU feature bit mess.

But then, most CPUs with VMX will not want that, because it is slower
code for them.  For things like copy loops it makes perfect sense to
have them tuned per CPU core.  For example, this code likes to use
unaligned stores over more complicated shift-and-combine stuff; that
works great on POWER7, but not on much else.

Maybe you should have the various kinds of loop ("source aligned, dest
unaligned, using unaligned stores, 64 bytes") as asm routines, have
some higher level code (which can be runtime patched) select which
to run.

> One idea would be to have a structure of function pointers for each
> CPU that gets runtime patched into the right places, similar to how we
> do some of the MMU fixups.

Sounds good to me :-)


Segher

^ permalink raw reply

* RE: [PATCH] powerpc: POWER7 optimised copy_to_user/copy_from_user using VMX
From: David Laight @ 2011-12-08 14:02 UTC (permalink / raw)
  To: Segher Boessenkool, Anton Blanchard
  Cc: paulus, Michael Neuling, sukadev, linuxppc-dev
In-Reply-To: <700CAC5A-AD1A-48BA-BD74-CB9FBB325484@kernel.crashing.org>

=20
> > One idea would be to have a structure of function pointers for each
> > CPU that gets runtime patched into the right places,=20
> > similar to how we do some of the MMU fixups.
>=20
> Sounds good to me :-)

Except the indirect jump/call is almost certainly
never predicted - so will be slow.

You might want to patch jump instructions instead.

The same is true for in-kernel memcpy() and other
similar operations.

I actually wonder sometimes what the typical lengths
are for these sort of functions, and whether, in fact,
small lengths dominate - where the fixed costs matter.

	David

^ permalink raw reply

* Re: [PATCH] powerpc: POWER7 optimised copy_to_user/copy_from_user using VMX
From: Segher Boessenkool @ 2011-12-08 14:12 UTC (permalink / raw)
  To: David Laight
  Cc: paulus, Michael Neuling, sukadev, linuxppc-dev, Anton Blanchard
In-Reply-To: <AE90C24D6B3A694183C094C60CF0A2F6D8AF0A@saturn3.aculab.com>

>>> One idea would be to have a structure of function pointers for each
>>> CPU that gets runtime patched into the right places,
>>> similar to how we do some of the MMU fixups.
>>
>> Sounds good to me :-)
>
> Except the indirect jump/call is almost certainly
> never predicted - so will be slow.

What indirect jump?  He said "runtime patched" :-)

Also, that "slow" is largely a myth.


Segher

^ permalink raw reply

* RE: Multi-OS on P1022RDK Failing
From: Arshad, Farrukh @ 2011-12-08 15:24 UTC (permalink / raw)
  To: Scott Wood; +Cc: linuxppc-dev@lists.ozlabs.org
In-Reply-To: <4EDFD98A.4070803@freescale.com>

[-- Attachment #1: Type: text/plain, Size: 3892 bytes --]

Just a quick question,

For Core 1 I am booting kernel using NFS. When I boot kernel on Core 1 it fails at following point. Attached are my DTS files for both cores. My NFS server is configured properly as I am booting Core 0 with the same server. I have used packet sniffer on my NFS server and I see no packet from Core 1 for my NFS server. Do you think this is problem in my DTS file or kernel configuration. Any help is appreciated.

........................
[   88.940597] rxbd[5]: addr,vaddr=0xf777400,0xcf777400
[   88.945561] rxbd[6]: addr,vaddr=0xf777800,0xcf777800
[   88.950526] rxbd[7]: addr,vaddr=0xf777c00,0xcf777c00
OK
[   89.873634] ----PHY: skipping MII_CTRL1000 write.
[   89.957631] IP-Config: Guessing netmask 255.255.0.0
[   89.962653] IP-Config: Complete:
[   89.965724]      device=eth0, addr=<ip_address>, mask=255.255.0.0, gw=<gateway_ip>,
[   89.973843]      host=<host_ip>, domain=, nis-domain=(none),
[   89.980025]      bootserver=255.255.255.255, rootserver=<nfs_server_ip>, rootpath=
[   89.988012] Looking up port of RPC 100003/2 on 137.202.156.191
[   90.877650] PHY: 0:01 - Link is Up - 1000/Full
[  124.993637] rpcbind: server <nfs_server_ip> not responding, timed out
[  125.000136] Root-NFS: Unable to get nfsd port number from server, using default
[  125.007458] Looking up port of RPC 100005/1 on <nfs_server_ip>
[  160.009636] rpcbind: server 137.202.156.191 not responding, timed out
[  160.016131] Root-NFS: Unable to get mountd port number from server, using default


Regards,
Farrukh Arshad


-----Original Message-----
From: Arshad, Farrukh 
Sent: Thursday, December 08, 2011 11:35 AM
To: 'Scott Wood'
Cc: Linuxppc-dev@lists.ozlabs.org
Subject: RE: Multi-OS on P1022RDK Failing

Thanks Scott. 

Fixing cpu 1 release address solved my problem. Also thanks for the CONFIG_LOWMEM_SIZE suggestions.

Regards,
Farrukh Arshad

-----Original Message-----
From: Scott Wood [mailto:scottwood@freescale.com]
Sent: Thursday, December 08, 2011 2:24 AM
To: Arshad, Farrukh
Cc: Linuxppc-dev@lists.ozlabs.org
Subject: Re: Multi-OS on P1022RDK Failing

On 12/07/2011 08:57 AM, Arshad, Farrukh wrote:
> Core 0 kernel
> 
> CONFIG_LOWMEM_SIZE = 0x10000000
> 
> CONFIG_PHYSICAL_START = 0x00000000
> 
>  
> 
> Core 1 kernel
> 
> CONFIG_LOWMEM_SIZE = 0x10000000
> 
> CONFIG_PHYSICAL_START = 0x10000000

Why are you messing with CONFIG_LOWMEM_SIZE?  That adjusts the lowmem/highmem split, not the total amount of memory that this instance of Linux will use (though you may get that behavior as a side effect if highmem is disabled).  U-boot should set the memory node in the device tree based on the bootm_low/bootm_size environment variables.

> # Boot from NFS
> 
> setenv core0nfsbootargs root=/dev/nfs nfsroot=$serverip:/$core0rootfs 
> ip=<dev_ip>::<nfs_server_ip>:::eth0:off rw debug 
> console=$consoledev0,$baudrate maxcpus=1
> 
> setenv core1nfsbootargs root=/dev/nfs nfsroot=$serverip:/$core1rootfs 
> ip=<dev_ip_2>::<nfs_server_ip>:::eth0:off rw debug 
> console=$consoledev0,$baudrate maxcpus=1

maxcpus should be unnecessary -- there will only be one cpu in the device tree for each partition.

> My problem is Core 0 kernel is booting successfully but Core 1 kernel 
> hangs after uncompressing kernel image, and after that I don't see 
> anything on the console.
> 
>  
> 
> Any thoughts on what I am missing or doing incorrect?

The "cpu 1 release" command should be using the address of the decompressed kernel (should be $bootm_low), not where the uImage was loaded.

Also, the two serial ports you're using share an interrupt -- this shouldn't stop kernel message output, but it's going to be a problem for userspace usage of the port.  You should remove the interrupts property from the serial node in both partitions, so Linux will poll instead.

-Scott


[-- Attachment #2: p1022rdk-core1.dts --]
[-- Type: application/octet-stream, Size: 16183 bytes --]

/*
 * P1022 RDK - Core 1 Device Tree Source
 *
 */

/dts-v1/;
/ {
	model = "fsl,P1022";
	compatible = "fsl,P1022DS";
	#address-cells = <2>;
	#size-cells = <2>;

	aliases {
		ethernet1 = &enet1;
		serial0 = &serial0;
		pci0 = &pci0;
		pci1 = &pci1;
		pci2 = &pci2;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		//PowerPC,P1022@0 {
		//	device_type = "cpu";
		//	reg = <0x0>;
		//	next-level-cache = <&L2>;
		//};

		PowerPC,P1022@1 {
			device_type = "cpu";
			reg = <0x1>;
			next-level-cache = <&L2>;
		};
	};

	memory {
		device_type = "memory";
	};

	localbus@ffe05000 {
		#address-cells = <2>;
		#size-cells = <1>;
		compatible = "fsl,p1022-elbc", "fsl,elbc", "simple-bus";
		reg = <0 0xffe05000 0 0x1000>;
		interrupts = <19 2>;
		interrupt-parent = <&mpic>;

		ranges = <0x0 0x0 0x0 0xe8000000 0x08000000
			  0x1 0x0 0x0 0xe0000000 0x08000000
			  0x2 0x0 0x0 0xffa00000 0x00040000
			  0x3 0x0 0x0 0xffdf0000 0x00008000>;

		nor@0,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "cfi-flash";
			reg = <0x0 0x0 0x8000000>;
			bank-width = <2>;
			device-width = <1>;

			partition@0 {
				reg = <0x0 0x03000000>;
				label = "ramdisk-nor";
				read-only;
			};

			partition@3000000 {
				reg = <0x03000000 0x00e00000>;
				label = "diagnostic-nor";
				read-only;
			};

			partition@3e00000 {
				reg = <0x03e00000 0x00200000>;
				label = "dink-nor";
				read-only;
			};

			partition@4000000 {
				reg = <0x04000000 0x00400000>;
				label = "kernel-nor";
				read-only;
			};

			partition@4400000 {
				reg = <0x04400000 0x03b00000>;
				label = "jffs2-nor";
			};

			partition@7f00000 {
				reg = <0x07f00000 0x00080000>;
				label = "dtb-nor";
				read-only;
			};

			partition@7f80000 {
				reg = <0x07f80000 0x00080000>;
				label = "u-boot-nor";
				read-only;
			};
		};

		nand@2,0 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,elbc-fcm-nand";
			reg = <0x2 0x0 0x40000>;

			partition@0 {
				reg = <0x0 0x02000000>;
				label = "u-boot-nand";
				read-only;
			};

			partition@2000000 {
				reg = <0x02000000 0x10000000>;
				label = "jffs2-nand";
			};

			partition@12000000 {
				reg = <0x12000000 0x10000000>;
				label = "ramdisk-nand";
				read-only;
			};

			partition@22000000 {
				reg = <0x22000000 0x04000000>;
				label = "kernel-nand";
			};

			partition@26000000 {
				reg = <0x26000000 0x01000000>;
				label = "dtb-nand";
				read-only;
			};

			partition@27000000 {
				reg = <0x27000000 0x19000000>;
				label = "reserved-nand";
			};
		};
	};

	soc@ffe00000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		compatible = "fsl,p1022-immr", "simple-bus";
		ranges = <0x0 0 0xffe00000 0x100000>;
		bus-frequency = <0>;		// Filled out by uboot.

		ecm-law@0 {
			compatible = "fsl,ecm-law";
			reg = <0x0 0x1000>;
			fsl,num-laws = <12>;
		};

		ecm@1000 {
			compatible = "fsl,p1022-ecm", "fsl,ecm";
			reg = <0x1000 0x1000>;
			interrupts = <16 2>;
			interrupt-parent = <&mpic>;
		};

		memory-controller@2000 {
			compatible = "fsl,p1022-memory-controller";
			reg = <0x2000 0x1000>;
			interrupt-parent = <&mpic>;
			interrupts = <16 2>;
		};

		i2c@3000 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <0>;
			compatible = "fsl-i2c";
			reg = <0x3000 0x100>;
			interrupts = <43 2>;
			interrupt-parent = <&mpic>;
			dfsrr;
		};

		ssi@15000 {
			compatible = "fsl,p1022-ssi";
			cell-index = <0>;
			reg = <0x15000 0x100>;
			interrupt-parent = <&mpic>;
			interrupts = <75 2>;
			fsl,mode = "i2s-slave";
			codec-handle = <&wm8960>;
			fsl,playback-dma = <&dma00>;
			fsl,capture-dma = <&dma01>;
			fsl,fifo-depth = <15>;
			fsl,ssi-asynchronous = <1>;
		};

		i2c@3100 {
			#address-cells = <1>;
			#size-cells = <0>;
			cell-index = <1>;
			compatible = "fsl-i2c";
			reg = <0x3100 0x100>;
			interrupts = <43 2>;
			interrupt-parent = <&mpic>;
			dfsrr;
			rtc@68{
				compatible = "dallas,ds3232";
				reg = <0x68>;
				interrupts = <16 0x2>;
				interrupt-parent = <&mpic>;
			};
			adt7461@4c{
				compatible = "adi,adt7461";
				reg = <0x4c>;
			};
			zl6100@21{
				compatible = "intersil,zl6100";
				reg = <0x21>;
			};
			zl6100@24{
				compatible = "intersil,zl6100";
				reg = <0x24>;
			};
			zl6100@26{
				compatible = "intersil,zl6100";
				reg = <0x26>;
			};
			zl6100@29{
				compatible = "intersil,zl6100";
				reg = <0x29>;
			};
			wm8960:codec@1a {
				compatible = "wolfson,wm8960";
				reg = <0x1a>;
				clock-frequency = <0xbb8000>;
			};
		};

		serial0: serial@4500 {
			cell-index = <0>;
			device_type = "serial";
			compatible = "ns16550";
			reg = <0x4500 0x100>;
			clock-frequency = <0>;
			//interrupts = <42 2>; Farrukh - Removing this will let kernel poll this. Since the interrupt is shared so it can cause problem to userspace programs.
			//interrupt-parent = <&mpic>;
		};

		//serial1: serial@4600 {
		//	cell-index = <1>;
		//	device_type = "serial";
		//	compatible = "ns16550";
		//	reg = <0x4600 0x100>;
		//	clock-frequency = <0>;
		//	interrupts = <42 2>;
		//	interrupt-parent = <&mpic>;
		//};

		spi@7000 {
			cell-index = <0>;
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl,espi";
			reg = <0x7000 0x1000>;
			interrupts = <59 0x2>;
			interrupt-parent = <&mpic>;
			espi,num-ss-bits = <4>;
			mode = "cpu";

			fsl_m25p80@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "fsl,espi-flash";
				reg = <0>;
				linux,modalias = "fsl_m25p80";
				spi-max-frequency = <40000000>; /* input clock */
				partition@0 {
					label = "u-boot-spi";
					reg = <0x00000000 0x00100000>;
					read-only;
				};
				partition@100000 {
					label = "kernel-spi";
					reg = <0x00100000 0x00500000>;
					read-only;
				};
				partition@600000 {
					label = "dtb-spi";
					reg = <0x00600000 0x00100000>;
					read-only;
				};
				partition@700000 {
					label = "file system-spi";
					reg = <0x00700000 0x00900000>;
				};
			};
		};

		dma@c300 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,eloplus-dma";
			reg = <0xc300 0x4>;
			ranges = <0x0 0xc100 0x200>;
			cell-index = <1>;
			dma-channel@0 {
				compatible = "fsl,eloplus-dma-channel";
				reg = <0x0 0x80>;
				cell-index = <0>;
				interrupt-parent = <&mpic>;
				interrupts = <76 2>;
			};
			dma-channel@80 {
				compatible = "fsl,eloplus-dma-channel";
				reg = <0x80 0x80>;
				cell-index = <1>;
				interrupt-parent = <&mpic>;
				interrupts = <77 2>;
			};
			dma-channel@100 {
				compatible = "fsl,eloplus-dma-channel";
				reg = <0x100 0x80>;
				cell-index = <2>;
				interrupt-parent = <&mpic>;
				interrupts = <78 2>;
			};
			dma-channel@180 {
				compatible = "fsl,eloplus-dma-channel";
				reg = <0x180 0x80>;
				cell-index = <3>;
				interrupt-parent = <&mpic>;
				interrupts = <79 2>;
			};
		};

		gpio: gpio-controller@f000 {
			#gpio-cells = <2>;
			compatible = "fsl,mpc8572-gpio";
			reg = <0xf000 0x100>;
			interrupts = <47 0x2>;
			interrupt-parent = <&mpic>;
			gpio-controller;
		};

		L2: l2-cache-controller@20000 {
			compatible = "fsl,p1022-l2-cache-controller";
			reg = <0x20000 0x1000>;
			cache-line-size = <32>;	// 32 bytes
			cache-size = <0x40000>; // L2, 256K
			interrupt-parent = <&mpic>;
			//interrupts = <16 2>;
		};

		dma@21300 {
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,eloplus-dma";
			reg = <0x21300 0x4>;
			ranges = <0x0 0x21100 0x200>;
			cell-index = <0>;
			dma00: dma-channel@0 {
				compatible = "fsl,ssi-dma-channel";
				reg = <0x0 0x80>;
				cell-index = <0>;
				interrupt-parent = <&mpic>;
				interrupts = <20 2>;
			};
			dma01: dma-channel@80 {
				compatible = "fsl,ssi-dma-channel";
				reg = <0x80 0x80>;
				cell-index = <1>;
				interrupt-parent = <&mpic>;
				interrupts = <21 2>;
			};
			dma-channel@100 {
				compatible = "fsl,eloplus-dma-channel";
				reg = <0x100 0x80>;
				cell-index = <2>;
				interrupt-parent = <&mpic>;
				interrupts = <22 2>;
			};
			dma-channel@180 {
				compatible = "fsl,eloplus-dma-channel";
				reg = <0x180 0x80>;
				cell-index = <3>;
				interrupt-parent = <&mpic>;
				interrupts = <23 2>;
			};
		};

		usb@22000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl-usb2-dr";
			reg = <0x22000 0x1000>;
			interrupt-parent = <&mpic>;
			interrupts = <28 0x2>;
			phy_type = "ulpi";
		};

		usb@23000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl-usb2-dr";
			reg = <0x23000 0x1000>;
			interrupt-parent = <&mpic>;
			interrupts = <46 0x2>;
			phy_type = "ulpi";
		};

	  mdio@24000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl,etsec2-mdio";
			reg = <0x24000 0x1000 0xb0030 0x4>;

//			phy0: ethernet-phy@0 {
//				interrupt-parent = <&mpic>;
//				interrupts = <3 1>;
//				reg = <0x1>;
//			};
//			phy1: ethernet-phy@1 {
//				interrupt-parent = <&mpic>;
//				interrupts = <9 1>;
//				reg = <0x2>;
//			};
		};

		//mdio@25000 {
		//	#address-cells = <1>;
		//	#size-cells = <0>;
		//	compatible = "fsl,etsec2-mdio";
		//	reg = <0x25000 0x1000 0xb1030 0x4>;
		//};

		//enet0: ethernet@B0000 {
		//	#address-cells = <1>;
		//	#size-cells = <1>;
		//	cell-index = <0>;
		//	device_type = "network";
		//	model = "eTSEC";
		//	compatible = "fsl,etsec2";
		//	fsl,num_rx_queues = <0x8>;
		//	fsl,num_tx_queues = <0x8>;
		//	fsl,magic-packet;
		//	fsl,wake-on-filer;
		//	clk-handle = <&etsec1_clk>;
		//	local-mac-address = [ 00 00 00 00 00 00 ];
		//	interrupt-parent = <&mpic>;
		//	//fixed-link = <1 1 1000 0 0>;
		//	phy-handle = <&phy0>;
		//	phy-connection-type = "rgmii-id";
		//	queue-group@0{
		//		#address-cells = <1>;
		//		#size-cells = <1>;
		//		reg = <0xB0000 0x1000>;
		//		interrupts = <29 2 30 2 34 2>;
		//	};
		//	queue-group@1{
		//		#address-cells = <1>;
		//		#size-cells = <1>;
		//		reg = <0xB4000 0x1000>;
		//		interrupts = <17 2 18 2 24 2>;
		//	};
		//};

		enet1: ethernet@B1000 {
			#address-cells = <1>;
			#size-cells = <1>;
			cell-index = <0>;
			device_type = "network";
			model = "eTSEC";
			compatible = "fsl,etsec2";
			fsl,num_rx_queues = <0x8>;
			fsl,num_tx_queues = <0x8>;
			clk-handle = <&etsec2_clk>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			interrupt-parent = <&mpic>;
			//fixed-link = <1 1 1000 0 0>;
			fixed-link = <1 1 100 0 0>;
			//phy-handle = <&phy1>;
			phy-connection-type = "rgmii-id";
			queue-group@0{
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <0xB1000 0x1000>;
				interrupts = <35 2 36 2 40 2>;
			};
			queue-group@1{
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <0xB5000 0x1000>;
				interrupts = <51 2 52 2 67 2>;
			};
		};

		sdhci@2e000 {
			compatible = "fsl,p1022-esdhc", "fsl,esdhc";
			reg = <0x2e000 0x1000>;
			interrupts = <72 0x2>;
			interrupt-parent = <&mpic>;
			fsl,sdhci-auto-cmd12;
			/* Filled in by U-Boot */
			clock-frequency = <0>;
		};

		crypto@30000 {
			compatible = "fsl,sec3.3", "fsl,sec3.1", "fsl,sec3.0",
				     "fsl,sec2.4", "fsl,sec2.2", "fsl,sec2.1",
				     "fsl,sec2.0";
			reg = <0x30000 0x10000>;
			interrupts = <45 2 58 2>;
			interrupt-parent = <&mpic>;
			fsl,num-channels = <4>;
			fsl,channel-fifo-len = <24>;
			fsl,exec-units-mask = <0x97c>;
			fsl,descriptor-types-mask = <0x3a30abf>;
	//		fsl,multi-host-mode = "dual";
			fsl,channel-remap = <0x3>;
		};

		sata@18000 {
			compatible = "fsl,mpc8536-sata", "fsl,pq-sata";
			reg = <0x18000 0x1000>;
			cell-index = <1>;
			interrupts = <74 0x2>;
			interrupt-parent = <&mpic>;
		};

		sata@19000 {
			compatible = "fsl,mpc8536-sata", "fsl,pq-sata";
			reg = <0x19000 0x1000>;
			cell-index = <2>;
			interrupts = <41 0x2>;
			interrupt-parent = <&mpic>;
		};

		display@10000 {
			compatible = "fsl,diu", "fsl,p1022-diu";
			reg = <0x10000 1000>;
			interrupts = <64 2>;
			interrupt-parent = <&mpic>;
		};

		power@e0070{
			compatible = "fsl,mpc8536-pmc", "fsl,mpc8548-pmc",
				     "fsl,p1022-pmc";
			reg = <0xe0070 0x20>;
			etsec1_clk: soc-clk@B0{
				fsl,pmcdr-mask = <0x00000080>;
			};
			etsec2_clk: soc-clk@B1{
				fsl,pmcdr-mask = <0x00000040>;
			};
		};

		timer@41100 {
			compatible = "fsl,mpic-global-timer";
			reg = <0x41100 0x204>;
			interrupts = <0xf7 0x2>;
			interrupt-parent = <&mpic>;
		};

		mpic: pic@40000 {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <2>;
			reg = <0x40000 0x40000>;
			compatible = "chrp,open-pic";
			//compatible = "fsl,mpic";
			device_type = "open-pic";
			pic-no-reset;
			protected-sources = <
				16			// l2-cache-controller@20000
				3			// ethernet-phy@0
				29 30 34	// queue-group@0
				17 18 24	// gueue-group@1
				42			// serial@4500
			>;
		};

		//message@41400 {
		//	compatible = "fsl,p1022-msg","fsl,mpic-msg";
		//	reg = <0x41400 0x200>;
		//	cell-index = <1>;
		//	interrupts = <0xb0 2 0xb1 2 0xb2 2 0xb3 2>;
		//	interrupt-parent = < &mpic >;
		//};

		//message@42400 {
		//	compatible = "fsl,p1022-msg","fsl,mpic-msg";
		//	reg = <0x42400 0x200>;
		//	cell-index = <2>;
		//	interrupts = <0xb4 2 0xb5 2 0xb6 2 0xb7 2>;
		//	interrupt-parent = < &mpic >;
		//};

		msi@41600 {
			compatible = "fsl,mpic-msi";
			reg = <0x41600 0x80>;
			msi-available-ranges = <0 0x100>;
			interrupts = <
				0xe0 0
				0xe1 0
				0xe2 0
				0xe3 0
				0xe4 0
				0xe5 0
				0xe6 0
				0xe7 0>;
			interrupt-parent = <&mpic>;
		};

		global-utilities@e0000 {	//global utilities block
			compatible = "fsl,p1022-guts";
			reg = <0xe0000 0x1000>;
			fsl,has-rstcr;
		};
	};

	pci0: pcie@ffe09000 {
		cell-index = <2>;
		compatible = "fsl,p1022-pcie";
		device_type = "pci";
		#interrupt-cells = <1>;
		#size-cells = <2>;
		#address-cells = <3>;
		reg = <0 0xffe09000 0 0x1000>;
		bus-range = <0 255>;
		ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000
			  0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>;
		clock-frequency = <33333333>;
		interrupt-parent = <&mpic>;
		interrupts = <16 2>;
		interrupt-map-mask = <0xf800 0 0 7>;
		interrupt-map = <
			/* IDSEL 0x0 */
			0000 0 0 1 &mpic 4 1
			0000 0 0 2 &mpic 5 1
			0000 0 0 3 &mpic 6 1
			0000 0 0 4 &mpic 7 1
			>;
		pcie@0 {
			reg = <0x0 0x0 0x0 0x0 0x0>;
			#size-cells = <2>;
			#address-cells = <3>;
			device_type = "pci";
			ranges = <0x2000000 0x0 0xa0000000
				  0x2000000 0x0 0xa0000000
				  0x0 0x20000000

				  0x1000000 0x0 0x0
				  0x1000000 0x0 0x0
				  0x0 0x100000>;
		};
	};

	pci1: pcie@ffe0a000 {
		cell-index = <1>;
		compatible = "fsl,p1022-pcie";
		device_type = "pci";
		#interrupt-cells = <1>;
		#size-cells = <2>;
		#address-cells = <3>;
		reg = <0 0xffe0a000 0 0x1000>;
		bus-range = <0 255>;
		ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000
			  0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>;
		clock-frequency = <33333333>;
		interrupt-parent = <&mpic>;
		interrupts = <16 2>;
		interrupt-map-mask = <0xf800 0 0 7>;
		interrupt-map = <
			/* IDSEL 0x0 */
			0000 0 0 1 &mpic 0 1
			0000 0 0 2 &mpic 1 1
			0000 0 0 3 &mpic 2 1
			0000 0 0 4 &mpic 3 1
			>;
		pcie@0 {
			reg = <0x0 0x0 0x0 0x0 0x0>;
			#size-cells = <2>;
			#address-cells = <3>;
			device_type = "pci";
			ranges = <0x2000000 0x0 0xc0000000
				  0x2000000 0x0 0xc0000000
				  0x0 0x20000000

				  0x1000000 0x0 0x0
				  0x1000000 0x0 0x0
				  0x0 0x100000>;
		};
	};


	pci2: pcie@ffe0b000 {
		cell-index = <3>;
		compatible = "fsl,p1022-pcie";
		device_type = "pci";
		#interrupt-cells = <1>;
		#size-cells = <2>;
		#address-cells = <3>;
		reg = <0 0xffe0b000 0 0x1000>;
		bus-range = <0 255>;
		ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
			  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
		clock-frequency = <33333333>;
		interrupt-parent = <&mpic>;
		interrupts = <16 2>;
		interrupt-map-mask = <0xf800 0 0 7>;
		interrupt-map = <
			/* IDSEL 0x0 */
			0000 0 0 1 &mpic 8 1
			0000 0 0 2 &mpic 9 1
			0000 0 0 3 &mpic 10 1
			0000 0 0 4 &mpic 11 1
			>;
		pcie@0 {
			reg = <0x0 0x0 0x0 0x0 0x0>;
			#size-cells = <2>;
			#address-cells = <3>;
			device_type = "pci";
			ranges = <0x2000000 0x0 0x80000000
				  0x2000000 0x0 0x80000000
				  0x0 0x20000000

				  0x1000000 0x0 0x0
				  0x1000000 0x0 0x0
				  0x0 0x100000>;
		};
	};
};

[-- Attachment #3: p1022rdk-core0.dts --]
[-- Type: application/octet-stream, Size: 15749 bytes --]

/*
 * P1022 RDK - Core 0 Device Tree Source
 *
 */

/dts-v1/;
/ {
	model = "fsl,P1022";
	compatible = "fsl,P1022DS";
	#address-cells = <2>;
	#size-cells = <2>;

	aliases {
		ethernet0 = &enet0;
		serial0 = &serial1;
		msgr-block0 = &msgr_block0;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		PowerPC,P1022@0 {
			device_type = "cpu";
			reg = <0x0>;
			next-level-cache = <&L2>;
		};
	};

	memory {
		device_type = "memory";
	};

	mcomm {
		compatible = "ment,mcomm";
		//reg = <0 0x70000000 0 0x10000000>;
		//reg = <0 0x18000000 0 0x080000000>;
		reg = <0 0x18000000 0 0x008000000>;
		notifications = <
			1 1	// Core 1, Msg Reg 1
			0 0	// Core 0, Msg Reg 0
		>;
	};

	//localbus@ffe05000 {
	//	#address-cells = <2>;
	//	#size-cells = <1>;
	//	compatible = "fsl,p1022-elbc", "fsl,elbc", "simple-bus";
	//	reg = <0 0xffe05000 0 0x1000>;
	//	interrupts = <19 2>;
	//	interrupt-parent = <&mpic>;

	//	ranges = <0x0 0x0 0x0 0xe8000000 0x08000000
	//		  0x1 0x0 0x0 0xe0000000 0x08000000
	//		  0x2 0x0 0x0 0xffa00000 0x00040000
	//		  0x3 0x0 0x0 0xffdf0000 0x00008000>;

	//	nor@0,0 {
	//		#address-cells = <1>;
	//		#size-cells = <1>;
	//		compatible = "cfi-flash";
	//		reg = <0x0 0x0 0x8000000>;
	//		bank-width = <2>;
	//		device-width = <1>;

	//		partition@0 {
	//			reg = <0x0 0x03000000>;
	//			label = "ramdisk-nor";
	//			read-only;
	//		};

	//		partition@3000000 {
	//			reg = <0x03000000 0x00e00000>;
	//			label = "diagnostic-nor";
	//			read-only;
	//		};

	//		partition@3e00000 {
	//			reg = <0x03e00000 0x00200000>;
	//			label = "dink-nor";
	//			read-only;
	//		};

	//		partition@4000000 {
	//			reg = <0x04000000 0x00400000>;
	//			label = "kernel-nor";
	//			read-only;
	//		};

	//		partition@4400000 {
	//			reg = <0x04400000 0x03b00000>;
	//			label = "jffs2-nor";
	//		};

	//		partition@7f00000 {
	//			reg = <0x07f00000 0x00080000>;
	//			label = "dtb-nor";
	//			read-only;
	//		};

	//		partition@7f80000 {
	//			reg = <0x07f80000 0x00080000>;
	//			label = "u-boot-nor";
	//			read-only;
	//		};
	//	};

	//	nand@2,0 {
	//		#address-cells = <1>;
	//		#size-cells = <1>;
	//		compatible = "fsl,elbc-fcm-nand";
	//		reg = <0x2 0x0 0x40000>;

	//		partition@0 {
	//			reg = <0x0 0x02000000>;
	//			label = "u-boot-nand";
	//			read-only;
	//		};

	//		partition@2000000 {
	//			reg = <0x02000000 0x10000000>;
	//			label = "jffs2-nand";
	//		};

	//		partition@12000000 {
	//			reg = <0x12000000 0x10000000>;
	//			label = "ramdisk-nand";
	//			read-only;
	//		};

	//		partition@22000000 {
	//			reg = <0x22000000 0x04000000>;
	//			label = "kernel-nand";
	//		};

	//		partition@26000000 {
	//			reg = <0x26000000 0x01000000>;
	//			label = "dtb-nand";
	//			read-only;
	//		};

	//		partition@27000000 {
	//			reg = <0x27000000 0x19000000>;
	//			label = "reserved-nand";
	//		};
	//	};
	//};

	soc@ffe00000 {
		#address-cells = <1>;
		#size-cells = <1>;
		device_type = "soc";
		compatible = "fsl,p1022-immr", "simple-bus";
		ranges = <0x0 0 0xffe00000 0x100000>;
		bus-frequency = <0>;		// Filled out by uboot.

		//ecm-law@0 {
		//	compatible = "fsl,ecm-law";
		//	reg = <0x0 0x1000>;
		//	fsl,num-laws = <12>;
		//};

		//ecm@1000 {
		//	compatible = "fsl,p1022-ecm", "fsl,ecm";
		//	reg = <0x1000 0x1000>;
		//	interrupts = <16 2>;
		//	interrupt-parent = <&mpic>;
		//};

		//memory-controller@2000 {
		//	compatible = "fsl,p1022-memory-controller";
		//	reg = <0x2000 0x1000>;
		//	interrupt-parent = <&mpic>;
		//	interrupts = <16 2>;
		//};

		//i2c@3000 {
		//	#address-cells = <1>;
		//	#size-cells = <0>;
		//	cell-index = <0>;
		//	compatible = "fsl-i2c";
		//	reg = <0x3000 0x100>;
		//	interrupts = <43 2>;
		//	interrupt-parent = <&mpic>;
		//	dfsrr;
		//};

		//ssi@15000 {
		//	compatible = "fsl,p1022-ssi";
		//	cell-index = <0>;
		//	reg = <0x15000 0x100>;
		//	interrupt-parent = <&mpic>;
		//	interrupts = <75 2>;
		//	fsl,mode = "i2s-slave";
		//	codec-handle = <&wm8776>;
		//	fsl,playback-dma = <&dma00>;
		//	fsl,capture-dma = <&dma01>;
		//	fsl,fifo-depth = <15>;
		//	fsl,ssi-asynchronous = <1>;
		//};

		//i2c@3100 {
		//	#address-cells = <1>;
		//	#size-cells = <0>;
		//	cell-index = <1>;
		//	compatible = "fsl-i2c";
		//	reg = <0x3100 0x100>;
		//	interrupts = <43 2>;
		//	interrupt-parent = <&mpic>;
		//	dfsrr;
		//	rtc@68{
		//		compatible = "dallas,ds3232";
		//		reg = <0x68>;
		//		interrupts = <16 0x2>;
		//		interrupt-parent = <&mpic>;
		//	};
		//	adt7461@4c{
		//		compatible = "adi,adt7461";
		//		reg = <0x4c>;
		//	};
		//	zl6100@21{
		//		compatible = "intersil,zl6100";
		//		reg = <0x21>;
		//	};
		//	zl6100@24{
		//		compatible = "intersil,zl6100";
		//		reg = <0x24>;
		//	};
		//	zl6100@26{
		//		compatible = "intersil,zl6100";
		//		reg = <0x26>;
		//	};
		//	zl6100@29{
		//		compatible = "intersil,zl6100";
		//		reg = <0x29>;
		//	};
		//	wm8776:codec@1a {
		//		compatible = "wolfson,wm8776";
		//		reg = <0x1a>;
		//		clock-frequency = <0xbb8000>;
		//	};
		//};

		//serial0: serial@4500 {
		//	cell-index = <0>;
		//	device_type = "serial";
		//	compatible = "ns16550";
		//	reg = <0x4500 0x100>;
		//	clock-frequency = <0>;
		//	interrupts = <42 2>;
		//	interrupt-parent = <&mpic>;
		//};

		serial1: serial@4600 {
			cell-index = <1>;
			device-type = "serial";
			compatible = "ns16550";
			reg = <0x4600 0x100>;
			clock-frequency = <0>;
		//	//interrupts = <42 2>; Farrukh - Removing this will let kernel poll this. Since the interrupt is shared so it can cause problem to userspace programs.
		//	//interrupt-parent = <&mpic>;
		};

		//spi@7000 {
		//	cell-index = <0>;
		//	#address-cells = <1>;
		//	#size-cells = <0>;
		//	compatible = "fsl,espi";
		//	reg = <0x7000 0x1000>;
		//	interrupts = <59 0x2>;
		//	interrupt-parent = <&mpic>;
		//	espi,num-ss-bits = <4>;
		//	mode = "cpu";

		//	fsl_m25p80@0 {
		//		#address-cells = <1>;
		//		#size-cells = <1>;
		//		compatible = "fsl,espi-flash";
		//		reg = <0>;
		//		linux,modalias = "fsl_m25p80";
		//		spi-max-frequency = <40000000>; /* input clock */
		//		partition@0 {
		//			label = "u-boot-spi";
		//			reg = <0x00000000 0x00100000>;
		//			read-only;
		//		};
		//		partition@100000 {
		//			label = "kernel-spi";
		//			reg = <0x00100000 0x00500000>;
		//			read-only;
		//		};
		//		partition@600000 {
		//			label = "dtb-spi";
		//			reg = <0x00600000 0x00100000>;
		//			read-only;
		//		};
		//		partition@700000 {
		//			label = "file system-spi";
		//			reg = <0x00700000 0x00900000>;
		//		};
		//	};
		//};

		//gpio: gpio-controller@f000 {
		//	#gpio-cells = <2>;
		//	compatible = "fsl,mpc8572-gpio";
		//	reg = <0xf000 0x100>;
		//	interrupts = <47 0x2>;
		//	interrupt-parent = <&mpic>;
		//	gpio-controller;
		//};

		L2: l2-cache-controller@20000 {
			compatible = "fsl,p1022-l2-cache-controller";
			reg = <0x20000 0x1000>;
			cache-line-size = <32>;	// 32 bytes
			cache-size = <0x40000>; // L2, 256K
			interrupt-parent = <&mpic>;
			interrupts = <16 2>;
		};

		//dma@21300 {
		//	#address-cells = <1>;
		//	#size-cells = <1>;
		//	compatible = "fsl,eloplus-dma";
		//	reg = <0x21300 0x4>;
		//	ranges = <0x0 0x21100 0x200>;
		//	cell-index = <0>;
		//	dma00: dma-channel@0 {
		//		compatible = "fsl,ssi-dma-channel";
		//		reg = <0x0 0x80>;
		//		cell-index = <0>;
		//		interrupt-parent = <&mpic>;
		//		interrupts = <20 2>;
		//	};
		//	dma01: dma-channel@80 {
		//		compatible = "fsl,ssi-dma-channel";
		//		reg = <0x80 0x80>;
		//		cell-index = <1>;
		//		interrupt-parent = <&mpic>;
		//		interrupts = <21 2>;
		//	};
		//	dma-channel@100 {
		//		compatible = "fsl,eloplus-dma-channel";
		//		reg = <0x100 0x80>;
		//		cell-index = <2>;
		//		interrupt-parent = <&mpic>;
		//		interrupts = <22 2>;
		//	};
		//	dma-channel@180 {
		//		compatible = "fsl,eloplus-dma-channel";
		//		reg = <0x180 0x80>;
		//		cell-index = <3>;
		//		interrupt-parent = <&mpic>;
		//		interrupts = <23 2>;
		//	};
		//};

		//usb@22000 {
		//	#address-cells = <1>;
		//	#size-cells = <0>;
		//	compatible = "fsl-usb2-dr";
		//	reg = <0x22000 0x1000>;
		//	interrupt-parent = <&mpic>;
		//	interrupts = <28 0x2>;
		//	phy_type = "ulpi";
		//};

		mdio@24000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl,etsec2-mdio";
			reg = <0x24000 0x1000 0xb0030 0x4>;

			phy0: ethernet-phy@0 {
				interrupts = <3 1>;
				reg = <0x1>;
			};
			phy1: ethernet-phy@1 {
				interrupts = <9 1>;
				reg = <0x2>;
			};
		};

		mdio@25000 {
			#address-cells = <1>;
			#size-cells = <0>;
			compatible = "fsl,etsec2-mdio";
			reg = <0x25000 0x1000 0xb1030 0x4>;
		};

		enet0: ethernet@B0000 {
			#address-cells = <1>;
			#size-cells = <1>;
			cell-index = <0>;
			device_type = "network";
			model = "eTSEC";
			compatible = "fsl,etsec2";
			fsl,num_rx_queues = <0x8>;
			fsl,num_tx_queues = <0x8>;
			fsl,magic-packet;
			fsl,wake-on-filer;
			clk-handle = <&etsec1_clk>;
			local-mac-address = [ 00 00 00 00 00 00 ];
			interrupt-parent = <&mpic>;
			phy-handle = <&phy0>;
			phy-connection-type = "rgmii-id";
			queue-group@0{
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <0xB0000 0x1000>;
				interrupts = <29 2 30 2 34 2>;
			};
			queue-group@1{
				#address-cells = <1>;
				#size-cells = <1>;
				reg = <0xB4000 0x1000>;
				interrupts = <17 2 18 2 24 2>;
			};
		};

		//sdhci@2e000 {
		//	compatible = "fsl,p1022-esdhc", "fsl,esdhc";
		//	reg = <0x2e000 0x1000>;
		//	interrupts = <72 0x2>;
		//	interrupt-parent = <&mpic>;
		//	fsl,sdhci-auto-cmd12;
		//	/* Filled in by U-Boot */
		//	clock-frequency = <0>;
		//};

		//crypto@30000 {
		//	compatible = "fsl,sec3.1", "fsl,sec3.0", "fsl,sec2.4",
		//		     "fsl,sec2.2", "fsl,sec2.1", "fsl,sec2.0";
		//	reg = <0x30000 0x10000>;
		//	interrupts = <45 2 58 2>;
		//	interrupt-parent = <&mpic>;
		//	fsl,num-channels = <4>;
		//	fsl,channel-fifo-len = <24>;
		//	fsl,exec-units-mask = <0xbfe>;
		//	fsl,descriptor-types-mask = <0x3ab0ebf>;
		//	fsl,multi-host-mode = "primary";
		//	fsl,channel-remap = <0x3>;
		//};

		//sata@18000 {
		//	compatible = "fsl,mpc8536-sata", "fsl,pq-sata";
		//	reg = <0x18000 0x1000>;
		//	cell-index = <1>;
		//	interrupts = <74 0x2>;
		//	interrupt-parent = <&mpic>;
		//};

		//sata@19000 {
		//	compatible = "fsl,mpc8536-sata", "fsl,pq-sata";
		//	reg = <0x19000 0x1000>;
		//	cell-index = <2>;
		//	interrupts = <41 0x2>;
		//	interrupt-parent = <&mpic>;
		//};

		//display@10000 {
		//	compatible = "fsl,diu", "fsl,p1022-diu";
		//	reg = <0x10000 1000>;
		//	interrupts = <64 2>;
		//	interrupt-parent = <&mpic>;
		//};

		power@e0070{
			compatible = "fsl,mpc8536-pmc", "fsl,mpc8548-pmc",
				     "fsl,p1022-pmc";
			reg = <0xe0070 0x20>;
			etsec1_clk: soc-clk@B0{
				fsl,pmcdr-mask = <0x00000080>;
			};
			etsec2_clk: soc-clk@B1{
				fsl,pmcdr-mask = <0x00000040>;
			};
		};

		//timer@41100 {
		//	compatible = "fsl,mpic-global-timer";
		//	reg = <0x41100 0x204>;
		//	interrupts = <0xf7 0x2>;
		//	interrupt-parent = <&mpic>;
		//};

		mpic: pic@40000 {
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <2>;
			reg = <0x40000 0x40000>;
			compatible = "chrp,open-pic";
			device_type = "open-pic";
			pic-no-reset;
			protected-sources = <
				19		// localbus@ffe0500
				42		// serial@4600
				72		// sdhci@2e000
				16		// ecm@1000
						// memory-controller@20000
						// rtc@68
				43		// i2c@3000, i2c@3100
				75		// ssi@15000
				59		// spi@7000
				47		// gpio@f000
				20		// dma-channel@0
				21		// dma-channel@80
				22		// dma-channel@100
				23		// dma-channel@180
				28		// usb@22000
				9		// ethernet-phy@1
				35 36 40	// queue-group@0
				51 52 67	// queue-group@1
				58		// crypto@30000
				41		// sata@19000
				74		// sata@18000
				64		// display@10000
				0xF7	// timer@41100
				0xb1					// message@41400
				16						// pci@ffe09000
										// pci@ffe0a000
										// pci@ffe0b000
				0xe0 0xe1 0xe2 0xe3		// msi@41600
			>;
		};

		msgr_block0: message@41400 {
			compatible = "fsl,p1022-msg","fsl,mpic-msg",
				     "fsl,mpic-v3.1-msgr";
			reg = <0x41400 0x200>;
			cell-index = <1>;
			interrupts = <0xb0 2 0xb2 2 0xb3 2>;
			msg-receive-mask = <0xd>;
			interrupt-parent = < &mpic >;
		};
		//msgr_block0: message@41400 {
		//	compatible = "fsl,p1022-msg","fsl,mpic-msg",
		//				 "fsl,mpic-v3.1-msgr";
		//	reg = <0x41400 0x200>;
		//	interrupts = <0xb0 0x2 0xb1 0x2 0xb2 0x2 0xb3 2>;
		//	interrupt-parent = < &mpic >;
		//};

		//msi@41600 {
		//	compatible = "fsl,mpic-msi";
		//	reg = <0x41600 0x80>;
		//	msi-available-ranges = <0 0x100>;
		//	interrupts = <
		//		0xe0 0
		//		0xe1 0
		//		0xe2 0
		//		0xe3 0
		//		0xe4 0
		//		0xe5 0
		//		0xe6 0
		//		0xe7 0>;
		//	interrupt-parent = <&mpic>;
		//};

		//global-utilities@e0000 {	//global utilities block
		//	compatible = "fsl,p1022-guts";
		//	reg = <0xe0000 0x1000>;
		//	fsl,has-rstcr;
		//};
	};

	//pci0: pcie@ffe09000 {
	//	cell-index = <2>;
	//	compatible = "fsl,p1022-pcie";
	//	device_type = "pci";
	//	#interrupt-cells = <1>;
	//	#size-cells = <2>;
	//	#address-cells = <3>;
	//	reg = <0 0xffe09000 0 0x1000>;
	//	bus-range = <0 255>;
	//	ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000
	//		  0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>;
	//	clock-frequency = <33333333>;
	//	interrupt-parent = <&mpic>;
	//	interrupts = <16 2>;
	//	interrupt-map-mask = <0xf800 0 0 7>;
	//	interrupt-map = <
	//		/* IDSEL 0x0 */
	//		0000 0 0 1 &mpic 4 1
	//		0000 0 0 2 &mpic 5 1
	//		0000 0 0 3 &mpic 6 1
	//		0000 0 0 4 &mpic 7 1
	//		>;
	//	pcie@0 {
	//		reg = <0x0 0x0 0x0 0x0 0x0>;
	//		#size-cells = <2>;
	//		#address-cells = <3>;
	//		device_type = "pci";
	//		ranges = <0x2000000 0x0 0xa0000000
	//			  0x2000000 0x0 0xa0000000
	//			  0x0 0x20000000

	//				  0x1000000 0x0 0x0
	//			  0x1000000 0x0 0x0
	//			  0x0 0x100000>;
	//	};
	//};

	//pci1: pcie@ffe0a000 {
	//	cell-index = <1>;
	//	compatible = "fsl,p1022-pcie";
	//	device_type = "pci";
	//	#interrupt-cells = <1>;
	//	#size-cells = <2>;
	//	#address-cells = <3>;
	//	reg = <0 0xffe0a000 0 0x1000>;
	//	bus-range = <0 255>;
	//	ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x20000000
	//		  0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>;
	//	clock-frequency = <33333333>;
	//	interrupt-parent = <&mpic>;
	//	interrupts = <16 2>;
	//	interrupt-map-mask = <0xf800 0 0 7>;
	//	interrupt-map = <
	//		/* IDSEL 0x0 */
	//		0000 0 0 1 &mpic 0 1
	//		0000 0 0 2 &mpic 1 1
	//		0000 0 0 3 &mpic 2 1
	//		0000 0 0 4 &mpic 3 1
	//		>;
	//	pcie@0 {
	//		reg = <0x0 0x0 0x0 0x0 0x0>;
	//		#size-cells = <2>;
	//		#address-cells = <3>;
	//		device_type = "pci";
	//		ranges = <0x2000000 0x0 0xc0000000
	//			  0x2000000 0x0 0xc0000000
	//			  0x0 0x20000000

	//				  0x1000000 0x0 0x0
	//			  0x1000000 0x0 0x0
	//			  0x0 0x100000>;
	//	};
	//};


	//pci2: pcie@ffe0b000 {
	//	cell-index = <3>;
	//	compatible = "fsl,p1022-pcie";
	//	device_type = "pci";
	//	#interrupt-cells = <1>;
	//	#size-cells = <2>;
	//	#address-cells = <3>;
	//	reg = <0 0xffe0b000 0 0x1000>;
	//	bus-range = <0 255>;
	//	ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
	//		  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
	//	clock-frequency = <33333333>;
	//	interrupt-parent = <&mpic>;
	//	interrupts = <16 2>;
	//	interrupt-map-mask = <0xf800 0 0 7>;
	//	interrupt-map = <
	//		/* IDSEL 0x0 */
	//		0000 0 0 1 &mpic 8 1
	//		0000 0 0 2 &mpic 9 1
	//		0000 0 0 3 &mpic 10 1
	//		0000 0 0 4 &mpic 11 1
	//		>;
	//	pcie@0 {
	//		reg = <0x0 0x0 0x0 0x0 0x0>;
	//		#size-cells = <2>;
	//		#address-cells = <3>;
	//		device_type = "pci";
	//		ranges = <0x2000000 0x0 0x80000000
	//			  0x2000000 0x0 0x80000000
	//			  0x0 0x20000000

	//			  0x1000000 0x0 0x0
	//			  0x1000000 0x0 0x0
	//			  0x0 0x100000>;
	//	};
	//};
};

^ permalink raw reply

* Re: [PATCH 2/2] powerpc/85xx: create 32-bit DTS for the P1022DS
From: Scott Wood @ 2011-12-08 17:51 UTC (permalink / raw)
  To: Tabi Timur-B04825
  Cc: Wood Scott-B07421, Gala Kumar-B11780, linuxppc-dev@ozlabs.org
In-Reply-To: <4EE00D6D.70805@freescale.com>

On 12/07/2011 07:05 PM, Tabi Timur-B04825 wrote:
> Scott Wood wrote:
>>> +			interrupts =<8 8 0 0>;
>>>>  +		};
>> It's not new to this patch, but... what does "8" mean in the second cell
>> of an mpic interrupt specifier?
> 
> I have no idea.

Valid values are 0 through 3.

>> And why does the indirect pixis node
>> not have the interrupt?
> 
> Hmmm... I suppose I could add it, but I don't know what good it would do. 
>   The code that's looking for the interrupt is probing on "fsl,p1022ds-fpga".

Is there a reason why this functionality couldn't be used in indirect
mode?  The device tree describes the hardware, not the limitations of
current Linux support.

-Scott

^ permalink raw reply

* Re: [PATCH 1/2 v2] mtd/nand: fixup for fmr initialization of Freescale NAND controller
From: Scott Wood @ 2011-12-08 18:00 UTC (permalink / raw)
  To: Liu Shengzhou-B36685
  Cc: Wood Scott-B07421, Gala Kumar-B11780,
	linuxppc-dev@lists.ozlabs.org, dwmw2@infradead.org,
	linux-mtd@lists.infradead.org
In-Reply-To: <3F453DDFF675A64A89321A1F352810216B089C@039-SN1MPN1-005.039d.mgd.msft.net>

On 12/07/2011 09:36 PM, Liu Shengzhou-B36685 wrote:
> 
> 
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Thursday, December 08, 2011 1:17 AM
>> To: Liu Shengzhou-B36685
>> Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; linux-
>> mtd@lists.infradead.org; dwmw2@infradead.org; Gala Kumar-B11780
>> Subject: Re: [PATCH 1/2 v2] mtd/nand: fixup for fmr initialization of
>> Freescale NAND controller
>>
>> On 12/07/2011 12:30 AM, Liu Shengzhou-B36685 wrote:
>>> [Shengzhou] This patch doesn't change the way ECCM is handled, it's
>> still same as before, just make sure CWTO timeout is set to maximum.
>>
>> It does change it.  It used to use the existing value in FMR, and now it
>> sets it based on ORn[PGS].
>>
>> -Scott
> 
> [Shengzhou]
>   In u-boot:
> 	#ifdef CONFIG_FSL_ELBC_FMR
>            priv->fmr = CONFIG_FSL_ELBC_FMR;
> 	#else
> 	     priv->fmr = (15 << FMR_CWTO_SHIFT) | (2 << FMR_AL_SHIFT);
> 	     or = in_be32(&elbc_ctrl->regs->bank[priv->bank].or);
> 	     if (or & OR_FCM_PGS)
>     		       priv->fmr |= FMR_ECCM;
> 	#endif
> 
> In kernel: It used to be " priv->fmr = in_be32(&lbc->fmr) & FMR_ECCM
> ", so fmr was always 0x100(or 0,depend on ORn[PGS]), CWTO was
> 0(timeout was minimum).   In this patch, for not relying on
> bootloader, fmr is initialized as what u-boot does, except
> FMR_AL_SHIFT is handled in fsl_elbc_chip_init_tail and without
> definition of CONFIG_FSL_ELBC_FMR.
> 
>   So, it doesn't change it.

You're assuming that the above U-Boot code is always run.  This depends
on whether the NAND driver is enabled in U-Boot.

In the future, though, it might also depend on whether a NAND command is
actually run in U-Boot -- this makes the setting of FMR
non-deterministic between boots, which is worse than a one-time breakage
of an unusual setup (driver not enabled in U-Boot at all).

So it is a change, but I now think it's a change we should make.  The
changelog should mention that this is happening, though.

> Do we still need CONFIG_FSL_ELBC_FMR in kernel? 

We do not want such a compile-time constant in the kernel.  Use ORn[PGS]
as the patch currently does.

-Scott

^ permalink raw reply

* Re: [PATCH 3/3] mtd/nand : workaround for Freescale FCM to support large-page Nand chip
From: Scott Wood @ 2011-12-08 18:43 UTC (permalink / raw)
  To: LiuShuo
  Cc: Artem.Bityutskiy, linuxppc-dev, linux-kernel, shuo.liu, linux-mtd,
	akpm, dwmw2
In-Reply-To: <4EE09526.5040705@freescale.com>

On 12/08/2011 04:44 AM, LiuShuo wrote:
> =E4=BA=8E 2011=E5=B9=B412=E6=9C=8808=E6=97=A5 03:11, Scott Wood =E5=86=99=
=E9=81=93:
>> And if we do want to make such assumptions, we could rip out all usage
>> of index/column here, and just handle "oob" and "full page" cases.
> The function nand_do_write_ops() in nandbase.c is a Nand internal
> interface.
> It always is called when application write to nand flash. (e.g. dd)
> In this function, partial page write is dealt with by filling '0xff' to
> buffer before data copy.
> (nand_do_write_oob() is similar)
> So I don't think we need to do it in our controller driver again, it
> should be a job of upper layer.

If this is to be considered part of the interface contract, then perhaps
do a WARN_ON() if we see an unexpected index/column?  And after that,
only consider full-page or full-oob possibilities.

-Scott

^ permalink raw reply

* [linux-3.2-rc4 PPC64] Series of "Section Mismatch" warnings, are they expected ?
From: Subrata Modak @ 2011-12-08 19:10 UTC (permalink / raw)
  To: Linuxppc-dev
  Cc: Mark Wizner, Naveed, LKML, Manas k Nayak, Pavaman, Vishu,
	divya.vikas

Hello,

While compiling linux-3.2-rc4 on PPC64, i get the following set of
warning series. I wanted to know if they are expected, or, they need to
be fixed:

LD      arch/powerpc/sysdev/xics/built-in.o
WARNING: arch/powerpc/sysdev/xics/built-in.o(.text+0x136c): Section
mismatch in reference from the function .ics_rtas_init() to the
function .init.text:.xics_register_ics()
The function .ics_rtas_init() references
the function __init .xics_register_ics().
This is often because .ics_rtas_init lacks a __init 
annotation or the annotation of .xics_register_ics is wrong.

LD      arch/powerpc/sysdev/built-in.o
WARNING: arch/powerpc/sysdev/built-in.o(.text+0x99d4): Section mismatch
in reference from the function .ics_rtas_init() to the
function .init.text:.xics_register_ics()
The function .ics_rtas_init() references
the function __init .xics_register_ics().
This is often because .ics_rtas_init lacks a __init 
annotation or the annotation of .xics_register_ics is wrong.

WARNING: arch/powerpc/kernel/built-in.o(.text+0x29914): Section mismatch
in reference from the function .prom_query_opal() to the
function .init.text:.call_prom()
The function .prom_query_opal() references
the function __init .call_prom().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .call_prom is wrong.

WARNING: arch/powerpc/kernel/built-in.o(.text+0x2993c): Section mismatch
in reference from the function .prom_query_opal() to the
function .init.text:.call_prom()
The function .prom_query_opal() references
the function __init .call_prom().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .call_prom is wrong.

WARNING: arch/powerpc/kernel/built-in.o(.text+0x2994c): Section mismatch
in reference from the function .prom_query_opal() to the
function .init.text:.prom_printf()
The function .prom_query_opal() references
the function __init .prom_printf().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: arch/powerpc/kernel/built-in.o(.text+0x299a8): Section mismatch
in reference from the function .prom_query_opal() to the
function .init.text:.prom_printf()
The function .prom_query_opal() references
the function __init .prom_printf().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: arch/powerpc/kernel/built-in.o(.text+0x299cc): Section mismatch
in reference from the function .prom_query_opal() to the
function .init.text:.prom_printf()
The function .prom_query_opal() references
the function __init .prom_printf().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: arch/powerpc/kernel/built-in.o(.text+0x29d00): Section mismatch
in reference from the function .prom_opal_takeover() to the
function .init.text:.prom_printf()
The function .prom_opal_takeover() references
the function __init .prom_printf().
This is often because .prom_opal_takeover lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: arch/powerpc/kernel/built-in.o(.text+0x29d04): Section mismatch
in reference from the function .prom_opal_takeover() to the
function .init.text:.prom_close_stdin()
The function .prom_opal_takeover() references
the function __init .prom_close_stdin().
This is often because .prom_opal_takeover lacks a __init 
annotation or the annotation of .prom_close_stdin is wrong.

MODPOST vmlinux.o
WARNING: vmlinux.o(.text+0x90be): Section mismatch in reference from the
variable generic_secondary_common_init to the
variable .init.data:spinning_secondaries
The function generic_secondary_common_init() references
the variable __initdata spinning_secondaries.
This is often because generic_secondary_common_init lacks a __initdata 
annotation or the annotation of spinning_secondaries is wrong.

WARNING: vmlinux.o(.text+0x93e4): Section mismatch in reference from the
function .start_secondary_prolog() to the
function .devinit.text:.start_secondary()
The function .start_secondary_prolog() references
the function __devinit .start_secondary().
This is often because .start_secondary_prolog lacks a __devinit 
annotation or the annotation of .start_secondary is wrong.

WARNING: vmlinux.o(.text+0x93f8): Section mismatch in reference from the
function .start_secondary_resume() to the
function .devinit.text:.start_secondary()
The function .start_secondary_resume() references
the function __devinit .start_secondary().
This is often because .start_secondary_resume lacks a __devinit 
annotation or the annotation of .start_secondary is wrong.

WARNING: vmlinux.o(.text+0x23034): Section mismatch in reference from
the function .early_setup_secondary() to the
function .cpuinit.text:.early_init_mmu_secondary()
The function .early_setup_secondary() references
the function __cpuinit .early_init_mmu_secondary().
This is often because .early_setup_secondary lacks a __cpuinit 
annotation or the annotation of .early_init_mmu_secondary is wrong.

WARNING: vmlinux.o(.text+0x349ac): Section mismatch in reference from
the function .prom_query_opal() to the function .init.text:.call_prom()
The function .prom_query_opal() references
the function __init .call_prom().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .call_prom is wrong.

WARNING: vmlinux.o(.text+0x349d4): Section mismatch in reference from
the function .prom_query_opal() to the function .init.text:.call_prom()
The function .prom_query_opal() references
the function __init .call_prom().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .call_prom is wrong.

WARNING: vmlinux.o(.text+0x349e4): Section mismatch in reference from
the function .prom_query_opal() to the
function .init.text:.prom_printf()
The function .prom_query_opal() references
the function __init .prom_printf().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: vmlinux.o(.text+0x34a40): Section mismatch in reference from
the function .prom_query_opal() to the
function .init.text:.prom_printf()
The function .prom_query_opal() references
the function __init .prom_printf().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: vmlinux.o(.text+0x34a64): Section mismatch in reference from
the function .prom_query_opal() to the
function .init.text:.prom_printf()
The function .prom_query_opal() references
the function __init .prom_printf().
This is often because .prom_query_opal lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: vmlinux.o(.text+0x34d98): Section mismatch in reference from
the function .prom_opal_takeover() to the
function .init.text:.prom_printf()
The function .prom_opal_takeover() references
the function __init .prom_printf().
This is often because .prom_opal_takeover lacks a __init 
annotation or the annotation of .prom_printf is wrong.

WARNING: vmlinux.o(.text+0x34d9c): Section mismatch in reference from
the function .prom_opal_takeover() to the
function .init.text:.prom_close_stdin()
The function .prom_opal_takeover() references
the function __init .prom_close_stdin().
This is often because .prom_opal_takeover lacks a __init 
annotation or the annotation of .prom_close_stdin is wrong.

WARNING: vmlinux.o(.text+0x3b024): Section mismatch in reference from
the function .kexec_prepare_cpus() to the
function .cpuinit.text:.cpu_up()
The function .kexec_prepare_cpus() references
the function __cpuinit .cpu_up().
This is often because .kexec_prepare_cpus lacks a __cpuinit 
annotation or the annotation of .cpu_up is wrong.

WARNING: vmlinux.o(.text+0x4c760): Section mismatch in reference from
the function .mark_reserved_regions_for_nid() to the
function .meminit.text:.early_pfn_to_nid()
The function .mark_reserved_regions_for_nid() references
the function __meminit .early_pfn_to_nid().
This is often because .mark_reserved_regions_for_nid lacks a __meminit 
annotation or the annotation of .early_pfn_to_nid is wrong.

WARNING: vmlinux.o(.text+0x4c780): Section mismatch in reference from
the function .mark_reserved_regions_for_nid() to the
function .init.text:.work_with_active_regions()
The function .mark_reserved_regions_for_nid() references
the function __init .work_with_active_regions().
This is often because .mark_reserved_regions_for_nid lacks a __init 
annotation or the annotation of .work_with_active_regions is wrong.

WARNING: vmlinux.o(.text+0x4c7d4): Section mismatch in reference from
the function .mark_reserved_regions_for_nid() to the
function .meminit.text:.early_pfn_to_nid()
The function .mark_reserved_regions_for_nid() references
the function __meminit .early_pfn_to_nid().
This is often because .mark_reserved_regions_for_nid lacks a __meminit 
annotation or the annotation of .early_pfn_to_nid is wrong.

WARNING: vmlinux.o(.text+0x4c7f0): Section mismatch in reference from
the function .mark_reserved_regions_for_nid() to the
function .init.text:.work_with_active_regions()
The function .mark_reserved_regions_for_nid() references
the function __init .work_with_active_regions().
This is often because .mark_reserved_regions_for_nid lacks a __init 
annotation or the annotation of .work_with_active_regions is wrong.

WARNING: vmlinux.o(.text+0x4c828): Section mismatch in reference from
the function .mark_reserved_regions_for_nid() to the
function .init.text:.reserve_bootmem_node()
The function .mark_reserved_regions_for_nid() references
the function __init .reserve_bootmem_node().
This is often because .mark_reserved_regions_for_nid lacks a __init 
annotation or the annotation of .reserve_bootmem_node is wrong.

WARNING: vmlinux.o(.text+0x5ba24): Section mismatch in reference from
the function .ics_rtas_init() to the
function .init.text:.xics_register_ics()
The function .ics_rtas_init() references
the function __init .xics_register_ics().
This is often because .ics_rtas_init lacks a __init 
annotation or the annotation of .xics_register_ics is wrong.

WARNING: vmlinux.o(.text+0x6e3ec): Section mismatch in reference from
the function .pci_dn_reconfig_notifier() to the
function .devinit.text:.update_dn_pci_info()
The function .pci_dn_reconfig_notifier() references
the function __devinit .update_dn_pci_info().
This is often because .pci_dn_reconfig_notifier lacks a __devinit 
annotation or the annotation of .update_dn_pci_info is wrong.

WARNING: vmlinux.o(.text+0x71f28): Section mismatch in reference from
the function .dlpar_online_cpu() to the function .cpuinit.text:.cpu_up()
The function .dlpar_online_cpu() references
the function __cpuinit .cpu_up().
This is often because .dlpar_online_cpu lacks a __cpuinit 
annotation or the annotation of .cpu_up is wrong.

WARNING: vmlinux.o(.text+0x77248): Section mismatch in reference from
the function .pcibios_add_pci_devices() to the
function .devinit.text:.pcibios_setup_bus_devices()
The function .pcibios_add_pci_devices() references
the function __devinit .pcibios_setup_bus_devices().
This is often because .pcibios_add_pci_devices lacks a __devinit 
annotation or the annotation of .pcibios_setup_bus_devices is wrong.

WARNING: vmlinux.o(.text+0x77298): Section mismatch in reference from
the function .pcibios_add_pci_devices() to the
function .devinit.text:.pci_scan_bridge()
The function .pcibios_add_pci_devices() references
the function __devinit .pci_scan_bridge().
This is often because .pcibios_add_pci_devices lacks a __devinit 
annotation or the annotation of .pci_scan_bridge is wrong.

WARNING: vmlinux.o(.text+0x772d0): Section mismatch in reference from
the function .pcibios_add_pci_devices() to the
function .devinit.text:.of_rescan_bus()
The function .pcibios_add_pci_devices() references
the function __devinit .of_rescan_bus().
This is often because .pcibios_add_pci_devices lacks a __devinit 
annotation or the annotation of .of_rescan_bus is wrong.

WARNING: vmlinux.o(.text+0x3a3fe0): Section mismatch in reference from
the function .dlpar_remove_slot() to the
function .devinit.text:.vio_unregister_device()
The function .dlpar_remove_slot() references
the function __devinit .vio_unregister_device().
This is often because .dlpar_remove_slot lacks a __devinit 
annotation or the annotation of .vio_unregister_device is wrong.

WARNING: vmlinux.o(.text+0x3a40a8): Section mismatch in reference from
the function .dlpar_add_pci_slot() to the
function .devinit.text:.pcibios_map_io_space()
The function .dlpar_add_pci_slot() references
the function __devinit .pcibios_map_io_space().
This is often because .dlpar_add_pci_slot lacks a __devinit 
annotation or the annotation of .pcibios_map_io_space is wrong.

WARNING: vmlinux.o(.text+0x3a4148): Section mismatch in reference from
the function .dlpar_add_pci_slot() to the
function .devinit.text:.of_scan_pci_bridge()
The function .dlpar_add_pci_slot() references
the function __devinit .of_scan_pci_bridge().
This is often because .dlpar_add_pci_slot lacks a __devinit 
annotation or the annotation of .of_scan_pci_bridge is wrong.

WARNING: vmlinux.o(.text+0x3a4300): Section mismatch in reference from
the function .dlpar_add_slot() to the
function .devinit.text:.init_phb_dynamic()
The function .dlpar_add_slot() references
the function __devinit .init_phb_dynamic().
This is often because .dlpar_add_slot lacks a __devinit 
annotation or the annotation of .init_phb_dynamic is wrong.

WRAP    arch/powerpc/boot/zImage.pmac
WARNING: drivers/spi/spi-gpio.o(.devinit.text+0x8c): Section mismatch in
reference from the function .spi_gpio_probe() to the
function .init.text:.spi_gpio_alloc()
The function __devinit .spi_gpio_probe() references
a function __init .spi_gpio_alloc().
If .spi_gpio_alloc is only used by .spi_gpio_probe then
annotate .spi_gpio_alloc with a matching annotation.

WARNING: drivers/spi/spi-gpio.o(.devinit.text+0x210): Section mismatch
in reference from the function .spi_gpio_probe() to the
function .init.text:.spi_gpio_alloc()
The function __devinit .spi_gpio_probe() references
a function __init .spi_gpio_alloc().
If .spi_gpio_alloc is only used by .spi_gpio_probe then
annotate .spi_gpio_alloc with a matching annotation.

WARNING: drivers/spi/spi-gpio.o(.devinit.text+0x244): Section mismatch
in reference from the function .spi_gpio_probe() to the
function .init.text:.spi_gpio_alloc()
The function __devinit .spi_gpio_probe() references
a function __init .spi_gpio_alloc().
If .spi_gpio_alloc is only used by .spi_gpio_probe then
annotate .spi_gpio_alloc with a matching annotation.

Regards--
Subrata

^ permalink raw reply

* Re: [PATCH] powerpc: POWER7 optimised copy_to_user/copy_from_user using VMX
From: Benjamin Herrenschmidt @ 2011-12-08 19:40 UTC (permalink / raw)
  To: Anton Blanchard; +Cc: Michael Neuling, paulus, sukadev, linuxppc-dev
In-Reply-To: <20111208170450.22247a4b@kryten>

On Thu, 2011-12-08 at 17:04 +1100, Anton Blanchard wrote:
> Hi,
> 
> > I hate the idea of having a POWER7 FTR bit.  Every loon will (and has
> > tried to in the past) attach every POWER7 related thing to it, rather
> > than thinking about what the feature really is for.  
> > 
> > What about other processors which could also benefit from this copy
> > loop?  Turning on CPU_FTR_POWER7 for them is gonna look a bit silly.
> 
> As we discussed online, we could call it CPU_FTR_VMX_COPY and start
> thinking about a better way to solve the CPU feature bit mess.
> 
> One idea would be to have a structure of function pointers for each
> CPU that gets runtime patched into the right places, similar to how we
> do some of the MMU fixups.

Or the vdso... we have a table of some sort which is used to patch
symbols.

But it's keyed off cpu features.

I'm reluctant to adding another table of PVRs, it needs to deal with the
pseudo-PVRs from pHyp, and things will get out of sync.

CPU features are the way to go, tho we can use them to key off a branch
patching mechanism if we want to. It's easy to add new bitmasks for
in-kernel features at least (it's the user features which are more nasty
but they are a separate thing).

So if we have to we can split cpu feature into another separate mask
like I did for mmu features with the same macros etc... For example, the
debug features could be moved out, or whatever.

Cheers,
Ben.
 

^ permalink raw reply

* Re: [PATCH 01/16 v3] pmac_zilog: fix unexpected irq
From: Benjamin Herrenschmidt @ 2011-12-08 19:44 UTC (permalink / raw)
  To: Finn Thain; +Cc: linuxppc-dev, linux-m68k, Geert Uytterhoeven, linux-serial
In-Reply-To: <alpine.LNX.2.00.1112082128330.2357@nippy.intranet>

On Thu, 2011-12-08 at 22:26 +1100, Finn Thain wrote:
> 
> Maybe the modem wants a transition on DTR or similar, but it hasn't had 
> time to initialise when that happens during SCC resumption.
> 
> If so, calling pmz_shutdown() then pmz_startup() from the tail of 
> pmz_resume() without delay should probably fail to revive it... 

Well, we power the modem down and back up... but it's possible that we
fail to re-enable something, I'll check. That used to work (at least
with macserial, maybe I never tried this specific torture with pmz...).
I'll figure it out eventually.

Cheers,
Ben.

^ permalink raw reply

* Re: cpu idle time going backward
From: kevin diggs @ 2011-12-08 19:53 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: linuxppc-dev
In-Reply-To: <m2fwgvnwlm.fsf@igel.home>

On 12/8/11, Andreas Schwab <schwab@linux-m68k.org> wrote:
> There seems to be something wrong with cpu idle time accounting at least
> on G5.  The value as reported in the cpu lines in /proc/stat seems to be
> stuck in the interval [100000,210000] for each cpu, jumping back at
> random points.  Any idea what could be the problem?
>
> Andreas.
>
> --
What kernel versions?

kevin

^ permalink raw reply

* [PATCH] [v2] powerpc/85xx: create 32-bit DTS for the P1022DS
From: Timur Tabi @ 2011-12-08 21:50 UTC (permalink / raw)
  To: kumar.gala, linuxppc-dev

Create a 32-bit address space version of p1022ds.dts.  To avoid confusion,
p1022ds.dts is renamed to p1022ds_36b.dts.  We also create p1022ds.dtsi
to store some common nodes.

Signed-off-by: Timur Tabi <timur@freescale.com>
---

fix pixis interrupt property and added tbi node

 arch/powerpc/boot/dts/p1022ds.dts     |  270 ---------------------------------
 arch/powerpc/boot/dts/p1022ds.dtsi    |  116 ++++++++++++++
 arch/powerpc/boot/dts/p1022ds_32b.dts |  218 ++++++++++++++++++++++++++
 arch/powerpc/boot/dts/p1022ds_36b.dts |  218 ++++++++++++++++++++++++++
 4 files changed, 552 insertions(+), 270 deletions(-)
 delete mode 100644 arch/powerpc/boot/dts/p1022ds.dts
 create mode 100644 arch/powerpc/boot/dts/p1022ds.dtsi
 create mode 100644 arch/powerpc/boot/dts/p1022ds_32b.dts
 create mode 100644 arch/powerpc/boot/dts/p1022ds_36b.dts

diff --git a/arch/powerpc/boot/dts/p1022ds.dts b/arch/powerpc/boot/dts/p1022ds.dts
deleted file mode 100644
index a54dd13..0000000
--- a/arch/powerpc/boot/dts/p1022ds.dts
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * P1022 DS 36Bit Physical Address Map Device Tree Source
- *
- * Copyright 2010 Freescale Semiconductor, Inc.
- *
- * This file is licensed under the terms of the GNU General Public License
- * version 2.  This program is licensed "as is" without any warranty of any
- * kind, whether express or implied.
- */
-
-/include/ "fsl/p1022si-pre.dtsi"
-/ {
-	model = "fsl,P1022DS";
-	compatible = "fsl,P1022DS";
-
-	memory {
-		device_type = "memory";
-	};
-
-	lbc: localbus@fffe05000 {
-		reg = <0xf 0xffe05000 0 0x1000>;
-		ranges = <0x0 0x0 0xf 0xe8000000 0x08000000
-			  0x1 0x0 0xf 0xe0000000 0x08000000
-			  0x2 0x0 0xf 0xff800000 0x00040000
-			  0x3 0x0 0xf 0xffdf0000 0x00008000>;
-
-		/*
-		 * This node is used to access the pixis via "indirect" mode,
-		 * which is done by writing the pixis register index to chip
-		 * select 0 and the value to/from chip select 1.  Indirect
-		 * mode is the only way to access the pixis when DIU video
-		 * is enabled.  Note that this assumes that the first column
-		 * of the 'ranges' property above is the chip select number.
-		 */
-		board-control@0,0 {
-			compatible = "fsl,p1022ds-indirect-pixis";
-			reg = <0x0 0x0 1	/* CS0 */
-			       0x1 0x0 1>;	/* CS1 */
-		};
-
-		nor@0,0 {
-			#address-cells = <1>;
-			#size-cells = <1>;
-			compatible = "cfi-flash";
-			reg = <0x0 0x0 0x8000000>;
-			bank-width = <2>;
-			device-width = <1>;
-
-			partition@0 {
-				reg = <0x0 0x03000000>;
-				label = "ramdisk-nor";
-				read-only;
-			};
-
-			partition@3000000 {
-				reg = <0x03000000 0x00e00000>;
-				label = "diagnostic-nor";
-				read-only;
-			};
-
-			partition@3e00000 {
-				reg = <0x03e00000 0x00200000>;
-				label = "dink-nor";
-				read-only;
-			};
-
-			partition@4000000 {
-				reg = <0x04000000 0x00400000>;
-				label = "kernel-nor";
-				read-only;
-			};
-
-			partition@4400000 {
-				reg = <0x04400000 0x03b00000>;
-				label = "jffs2-nor";
-			};
-
-			partition@7f00000 {
-				reg = <0x07f00000 0x00080000>;
-				label = "dtb-nor";
-				read-only;
-			};
-
-			partition@7f80000 {
-				reg = <0x07f80000 0x00080000>;
-				label = "u-boot-nor";
-				read-only;
-			};
-		};
-
-		nand@2,0 {
-			#address-cells = <1>;
-			#size-cells = <1>;
-			compatible = "fsl,elbc-fcm-nand";
-			reg = <0x2 0x0 0x40000>;
-
-			partition@0 {
-				reg = <0x0 0x02000000>;
-				label = "u-boot-nand";
-				read-only;
-			};
-
-			partition@2000000 {
-				reg = <0x02000000 0x10000000>;
-				label = "jffs2-nand";
-			};
-
-			partition@12000000 {
-				reg = <0x12000000 0x10000000>;
-				label = "ramdisk-nand";
-				read-only;
-			};
-
-			partition@22000000 {
-				reg = <0x22000000 0x04000000>;
-				label = "kernel-nand";
-			};
-
-			partition@26000000 {
-				reg = <0x26000000 0x01000000>;
-				label = "dtb-nand";
-				read-only;
-			};
-
-			partition@27000000 {
-				reg = <0x27000000 0x19000000>;
-				label = "reserved-nand";
-			};
-		};
-
-		board-control@3,0 {
-			compatible = "fsl,p1022ds-fpga", "fsl,fpga-ngpixis";
-			reg = <3 0 0x30>;
-			interrupt-parent = <&mpic>;
-			/*
-			 * IRQ8 is generated if the "EVENT" switch is pressed
-			 * and PX_CTL[EVESEL] is set to 00.
-			 */
-			interrupts = <8 8 0 0>;
-		};
-	};
-
-	soc: soc@fffe00000 {
-		ranges = <0x0 0xf 0xffe00000 0x100000>;
-
-		i2c@3100 {
-			wm8776:codec@1a {
-				compatible = "wlf,wm8776";
-				reg = <0x1a>;
-				/*
-				 * clock-frequency will be set by U-Boot if
-				 * the clock is enabled.
-				 */
-			};
-		};
-
-		spi@7000 {
-			flash@0 {
-				#address-cells = <1>;
-				#size-cells = <1>;
-				compatible = "spansion,s25sl12801";
-				reg = <0>;
-				spi-max-frequency = <40000000>; /* input clock */
-
-				partition@0 {
-					label = "u-boot-spi";
-					reg = <0x00000000 0x00100000>;
-					read-only;
-				};
-				partition@100000 {
-					label = "kernel-spi";
-					reg = <0x00100000 0x00500000>;
-					read-only;
-				};
-				partition@600000 {
-					label = "dtb-spi";
-					reg = <0x00600000 0x00100000>;
-					read-only;
-				};
-				partition@700000 {
-					label = "file system-spi";
-					reg = <0x00700000 0x00900000>;
-				};
-			};
-		};
-
-		ssi@15000 {
-			fsl,mode = "i2s-slave";
-			codec-handle = <&wm8776>;
-			fsl,ssi-asynchronous;
-		};
-
-		usb@22000 {
-			phy_type = "ulpi";
-		};
-
-		usb@23000 {
-			status = "disabled";
-		};
-
-		mdio@24000 {
-			phy0: ethernet-phy@0 {
-				interrupts = <3 1 0 0>;
-				reg = <0x1>;
-			};
-			phy1: ethernet-phy@1 {
-				interrupts = <9 1 0 0>;
-				reg = <0x2>;
-			};
-		};
-
-		ethernet@b0000 {
-			phy-handle = <&phy0>;
-			phy-connection-type = "rgmii-id";
-		};
-
-		ethernet@b1000 {
-			phy-handle = <&phy1>;
-			phy-connection-type = "rgmii-id";
-		};
-	};
-
-	pci0: pcie@fffe09000 {
-		reg = <0xf 0xffe09000 0 0x1000>;
-		ranges = <0x2000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x20000000
-			  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>;
-		pcie@0 {
-			ranges = <0x2000000 0x0 0xe0000000
-				  0x2000000 0x0 0xe0000000
-				  0x0 0x20000000
-
-				  0x1000000 0x0 0x0
-				  0x1000000 0x0 0x0
-				  0x0 0x100000>;
-		};
-	};
-
-	pci1: pcie@fffe0a000 {
-		reg = <0xf 0xffe0a000 0 0x1000>;
-		ranges = <0x2000000 0x0 0xe0000000 0xc 0x40000000 0x0 0x20000000
-			  0x1000000 0x0 0x00000000 0xf 0xffc20000 0x0 0x10000>;
-		pcie@0 {
-			reg = <0x0 0x0 0x0 0x0 0x0>;
-			ranges = <0x2000000 0x0 0xe0000000
-				  0x2000000 0x0 0xe0000000
-				  0x0 0x20000000
-
-				  0x1000000 0x0 0x0
-				  0x1000000 0x0 0x0
-				  0x0 0x100000>;
-		};
-	};
-
-	pci2: pcie@fffe0b000 {
-		reg = <0xf 0xffe0b000 0 0x1000>;
-		ranges = <0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000
-			  0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000>;
-		pcie@0 {
-			ranges = <0x2000000 0x0 0xe0000000
-				  0x2000000 0x0 0xe0000000
-				  0x0 0x20000000
-
-				  0x1000000 0x0 0x0
-				  0x1000000 0x0 0x0
-				  0x0 0x100000>;
-		};
-	};
-};
-
-/include/ "fsl/p1022si-post.dtsi"
diff --git a/arch/powerpc/boot/dts/p1022ds.dtsi b/arch/powerpc/boot/dts/p1022ds.dtsi
new file mode 100644
index 0000000..c82cfc9
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1022ds.dtsi
@@ -0,0 +1,116 @@
+/*
+ * P1022 DS Device Tree Source stub (no addresses or top-level ranges)
+ *
+ * Copyright 2011 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Freescale Semiconductor nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+&board_soc {
+	i2c@3100 {
+		wm8776:codec@1a {
+			compatible = "wlf,wm8776";
+			reg = <0x1a>;
+			/*
+			 * clock-frequency will be set by U-Boot if
+			 * the clock is enabled.
+			 */
+		};
+	};
+
+	spi@7000 {
+		flash@0 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "spansion,s25sl12801";
+			reg = <0>;
+			spi-max-frequency = <40000000>; /* input clock */
+
+			partition@0 {
+				label = "u-boot-spi";
+				reg = <0x00000000 0x00100000>;
+				read-only;
+			};
+			partition@100000 {
+				label = "kernel-spi";
+				reg = <0x00100000 0x00500000>;
+				read-only;
+			};
+			partition@600000 {
+				label = "dtb-spi";
+				reg = <0x00600000 0x00100000>;
+				read-only;
+			};
+			partition@700000 {
+				label = "file system-spi";
+				reg = <0x00700000 0x00900000>;
+			};
+		};
+	};
+
+	ssi@15000 {
+		fsl,mode = "i2s-slave";
+		codec-handle = <&wm8776>;
+		fsl,ssi-asynchronous;
+	};
+
+	usb@22000 {
+		phy_type = "ulpi";
+	};
+
+	usb@23000 {
+		status = "disabled";
+	};
+
+	mdio@24000 {
+		phy0: ethernet-phy@0 {
+			interrupts = <3 1 0 0>;
+			reg = <0x1>;
+		};
+		phy1: ethernet-phy@1 {
+			interrupts = <9 1 0 0>;
+			reg = <0x2>;
+		};
+		tbi-phy@2 {
+			device_type = "tbi-phy";
+			reg = <0x2>;
+		};
+	};
+
+	ethernet@b0000 {
+		phy-handle = <&phy0>;
+		phy-connection-type = "rgmii-id";
+	};
+
+	ethernet@b1000 {
+		phy-handle = <&phy1>;
+		phy-connection-type = "rgmii-id";
+	};
+};
+
diff --git a/arch/powerpc/boot/dts/p1022ds_32b.dts b/arch/powerpc/boot/dts/p1022ds_32b.dts
new file mode 100644
index 0000000..03c94e1
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1022ds_32b.dts
@@ -0,0 +1,218 @@
+/*
+ * P1022 DS 32-bit Physical Address Map Device Tree Source
+ *
+ * Copyright 2011 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Freescale Semiconductor nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/include/ "fsl/p1022si-pre.dtsi"
+/ {
+	model = "fsl,P1022DS";
+	compatible = "fsl,P1022DS";
+
+	memory {
+		device_type = "memory";
+	};
+
+	lbc: localbus@ffe05000 {
+		reg = <0x0 0xffe05000 0 0x1000>;
+		ranges = <0x0 0x0 0x0 0xe8000000 0x08000000
+			  0x1 0x0 0x0 0xe0000000 0x08000000
+			  0x2 0x0 0x0 0xff800000 0x00040000
+			  0x3 0x0 0x0 0xffdf0000 0x00008000>;
+
+		/*
+		 * This node is used to access the pixis via "indirect" mode,
+		 * which is done by writing the pixis register index to chip
+		 * select 0 and the value to/from chip select 1.  Indirect
+		 * mode is the only way to access the pixis when DIU video
+		 * is enabled.  Note that this assumes that the first column
+		 * of the 'ranges' property above is the chip select number.
+		 */
+		board-control@0,0 {
+			compatible = "fsl,p1022ds-indirect-pixis";
+			reg = <0x0 0x0 1	/* CS0 */
+			       0x1 0x0 1>;	/* CS1 */
+		};
+
+		nor@0,0 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "cfi-flash";
+			reg = <0x0 0x0 0x8000000>;
+			bank-width = <2>;
+			device-width = <1>;
+
+			partition@0 {
+				reg = <0x0 0x03000000>;
+				label = "ramdisk-nor";
+				read-only;
+			};
+
+			partition@3000000 {
+				reg = <0x03000000 0x00e00000>;
+				label = "diagnostic-nor";
+				read-only;
+			};
+
+			partition@3e00000 {
+				reg = <0x03e00000 0x00200000>;
+				label = "dink-nor";
+				read-only;
+			};
+
+			partition@4000000 {
+				reg = <0x04000000 0x00400000>;
+				label = "kernel-nor";
+				read-only;
+			};
+
+			partition@4400000 {
+				reg = <0x04400000 0x03b00000>;
+				label = "jffs2-nor";
+			};
+
+			partition@7f00000 {
+				reg = <0x07f00000 0x00080000>;
+				label = "dtb-nor";
+				read-only;
+			};
+
+			partition@7f80000 {
+				reg = <0x07f80000 0x00080000>;
+				label = "u-boot-nor";
+				read-only;
+			};
+		};
+
+		nand@2,0 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "fsl,elbc-fcm-nand";
+			reg = <0x2 0x0 0x40000>;
+
+			partition@0 {
+				reg = <0x0 0x02000000>;
+				label = "u-boot-nand";
+				read-only;
+			};
+
+			partition@2000000 {
+				reg = <0x02000000 0x10000000>;
+				label = "jffs2-nand";
+			};
+
+			partition@12000000 {
+				reg = <0x12000000 0x10000000>;
+				label = "ramdisk-nand";
+				read-only;
+			};
+
+			partition@22000000 {
+				reg = <0x22000000 0x04000000>;
+				label = "kernel-nand";
+			};
+
+			partition@26000000 {
+				reg = <0x26000000 0x01000000>;
+				label = "dtb-nand";
+				read-only;
+			};
+
+			partition@27000000 {
+				reg = <0x27000000 0x19000000>;
+				label = "reserved-nand";
+			};
+		};
+
+		board-control@3,0 {
+			compatible = "fsl,p1022ds-fpga", "fsl,fpga-ngpixis";
+			reg = <3 0 0x30>;
+			interrupt-parent = <&mpic>;
+			/*
+			 * IRQ8 is generated if the "EVENT" switch is pressed
+			 * and PX_CTL[EVESEL] is set to 00.
+			 */
+			interrupts = <8 0 0 0>;
+		};
+	};
+
+	board_soc: soc: soc@ffe00000 {
+		ranges = <0x0 0x0 0xffe00000 0x100000>;
+	};
+
+	pci0: pcie@ffe09000 {
+		reg = <0x0 0xffe09000 0 0x1000>;
+		ranges = <0x2000000 0x0 0xe0000000 0 0xa0000000 0x0 0x20000000
+			  0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>;
+		pcie@0 {
+			ranges = <0x2000000 0x0 0xe0000000
+				  0x2000000 0x0 0xe0000000
+				  0x0 0x20000000
+
+				  0x1000000 0x0 0x0
+				  0x1000000 0x0 0x0
+				  0x0 0x100000>;
+		};
+	};
+
+	pci1: pcie@ffe0a000 {
+		reg = <0 0xffe0a000 0 0x1000>;
+		ranges = <0x2000000 0x0 0xe0000000 0 0xc0000000 0x0 0x20000000
+			  0x1000000 0x0 0x00000000 0 0xffc20000 0x0 0x10000>;
+		pcie@0 {
+			ranges = <0x2000000 0x0 0xe0000000
+				  0x2000000 0x0 0xe0000000
+				  0x0 0x20000000
+
+				  0x1000000 0x0 0x0
+				  0x1000000 0x0 0x0
+				  0x0 0x100000>;
+		};
+	};
+
+	pci2: pcie@ffe0b000 {
+		reg = <0 0xffe0b000 0 0x1000>;
+		ranges = <0x2000000 0x0 0xe0000000 0 0x80000000 0x0 0x20000000
+			  0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
+		pcie@0 {
+			ranges = <0x2000000 0x0 0xe0000000
+				  0x2000000 0x0 0xe0000000
+				  0x0 0x20000000
+
+				  0x1000000 0x0 0x0
+				  0x1000000 0x0 0x0
+				  0x0 0x100000>;
+		};
+	};
+};
+
+/include/ "fsl/p1022si-post.dtsi"
+/include/ "p1022ds.dtsi"
diff --git a/arch/powerpc/boot/dts/p1022ds_36b.dts b/arch/powerpc/boot/dts/p1022ds_36b.dts
new file mode 100644
index 0000000..2893bfa
--- /dev/null
+++ b/arch/powerpc/boot/dts/p1022ds_36b.dts
@@ -0,0 +1,218 @@
+/*
+ * P1022 DS 36-bit Physical Address Map Device Tree Source
+ *
+ * Copyright 2011 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in the
+ *       documentation and/or other materials provided with the distribution.
+ *     * Neither the name of Freescale Semiconductor nor the
+ *       names of its contributors may be used to endorse or promote products
+ *       derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/include/ "fsl/p1022si-pre.dtsi"
+/ {
+	model = "fsl,P1022DS";
+	compatible = "fsl,P1022DS";
+
+	memory {
+		device_type = "memory";
+	};
+
+	lbc: localbus@fffe05000 {
+		reg = <0xf 0xffe05000 0 0x1000>;
+		ranges = <0x0 0x0 0xf 0xe8000000 0x08000000
+			  0x1 0x0 0xf 0xe0000000 0x08000000
+			  0x2 0x0 0xf 0xff800000 0x00040000
+			  0x3 0x0 0xf 0xffdf0000 0x00008000>;
+
+		/*
+		 * This node is used to access the pixis via "indirect" mode,
+		 * which is done by writing the pixis register index to chip
+		 * select 0 and the value to/from chip select 1.  Indirect
+		 * mode is the only way to access the pixis when DIU video
+		 * is enabled.  Note that this assumes that the first column
+		 * of the 'ranges' property above is the chip select number.
+		 */
+		board-control@0,0 {
+			compatible = "fsl,p1022ds-indirect-pixis";
+			reg = <0x0 0x0 1	/* CS0 */
+			       0x1 0x0 1>;	/* CS1 */
+		};
+
+		nor@0,0 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "cfi-flash";
+			reg = <0x0 0x0 0x8000000>;
+			bank-width = <2>;
+			device-width = <1>;
+
+			partition@0 {
+				reg = <0x0 0x03000000>;
+				label = "ramdisk-nor";
+				read-only;
+			};
+
+			partition@3000000 {
+				reg = <0x03000000 0x00e00000>;
+				label = "diagnostic-nor";
+				read-only;
+			};
+
+			partition@3e00000 {
+				reg = <0x03e00000 0x00200000>;
+				label = "dink-nor";
+				read-only;
+			};
+
+			partition@4000000 {
+				reg = <0x04000000 0x00400000>;
+				label = "kernel-nor";
+				read-only;
+			};
+
+			partition@4400000 {
+				reg = <0x04400000 0x03b00000>;
+				label = "jffs2-nor";
+			};
+
+			partition@7f00000 {
+				reg = <0x07f00000 0x00080000>;
+				label = "dtb-nor";
+				read-only;
+			};
+
+			partition@7f80000 {
+				reg = <0x07f80000 0x00080000>;
+				label = "u-boot-nor";
+				read-only;
+			};
+		};
+
+		nand@2,0 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			compatible = "fsl,elbc-fcm-nand";
+			reg = <0x2 0x0 0x40000>;
+
+			partition@0 {
+				reg = <0x0 0x02000000>;
+				label = "u-boot-nand";
+				read-only;
+			};
+
+			partition@2000000 {
+				reg = <0x02000000 0x10000000>;
+				label = "jffs2-nand";
+			};
+
+			partition@12000000 {
+				reg = <0x12000000 0x10000000>;
+				label = "ramdisk-nand";
+				read-only;
+			};
+
+			partition@22000000 {
+				reg = <0x22000000 0x04000000>;
+				label = "kernel-nand";
+			};
+
+			partition@26000000 {
+				reg = <0x26000000 0x01000000>;
+				label = "dtb-nand";
+				read-only;
+			};
+
+			partition@27000000 {
+				reg = <0x27000000 0x19000000>;
+				label = "reserved-nand";
+			};
+		};
+
+		board-control@3,0 {
+			compatible = "fsl,p1022ds-fpga", "fsl,fpga-ngpixis";
+			reg = <3 0 0x30>;
+			interrupt-parent = <&mpic>;
+			/*
+			 * IRQ8 is generated if the "EVENT" switch is pressed
+			 * and PX_CTL[EVESEL] is set to 00.
+			 */
+			interrupts = <8 0 0 0>;
+		};
+	};
+
+	board_soc: soc: soc@fffe00000 {
+		ranges = <0x0 0xf 0xffe00000 0x100000>;
+	};
+
+	pci0: pcie@fffe09000 {
+		reg = <0xf 0xffe09000 0 0x1000>;
+		ranges = <0x2000000 0x0 0xe0000000 0xc 0x20000000 0x0 0x20000000
+			  0x1000000 0x0 0x00000000 0xf 0xffc10000 0x0 0x10000>;
+		pcie@0 {
+			ranges = <0x2000000 0x0 0xe0000000
+				  0x2000000 0x0 0xe0000000
+				  0x0 0x20000000
+
+				  0x1000000 0x0 0x0
+				  0x1000000 0x0 0x0
+				  0x0 0x100000>;
+		};
+	};
+
+	pci1: pcie@fffe0a000 {
+		reg = <0xf 0xffe0a000 0 0x1000>;
+		ranges = <0x2000000 0x0 0xe0000000 0xc 0x40000000 0x0 0x20000000
+			  0x1000000 0x0 0x00000000 0xf 0xffc20000 0x0 0x10000>;
+		pcie@0 {
+			ranges = <0x2000000 0x0 0xe0000000
+				  0x2000000 0x0 0xe0000000
+				  0x0 0x20000000
+
+				  0x1000000 0x0 0x0
+				  0x1000000 0x0 0x0
+				  0x0 0x100000>;
+		};
+	};
+
+	pci2: pcie@fffe0b000 {
+		reg = <0xf 0xffe0b000 0 0x1000>;
+		ranges = <0x2000000 0x0 0xe0000000 0xc 0x00000000 0x0 0x20000000
+			  0x1000000 0x0 0x00000000 0xf 0xffc00000 0x0 0x10000>;
+		pcie@0 {
+			ranges = <0x2000000 0x0 0xe0000000
+				  0x2000000 0x0 0xe0000000
+				  0x0 0x20000000
+
+				  0x1000000 0x0 0x0
+				  0x1000000 0x0 0x0
+				  0x0 0x100000>;
+		};
+	};
+};
+
+/include/ "fsl/p1022si-post.dtsi"
+/include/ "p1022ds.dtsi"
-- 
1.7.3.4

^ permalink raw reply related

* Re: [linux-3.2-rc4 PPC64] Series of "Section Mismatch" warnings, are they expected ?
From: Tony Breeds @ 2011-12-08 22:00 UTC (permalink / raw)
  To: Subrata Modak
  Cc: Mark Wizner, Naveed, LKML, Manas k Nayak, Pavaman, Vishu,
	Linuxppc-dev, divya.vikas
In-Reply-To: <1323371433.23534.8.camel@subratamodak.linux.ibm.com>

[-- Attachment #1: Type: text/plain, Size: 292 bytes --]

On Fri, Dec 09, 2011 at 12:40:32AM +0530, Subrata Modak wrote:
> Hello,
> 
> While compiling linux-3.2-rc4 on PPC64, i get the following set of
> warning series. I wanted to know if they are expected, or, they need to
> be fixed:

If you have time they should be fixed.

Yours Tony

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* [patch] powerpc, mm: fix section mismatch for mark_reserved_regions_for_nid
From: David Rientjes @ 2011-12-08 22:33 UTC (permalink / raw)
  To: Subrata Modak, Benjamin Herrenschmidt, Paul Mackerras
  Cc: Mark Wizner, Naveed, linux-kernel, Manas k Nayak, Pavaman,
	Anton Blanchard, Vishu, linuxppc-dev, divya.vikas
In-Reply-To: <1323371433.23534.8.camel@subratamodak.linux.ibm.com>

On Fri, 9 Dec 2011, Subrata Modak wrote:

> WARNING: vmlinux.o(.text+0x4c760): Section mismatch in reference from
> the function .mark_reserved_regions_for_nid() to the
> function .meminit.text:.early_pfn_to_nid()
> The function .mark_reserved_regions_for_nid() references
> the function __meminit .early_pfn_to_nid().
> This is often because .mark_reserved_regions_for_nid lacks a __meminit 
> annotation or the annotation of .early_pfn_to_nid is wrong.
> 
> WARNING: vmlinux.o(.text+0x4c780): Section mismatch in reference from
> the function .mark_reserved_regions_for_nid() to the
> function .init.text:.work_with_active_regions()
> The function .mark_reserved_regions_for_nid() references
> the function __init .work_with_active_regions().
> This is often because .mark_reserved_regions_for_nid lacks a __init 
> annotation or the annotation of .work_with_active_regions is wrong.
> 
> WARNING: vmlinux.o(.text+0x4c7d4): Section mismatch in reference from
> the function .mark_reserved_regions_for_nid() to the
> function .meminit.text:.early_pfn_to_nid()
> The function .mark_reserved_regions_for_nid() references
> the function __meminit .early_pfn_to_nid().
> This is often because .mark_reserved_regions_for_nid lacks a __meminit 
> annotation or the annotation of .early_pfn_to_nid is wrong.
> 
> WARNING: vmlinux.o(.text+0x4c7f0): Section mismatch in reference from
> the function .mark_reserved_regions_for_nid() to the
> function .init.text:.work_with_active_regions()
> The function .mark_reserved_regions_for_nid() references
> the function __init .work_with_active_regions().
> This is often because .mark_reserved_regions_for_nid lacks a __init 
> annotation or the annotation of .work_with_active_regions is wrong.
> 
> WARNING: vmlinux.o(.text+0x4c828): Section mismatch in reference from
> the function .mark_reserved_regions_for_nid() to the
> function .init.text:.reserve_bootmem_node()
> The function .mark_reserved_regions_for_nid() references
> the function __init .reserve_bootmem_node().
> This is often because .mark_reserved_regions_for_nid lacks a __init 
> annotation or the annotation of .reserve_bootmem_node is wrong.
> 

Wow, lots of ibm folks on the cc :)  I can only talk about the mm related 
section mismatches, but these five can easily be solved with the 
following.


powerpc, mm: fix section mismatch for mark_reserved_regions_for_nid

mark_reserved_regions_for_nid() is only called from do_init_bootmem(), 
which is in .init.text, so it must be in the same section to avoid a 
section mismatch warning.

Reported-by: Subrata Modak <subrata@linux.vnet.ibm.com>
Signed-off-by: David Rientjes <rientjes@google.com>
---
 arch/powerpc/mm/numa.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -969,7 +969,7 @@ static struct notifier_block __cpuinitdata ppc64_numa_nb = {
 	.priority = 1 /* Must run before sched domains notifier. */
 };
 
-static void mark_reserved_regions_for_nid(int nid)
+static void __init mark_reserved_regions_for_nid(int nid)
 {
 	struct pglist_data *node = NODE_DATA(nid);
 	struct memblock_region *reg;

^ permalink raw reply

* [patch] powerpc, mm: fix section mismatch for read_n_cells
From: David Rientjes @ 2011-12-08 22:46 UTC (permalink / raw)
  To: Benjamin Herrenschmidt, Paul Mackerras
  Cc: Mark Wizner, Naveed, linuxppc-dev, linux-kernel, Manas k Nayak,
	Pavaman, Anton Blanchard, Vishu, Subrata Modak, divya.vikas
In-Reply-To: <alpine.DEB.2.00.1112081428290.28693@chino.kir.corp.google.com>

read_n_cells() cannot be marked as .devinit.text since it is referenced 
from two functions that are not in that section: of_get_lmb_size() and 
hot_add_drconf_scn_to_nid().

Signed-off-by: David Rientjes <rientjes@google.com>
---
 arch/powerpc/mm/numa.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -406,7 +406,7 @@ static void __init get_n_mem_cells(int *n_addr_cells, int *n_size_cells)
 	of_node_put(memory);
 }
 
-static unsigned long __devinit read_n_cells(int n, const unsigned int **buf)
+static unsigned long read_n_cells(int n, const unsigned int **buf)
 {
 	unsigned long result = 0;
 

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox