From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from web15301.mail.cnb.yahoo.com (web15301.mail.cnb.yahoo.com [203.209.230.31]) by ozlabs.org (Postfix) with SMTP id 95EFFB6F06 for ; Sat, 11 Sep 2010 12:30:37 +1000 (EST) Message-ID: <881565.16140.qm@web15301.mail.cnb.yahoo.com> Date: Sat, 11 Sep 2010 10:30:34 +0800 (CST) From: leowang Subject: Re [PATCH v1] APM821xx: Add support for new SoC APM821xx To: linuxppc-dev@lists.ozlabs.org MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="0-2139672385-1284172234=:16140" List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , --0-2139672385-1284172234=:16140 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hello all =A0 my company use ARM,amcc CPU for different prouduct. i support to add=A0= [PATCH v1] APM821xx: Add support for new SoC APM821xx ,=A0now we do anythi= ngs for Linux develop and make easier for=A0 ordinary user=A0.=20 =A0 =A0 =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0 leowang =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0 2010:09:11 =A0=20 Message: 3 Date: Fri, 10 Sep 2010 11:27:37 -0700 From: tmarri@apm.com To: linuxppc-dev@lists.ozlabs.org Cc: tmarri@apm.com Subject: [PATCH v1] APM821xx: Add support for new SoC APM821xx Message-ID: <1284143257-15993-1-git-send-email-tmarri@apm.com> From: Tirumala Marri This patch adds CPU, device tree, defconfig and bluestone board support for APM821xx SoC. Signed-off-by: Tirumala R Marri --- V1: =A0 * CPU name changed to 464. =A0 * defconfig is created using "make savedefconfig". --- arch/powerpc/boot/dts/bluestone.dts=A0 =A0 =A0 =A0 =A0 |=A0 254 +++++++++++= +++++++++++++++ arch/powerpc/configs/44x/bluestone_defconfig |=A0=A0=A068 +++++++ arch/powerpc/kernel/cpu_setup_44x.S=A0 =A0 =A0 =A0 =A0 |=A0 =A0 1 + arch/powerpc/kernel/cputable.c=A0 =A0 =A0 =A0 =A0 =A0 =A0=A0=A0|=A0=A0=A015= ++ arch/powerpc/platforms/44x/Kconfig=A0 =A0 =A0 =A0 =A0=A0=A0|=A0=A0=A016 ++ arch/powerpc/platforms/44x/ppc44x_simple.c=A0=A0=A0|=A0 =A0 1 + 6 files changed, 355 insertions(+), 0 deletions(-) create mode 100644 arch/powerpc/boot/dts/bluestone.dts create mode 100644 arch/powerpc/configs/44x/bluestone_defconfig diff --git a/arch/powerpc/boot/dts/bluestone.dts b/arch/powerpc/boot/dts/bl= uestone.dts new file mode 100644 index 0000000..bedcb8b --- /dev/null +++ b/arch/powerpc/boot/dts/bluestone.dts @@ -0,0 +1,254 @@ +/* + * Device Tree for Bluestone (APM821xx) board. + * + * Copyright (c) 2010, Applied Micro Circuits Corporation + * All rights reserved. Tirumala R Marri + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.=A0 See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + */ + +/dts-v1/; + +/ { +=A0=A0=A0 #address-cells =3D <2>; +=A0=A0=A0 #size-cells =3D <1>; +=A0=A0=A0 model =3D "apm,bluestone"; +=A0=A0=A0 compatible =3D "apm,bluestone"; +=A0=A0=A0 dcr-parent =3D <&{/cpus/cpu@0}>; + +=A0=A0=A0 aliases { +=A0=A0=A0 =A0=A0=A0 ethernet0 =3D &EMAC0; +=A0=A0=A0 =A0=A0=A0 serial0 =3D &UART0; +=A0=A0=A0 =A0=A0=A0 serial1 =3D &UART1; +=A0=A0=A0 }; + +=A0=A0=A0 cpus { +=A0=A0=A0 =A0=A0=A0 #address-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 #size-cells =3D <0>; + +=A0=A0=A0 =A0=A0=A0 cpu@0 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 device_type =3D "cpu"; +=A0=A0=A0 =A0=A0=A0 model =3D "PowerPC,464"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0x00000000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 clock-frequency =3D <0>; /* Filled in by U-B= oot */ +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 timebase-frequency =3D <0>; /* Filled in by = U-Boot */ +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 i-cache-line-size =3D <32>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 d-cache-line-size =3D <32>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 i-cache-size =3D <32768>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 d-cache-size =3D <32768>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 dcr-controller; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 dcr-access-method =3D "native"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 next-level-cache =3D <&L2C0>; +=A0=A0=A0 =A0=A0=A0 }; +=A0=A0=A0 }; + +=A0=A0=A0 memory { +=A0=A0=A0 =A0=A0=A0 device_type =3D "memory"; +=A0=A0=A0 =A0=A0=A0 reg =3D <0x00000000 0x00000000 0x00000000>; /* Filled = in by U-Boot */ +=A0=A0=A0 }; + +=A0=A0=A0 UIC0: interrupt-controller0 { +=A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,uic"; +=A0=A0=A0 =A0=A0=A0 interrupt-controller; +=A0=A0=A0 =A0=A0=A0 cell-index =3D <0>; +=A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x0c0 0x009>; +=A0=A0=A0 =A0=A0=A0 #address-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #size-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #interrupt-cells =3D <2>; +=A0=A0=A0 }; + +=A0=A0=A0 UIC1: interrupt-controller1 { +=A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,uic"; +=A0=A0=A0 =A0=A0=A0 interrupt-controller; +=A0=A0=A0 =A0=A0=A0 cell-index =3D <1>; +=A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x0d0 0x009>; +=A0=A0=A0 =A0=A0=A0 #address-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #size-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #interrupt-cells =3D <2>; +=A0=A0=A0 =A0=A0=A0 interrupts =3D <0x1e 0x4 0x1f 0x4>; /* cascade */ +=A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC0>; +=A0=A0=A0 }; + +=A0=A0=A0 UIC2: interrupt-controller2 { +=A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,uic"; +=A0=A0=A0 =A0=A0=A0 interrupt-controller; +=A0=A0=A0 =A0=A0=A0 cell-index =3D <2>; +=A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x0e0 0x009>; +=A0=A0=A0 =A0=A0=A0 #address-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #size-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #interrupt-cells =3D <2>; +=A0=A0=A0 =A0=A0=A0 interrupts =3D <0xa 0x4 0xb 0x4>; /* cascade */ +=A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC0>; +=A0=A0=A0 }; + +=A0=A0=A0 UIC3: interrupt-controller3 { +=A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,uic"; +=A0=A0=A0 =A0=A0=A0 interrupt-controller; +=A0=A0=A0 =A0=A0=A0 cell-index =3D <3>; +=A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x0f0 0x009>; +=A0=A0=A0 =A0=A0=A0 #address-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #size-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 #interrupt-cells =3D <2>; +=A0=A0=A0 =A0=A0=A0 interrupts =3D <0x10 0x4 0x11 0x4>; /* cascade */ +=A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC0>; +=A0=A0=A0 }; + +=A0=A0=A0 SDR0: sdr { +=A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,sdr-apm821xx"; +=A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x00e 0x002>; +=A0=A0=A0 }; + +=A0=A0=A0 CPR0: cpr { +=A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,cpr-apm821xx"; +=A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x00c 0x002>; +=A0=A0=A0 }; + +=A0=A0=A0 plb { +=A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,plb4"; +=A0=A0=A0 =A0=A0=A0 #address-cells =3D <2>; +=A0=A0=A0 =A0=A0=A0 #size-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 ranges; +=A0=A0=A0 =A0=A0=A0 clock-frequency =3D <0>; /* Filled in by U-Boot */ + +=A0=A0=A0 =A0=A0=A0 SDRAM0: sdram { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,sdram-apm821xx"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x010 0x002>; +=A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 =A0=A0=A0 MAL0: mcmal { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,mcmal2"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 descriptor-memory =3D "ocm"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x180 0x062>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 num-tx-chans =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 num-rx-chans =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #address-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #size-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC2>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupts =3D <=A0=A0=A0 /*TXEOB*/ 0x6 0x4 +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 /*RXEOB*/ 0x7 0x4 +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 /*SERR*/=A0 0x3 0x4 +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 /*TXDE*/=A0 0x4 0x4 +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 /*RXDE*/=A0 0x5 0x4 +=A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 =A0=A0=A0 POB0: opb { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,opb"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #address-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #size-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ranges =3D <0xb0000000 0x00000004 0xb0000000= 0x50000000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 clock-frequency =3D <0>; /* Filled in by U-B= oot */ + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 EBC0: ebc { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,ebc"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 dcr-reg =3D <0x012 0x002>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #address-cells =3D <2>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #size-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 clock-frequency =3D <0>; /* Filled= in by U-Boot */ +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 /* ranges property is supplied by = U-Boot */ +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 ranges =3D < 0x00000003 0x00000000= 0xe0000000 0x8000000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupts =3D <0x6 0x4>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC1>; + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 nor_flash@0,0 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "amd,s29g= l512n", "cfi-flash"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 bank-width =3D <2>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0x00000000 0x00= 000000 0x00400000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #address-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #size-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 partition@0 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 label =3D "ker= nel"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0x000= 00000 0x00180000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 partition@180000 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 label =3D "env= "; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0x001= 80000 0x00020000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 partition@1a0000 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 label =3D "u-b= oot"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0x001= a0000 0x00060000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 } + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 UART0: serial@ef600300 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 device_type =3D "serial"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ns16550"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0xef600300 0x00000008>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 virtual-reg =3D <0xef600300>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 clock-frequency =3D <0>; /* Filled= in by U-Boot */ +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 current-speed =3D <0>; /* Filled i= n by U-Boot */ +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupts =3D <0x1 0x4>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 IIC0: i2c@ef600700 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,iic"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0xef600700 0x00000014>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupts =3D <0x2 0x4>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 IIC1: i2c@ef600800 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,iic"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0xef600800 0x00000014>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&UIC0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupts =3D <0x3 0x4>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 RGMII0: emac-rgmii@ef601500 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,rgmii"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0xef601500 0x00000008>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 has-mdio; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 TAH0: emac-tah@ef601350 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,tah"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0xef601350 0x00000030>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 EMAC0: ethernet@ef600c00 { +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 device_type =3D "network"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 compatible =3D "ibm,emac4sync"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupt-parent =3D <&EMAC0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupts =3D <0x0 0x1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #interrupt-cells =3D <1>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #address-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 #size-cells =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 interrupt-map =3D ; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reg =3D <0xef600c00 0x000000c4>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 local-mac-address =3D [00000000000= 0]; /* Filled in by U-Boot */ +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 mal-device =3D <&MAL0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 mal-tx-channel =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 mal-rx-channel =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 cell-index =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 max-frame-size =3D <9000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 rx-fifo-size =3D <16384>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 tx-fifo-size =3D <2048>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 phy-mode =3D "rgmii"; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 phy-map =3D <0x00000000>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 rgmii-device =3D <&RGMII0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 rgmii-channel =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 tah-device =3D <&TAH0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 tah-channel =3D <0>; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 has-inverted-stacr-oc; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 has-new-stacr-staopc; +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }; +=A0=A0=A0 =A0=A0=A0 }; + +=A0=A0=A0 }; +}; diff --git a/arch/powerpc/configs/44x/bluestone_defconfig b/arch/powerpc/co= nfigs/44x/bluestone_defconfig new file mode 100644 index 0000000..ac65b48 --- /dev/null +++ b/arch/powerpc/configs/44x/bluestone_defconfig @@ -0,0 +1,68 @@ +CONFIG_44x=3Dy +CONFIG_EXPERIMENTAL=3Dy +CONFIG_SYSVIPC=3Dy +CONFIG_POSIX_MQUEUE=3Dy +CONFIG_LOG_BUF_SHIFT=3D14 +CONFIG_BLK_DEV_INITRD=3Dy +CONFIG_EMBEDDED=3Dy +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_PCI_QUIRKS is not set +# CONFIG_COMPAT_BRK is not set +CONFIG_BLUESTONE=3Dy +# CONFIG_EBONY is not set +# CONFIG_KVM_GUEST is not set +CONFIG_NO_HZ=3Dy +CONFIG_HIGH_RES_TIMERS=3Dy +CONFIG_SPARSE_IRQ=3Dy +CONFIG_CMDLINE_BOOL=3Dy +CONFIG_CMDLINE=3D"" +CONFIG_NET=3Dy +CONFIG_PACKET=3Dy +CONFIG_UNIX=3Dy +CONFIG_INET=3Dy +CONFIG_IP_PNP=3Dy +CONFIG_IP_PNP_DHCP=3Dy +CONFIG_IP_PNP_BOOTP=3Dy +CONFIG_UEVENT_HELPER_PATH=3D"/sbin/hotplug" +CONFIG_CONNECTOR=3Dy +CONFIG_MTD=3Dy +CONFIG_MTD_PARTITIONS=3Dy +CONFIG_MTD_CMDLINE_PARTS=3Dy +CONFIG_MTD_OF_PARTS=3Dy +CONFIG_MTD_CHAR=3Dy +CONFIG_MTD_BLOCK=3Dy +CONFIG_MTD_CFI=3Dy +CONFIG_MTD_CFI_AMDSTD=3Dy +CONFIG_MTD_PHYSMAP_OF=3Dy +CONFIG_PROC_DEVICETREE=3Dy +CONFIG_BLK_DEV_RAM=3Dy +CONFIG_BLK_DEV_RAM_SIZE=3D35000 +CONFIG_NETDEVICES=3Dy +CONFIG_NET_ETHERNET=3Dy +CONFIG_IBM_NEW_EMAC=3Dy +CONFIG_IBM_NEW_EMAC_RXB=3D256 +CONFIG_IBM_NEW_EMAC_TXB=3D256 +CONFIG_SERIAL_8250=3Dy +CONFIG_SERIAL_8250_CONSOLE=3Dy +CONFIG_SERIAL_8250_NR_UARTS=3D2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=3D2 +CONFIG_SERIAL_8250_EXTENDED=3Dy +CONFIG_SERIAL_8250_SHARE_IRQ=3Dy +CONFIG_SERIAL_OF_PLATFORM=3Dy +CONFIG_I2C=3Dy +CONFIG_I2C_CHARDEV=3Dy +CONFIG_I2C_IBM_IIC=3Dy +CONFIG_SENSORS_AD7414=3Dy +# CONFIG_HID_SUPPORT is not set +# CONFIG_USB_SUPPORT is not set +CONFIG_RTC_CLASS=3Dy +CONFIG_RTC_DRV_M41T80=3Dy +CONFIG_EXT2_FS=3Dy +CONFIG_EXT3_FS=3Dy +CONFIG_PROC_KCORE=3Dy +CONFIG_TMPFS=3Dy +CONFIG_CRAMFS=3Dy +CONFIG_NFS_FS=3Dy +CONFIG_NFS_V3=3Dy +CONFIG_ROOT_NFS=3Dy +CONFIG_NLS=3Dy diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_= setup_44x.S index 7d606f8..549f482 100644 --- a/arch/powerpc/kernel/cpu_setup_44x.S +++ b/arch/powerpc/kernel/cpu_setup_44x.S @@ -35,6 +35,7 @@ _GLOBAL(__setup_cpu_440grx) _GLOBAL(__setup_cpu_460ex) _GLOBAL(__setup_cpu_460gt) _GLOBAL(__setup_cpu_460sx) +_GLOBAL(__setup_cpu_464) =A0=A0=A0 mflr=A0=A0=A0 r4 =A0=A0=A0 bl=A0=A0=A0 __init_fpu_44x =A0=A0=A0 bl=A0=A0=A0 __fixup_440A_mcheck diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.= c index 1f9123f..89e55b1 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c @@ -48,6 +48,7 @@ extern void __setup_cpu_440x5(unsigned long offset, struc= t cpu_spec* spec); extern void __setup_cpu_460ex(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_460gt(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_460sx(unsigned long offset, struct cpu_spec *spec); +extern void __setup_cpu_464(unsigned long offset, struct cpu_spec *spec); extern void __setup_cpu_603(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_604(unsigned long offset, struct cpu_spec* spec); extern void __setup_cpu_750(unsigned long offset, struct cpu_spec* spec); @@ -1805,6 +1806,20 @@ static struct cpu_spec __initdata cpu_specs[] =3D { =A0=A0=A0 =A0=A0=A0 .machine_check=A0=A0=A0 =A0=A0=A0 =3D machine_check_440= A, =A0=A0=A0 =A0=A0=A0 .platform=A0=A0=A0 =A0=A0=A0 =3D "ppc440", =A0=A0=A0 }, +=A0=A0=A0 { /* 464 in APM821xx */ +=A0=A0=A0 =A0=A0=A0 .pvr_mask=A0=A0=A0 =A0=A0=A0 =3D 0xffffff00, +=A0=A0=A0 =A0=A0=A0 .pvr_value=A0=A0=A0 =A0=A0=A0 =3D 0x12C41C80, +=A0=A0=A0 =A0=A0=A0 .cpu_name=A0=A0=A0 =A0=A0=A0 =3D "464 in APM821xx", +=A0=A0=A0 =A0=A0=A0 .cpu_features=A0=A0=A0 =A0=A0=A0 =3D CPU_FTRS_44X, +=A0=A0=A0 =A0=A0=A0 .cpu_user_features=A0=A0=A0 =3D COMMON_USER_BOOKE | +=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 PPC_FEATURE_HAS_FPU, +=A0=A0=A0 =A0=A0=A0 .mmu_features=A0=A0=A0 =A0=A0=A0 =3D MMU_FTR_TYPE_44x, +=A0=A0=A0 =A0=A0=A0 .icache_bsize=A0=A0=A0 =A0=A0=A0 =3D 32, +=A0=A0=A0 =A0=A0=A0 .dcache_bsize=A0=A0=A0 =A0=A0=A0 =3D 32, +=A0=A0=A0 =A0=A0=A0 .cpu_setup=A0=A0=A0 =A0=A0=A0 =3D __setup_cpu_464, +=A0=A0=A0 =A0=A0=A0 .machine_check=A0=A0=A0 =A0=A0=A0 =3D machine_check_44= 0A, +=A0=A0=A0 =A0=A0=A0 .platform=A0=A0=A0 =A0=A0=A0 =3D "ppc440", +=A0=A0=A0 }, =A0=A0=A0 { /* 476 core */ =A0=A0=A0 =A0=A0=A0 .pvr_mask=A0=A0=A0 =A0=A0=A0 =3D 0xffff0000, =A0=A0=A0 =A0=A0=A0 .pvr_value=A0=A0=A0 =A0=A0=A0 =3D 0x11a50000, diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44= x/Kconfig index 69d668c..0f979c5 100644 --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig @@ -17,6 +17,16 @@ config BAMBOO =A0=A0=A0 help =A0=A0=A0 =A0 This option enables support for the IBM PPC440EP evaluation b= oard. +config BLUESTONE +=A0=A0=A0 bool "Bluestone" +=A0=A0=A0 depends on 44x +=A0=A0=A0 default n +=A0=A0=A0 select PPC44x_SIMPLE +=A0=A0=A0 select APM821xx +=A0=A0=A0 select IBM_NEW_EMAC_RGMII +=A0=A0=A0 help +=A0=A0=A0 =A0 This option enables support for the APM APM821xx Evaluation = board. + config EBONY =A0=A0=A0 bool "Ebony" =A0=A0=A0 depends on 44x @@ -293,6 +303,12 @@ config 460SX =A0=A0=A0 select IBM_NEW_EMAC_ZMII =A0=A0=A0 select IBM_NEW_EMAC_TAH +config APM821xx +=A0=A0=A0 bool +=A0=A0=A0 select PPC_FPU +=A0=A0=A0 select IBM_NEW_EMAC_EMAC4 +=A0=A0=A0 select IBM_NEW_EMAC_TAH + # 44x errata/workaround config symbols, selected by the CPU models above config IBM440EP_ERR42 =A0=A0=A0 bool diff --git a/arch/powerpc/platforms/44x/ppc44x_simple.c b/arch/powerpc/plat= forms/44x/ppc44x_simple.c index 5f7a29d..7ddcba3 100644 --- a/arch/powerpc/platforms/44x/ppc44x_simple.c +++ b/arch/powerpc/platforms/44x/ppc44x_simple.c @@ -52,6 +52,7 @@ machine_device_initcall(ppc44x_simple, ppc44x_device_prob= e); static char *board[] __initdata =3D { =A0=A0=A0 "amcc,arches", =A0=A0=A0 "amcc,bamboo", +=A0=A0=A0 "amcc,bluestone", =A0=A0=A0 "amcc,canyonlands", =A0=A0=A0 "amcc,glacier", =A0=A0=A0 "ibm,ebony", --=20 1.6.1.rc3 leowang=0A=0A=0A --0-2139672385-1284172234=:16140 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable
Hello all
  my company use ARM,amcc CPU for different prouduct. i support t= o add  [PATCH v1] APM821xx: Add support for new SoC APM821xx , no= w we do anythings for Linux develop and make easier for  ordinary user=  .
 
 
           &nbs= p;            &= nbsp;          leowang
           &nbs= p;            &= nbsp;          2010:09:11
 
Message: 3
Date: Fri, 10 Sep 2010 11:27:37 -0700
From: tmarri@apm.com
To: linuxppc-dev@lists.ozlabs.org=
Cc: tmarri@apm.com
Subject: [PA= TCH v1] APM821xx: Add support for new SoC APM821xx
Message-ID: <1284143257-15993-1-git-send-email-tmarri@apm.com&g= t;

From: Tirumala Marri <tmarri@= apm.com>

This patch adds CPU, device tree, defconfig and bluestone board
support for = APM821xx SoC.

Signed-off-by: Tirumala R Marri <tmarri@apm.com>
---
V1:
  * CPU name ch= anged to 464.
  * defconfig is created using "make savedefconfig".<= BR>---
arch/powerpc/boot/dts/bluestone.dts        &n= bsp; |  254 ++++++++++++++++++++++++++
arch/powerpc/configs/44x/blu= estone_defconfig |   68 +++++++
arch/powerpc/kernel/cpu_s= etup_44x.S          |    1 +
arch/pow= erpc/kernel/cputable.c              = ; |   15 ++
arch/powerpc/platforms/44x/Kconfig =          |   16 ++
arch/po= werpc/platforms/44x/ppc44x_simple.c   |    1 +
6 files changed, 355 insertions(+), 0 deletions(-)
create mode 100= 644 arch/powerpc/boot/dts/bluestone.dts
create mode 100644 arch/powerpc/= configs/44x/bluestone_defconfig

diff --git a/arch/powerpc/boot/dts/b= luestone.dts b/arch/powerpc/boot/dts/bluestone.dts
new file mode 100644<= BR>index 0000000..bedcb8b
--- /dev/null
+++ b/arch/powerpc/boot/dts/b= luestone.dts
@@ -0,0 +1,254 @@
+/*
+ * Device Tree for Bluestone (= APM821xx) board.
+ *
+ * Copyright (c) 2010, Applied Micro Circuits C= orporation
+ * All rights reserved. Tirumala R Marri <tmarri@apm.com>
+ *
+ * This program is free= software; you can redistribute it and/or
+ * modify it under the terms = of the GNU General Public License as
+ * published by the Free Software = Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope t= hat it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the im= plied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS= E.  See the
+ * GNU General Public License for more details.
+ *=
+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software
+ * Fo= undation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 US= A
+ *
+ */
+
+/dts-v1/;
+
+/ {
+    #ad= dress-cells =3D <2>;
+    #size-cells =3D <1>= ;
+    model =3D "apm,bluestone";
+    = compatible =3D "apm,bluestone";
+    dcr-parent =3D <&= amp;{/cpus/cpu@0}>;
+
+    aliases {
+ &nbs= p;      ethernet0 =3D &EMAC0;
+   = ;     serial0 =3D &UART0;
+     &n= bsp;  serial1 =3D &UART1;
+    };
+
+ = ;   cpus {
+        #address-cel= ls =3D <1>;
+        #size-cells =3D= <0>;
+
+        cpu@0 {
+&nbs= p;           device_type =3D "cpu";=
+        model =3D "PowerPC,464";
+&nb= sp;           reg =3D <0x0000000= 0>;
+            clock-f= requency =3D <0>; /* Filled in by U-Boot */
+    &n= bsp;       timebase-frequency =3D <0>; /* Fi= lled in by U-Boot */
+          =   i-cache-line-size =3D <32>;
+      = ;      d-cache-line-size =3D <32>;
+   = ;         i-cache-size =3D <32768>;
= +            d-cache-size =3D = <32768>;
+           = dcr-controller;
+          &nbs= p; dcr-access-method =3D "native";
+       = ;     next-level-cache =3D <&L2C0>;
+ &nbs= p;      };
+    };
+
+ &nb= sp;  memory {
+        device_type = =3D "memory";
+        reg =3D <0x00000= 000 0x00000000 0x00000000>; /* Filled in by U-Boot */
+  &n= bsp; };
+
+    UIC0: interrupt-controller0 {
+ = ;       compatible =3D "ibm,uic";
+  =       interrupt-controller;
+     &nbs= p;  cell-index =3D <0>;
+       = ; dcr-reg =3D <0x0c0 0x009>;
+       = ; #address-cells =3D <0>;
+        #= size-cells =3D <0>;
+        #interr= upt-cells =3D <2>;
+    };
+
+  &nb= sp; UIC1: interrupt-controller1 {
+       = compatible =3D "ibm,uic";
+        interr= upt-controller;
+        cell-index =3D &l= t;1>;
+        dcr-reg =3D <0x0d0 0x= 009>;
+        #address-cells =3D <0= >;
+        #size-cells =3D <0>;<= BR>+        #interrupt-cells =3D <2>;
+        interrupts =3D <0x= 1e 0x4 0x1f 0x4>; /* cascade */
+       = ; interrupt-parent =3D <&UIC0>;
+    };
++    UIC2: interrupt-controller2 {
+    &= nbsp;   compatible =3D "ibm,uic";
+     &n= bsp;  interrupt-controller;
+        = cell-index =3D <2>;
+        dcr-reg= =3D <0x0e0 0x009>;
+        #addres= s-cells =3D <0>;
+        #size-cell= s =3D <0>;
+        #interrupt-cells= =3D <2>;
+        interrupts =3D &l= t;0xa 0x4 0xb 0x4>; /* cascade */
+      &nb= sp; interrupt-parent =3D <&UIC0>;
+    };
+
+    UIC3: interrupt-controller3 {
+ &nb= sp;      compatible =3D "ibm,uic";
+  &nbs= p;     interrupt-controller;
+     &n= bsp;  cell-index =3D <3>;
+      &nb= sp; dcr-reg =3D <0x0f0 0x009>;
+      &nb= sp; #address-cells =3D <0>;
+       = #size-cells =3D <0>;
+        #inte= rrupt-cells =3D <2>;
+        interr= upts =3D <0x10 0x4 0x11 0x4>; /* cascade */
+    &n= bsp;   interrupt-parent =3D <&UIC0>;
+  &n= bsp; };
+
+    SDR0: sdr {
+    &nbs= p;   compatible =3D "ibm,sdr-apm821xx";
+    &n= bsp;   dcr-reg =3D <0x00e 0x002>;
+    };
+
+    CPR0: cpr {
+     &n= bsp;  compatible =3D "ibm,cpr-apm821xx";
+     =    dcr-reg =3D <0x00c 0x002>;
+    };
= +
+    plb {
+        co= mpatible =3D "ibm,plb4";
+        #address= -cells =3D <2>;
+        #size-cells= =3D <1>;
+        ranges;
+ = ;       clock-frequency =3D <0>; /* Filled i= n by U-Boot */
+
+        SDRAM0: sdram= {
+            compatible = =3D "ibm,sdram-apm821xx";
+         &= nbsp;  dcr-reg =3D <0x010 0x002>;
+     &= nbsp;  };
+
+        MAL0: mcmal {
+            compatible = =3D "ibm,mcmal2";
+          &nb= sp; descriptor-memory =3D "ocm";
+        =     dcr-reg =3D <0x180 0x062>;
+    =         num-tx-chans =3D <1>;
+ = ;           num-rx-chans =3D <1&= gt;;
+            #address-= cells =3D <0>;
+          =   #size-cells =3D <0>;
+       =     interrupt-parent =3D <&UIC2>;
+  = ;          interrupts =3D < &nbs= p;  /*TXEOB*/ 0x6 0x4
+         =            /*RXEOB*/ 0x7 0x4
+             &nb= sp;      /*SERR*/  0x3 0x4
+    =                = /*TXDE*/  0x4 0x4
+         &nb= sp;          /*RXDE*/  0x5 0x4
+=         };
+
+     =    POB0: opb {
+         &n= bsp;  compatible =3D "ibm,opb";
+      &nb= sp;     #address-cells =3D <1>;
+   =         #size-cells =3D <1>;
+ = ;           ranges =3D <0xb00000= 00 0x00000004 0xb0000000 0x50000000>;
+      = ;      clock-frequency =3D <0>; /* Filled in by U-Boot */
+
+           = ; EBC0: ebc {
+            =     compatible =3D "ibm,ebc";
+     &= nbsp;          dcr-reg =3D <0x012 0x0= 02>;
+             =    #address-cells =3D <2>;
+     &nb= sp;          #size-cells =3D <1>;<= BR>+              &n= bsp; clock-frequency =3D <0>; /* Filled in by U-Boot */
+ &nb= sp;              /* range= s property is supplied by U-Boot */
+      &nbs= p;         ranges =3D < 0x00000003 0x00000= 000 0xe0000000 0x8000000>;
+                interrupts =3D <0x6 0x4>;
+=                = interrupt-parent =3D <&UIC1>;
+
+     =            nor_flash@0,0 {
+&nbs= p;               &nb= sp;   compatible =3D "amd,s29gl512n", "cfi-flash";
+ &nbs= p;               &nb= sp;  bank-width =3D <2>;
+      &nbs= p;             reg =3D <0x0= 0000000 0x00000000 0x00400000>;
+       = ;             #address-cells = =3D <1>;
+           =         #size-cells =3D <1>;
+            &n= bsp;       partition@0 {
+    &n= bsp;               &= nbsp;   label =3D "kernel";
+      &n= bsp;               &= nbsp; reg =3D <0x00000000 0x00180000>;
+     &= nbsp;              };
= +               = ;     partition@180000 {
+      =                 = ;  label =3D "env";
+         &n= bsp;              reg =3D= <0x00180000 0x00020000>;
+                    };
+ &nbs= p;               &nb= sp;  partition@1a0000 {
+        &nbs= p;               lab= el =3D "u-boot";
+          &nbs= p;             reg =3D <0x0= 01a0000 0x00060000>;
+         &nb= sp;          };
+    &= nbsp;           };
+  =           }
+
+    =         UART0: serial@ef600300 {
+ &n= bsp;              device_= type =3D "serial";
+                compatible =3D "ns16550";
+ =                reg = =3D <0xef600300 0x00000008>;
+       = ;         virtual-reg =3D <0xef600300>;=
+              &= nbsp; clock-frequency =3D <0>; /* Filled in by U-Boot */
+ &n= bsp;              current= -speed =3D <0>; /* Filled in by U-Boot */
+    &nbs= p;           interrupt-parent =3D &= lt;&UIC1>;
+          &nb= sp;     interrupts =3D <0x1 0x4>;
+  &nbs= p;         };
+
+    &nb= sp;       IIC0: i2c@ef600700 {
+  &nb= sp;             compatible =3D "i= bm,iic";
+             = ;   reg =3D <0xef600700 0x00000014>;
+   =             interrupt-parent = =3D <&UIC0>;
+         &nbs= p;      interrupts =3D <0x2 0x4>;
+  = ;          };
+
+   = ;         IIC1: i2c@ef600800 {
+ &nbs= p;              compatibl= e =3D "ibm,iic";
+          &nbs= p;     reg =3D <0xef600800 0x00000014>;
+ &nbs= p;              interrupt= -parent =3D <&UIC0>;
+                interrupts =3D <0x3 0x4>;
+=             };
+
+ =            RGMII0: emac-rgmii@ef601= 500 {
+             &n= bsp;  compatible =3D "ibm,rgmii";
+      &= nbsp;         reg =3D <0xef601500 0x000000= 08>;
+             =    has-mdio;
+         &nbs= p;  };
+
+          &nbs= p; TAH0: emac-tah@ef601350 {
+        &nbs= p;       compatible =3D "ibm,tah";
+  = ;              reg =3D &l= t;0xef601350 0x00000030>;
+            };
+
+         = ;   EMAC0: ethernet@ef600c00 {
+      = ;          device_type =3D "network";+              &nbs= p; compatible =3D "ibm,emac4sync";
+       = ;         interrupt-parent =3D <&EMAC0= >;
+             &n= bsp;  interrupts =3D <0x0 0x1>;
+     &nb= sp;          #interrupt-cells =3D <1&= gt;;
+             &nb= sp;  #address-cells =3D <0>;
+      =           #size-cells =3D <0>;
= +               = ; interrupt-map =3D </*Status*/ 0x0 &UIC2 0x10 0x4
+  &n= bsp;               &= nbsp;      /*Wake*/   0x1 &UIC2= 0x14 0x4>;
+           =     reg =3D <0xef600c00 0x000000c4>;
+  =               local-mac-a= ddress =3D [000000000000]; /* Filled in by U-Boot */
+   =             mal-device =3D &l= t;&MAL0>;
+          &nbs= p;     mal-tx-channel =3D <0>;
+    =             mal-rx-channel =3D= <0>;
+            &n= bsp;   cell-index =3D <0>;
+                max-frame-size = =3D <9000>;
+          &nb= sp;     rx-fifo-size =3D <16384>;
+  &nbs= p;             tx-fifo-size = =3D <2048>;
+          &nb= sp;     phy-mode =3D "rgmii";
+     &= nbsp;          phy-map =3D <0x0000000= 0>;
+             &= nbsp;  rgmii-device =3D <&RGMII0>;
+    &n= bsp;           rgmii-channel =3D &l= t;0>;
+             = ;   tah-device =3D <&TAH0>;
+    &nbs= p;           tah-channel =3D <0>;
+            &n= bsp;   has-inverted-stacr-oc;
+      =           has-new-stacr-staopc;
+&nbs= p;           };
+  &nb= sp;     };
+
+    };
+};
diff --g= it a/arch/powerpc/configs/44x/bluestone_defconfig b/arch/powerpc/configs/44= x/bluestone_defconfig
new file mode 100644
index 0000000..ac65b48
= --- /dev/null
+++ b/arch/powerpc/configs/44x/bluestone_defconfig
@@ -= 0,0 +1,68 @@
+CONFIG_44x=3Dy
+CONFIG_EXPERIMENTAL=3Dy
+CONFIG_SYSV= IPC=3Dy
+CONFIG_POSIX_MQUEUE=3Dy
+CONFIG_LOG_BUF_SHIFT=3D14
+CONFI= G_BLK_DEV_INITRD=3Dy
+CONFIG_EMBEDDED=3Dy
+# CONFIG_VM_EVENT_COUNTERS= is not set
+# CONFIG_PCI_QUIRKS is not set
+# CONFIG_COMPAT_BRK is n= ot set
+CONFIG_BLUESTONE=3Dy
+# CONFIG_EBONY is not set
+# CONFIG_= KVM_GUEST is not set
+CONFIG_NO_HZ=3Dy
+CONFIG_HIGH_RES_TIMERS=3Dy
+CONFIG_SPARSE_= IRQ=3Dy
+CONFIG_CMDLINE_BOOL=3Dy
+CONFIG_CMDLINE=3D""
+CONFIG_NET= =3Dy
+CONFIG_PACKET=3Dy
+CONFIG_UNIX=3Dy
+CONFIG_INET=3Dy
+CONF= IG_IP_PNP=3Dy
+CONFIG_IP_PNP_DHCP=3Dy
+CONFIG_IP_PNP_BOOTP=3Dy
+CO= NFIG_UEVENT_HELPER_PATH=3D"/sbin/hotplug"
+CONFIG_CONNECTOR=3Dy
+CONF= IG_MTD=3Dy
+CONFIG_MTD_PARTITIONS=3Dy
+CONFIG_MTD_CMDLINE_PARTS=3Dy+CONFIG_MTD_OF_PARTS=3Dy
+CONFIG_MTD_CHAR=3Dy
+CONFIG_MTD_BLOCK=3Dy=
+CONFIG_MTD_CFI=3Dy
+CONFIG_MTD_CFI_AMDSTD=3Dy
+CONFIG_MTD_PHYSMA= P_OF=3Dy
+CONFIG_PROC_DEVICETREE=3Dy
+CONFIG_BLK_DEV_RAM=3Dy
+CONF= IG_BLK_DEV_RAM_SIZE=3D35000
+CONFIG_NETDEVICES=3Dy
+CONFIG_NET_ETHERN= ET=3Dy
+CONFIG_IBM_NEW_EMAC=3Dy
+CONFIG_IBM_NEW_EMAC_RXB=3D256
+CO= NFIG_IBM_NEW_EMAC_TXB=3D256
+CONFIG_SERIAL_8250=3Dy
+CONFIG_SERIAL_82= 50_CONSOLE=3Dy
+CONFIG_SERIAL_8250_NR_UARTS=3D2
+CONFIG_SERIAL_8250_R= UNTIME_UARTS=3D2
+CONFIG_SERIAL_8250_EXTENDED=3Dy
+CONFIG_S ERIAL_8250_SHARE_IRQ=3Dy
+CONFIG_SERIAL_OF_PLATFORM=3Dy
+CONFIG_I2C= =3Dy
+CONFIG_I2C_CHARDEV=3Dy
+CONFIG_I2C_IBM_IIC=3Dy
+CONFIG_SENSO= RS_AD7414=3Dy
+# CONFIG_HID_SUPPORT is not set
+# CONFIG_USB_SUPPORT = is not set
+CONFIG_RTC_CLASS=3Dy
+CONFIG_RTC_DRV_M41T80=3Dy
+CONFI= G_EXT2_FS=3Dy
+CONFIG_EXT3_FS=3Dy
+CONFIG_PROC_KCORE=3Dy
+CONFIG_T= MPFS=3Dy
+CONFIG_CRAMFS=3Dy
+CONFIG_NFS_FS=3Dy
+CONFIG_NFS_V3=3Dy<= BR>+CONFIG_ROOT_NFS=3Dy
+CONFIG_NLS=3Dy
diff --git a/arch/powerpc/ker= nel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S
index 7d606f8.= .549f482 100644
--- a/arch/powerpc/kernel/cpu_setup_44x.S
+++ b/arch/= powerpc/kernel/cpu_setup_44x.S
@@ -35,6 +35,7 @@ _GLOBAL(__setup_cpu_440= grx)
_GLOBAL(__setup_cpu_460ex)
_GLOBAL(__setup_cpu_460gt)
_GLOBAL= (__setup_cpu_460sx)
+_GLOBAL(__setup_cpu_464)
    mflr=     r4
    bl    __init_fpu= _44x
    bl    __fixup_440A_mcheck
diff --git a/arch/powerpc/kern= el/cputable.c b/arch/powerpc/kernel/cputable.c
index 1f9123f..89e55b1 10= 0644
--- a/arch/powerpc/kernel/cputable.c
+++ b/arch/powerpc/kernel/c= putable.c
@@ -48,6 +48,7 @@ extern void __setup_cpu_440x5(unsigned long = offset, struct cpu_spec* spec);
extern void __setup_cpu_460ex(unsigned l= ong offset, struct cpu_spec* spec);
extern void __setup_cpu_460gt(unsign= ed long offset, struct cpu_spec* spec);
extern void __setup_cpu_460sx(un= signed long offset, struct cpu_spec *spec);
+extern void __setup_cpu_464= (unsigned long offset, struct cpu_spec *spec);
extern void __setup_cpu_6= 03(unsigned long offset, struct cpu_spec* spec);
extern void __setup_cpu= _604(unsigned long offset, struct cpu_spec* spec);
extern void __setup_c= pu_750(unsigned long offset, struct cpu_spec* spec);
@@ -1805,6 +1806,20= @@ static struct cpu_spec __initdata cpu_specs[] =3D {
        .machine_check   = ;     =3D machine_check_440A,
     &n= bsp;  .platform        =3D "ppc440",
=     },
+    { /* 464 in APM821xx */
+&n= bsp;       .pvr_mask      = ;  =3D 0xffffff00,
+        .pvr_valu= e        =3D 0x12C41C80,
+  &nbs= p;     .cpu_name        =3D "4= 64 in APM821xx",
+        .cpu_features&nb= sp;       =3D CPU_FTRS_44X,
+   =     .cpu_user_features    =3D COMMON_USER_BO= OKE |
+            PPC_FEAT= URE_HAS_FPU,
+        .mmu_features        =3D MMU_FTR_TYPE_44x,+        .icache_bsize    &n= bsp;   =3D 32,
+        .dcache_= bsize        =3D 32,
+    &= nbsp;   .cpu_setup        =3D __set= up_cpu_464,
+        .machine_check &= nbsp;      =3D machine_check_440A,
+  &nbs= p;     .platform        =3D "p= pc440",
+    },
    { /* 476 core */        .pvr_mask     &n= bsp;  =3D 0xffff0000,
        .pvr_va= lue        =3D 0x11a50000,
diff --git a/ar= ch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig
in= dex 69d668c..0f979c5 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++= b/arch/powerpc/platforms/44x/Kconfig
@@ -17,6 +17,16 @@ config BAMBOO    help
      This option enables = support for the IBM PPC440EP evaluation board.

+config BLUESTONE
= +    bool "Bluestone"
+    depends on 44x<= BR>+    default n
+    select PPC44x_SIMPL= E
+    select APM821xx
+    select IBM_= NEW_EMAC_RGMII
+    help
+      Th= is option enables support for the APM APM821xx Evaluation board.
+
co= nfig EBONY
    bool "Ebony"
    depends= on 44x
@@ -293,6 +303,12 @@ config 460SX
    select I= BM_NEW_EMAC_ZMII
    select IBM_NEW_EMAC_TAH

+conf= ig APM821xx
+    bool
+    select PPC_FPU
+    select IBM_NEW_EMAC_EMAC4
+ =    select IBM_NEW_EMAC_TAH
+
# 44x errata/workaround config= symbols, selected by the CPU models above
config IBM440EP_ERR42
&nbs= p;   bool
diff --git a/arch/powerpc/platforms/44x/ppc44x_simpl= e.c b/arch/powerpc/platforms/44x/ppc44x_simple.c
index 5f7a29d..7ddcba3 = 100644
--- a/arch/powerpc/platforms/44x/ppc44x_simple.c
+++ b/arch/po= werpc/platforms/44x/ppc44x_simple.c
@@ -52,6 +52,7 @@ machine_device_ini= tcall(ppc44x_simple, ppc44x_device_probe);
static char *board[] __initda= ta =3D {
    "amcc,arches",
    "amcc,b= amboo",
+    "amcc,bluestone",
    "amc= c,canyonlands",
    "amcc,glacier",
   = "ibm,ebony",
--
1.6.1.rc3





leowang

=0A=0A= =0A=0A=0A=0A=0A   --0-2139672385-1284172234=:16140--