]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
Merge branch 'master' of git://www.denx.de/git/u-boot-mpc85xx
authorWolfgang Denk <wd@denx.de>
Wed, 26 Mar 2008 23:16:34 +0000 (00:16 +0100)
committerWolfgang Denk <wd@denx.de>
Wed, 26 Mar 2008 23:16:34 +0000 (00:16 +0100)
58 files changed:
board/atum8548/tlb.c
board/freescale/common/Makefile
board/freescale/common/cds_eeprom.c [moved from board/freescale/common/eeprom.c with 100% similarity]
board/freescale/common/cds_pci_ft.c [moved from board/freescale/common/ft_board.c with 100% similarity]
board/freescale/common/cds_via.c [moved from board/freescale/common/via.c with 100% similarity]
board/freescale/mpc8540ads/tlb.c
board/freescale/mpc8541cds/Makefile
board/freescale/mpc8541cds/tlb.c
board/freescale/mpc8544ds/tlb.c
board/freescale/mpc8548cds/Makefile
board/freescale/mpc8548cds/tlb.c
board/freescale/mpc8555cds/Makefile
board/freescale/mpc8555cds/tlb.c
board/freescale/mpc8560ads/tlb.c
board/freescale/mpc8568mds/Makefile
board/freescale/mpc8568mds/tlb.c
board/freescale/mpc8610hpcd/Makefile
board/mpc8540eval/tlb.c
board/pm854/tlb.c
board/pm856/tlb.c
board/sbc8548/tlb.c
board/sbc8560/tlb.c
board/stxgp3/tlb.c
board/stxssa/tlb.c
board/tqm85xx/tlb.c
common/Makefile
common/cmd_mp.c [new file with mode: 0644]
cpu/mpc85xx/Makefile
cpu/mpc85xx/cpu.c
cpu/mpc85xx/cpu_init.c
cpu/mpc85xx/fdt.c
cpu/mpc85xx/mp.c [new file with mode: 0644]
cpu/mpc85xx/mp.h [new file with mode: 0644]
cpu/mpc85xx/release.S [new file with mode: 0644]
cpu/mpc85xx/speed.c
cpu/mpc86xx/cpu.c
include/asm-ppc/global_data.h
include/asm-ppc/immap_85xx.h
include/asm-ppc/processor.h
include/common.h
include/configs/ATUM8548.h
include/configs/MPC8540ADS.h
include/configs/MPC8540EVAL.h
include/configs/MPC8541CDS.h
include/configs/MPC8544DS.h
include/configs/MPC8548CDS.h
include/configs/MPC8555CDS.h
include/configs/MPC8560ADS.h
include/configs/MPC8568MDS.h
include/configs/PM854.h
include/configs/PM856.h
include/configs/SBC8540.h
include/configs/TQM85xx.h
include/configs/sbc8548.h
include/configs/sbc8560.h
include/configs/stxgp3.h
include/configs/stxssa.h
include/pci_ids.h

index bb6ce761ac58c07ed804002a0be684f2cf1639b2..1ef4de41efbab706a3ec64821c26410062141de9 100644 (file)
@@ -82,7 +82,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe210_0000  1M      PCI2 IO
         * 0xe300_0000  1M      PCIe IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 };
index 6665e7f7caec11495aa14efe9cdcb00bc28a4d1b..6340b418ea1b8fb9ebaa9ea7a1f88a5414372025 100644 (file)
@@ -29,10 +29,18 @@ endif
 
 LIB    = $(obj)lib$(VENDOR).a
 
-COBJS-${CONFIG_PQ_MDS_PIB}     += pq-mds-pib.o
-COBJS-${CONFIG_ID_EEPROM}      += sys_eeprom.o
+COBJS-${CONFIG_FSL_CADMUS}     += cadmus.o
+COBJS-${CONFIG_FSL_CDS_EEPROM} += cds_eeprom.o
+COBJS-${CONFIG_FSL_VIA}                += cds_via.o
 COBJS-${CONFIG_FSL_DIU_FB}     += fsl_diu_fb.o fsl_logo_bmp.o
 COBJS-${CONFIG_FSL_PIXIS}      += pixis.o
+COBJS-${CONFIG_PQ_MDS_PIB}     += pq-mds-pib.o
+COBJS-${CONFIG_ID_EEPROM}      += sys_eeprom.o
+
+COBJS-${CONFIG_MPC8541CDS}     += cds_pci_ft.o
+COBJS-${CONFIG_MPC8548CDS}     += cds_pci_ft.o
+COBJS-${CONFIG_MPC8555CDS}     += cds_pci_ft.o
+
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS-y))
index 3eaff013f613240cdd138ea92afa2832b71eb655..4fe2862f7d56ab79c44f9c7614f305b4d90e54dc 100644 (file)
@@ -87,7 +87,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe000_0000  1M      CCSRBAR
         * 0xe200_0000  16M     PCI1 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index d1a585ad623b44527101f01a9386634d8b4bcaf8..3ae2e97577d21ed2e0aaf2311690e99baf1f1e3b 100644 (file)
 #
 
 include $(TOPDIR)/config.mk
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
 
 LIB    = $(obj)lib$(BOARD).a
 
-COBJS  := $(BOARD).o law.o tlb.o \
-          ../common/cadmus.o \
-          ../common/eeprom.o \
-          ../common/ft_board.o \
-          ../common/via.o
+COBJS-y        += $(BOARD).o
+COBJS-y        += law.o
+COBJS-y        += tlb.o
 
-SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS   := $(addprefix $(obj),$(COBJS))
-SOBJS  := $(addprefix $(obj),$(SOBJS))
+SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS-y))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
index 92f759b31ba6bf31b102db973d949a13d42bff49..c5434a069f94952a6bd5aefd744e367a13299d9c 100644 (file)
@@ -88,7 +88,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe200_0000  16M     PCI1 IO
         * 0xe300_0000  16M     PCI2 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index 34cfb38f0d695d1ae2ab803d265fb5988d4248dc..61fc60986c413f3d8c3dca4e098ef6923b9aaa13 100644 (file)
@@ -75,7 +75,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe000_0000  1M      CCSRBAR
         * 0xe100_0000  255M    PCI IO range
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 4, BOOKE_PAGESZ_64M, 1),
 
index d1a585ad623b44527101f01a9386634d8b4bcaf8..3ae2e97577d21ed2e0aaf2311690e99baf1f1e3b 100644 (file)
 #
 
 include $(TOPDIR)/config.mk
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
 
 LIB    = $(obj)lib$(BOARD).a
 
-COBJS  := $(BOARD).o law.o tlb.o \
-          ../common/cadmus.o \
-          ../common/eeprom.o \
-          ../common/ft_board.o \
-          ../common/via.o
+COBJS-y        += $(BOARD).o
+COBJS-y        += law.o
+COBJS-y        += tlb.o
 
-SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS   := $(addprefix $(obj),$(COBJS))
-SOBJS  := $(addprefix $(obj),$(SOBJS))
+SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS-y))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
index b21f71bd12be82410a8fc31036b2c1aee48ed5cb..ab99af7e1c3114294f87eab2641dda0eadbf4afb 100644 (file)
@@ -80,7 +80,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe210_0000  1M      PCI2 IO
         * 0xe300_0000  1M      PCIe IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index d1a585ad623b44527101f01a9386634d8b4bcaf8..3ae2e97577d21ed2e0aaf2311690e99baf1f1e3b 100644 (file)
 #
 
 include $(TOPDIR)/config.mk
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
 
 LIB    = $(obj)lib$(BOARD).a
 
-COBJS  := $(BOARD).o law.o tlb.o \
-          ../common/cadmus.o \
-          ../common/eeprom.o \
-          ../common/ft_board.o \
-          ../common/via.o
+COBJS-y        += $(BOARD).o
+COBJS-y        += law.o
+COBJS-y        += tlb.o
 
-SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS   := $(addprefix $(obj),$(COBJS))
-SOBJS  := $(addprefix $(obj),$(SOBJS))
+SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS-y))
+SOBJS  := $(addprefix $(obj),$(SOBJS-y))
 
 $(LIB):        $(obj).depend $(OBJS) $(SOBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
index 92f759b31ba6bf31b102db973d949a13d42bff49..c5434a069f94952a6bd5aefd744e367a13299d9c 100644 (file)
@@ -88,7 +88,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe200_0000  16M     PCI1 IO
         * 0xe300_0000  16M     PCI2 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index 3eaff013f613240cdd138ea92afa2832b71eb655..4fe2862f7d56ab79c44f9c7614f305b4d90e54dc 100644 (file)
@@ -87,7 +87,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe000_0000  1M      CCSRBAR
         * 0xe200_0000  16M     PCI1 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index d9f20f96fbc5a738fae4a10c489d08e43d7f07d1..8294d3bf43cc1f82d2ba2bfefbf611cca67a67b0 100644 (file)
@@ -23,9 +23,6 @@
 #
 
 include $(TOPDIR)/config.mk
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
 
 LIB    = $(obj)lib$(BOARD).a
 
index 225fc9465e17ba8dbc6db6178fc00efef753c138..a866c526c8d0d8d2842d9c271c17977f672c2dfd 100644 (file)
@@ -74,7 +74,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe200_0000  8M      PCI1 IO
         * 0xe280_0000  8M      PCIe IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 3, BOOKE_PAGESZ_64M, 1),
 
index 489689e95bab4bc9a5133340062dce73d46eaedd..e17a9cb8e6db3083c7ea9a82e4501cf722b350e2 100644 (file)
 
 include $(TOPDIR)/config.mk
 
-ifneq ($(OBJTREE),$(SRCTREE))
-$(shell mkdir -p $(obj)../common)
-endif
-
 LIB    = $(obj)lib$(BOARD).a
 
 COBJS  := $(BOARD).o law.o
index f04123636d8c5d755acd4d6dc730c8d3ba30dd1d..1003bf61341bd142a0c54d31cbecb337c9812613 100644 (file)
@@ -27,7 +27,7 @@
 #include <asm/mmu.h>
 
 struct fsl_e_tlb_entry tlb_table[] = {
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 1, BOOKE_PAGESZ_1M, 1),
 
index 5d8753798f2782b81ffd812e42f89b10e48a2b74..a7f3813501a7d1ae8e8fc716036507ed5b382bf6 100644 (file)
@@ -87,7 +87,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe000_0000  1M      CCSRBAR
         * 0xe200_0000  16M     PCI1 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index 5d8753798f2782b81ffd812e42f89b10e48a2b74..a7f3813501a7d1ae8e8fc716036507ed5b382bf6 100644 (file)
@@ -87,7 +87,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe000_0000  1M      CCSRBAR
         * 0xe200_0000  16M     PCI1 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index 8d6625e54e2b8f7c161be7786f8ed3bdd9352629..6314005ca86789ee345917b789b4e7708fb536d3 100644 (file)
@@ -81,7 +81,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe0000000   1M      CCSRBAR
         * 0xe2000000   16M     PCI1 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 4, BOOKE_PAGESZ_64M, 1),
 
index 155ff64bbba9c3e034c46c6ebf1689751e6e0f8f..d073399606caf8616ac9b4f91059e12bebe8008b 100644 (file)
@@ -28,7 +28,7 @@
 
 struct fsl_e_tlb_entry tlb_table[] = {
 /* TLB for CCSRBAR (IMMR) */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 1, BOOKE_PAGESZ_1M, 1),
 
index 529f230428e4e5ce78de031ad7054064e50a2d4a..d4104166a0459000ebe42393134938a4f1a36bbb 100644 (file)
@@ -87,7 +87,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe000_0000  1M      CCSRBAR
         * 0xe200_0000  16M     PCI1 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index 46b14406d843ad5e35db28cc508f25df5192e1a3..86cbd112791a2ea8ec502bf1fdc79180f7de7fb6 100644 (file)
@@ -88,7 +88,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe200_0000  16M     PCI1 IO
         * 0xe300_0000  16M     PCI2 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 5, BOOKE_PAGESZ_64M, 1),
 
index a178cfef30f130a83282b83377db6cf65373bc72..ad26caeea2a27c3fff8c1869cb72cff72586535e 100644 (file)
@@ -91,7 +91,7 @@ struct fsl_e_tlb_entry tlb_table[] = {
         * 0xe000_0000  1M      CCSRBAR
         * 0xe200_0000  16M     PCI1 IO
         */
-       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR,
+       SET_TLB_ENTRY(1, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                      0, 6, BOOKE_PAGESZ_64M, 1),
 
index 35ea3745fcaf0a2253d15004c0454ef5d020da07..0d67337d2695be5071d8a8f19af83407c96263bf 100644 (file)
@@ -140,6 +140,7 @@ COBJS-y += crc16.o
 COBJS-y += xyzModem.o
 COBJS-y += cmd_mac.o
 COBJS-$(CONFIG_CMD_MFSL) += cmd_mfsl.o
+COBJS-$(CONFIG_MP) += cmd_mp.o
 
 COBJS  := $(COBJS-y)
 SRCS   := $(AOBJS:.o=.S) $(COBJS:.o=.c)
diff --git a/common/cmd_mp.c b/common/cmd_mp.c
new file mode 100644 (file)
index 0000000..26a57c5
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2008 Freescale Semiconductor, Inc.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.  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
+ */
+
+#include <common.h>
+#include <command.h>
+
+int
+cpu_cmd(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       unsigned long cpuid;
+
+       if (argc < 3) {
+               printf ("Usage:\n%s\n", cmdtp->usage);
+               return 1;
+       }
+
+       cpuid = simple_strtoul(argv[1], NULL, 10);
+       if (cpuid >= CONFIG_NR_CPUS) {
+               printf ("Core num: %d is out of range[0..%d]\n",
+                               cpuid, CONFIG_NR_CPUS - 1);
+               return 1;
+       }
+
+
+       if (argc == 3) {
+               if (strncmp(argv[2], "reset", 5) == 0) {
+                       cpu_reset(cpuid);
+               } else if (strncmp(argv[2], "status", 6) == 0) {
+                       cpu_status(cpuid);
+               } else {
+                       printf ("Usage:\n%s\n", cmdtp->usage);
+                       return 1;
+               }
+               return 0;
+       }
+
+       /* 4 or greater, make sure its release */
+       if (strncmp(argv[2], "release", 7) != 0) {
+               printf ("Usage:\n%s\n", cmdtp->usage);
+               return 1;
+       }
+
+       if (cpu_release(cpuid, argc - 3, argv + 3)) {
+               printf ("Usage:\n%s\n", cmdtp->usage);
+               return 1;
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_PPC
+#define CPU_ARCH_HELP \
+       "                         [args] : <pir> <r3> <r6>\n" \
+       "                                   pir - processor id (if writeable)\n" \
+       "                                    r3 - value for gpr 3\n" \
+       "                                    r6 - value for gpr 6\n" \
+       "\n" \
+       "     Use '-' for any arg if you want the default value.\n" \
+       "     Default for r3 is <num> and r6 is 0\n" \
+       "\n" \
+       "     When cpu <num> is released r4 and r5 = 0.\n" \
+       "     r7 will contain the size of the initial mapped area\n"
+#endif
+
+U_BOOT_CMD(
+       cpu, CFG_MAXARGS, 1, cpu_cmd,
+       "cpu     - Multiprocessor CPU boot manipulation and release\n",
+           "<num> reset                 - Reset cpu <num>\n"
+       "cpu <num> status                - Status of cpu <num>\n"
+       "cpu <num> release <addr> [args] - Release cpu <num> at <addr> with [args]\n"
+#ifdef CPU_ARCH_HELP
+       CPU_ARCH_HELP
+#endif
+       );
index 2205dca02437efb63f38f3152f080c31b27c60f6..adbc585827ab22fe6fdce611e0aef60222955467 100644 (file)
@@ -29,6 +29,9 @@ include $(TOPDIR)/config.mk
 LIB    = $(obj)lib$(CPU).a
 
 START  = start.o resetvec.o
+SOBJS-$(CONFIG_MP) += release.o
+SOBJS  = $(SOBJS-y)
+COBJS-$(CONFIG_MP) += mp.o
 COBJS-$(CONFIG_OF_LIBFDT) += fdt.o
 COBJS  = traps.o cpu.o cpu_init.o speed.o interrupts.o tlb.o \
          pci.o serial_scc.o commproc.o ether_fcc.o spd_sdram.o qe_io.o \
index ac8b018b0aaa77806064bd733a72b1e2f2f7cf54..dcd88173782b4f8d51d2278475cde6d20e7196eb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2004,2007 Freescale Semiconductor, Inc.
+ * Copyright 2004,2007,2008 Freescale Semiconductor, Inc.
  * (C) Copyright 2002, 2003 Motorola Inc.
  * Xianghua Xiao (X.Xiao@motorola.com)
  *
 #include <command.h>
 #include <asm/cache.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
+struct cpu_type {
+       char name[15];
+       u32 soc_ver;
+};
+
+#define CPU_TYPE_ENTRY(x) {#x, SVR_##x}
+
+struct cpu_type cpu_type_list [] = {
+       CPU_TYPE_ENTRY(8533),
+       CPU_TYPE_ENTRY(8533_E),
+       CPU_TYPE_ENTRY(8540),
+       CPU_TYPE_ENTRY(8541),
+       CPU_TYPE_ENTRY(8541_E),
+       CPU_TYPE_ENTRY(8543),
+       CPU_TYPE_ENTRY(8543_E),
+       CPU_TYPE_ENTRY(8544),
+       CPU_TYPE_ENTRY(8544_E),
+       CPU_TYPE_ENTRY(8545),
+       CPU_TYPE_ENTRY(8545_E),
+       CPU_TYPE_ENTRY(8547_E),
+       CPU_TYPE_ENTRY(8548),
+       CPU_TYPE_ENTRY(8548_E),
+       CPU_TYPE_ENTRY(8555),
+       CPU_TYPE_ENTRY(8555_E),
+       CPU_TYPE_ENTRY(8560),
+       CPU_TYPE_ENTRY(8567),
+       CPU_TYPE_ENTRY(8567_E),
+       CPU_TYPE_ENTRY(8568),
+       CPU_TYPE_ENTRY(8568_E),
+       CPU_TYPE_ENTRY(8572),
+       CPU_TYPE_ENTRY(8572_E),
+};
+
 int checkcpu (void)
 {
        sys_info_t sysinfo;
@@ -39,47 +74,26 @@ int checkcpu (void)
        uint fam;
        uint ver;
        uint major, minor;
+       int i;
        u32 ddr_ratio;
        volatile ccsr_gur_t *gur = (void *)(CFG_MPC85xx_GUTS_ADDR);
 
        svr = get_svr();
-       ver = SVR_VER(svr);
+       ver = SVR_SOC_VER(svr);
        major = SVR_MAJ(svr);
        minor = SVR_MIN(svr);
 
        puts("CPU:   ");
-       switch (ver) {
-       case SVR_8540:
-               puts("8540");
-               break;
-       case SVR_8541:
-               puts("8541");
-               break;
-       case SVR_8555:
-               puts("8555");
-               break;
-       case SVR_8560:
-               puts("8560");
-               break;
-       case SVR_8548:
-               puts("8548");
-               break;
-       case SVR_8548_E:
-               puts("8548_E");
-               break;
-       case SVR_8544:
-               puts("8544");
-               break;
-       case SVR_8544_E:
-               puts("8544_E");
-               break;
-       case SVR_8568_E:
-               puts("8568_E");
-               break;
-       default:
+
+       for (i = 0; i < ARRAY_SIZE(cpu_type_list); i++)
+               if (cpu_type_list[i].soc_ver == ver) {
+                       puts(cpu_type_list[i].name);
+                       break;
+               }
+
+       if (i == ARRAY_SIZE(cpu_type_list))
                puts("Unknown");
-               break;
-       }
+
        printf(", Version: %d.%d, (0x%08x)\n", major, minor, svr);
 
        pvr = get_pvr();
@@ -108,13 +122,16 @@ int checkcpu (void)
        ddr_ratio = ((gur->porpllsr) & 0x00003e00) >> 9;
        switch (ddr_ratio) {
        case 0x0:
-               printf("       DDR:%4lu MHz, ", sysinfo.freqDDRBus / 2000000);
+               printf("       DDR:%4lu MHz (%lu MT/s data rate), ",
+               sysinfo.freqDDRBus / 2000000, sysinfo.freqDDRBus / 1000000);
                break;
        case 0x7:
-               printf("       DDR:%4lu MHz (Synchronous), ", sysinfo.freqDDRBus / 2000000);
+               printf("       DDR:%4lu MHz (%lu MT/s data rate) (Synchronous), ",
+               sysinfo.freqDDRBus / 2000000, sysinfo.freqDDRBus / 1000000);
                break;
        default:
-               printf("       DDR:%4lu MHz (Asynchronous), ", sysinfo.freqDDRBus / 2000000);
+               printf("       DDR:%4lu MHz (%lu MT/s data rate) (Asynchronous), ",
+               sysinfo.freqDDRBus / 2000000, sysinfo.freqDDRBus / 1000000);
                break;
        }
 
@@ -142,10 +159,9 @@ int checkcpu (void)
                printf("LBC: unknown (lcrr: 0x%08x)\n", lcrr);
        }
 
-       if (ver == SVR_8560) {
-               printf("CPM:  %lu Mhz\n",
-                      sysinfo.freqSystemBus / 1000000);
-       }
+#ifdef CONFIG_CPM2
+       printf("CPM:  %lu Mhz\n", sysinfo.freqSystemBus / 1000000);
+#endif
 
        puts("L1:    D-cache 32 kB enabled\n       I-cache 32 kB enabled\n");
 
@@ -190,11 +206,7 @@ int do_reset (cmd_tbl_t *cmdtp, bd_t *bd, int flag, int argc, char *argv[])
  */
 unsigned long get_tbclk (void)
 {
-
-       sys_info_t  sys_info;
-
-       get_sys_info(&sys_info);
-       return ((sys_info.freqSystemBus + 7L) / 8L);
+       return (gd->bus_clk + 4UL)/8UL;
 }
 
 
index c0ff1d5120d5237efdde7689934d6ce30f6586a2..fce0c4805ad538142667f747c0db31e88da00f74 100644 (file)
@@ -33,6 +33,7 @@
 #include <asm/io.h>
 #include <asm/mmu.h>
 #include <asm/fsl_law.h>
+#include "mp.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -127,12 +128,12 @@ void config_8560_ioports (volatile ccsr_cpm_t * cpm)
 /* We run cpu_init_early_f in AS = 1 */
 void cpu_init_early_f(void)
 {
-       set_tlb(0, CFG_CCSRBAR, CFG_CCSRBAR,
+       set_tlb(0, CFG_CCSRBAR, CFG_CCSRBAR_PHYS,
                MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
                1, 0, BOOKE_PAGESZ_4K, 0);
 
        /* set up CCSR if we want it moved */
-#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR)
+#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR_PHYS)
        {
                u32 temp;
 
@@ -141,7 +142,7 @@ void cpu_init_early_f(void)
                        1, 1, BOOKE_PAGESZ_4K, 0);
 
                temp = in_be32((volatile u32 *)CFG_CCSRBAR_DEFAULT);
-               out_be32((volatile u32 *)CFG_CCSRBAR_DEFAULT, CFG_CCSRBAR >> 12);
+               out_be32((volatile u32 *)CFG_CCSRBAR_DEFAULT, CFG_CCSRBAR_PHYS >> 12);
 
                temp = in_be32((volatile u32 *)CFG_CCSRBAR);
        }
@@ -328,5 +329,8 @@ int cpu_init_r(void)
        qe_reset();
 #endif
 
+#if defined(CONFIG_MP)
+       setup_mp();
+#endif
        return 0;
 }
index a6b014cec06f7475ba898edd1e1eb88fe5dac4f2..bde6d1e9630a876a5141f54748e3b48825771f2d 100644 (file)
 #include <fdt_support.h>
 
 extern void ft_qe_setup(void *blob);
+#ifdef CONFIG_MP
+#include "mp.h"
+DECLARE_GLOBAL_DATA_PTR;
+
+void ft_fixup_cpu(void *blob, u64 memory_limit)
+{
+       int off;
+       ulong spin_tbl_addr = get_spin_addr();
+       u32 bootpg, id = get_my_id();
+
+       /* if we have 4G or more of memory, put the boot page at 4Gb-4k */
+       if ((u64)gd->ram_size > 0xfffff000)
+               bootpg = 0xfffff000;
+       else
+               bootpg = gd->ram_size - 4096;
+
+       off = fdt_node_offset_by_prop_value(blob, -1, "device_type", "cpu", 4);
+       while (off != -FDT_ERR_NOTFOUND) {
+               u32 *reg = (u32 *)fdt_getprop(blob, off, "reg", 0);
+
+               if (reg) {
+                       if (*reg == id) {
+                               fdt_setprop_string(blob, off, "status", "okay");
+                       } else {
+                               u32 val = *reg * SIZE_BOOT_ENTRY + spin_tbl_addr;
+                               val = cpu_to_fdt32(val);
+                               fdt_setprop_string(blob, off, "status",
+                                                               "disabled");
+                               fdt_setprop_string(blob, off, "enable-method",
+                                                               "spin-table");
+                               fdt_setprop(blob, off, "cpu-release-addr",
+                                               &val, sizeof(val));
+                       }
+               } else {
+                       printf ("cpu NULL\n");
+               }
+               off = fdt_node_offset_by_prop_value(blob, off,
+                               "device_type", "cpu", 4);
+       }
+
+       /* Reserve the boot page so OSes dont use it */
+       if ((u64)bootpg < memory_limit) {
+               off = fdt_add_mem_rsv(blob, bootpg, (u64)4096);
+               if (off < 0)
+                       printf("%s: %s\n", __FUNCTION__, fdt_strerror(off));
+       }
+}
+#endif
 
 void ft_cpu_setup(void *blob, bd_t *bd)
 {
@@ -62,4 +110,8 @@ void ft_cpu_setup(void *blob, bd_t *bd)
 #endif
 
        fdt_fixup_memory(blob, (u64)bd->bi_memstart, (u64)bd->bi_memsize);
+
+#ifdef CONFIG_MP
+       ft_fixup_cpu(blob, (u64)bd->bi_memstart + (u64)bd->bi_memsize);
+#endif
 }
diff --git a/cpu/mpc85xx/mp.c b/cpu/mpc85xx/mp.c
new file mode 100644 (file)
index 0000000..7b10fba
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+ * Copyright 2008 Freescale Semiconductor.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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.  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
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+#include <ioports.h>
+#include <lmb.h>
+#include <asm/io.h>
+#include "mp.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+u32 get_my_id()
+{
+       return mfspr(SPRN_PIR);
+}
+
+int cpu_reset(int nr)
+{
+       volatile ccsr_pic_t *pic = (void *)(CFG_MPC85xx_PIC_ADDR);
+       out_be32(&pic->pir, 1 << nr);
+       (void)in_be32(&pic->pir);
+       out_be32(&pic->pir, 0x0);
+
+       return 0;
+}
+
+int cpu_status(int nr)
+{
+       u32 *table, id = get_my_id();
+
+       if (nr == id) {
+               table = (u32 *)get_spin_addr();
+               printf("table base @ 0x%08x\n", table);
+       } else {
+               table = (u32 *)get_spin_addr() + nr * NUM_BOOT_ENTRY;
+               printf("Running on cpu %d\n", id);
+               printf("\n");
+               printf("table @ 0x%08x:\n", table);
+               printf("   addr - 0x%08x\n", table[BOOT_ENTRY_ADDR_LOWER]);
+               printf("   pir  - 0x%08x\n", table[BOOT_ENTRY_PIR]);
+               printf("   r3   - 0x%08x\n", table[BOOT_ENTRY_R3_LOWER]);
+               printf("   r6   - 0x%08x\n", table[BOOT_ENTRY_R6_LOWER]);
+       }
+
+       return 0;
+}
+
+static u8 boot_entry_map[4] = {
+       0,
+       BOOT_ENTRY_PIR,
+       BOOT_ENTRY_R3_LOWER,
+       BOOT_ENTRY_R6_LOWER,
+};
+
+int cpu_release(int nr, int argc, char *argv[])
+{
+       u32 i, val, *table = (u32 *)get_spin_addr() + nr * NUM_BOOT_ENTRY;
+       u64 boot_addr;
+
+       if (nr == get_my_id()) {
+               printf("Invalid to release the boot core.\n\n");
+               return 1;
+       }
+
+       if (argc != 4) {
+               printf("Invalid number of arguments to release.\n\n");
+               return 1;
+       }
+
+#ifdef CFG_64BIT_STRTOUL
+       boot_addr = simple_strtoull(argv[0], NULL, 16);
+#else
+       boot_addr = simple_strtoul(argv[0], NULL, 16);
+#endif
+
+       /* handle pir, r3, r6 */
+       for (i = 1; i < 4; i++) {
+               if (argv[i][0] != '-') {
+                       u8 entry = boot_entry_map[i];
+                       val = simple_strtoul(argv[i], NULL, 16);
+                       table[entry] = val;
+               }
+       }
+
+       table[BOOT_ENTRY_ADDR_UPPER] = (u32)(boot_addr >> 32);
+       table[BOOT_ENTRY_ADDR_LOWER] = (u32)(boot_addr & 0xffffffff);
+
+       return 0;
+}
+
+ulong get_spin_addr(void)
+{
+       extern ulong __secondary_start_page;
+       extern ulong __spin_table;
+
+       ulong addr =
+               (ulong)&__spin_table - (ulong)&__secondary_start_page;
+       addr += 0xfffff000;
+
+       return addr;
+}
+
+static void pq3_mp_up(unsigned long bootpg)
+{
+       u32 up, cpu_up_mask, whoami;
+       u32 *table = (u32 *)get_spin_addr();
+       volatile u32 bpcr;
+       volatile ccsr_local_ecm_t *ecm = (void *)(CFG_MPC85xx_ECM_ADDR);
+       volatile ccsr_gur_t *gur = (void *)(CFG_MPC85xx_GUTS_ADDR);
+       volatile ccsr_pic_t *pic = (void *)(CFG_MPC85xx_PIC_ADDR);
+       u32 devdisr;
+       int timeout = 10;
+
+       whoami = in_be32(&pic->whoami);
+       out_be32(&ecm->bptr, 0x80000000 | (bootpg >> 12));
+
+       /* disable time base at the platform */
+       devdisr = in_be32(&gur->devdisr);
+       if (whoami)
+               devdisr |= MPC85xx_DEVDISR_TB0;
+       else
+               devdisr |= MPC85xx_DEVDISR_TB1;
+       out_be32(&gur->devdisr, devdisr);
+
+       /* release the hounds */
+       up = ((1 << CONFIG_NR_CPUS) - 1);
+       bpcr = in_be32(&ecm->eebpcr);
+       bpcr |= (up << 24);
+       out_be32(&ecm->eebpcr, bpcr);
+       asm("sync; isync; msync");
+
+       cpu_up_mask = 1 << whoami;
+       /* wait for everyone */
+       while (timeout) {
+               int i;
+               for (i = 1; i < CONFIG_NR_CPUS; i++) {
+                       if (table[i * NUM_BOOT_ENTRY])
+                               cpu_up_mask |= (1 << i);
+               };
+
+               if ((cpu_up_mask & up) == up)
+                       break;
+
+               udelay(100);
+               timeout--;
+       }
+
+       /* enable time base at the platform */
+       if (whoami)
+               devdisr |= MPC85xx_DEVDISR_TB1;
+       else
+               devdisr |= MPC85xx_DEVDISR_TB0;
+       out_be32(&gur->devdisr, devdisr);
+       mtspr(SPRN_TBWU, 0);
+       mtspr(SPRN_TBWL, 0);
+
+       devdisr &= ~(MPC85xx_DEVDISR_TB0 | MPC85xx_DEVDISR_TB1);
+       out_be32(&gur->devdisr, devdisr);
+}
+
+void cpu_mp_lmb_reserve(struct lmb *lmb)
+{
+       u32 bootpg;
+
+       /* if we have 4G or more of memory, put the boot page at 4Gb-4k */
+       if ((u64)gd->ram_size > 0xfffff000)
+               bootpg = 0xfffff000;
+       else
+               bootpg = gd->ram_size - 4096;
+
+       lmb_reserve(lmb, bootpg, 4096);
+}
+
+void setup_mp(void)
+{
+       extern ulong __secondary_start_page;
+       ulong fixup = (ulong)&__secondary_start_page;
+       u32 bootpg;
+
+       /* if we have 4G or more of memory, put the boot page at 4Gb-4k */
+       if ((u64)gd->ram_size > 0xfffff000)
+               bootpg = 0xfffff000;
+       else
+               bootpg = gd->ram_size - 4096;
+
+       memcpy((void *)bootpg, (void *)fixup, 4096);
+       flush_cache(bootpg, 4096);
+
+       pq3_mp_up(bootpg);
+}
diff --git a/cpu/mpc85xx/mp.h b/cpu/mpc85xx/mp.h
new file mode 100644 (file)
index 0000000..4329286
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef __MPC85XX_MP_H_
+#define __MPC85XX_MP_H_
+
+ulong get_spin_addr(void);
+void setup_mp(void);
+u32 get_my_id(void);
+void cpu_mp_lmb_reserve(struct lmb *lmb);
+
+#define BOOT_ENTRY_ADDR_UPPER  0
+#define BOOT_ENTRY_ADDR_LOWER  1
+#define BOOT_ENTRY_R3_UPPER    2
+#define BOOT_ENTRY_R3_LOWER    3
+#define BOOT_ENTRY_RESV                4
+#define BOOT_ENTRY_PIR         5
+#define BOOT_ENTRY_R6_UPPER    6
+#define BOOT_ENTRY_R6_LOWER    7
+#define NUM_BOOT_ENTRY         8
+#define SIZE_BOOT_ENTRY                (NUM_BOOT_ENTRY * sizeof(u32))
+
+#endif
diff --git a/cpu/mpc85xx/release.S b/cpu/mpc85xx/release.S
new file mode 100644 (file)
index 0000000..3b7366f
--- /dev/null
@@ -0,0 +1,182 @@
+#include <config.h>
+#include <mpc85xx.h>
+#include <version.h>
+
+#define _LINUX_CONFIG_H 1      /* avoid reading Linux autoconf.h file  */
+
+#include <ppc_asm.tmpl>
+#include <ppc_defs.h>
+
+#include <asm/cache.h>
+#include <asm/mmu.h>
+
+/* To boot secondary cpus, we need a place for them to start up.
+ * Normally, they start at 0xfffffffc, but that's usually the
+ * firmware, and we don't want to have to run the firmware again.
+ * Instead, the primary cpu will set the BPTR to point here to
+ * this page.  We then set up the core, and head to
+ * start_secondary.  Note that this means that the code below
+ * must never exceed 1023 instructions (the branch at the end
+ * would then be the 1024th).
+ */
+       .globl  __secondary_start_page
+       .align  12
+__secondary_start_page:
+/* First do some preliminary setup */
+       lis     r3, HID0_EMCP@h         /* enable machine check */
+       ori     r3,r3,HID0_TBEN@l       /* enable Timebase */
+#ifdef CONFIG_PHYS_64BIT
+       ori     r3,r3,HID0_ENMAS7@l     /* enable MAS7 updates */
+#endif
+       mtspr   SPRN_HID0,r3
+
+       li      r3,(HID1_ASTME|HID1_ABE)@l      /* Addr streaming & broadcast */
+       mtspr   SPRN_HID1,r3
+
+       /* Enable branch prediction */
+       li      r3,0x201
+       mtspr   SPRN_BUCSR,r3
+
+       /* Enable/invalidate the I-Cache */
+       mfspr   r0,SPRN_L1CSR1
+       ori     r0,r0,(L1CSR1_ICFI|L1CSR1_ICE)
+       mtspr   SPRN_L1CSR1,r0
+       isync
+
+       /* Enable/invalidate the D-Cache */
+       mfspr   r0,SPRN_L1CSR0
+       ori     r0,r0,(L1CSR0_DCFI|L1CSR0_DCE)
+       msync
+       isync
+       mtspr   SPRN_L1CSR0,r0
+       isync
+
+#define toreset(x) (x - __secondary_start_page + 0xfffff000)
+
+       /* get our PIR to figure out our table entry */
+       lis     r3,toreset(__spin_table)@h
+       ori     r3,r3,toreset(__spin_table)@l
+
+       /* r10 has the base address for the entry */
+       mfspr   r0,SPRN_PIR
+       mr      r4,r0
+       slwi    r8,r4,5
+       add     r10,r3,r8
+
+#define EPAPR_MAGIC            (0x45504150)
+#define ENTRY_ADDR_UPPER       0
+#define ENTRY_ADDR_LOWER       4
+#define ENTRY_R3_UPPER         8
+#define ENTRY_R3_LOWER         12
+#define ENTRY_RESV             16
+#define ENTRY_PIR              20
+#define ENTRY_R6_UPPER         24
+#define ENTRY_R6_LOWER         28
+#define ENTRY_SIZE             32
+
+       /* setup the entry */
+       li      r3,0
+       li      r8,1
+       stw     r0,ENTRY_PIR(r10)
+       stw     r3,ENTRY_ADDR_UPPER(r10)
+       stw     r8,ENTRY_ADDR_LOWER(r10)
+       stw     r3,ENTRY_R3_UPPER(r10)
+       stw     r4,ENTRY_R3_LOWER(r10)
+       stw     r3,ENTRY_R6_UPPER(r10)
+       stw     r3,ENTRY_R6_LOWER(r10)
+
+       /* setup mapping for AS = 1, and jump there */
+       lis     r11,(MAS0_TLBSEL(1)|MAS0_ESEL(1))@h
+       mtspr   SPRN_MAS0,r11
+       lis     r11,(MAS1_VALID|MAS1_IPROT)@h
+       ori     r11,r11,(MAS1_TS|MAS1_TSIZE(BOOKE_PAGESZ_4K))@l
+       mtspr   SPRN_MAS1,r11
+       lis     r11,(0xfffff000|MAS2_I)@h
+       ori     r11,r11,(0xfffff000|MAS2_I)@l
+       mtspr   SPRN_MAS2,r11
+       lis     r11,(0xfffff000|MAS3_SX|MAS3_SW|MAS3_SR)@h
+       ori     r11,r11,(0xfffff000|MAS3_SX|MAS3_SW|MAS3_SR)@l
+       mtspr   SPRN_MAS3,r11
+       tlbwe
+
+       bl      1f
+1:     mflr    r11
+       addi    r11,r11,28
+       mfmsr   r13
+       ori     r12,r13,MSR_IS|MSR_DS@l
+
+       mtspr   SPRN_SRR0,r11
+       mtspr   SPRN_SRR1,r12
+       rfi
+
+       /* spin waiting for addr */
+2:
+       lwz     r4,ENTRY_ADDR_LOWER(r10)
+       andi.   r11,r4,1
+       bne     2b
+
+       /* get the upper bits of the addr */
+       lwz     r11,ENTRY_ADDR_UPPER(r10)
+
+       /* setup branch addr */
+       mtspr   SPRN_SRR0,r4
+
+       /* mark the entry as released */
+       li      r8,3
+       stw     r8,ENTRY_ADDR_LOWER(r10)
+
+       /* mask by ~64M to setup our tlb we will jump to */
+       rlwinm  r12,r4,0,0,5
+
+       /* setup r3, r4, r5, r6, r7, r8, r9 */
+       lwz     r3,ENTRY_R3_LOWER(r10)
+       li      r4,0
+       li      r5,0
+       lwz     r6,ENTRY_R6_LOWER(r10)
+       lis     r7,(64*1024*1024)@h
+       li      r8,0
+       li      r9,0
+
+       /* load up the pir */
+       lwz     r0,ENTRY_PIR(r10)
+       mtspr   SPRN_PIR,r0
+       mfspr   r0,SPRN_PIR
+       stw     r0,ENTRY_PIR(r10)
+
+/*
+ * Coming here, we know the cpu has one TLB mapping in TLB1[0]
+ * which maps 0xfffff000-0xffffffff one-to-one.  We set up a
+ * second mapping that maps addr 1:1 for 64M, and then we jump to
+ * addr
+ */
+       lis     r10,(MAS0_TLBSEL(1)|MAS0_ESEL(0))@h
+       mtspr   SPRN_MAS0,r10
+       lis     r10,(MAS1_VALID|MAS1_IPROT)@h
+       ori     r10,r10,(MAS1_TSIZE(BOOKE_PAGESZ_64M))@l
+       mtspr   SPRN_MAS1,r10
+       /* WIMGE = 0b00000 for now */
+       mtspr   SPRN_MAS2,r12
+       ori     r12,r12,(MAS3_SX|MAS3_SW|MAS3_SR)
+       mtspr   SPRN_MAS3,r12
+#ifdef CONFIG_ENABLE_36BIT_PHYS
+       mtspr   SPRN_MAS7,r11
+#endif
+       tlbwe
+
+/* Now we have another mapping for this page, so we jump to that
+ * mapping
+ */
+       mtspr   SPRN_SRR1,r13
+       rfi
+
+       .align 3
+       .globl __spin_table
+__spin_table:
+       .space CONFIG_NR_CPUS*ENTRY_SIZE
+
+       /* Fill in the empty space.  The actual reset vector is
+        * the last word of the page */
+__secondary_start_code_end:
+       .space 4092 - (__secondary_start_code_end - __secondary_start_page)
+__secondary_reset_vector:
+       b       __secondary_start_page
index 952f30cf3994e8c7d2c5890a6a12c6561dbcbc3f..d90d39767b6451217ed98c9f9acb6f64c3eea45b 100644 (file)
@@ -48,6 +48,8 @@ void get_sys_info (sys_info_t * sysInfo)
         * overflow for processor speeds above 2GHz */
        half_freqSystemBus = sysInfo->freqSystemBus/2;
        sysInfo->freqProcessor = e500_ratio*half_freqSystemBus;
+
+       /* Note: freqDDRBus is the MCLK frequency, not the data rate. */
        sysInfo->freqDDRBus = sysInfo->freqSystemBus;
 
 #ifdef CONFIG_DDR_CLK_FREQ
@@ -75,6 +77,7 @@ int get_clocks (void)
        get_sys_info (&sys_info);
        gd->cpu_clk = sys_info.freqProcessor;
        gd->bus_clk = sys_info.freqSystemBus;
+       gd->mem_clk = sys_info.freqDDRBus;
        gd->i2c1_clk = sys_info.freqSystemBus;
        gd->i2c2_clk = sys_info.freqSystemBus;
 
@@ -96,14 +99,7 @@ int get_clocks (void)
  *********************************************/
 ulong get_bus_freq (ulong dummy)
 {
-       ulong val;
-
-       sys_info_t sys_info;
-
-       get_sys_info (&sys_info);
-       val = sys_info.freqSystemBus;
-
-       return val;
+       return gd->bus_clk;
 }
 
 /********************************************
@@ -112,12 +108,5 @@ ulong get_bus_freq (ulong dummy)
  *********************************************/
 ulong get_ddr_freq (ulong dummy)
 {
-       ulong val;
-
-       sys_info_t sys_info;
-
-       get_sys_info (&sys_info);
-       val = sys_info.freqDDRBus;
-
-       return val;
+       return gd->mem_clk;
 }
index bf4e651aaf2baa8f02845d18de0b474e64b9310b..3c7476445d01e1093a2484b83628167ac9bd836f 100644 (file)
@@ -69,7 +69,7 @@ checkcpu(void)
        printf(", Version: %d.%d, (0x%08x)\n", major, minor, pvr);
 
        svr = get_svr();
-       ver = SVR_VER(svr);
+       ver = SVR_SOC_VER(svr);
        major = SVR_MAJ(svr);
        minor = SVR_MIN(svr);
 
index ff6624a227a9097dd2ff55725f1924029ee35f66..b43dba3352f0b11de2e7bd53dc15f4c8e6a038f5 100644 (file)
@@ -52,9 +52,7 @@ typedef       struct  global_data {
        unsigned long   scc_clk;
        unsigned long   brg_clk;
 #endif
-#if defined(CONFIG_MPC7448HPC2)
        unsigned long   mem_clk;
-#endif
 #if defined(CONFIG_MPC83XX)
        /* There are other clocks in the MPC83XX */
        u32 csb_clk;
index d769d7012035c39f322ab5483156e729d9ce2378..3506aec5ec5e5ebef5d7f162ac2d164c6ec6d649 100644 (file)
@@ -57,7 +57,7 @@ typedef struct ccsr_local_ecm {
        uint    lawbar7;        /* 0xce8 - Local Access Window 7 Base Address Register */
        char    res19[4];
        uint    lawar7;         /* 0xcf0 - Local Access Window 7 Attributes Register */
-       char    res20[780];
+       char    res20[780];             // XXX: LAW 8, LAW9 for 8572
        uint    eebacr;         /* 0x1000 - ECM CCB Address Configuration Register */
        char    res21[12];
        uint    eebpcr;         /* 0x1010 - ECM CCB Port Configuration Register */
@@ -86,7 +86,12 @@ typedef struct ccsr_ddr {
        uint    cs1_config;             /* 0x2084 - DDR Chip Select Configuration */
        uint    cs2_config;             /* 0x2088 - DDR Chip Select Configuration */
        uint    cs3_config;             /* 0x208c - DDR Chip Select Configuration */
-       char    res5[112];
+       char    res4a[48];
+       uint    cs0_config_2;           /* 0x20c0 - DDR Chip Select Configuration 2 */
+       uint    cs1_config_2;           /* 0x20c4 - DDR Chip Select Configuration 2 */
+       uint    cs2_config_2;           /* 0x20c8 - DDR Chip Select Configuration 2 */
+       uint    cs3_config_2;           /* 0x20cc - DDR Chip Select Configuration 2 */
+       char    res5[48];
        uint    ext_refrec;             /* 0x2100 - DDR SDRAM Extended Refresh Recovery */
        uint    timing_cfg_0;           /* 0x2104 - DDR SDRAM Timing Configuration Register 0 */
        uint    timing_cfg_1;           /* 0x2108 - DDR SDRAM Timing Configuration Register 1 */
@@ -103,7 +108,17 @@ typedef struct ccsr_ddr {
        char    res7[20];
        uint    init_address;           /* 0x2148 - DDR training initialization address */
        uint    init_ext_address;       /* 0x214C - DDR training initialization extended address */
-       char    res8_1[2728];
+       char    res8_1[16];
+       uint    timing_cfg_4;           /* 0x2160 - DDR SDRAM Timing Configuration Register 4 */
+       uint    timing_cfg_5;           /* 0x2164 - DDR SDRAM Timing Configuration Register 5 */
+       char    reg8_1a[8];
+       uint    ddr_zq_cntl;            /* 0x2170 - DDR ZQ calibration control*/
+       uint    ddr_wrlvl_cntl;         /* 0x2174 - DDR write leveling control*/
+       uint    ddr_pd_cntl;            /* 0x2178 - DDR pre-drive conditioning control*/
+       uint    ddr_sr_cntr;            /* 0x217C - DDR self refresh counter */
+       uint    ddr_sdram_rcw_1;        /* 0x2180 - DDR Register Control Words 1 */
+       uint    ddr_sdram_rcw_2;        /* 0x2184 - DDR Register Control Words 2 */
+       char    res8_1b[2672];
        uint    ip_rev1;                /* 0x2BF8 - DDR IP Block Revision 1 */
        uint    ip_rev2;                /* 0x2BFC - DDR IP Block Revision 2 */
        char    res8_2[512];
@@ -217,7 +232,7 @@ typedef struct ccsr_lbc {
        char    res7[12];
        uint    lbcr;           /* 0x50d0 - LBC Configuration Register */
        uint    lcrr;           /* 0x50d4 - LBC Clock Ratio Register */
-       char    res8[12072];
+       char    res8[3880];
 } ccsr_lbc_t;
 
 /*
@@ -1578,7 +1593,11 @@ typedef struct ccsr_gur {
 #define MPC85xx_DEVDISR_RMSG           0x00040000
 #define MPC85xx_DEVDISR_DDR            0x00010000
 #define MPC85xx_DEVDISR_CPU            0x00008000
+#define MPC85xx_DEVDISR_CPU0           MPC85xx_DEVDISR_CPU
 #define MPC85xx_DEVDISR_TB             0x00004000
+#define MPC85xx_DEVDISR_TB0            MPC85xx_DEVDISR_TB
+#define MPC85xx_DEVDISR_CPU1           0x00002000
+#define MPC85xx_DEVDISR_TB1            0x00001000
 #define MPC85xx_DEVDISR_DMA            0x00000400
 #define MPC85xx_DEVDISR_TSEC1          0x00000080
 #define MPC85xx_DEVDISR_TSEC2          0x00000040
@@ -1624,6 +1643,8 @@ typedef struct ccsr_gur {
 #define CFG_MPC85xx_ECM_ADDR   (CFG_IMMR + CFG_MPC85xx_ECM_OFFSET)
 #define CFG_MPC85xx_DDR_OFFSET (0x2000)
 #define CFG_MPC85xx_DDR_ADDR   (CFG_IMMR + CFG_MPC85xx_DDR_OFFSET)
+#define CFG_MPC85xx_DDR2_OFFSET        (0x6000)
+#define CFG_MPC85xx_DDR2_ADDR  (CFG_IMMR + CFG_MPC85xx_DDR2_OFFSET)
 #define CFG_MPC85xx_LBC_OFFSET (0x5000)
 #define CFG_MPC85xx_LBC_ADDR   (CFG_IMMR + CFG_MPC85xx_LBC_OFFSET)
 #define CFG_MPC85xx_PCIX_OFFSET        (0x8000)
index b7a5b288068d4208cfe3ae96b41c2da130d6a3db..544cc010dba5a17fde644f82c9205f9b66639f74 100644 (file)
 #define SVR_MAJ(svr)   (((svr) >>  4) & 0xF)   /* Major revision field*/
 #define SVR_MIN(svr)   (((svr) >>  0) & 0xF)   /* Minor revision field*/
 
+/* Some parts define SVR[0:23] as the SOC version */
+#define SVR_SOC_VER(svr) (((svr) >> 8) & 0xFFFFFF)     /* SOC Version fields */
+
 
 /*
- * SVR_VER() Version Values
+ * SVR_SOC_VER() Version Values
  */
 
-#define SVR_8540       0x8030
-#define SVR_8560       0x8070
-#define SVR_8555       0x8079
-#define SVR_8541       0x807A
-#define SVR_8544       0x8034
-#define SVR_8544_E     0x803C
-#define SVR_8548       0x8031
-#define SVR_8548_E     0x8039
-#define SVR_8610       0x80A0
-#define SVR_8641       0x8090
-#define SVR_8568_E     0x807D
+#define SVR_8533       0x803400
+#define SVR_8533_E     0x803C00
+#define SVR_8540       0x803000
+#define SVR_8541       0x807200
+#define SVR_8541_E     0x807A00
+#define SVR_8543       0x803200
+#define SVR_8543_E     0x803A00
+#define SVR_8544       0x803401
+#define SVR_8544_E     0x803C01
+#define SVR_8545       0x803102
+#define SVR_8545_E     0x803902
+#define SVR_8547_E     0x803901
+#define SVR_8548       0x803100
+#define SVR_8548_E     0x803900
+#define SVR_8555       0x807100
+#define SVR_8555_E     0x807900
+#define SVR_8560       0x807000
+#define SVR_8567       0x807600
+#define SVR_8567_E     0x807E00
+#define SVR_8568       0x807500
+#define SVR_8568_E     0x807D00
+#define SVR_8572       0x80E000
+#define SVR_8572_E     0x80E800
+
+#define SVR_8610       0x80A000
+#define SVR_8641       0x809000
+#define SVR_8641D      0x809001
+
 
 
 /* I am just adding a single entry for 8260 boards.  I think we may be
index e03ead10bc4ced20b8bde16310b6dc3ac10e1c69..39bcd307b58ab9d72df47b3be75b393d36798eaa 100644 (file)
@@ -669,4 +669,11 @@ void inline show_boot_progress (int val);
 
 #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 
+/* Multicore arch functions */
+#ifdef CONFIG_MP
+int cpu_status(int nr);
+int cpu_reset(int nr);
+int cpu_release(int nr, int argc, char *argv[]);
+#endif
+
 #endif /* __COMMON_H_ */
index c14376e7f4923b8429f56fed7a951bb5c22e9eb7..0d644da7ae6c300be37f656ab6bcd0814081fcca 100644 (file)
@@ -96,6 +96,7 @@
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 #define PCI_SPEED              33333000        /* CPLD currenlty does not have PCI setup info */
index 5ea7b250471be1364febc4e45941181bc0443904..85934d718dff935fac48c4a5d50b5ede54e4a636 100644 (file)
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 
index 174215c2cc081524b6dfcdef3bd7d367e1206dd5..77eea73787413137861655f5a62cfd1723dde58c 100644 (file)
@@ -83,6 +83,7 @@
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default      */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR    */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR   */
 
 #define CFG_DDR_SDRAM_BASE     0x00000000      /* DDR is system memory  */
index 7334088b18fedf696512e57ec62fcee00a691b01..3f3f741aded2eb2a990ca06ba91d76d114e74e31 100644 (file)
@@ -49,6 +49,9 @@
 
 #define CONFIG_FSL_LAW         1       /* Use common FSL init code */
 
+#define CONFIG_FSL_VIA
+#define CONFIG_FSL_CDS_EEPROM
+
 /*
  * When initializing flash, if we cannot find the manufacturer ID,
  * assume this is the AMD flash associated with the CDS board.
@@ -82,6 +85,7 @@ extern unsigned long get_clock_freq(void);
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 /*
@@ -273,6 +277,8 @@ extern unsigned long get_clock_freq(void);
  * 1111 1111 1111 0000 0000 1111 1111 0111 = fff00ff7
  */
 
+#define CONFIG_FSL_CADMUS
+
 #define CADMUS_BASE_ADDR 0xf8000000
 #define CFG_BR3_PRELIM   0xf8000801
 #define CFG_OR3_PRELIM   0xfff00ff7
index a8942095c952fd73d6d8b336a8203c3fff58a54c..c83d9e25d906855aa835288b2d3e744bab6632c2 100644 (file)
@@ -98,6 +98,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 #define CFG_PCI1_ADDR          (CFG_CCSRBAR+0x8000)
index a3db9f445712f66b7bf73c07bdf96b8f9dc698b6..fc8ad8813feeea30f179990fab802a8784736b2b 100644 (file)
@@ -57,6 +57,9 @@
 
 #define CONFIG_FSL_LAW         1       /* Use common FSL init code */
 
+#define CONFIG_FSL_VIA
+#define CONFIG_FSL_CDS_EEPROM
+
 /*
  * When initializing flash, if we cannot find the manufacturer ID,
  * assume this is the AMD flash associated with the CDS board.
@@ -96,6 +99,7 @@ extern unsigned long get_clock_freq(void);
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 #define CFG_PCI1_ADDR  (CFG_CCSRBAR+0x8000)
@@ -296,6 +300,8 @@ extern unsigned long get_clock_freq(void);
  * 1111 1111 1111 0000 0000 1111 1111 0111 = fff00ff7
  */
 
+#define CONFIG_FSL_CADMUS
+
 #define CADMUS_BASE_ADDR 0xf8000000
 #define CFG_BR3_PRELIM  0xf8000801
 #define CFG_OR3_PRELIM  0xfff00ff7
index 93877aedb048dc478f5cc871eb0983e977c4eb86..500b57cece6692648bfd2293af28e9df9e8830fb 100644 (file)
@@ -49,6 +49,9 @@
 
 #define CONFIG_FSL_LAW         1       /* Use common FSL init code */
 
+#define CONFIG_FSL_VIA
+#define CONFIG_FSL_CDS_EEPROM
+
 /*
  * When initializing flash, if we cannot find the manufacturer ID,
  * assume this is the AMD flash associated with the CDS board.
@@ -82,6 +85,7 @@ extern unsigned long get_clock_freq(void);
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 /*
@@ -273,6 +277,8 @@ extern unsigned long get_clock_freq(void);
  * 1111 1111 1111 0000 0000 1111 1111 0111 = fff00ff7
  */
 
+#define CONFIG_FSL_CADMUS
+
 #define CADMUS_BASE_ADDR 0xf8000000
 #define CFG_BR3_PRELIM   0xf8000801
 #define CFG_OR3_PRELIM   0xfff00ff7
index 08884b36f07ba14cebc9f7411eaef79f5c96a8f9..e30302c5d439ff6ccad4fb4850ceda4755e454bf 100644 (file)
@@ -95,6 +95,7 @@
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 
index a12d193c712e441da160459d5b4a939fb3988f62..7bb20e58cae143923d83b9d27bb502f9fef62c75 100644 (file)
@@ -90,6 +90,7 @@ extern unsigned long get_clock_freq(void);
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 #define CFG_PCI1_ADDR           (CFG_CCSRBAR+0x8000)
index 819bee70a1a5a1dac236b7f782e5c9a44de17b19..bd058fc1551097317fabd714a5529967d59e8be8 100644 (file)
@@ -92,6 +92,7 @@
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 
index 8902f42ff15e482de80516c3bba723797c5beae9..38a26dc8aa682ece932dcdc55b4325c629747986 100644 (file)
@@ -94,6 +94,7 @@
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 
index 2bbfe9aa62b1f871438f7dbeeb26553ff3a88db9..946b3c2d8ab7117477e9dc9d2663e4d47812f031 100644 (file)
@@ -99,6 +99,7 @@
 #else
   #define CFG_CCSRBAR          0xff700000      /* default CCSRBAR      */
 #endif
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR   */
 
 #define CFG_DDR_SDRAM_BASE     0x00000000      /* DDR is system memory  */
index 21e8bafc2c3d3d1efe42be38107e19a77614c2c1..fca5f74df79c16583285ebdda37b0efd74224126 100644 (file)
@@ -89,6 +89,7 @@
  */
 #define CFG_CCSRBAR_DEFAULT    0xFF700000      /* CCSRBAR Default      */
 #define CFG_CCSRBAR            0xE0000000      /* relocated CCSRBAR    */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR   */
 
 /*
index 516203a5d81ecbd9d581c431bf7e33faad88f4f4..49a72347fb7e1d929acdd11e4d8b68ca168f0ea2 100644 (file)
@@ -87,6 +87,7 @@
  */
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default */
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR */
 
 #define CFG_PCI1_ADDR  (CFG_CCSRBAR+0x8000)
index f9ede5f1879cc7b28aefcb6c0f2b8adc8eaa7fd0..81a1e072c6d93ffbf6b5688a19a9652811f7c019 100644 (file)
@@ -93,6 +93,7 @@
 #else
   #define CFG_CCSRBAR          0xff700000      /* default CCSRBAR      */
 #endif
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR   */
 
 #define CFG_DDR_SDRAM_BASE     0x00000000      /* DDR is system memory  */
index 047e1cf99a304e3465cae13e1d462dee6c0deb52..fc5d0cc76a30d4bedce19f7c428746d98ed69ee8 100644 (file)
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default      */
 #endif
 #define CFG_CCSRBAR             0xfdf00000      /* relocated CCSRBAR    */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR   */
 
 
index e09dd7163f79d34e2e89616a2ab509b8e2743514..15f690af16953aa922b11242328f8cf55d7c803b 100644 (file)
 #define CFG_CCSRBAR_DEFAULT    0xff700000      /* CCSRBAR Default      */
 #endif
 #define CFG_CCSRBAR            0xe0000000      /* relocated CCSRBAR    */
+#define CFG_CCSRBAR_PHYS       CFG_CCSRBAR     /* physical addr of CCSRBAR */
 #define CFG_IMMR               CFG_CCSRBAR     /* PQII uses CFG_IMMR   */
 
 
index 3b104524160a1c7967c94ebac87ebb11ba4f0fa7..b0c1957aea7f01d870b2cf69d0d24eb8e1de3157 100644 (file)
 #define PCI_DEVICE_ID_MICROGATE_USC    0x0010
 #define PCI_DEVICE_ID_MICROGATE_SCC    0x0020
 #define PCI_DEVICE_ID_MICROGATE_SCA    0x0030
+
+#define PCI_VENDOR_ID_FREESCALE                0x1957
+#define PCI_DEVICE_ID_MPC8548E         0x0012
+#define PCI_DEVICE_ID_MPC8548          0x0013
+#define PCI_DEVICE_ID_MPC8543E         0x0014
+#define PCI_DEVICE_ID_MPC8543          0x0015
+#define PCI_DEVICE_ID_MPC8547E         0x0018
+#define PCI_DEVICE_ID_MPC8545E         0x0019
+#define PCI_DEVICE_ID_MPC8545          0x001a
+#define PCI_DEVICE_ID_MPC8568E         0x0020
+#define PCI_DEVICE_ID_MPC8568          0x0021
+#define PCI_DEVICE_ID_MPC8567E         0x0022
+#define PCI_DEVICE_ID_MPC8567          0x0023
+#define PCI_DEVICE_ID_MPC8533E         0x0030
+#define PCI_DEVICE_ID_MPC8533          0x0031
+#define PCI_DEVICE_ID_MPC8544E         0x0032
+#define PCI_DEVICE_ID_MPC8544          0x0033
+#define PCI_DEVICE_ID_MPC8572E         0x0040
+#define PCI_DEVICE_ID_MPC8572          0x0041
+#define PCI_DEVICE_ID_MPC8641          0x7010
+#define PCI_DEVICE_ID_MPC8641D         0x7011
+#define PCI_DEVICE_ID_MPC8610          0x7018
+