86xx: New law setup and updated reginfo patchset
cover 86xx: New law setup and updated reginfo patchset
This patchset adds support for the new law setup method in fsl_law.c to 86xx. The existing platforms (mpc8641hpcn, mpc8610hpcd, and sbc8641d) are converted to use the new method. The old support is them removed.
A print_laws() function is then added to fsl_law.c, and then used to implement a rudimentary reginfo for 86xx.
The first 2 patches in this set supersede these 2 previous patches sent to the list:
mpc86xx: Rearrange start.S to allow use of new law code
mpc86xx: Convert to using new law setup code
The new patches are the same, but with cleaned-up commit logs.
This patchset contains:
86xx: Rearrange the sequence in start.S for 86xx 86xx: Support new law setup and convert mpc8641 86xx: Convert mpc8610hpcd to new law setup method 86xx: Convert sbc8641d to use new law setup code 86xx: Remove old style law setup code for 86xx 86xx: Add print_laws function to fsl_law.c 86xx: Add reginfo command for mpc86xx
Cheers,
Becky
PATCH 1/7 86xx: Rearrange the sequence in start.S
* split the BAT initialization so that only 2 BATs (for the boot page and stack) are programmed very early on. The rest are initialized later.
* Move other BAT setup, ccsrbar setup, and law setup later in the code after translation has been enabled.
These changes will facilitate the moving of law and BAT initialization to C code, and will aid with 36-bit physical addressing support.
--- cpu/mpc86xx/start.S | 122 +++++++++++++++++++++++++++++---------------------- 1 files changed, 69 insertions(+), 53 deletions(-)
cpu/mpc86xx/start.S +69 -53
@@ -235,17 +235,8 @@ in_flash: bl enable_ext_addr /* setup the bats */ - bl setup_bats - sync - -#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR) - /* setup ccsrbar */ - bl setup_ccsrbar -#endif + bl early_bats - /* setup the law entries */ - bl law_entry - sync /* * Cache must be enabled here for stack-in-cache trick. * This means we need to enable the BATS.
@@ -282,6 +273,19 @@ in_flash: GET_GOT /* initialize GOT access */ + /* setup the rest of the bats */ + bl setup_bats + bl clear_tlbs + sync + +#if (CFG_CCSRBAR_DEFAULT != CFG_CCSRBAR) + /* setup ccsrbar */ + bl setup_ccsrbar +#endif + + bl law_entry + sync + /* run low-level CPU init code (from Flash) */ bl cpu_init_f sync
@@ -359,6 +363,7 @@ invalidate_bats: /* setup_bats - set them up to some initial state */ + /* Skip any BATS setup in early_bats */ .globl setup_bats setup_bats:
@@ -454,42 +459,6 @@ setup_bats: mtspr DBAT4U, r3 isync - /* IBAT 5 */ - addis r4, r0, CFG_IBAT5L at h - ori r4, r4, CFG_IBAT5L at l - addis r3, r0, CFG_IBAT5U at h - ori r3, r3, CFG_IBAT5U at l - mtspr IBAT5L, r4 - mtspr IBAT5U, r3 - isync - - /* DBAT 5 */ - addis r4, r0, CFG_DBAT5L at h - ori r4, r4, CFG_DBAT5L at l - addis r3, r0, CFG_DBAT5U at h - ori r3, r3, CFG_DBAT5U at l - mtspr DBAT5L, r4 - mtspr DBAT5U, r3 - isync - - /* IBAT 6 */ - addis r4, r0, CFG_IBAT6L at h - ori r4, r4, CFG_IBAT6L at l - addis r3, r0, CFG_IBAT6U at h - ori r3, r3, CFG_IBAT6U at l - mtspr IBAT6L, r4 - mtspr IBAT6U, r3 - isync - - /* DBAT 6 */ - addis r4, r0, CFG_DBAT6L at h - ori r4, r4, CFG_DBAT6L at l - addis r3, r0, CFG_DBAT6U at h - ori r3, r3, CFG_DBAT6U at l - mtspr DBAT6L, r4 - mtspr DBAT6U, r3 - isync - /* IBAT 7 */ addis r4, r0, CFG_IBAT7L at h ori r4, r4, CFG_IBAT7L at l
@@ -508,18 +477,65 @@ setup_bats: mtspr DBAT7U, r3 isync -1: - addis r3, 0, 0x0000 - addis r5, 0, 0x4 /* upper bound of 0x00040000 for 7400/750 */ + sync + blr + +/* + * early_bats: + * + * Set up bats needed early on - this is usually the BAT for the + * stack-in-cache and the Flash + */ + .globl early_bats +early_bats: + /* IBAT 5 */ + lis r4, CFG_IBAT5L at h + ori r4, r4, CFG_IBAT5L at l + lis r3, CFG_IBAT5U at h + ori r3, r3, CFG_IBAT5U at l + mtspr IBAT5L, r4 + mtspr IBAT5U, r3 isync + /* DBAT 5 */ + lis r4, CFG_DBAT5L at h + ori r4, r4, CFG_DBAT5L at l + lis r3, CFG_DBAT5U at h + ori r3, r3, CFG_DBAT5U at l + mtspr DBAT5L, r4 + mtspr DBAT5U, r3 + isync + + /* IBAT 6 */ + lis r4, CFG_IBAT6L at h + ori r4, r4, CFG_IBAT6L at l + lis r3, CFG_IBAT6U at h + ori r3, r3, CFG_IBAT6U at l + mtspr IBAT6L, r4 + mtspr IBAT6U, r3 + isync + + /* DBAT 6 */ + lis r4, CFG_DBAT6L at h + ori r4, r4, CFG_DBAT6L at l + lis r3, CFG_DBAT6U at h + ori r3, r3, CFG_DBAT6U at l + mtspr DBAT6L, r4 + mtspr DBAT6U, r3 + isync + blr + + .globl clear_tlbs +clear_tlbs: + addis r3, 0, 0x0000 + addis r5, 0, 0x4 + isync tlblp: - tlbie r3 + tlbie r3 sync - addi r3, r3, 0x1000 - cmp 0, 0, r3, r5 + addi r3, r3, 0x1000 + cmp 0, 0, r3, r5 blt tlblp - blr .globl enable_addr_trans
Signature · 1 line
1.5.3.7
PATCH 2/7 86xx: Support new law setup method and convert mpc8641
Adds the support code in cpu/mpc86xx for the new law setup code recently created fsl_law.c, and changes the MPC8641HPCN config to use this code.
--- board/freescale/mpc8641hpcn/Makefile | 2 +- board/freescale/mpc8641hpcn/law.c | 64 ++++++++++++++++++++++++++++++++++ cpu/mpc86xx/cpu_init.c | 7 ++++ cpu/mpc86xx/spd_sdram.c | 16 ++++++++- cpu/mpc86xx/start.S | 2 + include/configs/MPC8641HPCN.h | 1 + 6 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 board/freescale/mpc8641hpcn/law.c
board/freescale/mpc8641hpcn/Makefile +1 -1
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a -COBJS := $(BOARD).o +COBJS := $(BOARD).o law.o SOBJS := init.o
board/freescale/mpc8641hpcn/law.c new file +64 -0
64 lines not on this page · raw message
cpu/mpc86xx/cpu_init.c +7 -0
@@ -49,6 +49,10 @@ void cpu_init_f(void)/* Clear initial global data */ memset ((void *) gd,0 ,sizeof (gd_t)); +#ifdef CONFIG_FSL_LAW +init_laws (); +#endif +/* Map banks 0 and 1 to the FLASH banks 0 and 1 at preliminary * addresses - these have to be modified later when FLASH size * has been determined
@@ -114,5 +118,8 @@ void cpu_init_f(void)*/ int cpu_init_r (void ) { +#ifdef CONFIG_FSL_LAW +disable_law (0 ); +#endif return 0 ; }
cpu/mpc86xx/spd_sdram.c +15 -1
@@ -27,7 +27,7 @@#include <i2c.h> #include <spd.h> #include <asm/mmu.h> - +#include <asm/fsl_law.h> #if defined(CONFIG_DDR_ECC ) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER )extern void dma_init (void );
@@ -1179,12 +1179,16 @@ spd_sdram(void)/* * Set up LAWBAR for DDR 1 space. */ +#ifdef CONFIG_FSL_LAW +set_law (1 ,CFG_DDR_SDRAM_BASE , law_size_interleaved,LAW_TRGT_IF_DDR_INTRLV ); +#else mcm->lawbar1 = ((CFG_DDR_SDRAM_BASE >>12 ) &0xfffff ); mcm->lawar1 = (LAWAR_EN |LAWAR_TRGT_IF_DDR_INTERLEAVED | (LAWAR_SIZE & law_size_interleaved));debug ("DDR: LAWBAR1=0x%08x\n" , mcm->lawbar1);debug ("DDR: LAWAR1=0x%08x\n" , mcm->lawar1); +#endif debug ("Interleaved memory size is 0x%08lx\n" , memsize_total);#ifdef CONFIG_DDR_INTERLEAVE
@@ -1239,12 +1243,16 @@ spd_sdram(void)/* * Set up LAWBAR for DDR 1 space. */ +#ifdef CONFIG_FSL_LAW +set_law (1 ,CFG_DDR_SDRAM_BASE , law_size_ddr1,LAW_TRGT_IF_DDR_1 ); +#else mcm->lawbar1 = ((CFG_DDR_SDRAM_BASE >>12 ) &0xfffff ); mcm->lawar1 = (LAWAR_EN |LAWAR_TRGT_IF_DDR1 | (LAWAR_SIZE & law_size_ddr1));debug ("DDR: LAWBAR1=0x%08x\n" , mcm->lawbar1);debug ("DDR: LAWAR1=0x%08x\n" , mcm->lawar1); +#endif }#if (CONFIG_NUM_DDR_CONTROLLERS >1 )
@@ -1269,6 +1277,11 @@ spd_sdram(void)/* * Set up LAWBAR for DDR 2 space. */ +#ifdef CONFIG_FSL_LAW +set_law (8 , + (ddr1_enabled ? (memsize_ddr1 *1024 *1024 ) :CFG_DDR_SDRAM_BASE ), + law_size_ddr2,LAW_TRGT_IF_DDR_2 ); +#else if (ddr1_enabled) mcm->lawbar8 = (((memsize_ddr1 *1024 *1024 ) >>12 ) &0xfffff );
@@ -1280,6 +1293,7 @@ spd_sdram(void) | (LAWAR_SIZE & law_size_ddr2));debug ("\nDDR: LAWBAR8=0x%08x\n" , mcm->lawbar8);debug ("DDR: LAWAR8=0x%08x\n" , mcm->lawar8); +#endif }debug ("\nMemory size of DDR2 = 0x%08lx\n" , memsize_ddr2);
cpu/mpc86xx/start.S +2 -0
@@ -283,8 +283,10 @@ in_flash: bl setup_ccsrbar #endif +#ifndef CONFIG_FSL_LAW bl law_entry sync +#endif /* run low-level CPU init code (from Flash) */ bl cpu_init_f
include/configs/MPC8641HPCN.h +1 -0
@@ -49,6 +49,7 @@#define CONFIG_PCI1 1/* PCIE controler 1 (ULI bridge) */ #define CONFIG_PCI2 1/* PCIE controler 2 (slot) */ #define CONFIG_FSL_PCI_INIT 1/* Use common FSL init code */ +#define CONFIG_FSL_LAW 1/* Use common FSL law init code */ #define CONFIG_TSEC_ENET /* tsec ethernet support */ #define CONFIG_ENV_OVERWRITE
Signature · 1 line
1.5.3.7
PATCH 3/7 86xx: Convert mpc8610hpcd to new law setup method.
--- board/freescale/mpc8610hpcd/Makefile | 2 +- board/freescale/mpc8610hpcd/law.c | 44 ++++++++++++++++++++++++++++++++++ include/configs/MPC8610HPCD.h | 1 + 3 files changed, 46 insertions(+), 1 deletions(-) create mode 100644 board/freescale/mpc8610hpcd/law.c
board/freescale/mpc8610hpcd/Makefile +1 -1
@@ -29,7 +29,7 @@ LIB = $(obj)lib$(BOARD).a SOBJS := init.o -COBJS := $(BOARD).o +COBJS := $(BOARD).o law.o COBJS-${CONFIG_FSL_DIU_FB} += mpc8610hpcd_diu.o
board/freescale/mpc8610hpcd/law.c new file +44 -0
44 lines not on this page · raw message
include/configs/MPC8610HPCD.h +1 -0
@@ -42,6 +42,7 @@#define CONFIG_PCIE1 1/* PCIe 1 connected to ULI bridge */ #define CONFIG_PCIE2 1/* PCIe 2 connected to slot */ #define CONFIG_FSL_PCI_INIT 1/* Use common FSL init code */ +#define CONFIG_FSL_LAW 1/* Use common FSL init code */ #define CONFIG_ENV_OVERWRITE
Signature · 1 line
1.5.3.7
PATCH 4/7 86xx: Convert sbc8641d to use new law setup code.
--- board/sbc8641d/Makefile | 2 +- board/sbc8641d/law.c | 58 ++++++++++++++++++++++++++++++++++++++++++++ include/configs/sbc8641d.h | 1 + 3 files changed, 60 insertions(+), 1 deletions(-) create mode 100644 board/sbc8641d/law.c
board/sbc8641d/Makefile +1 -1
@@ -25,7 +25,7 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a -COBJS := $(BOARD).o +COBJS := $(BOARD).o law.o SOBJS := init.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
board/sbc8641d/law.c new file +58 -0
58 lines not on this page · raw message
include/configs/sbc8641d.h +1 -0
@@ -53,6 +53,7 @@#define CONFIG_PCI1 1/* PCIE controler 1 (slot 1) */ #define CONFIG_PCI2 1/* PCIE controler 2 (slot 2) */ #define CONFIG_FSL_PCI_INIT 1/* Use common FSL init code */ +#define CONFIG_FSL_LAW 1/* Use common FSL init code */ #define CONFIG_TSEC_ENET /* tsec ethernet support */ #define CONFIG_ENV_OVERWRITE
Signature · 1 line
1.5.3.7
PATCH 5/7 86xx: Remove old-style law setup code
This includes mpc8610hpcd, mpc8641hpcn, and sbc8641d.
--- board/freescale/mpc8610hpcd/Makefile | 2 - board/freescale/mpc8610hpcd/init.S | 147 ------------------------ board/freescale/mpc8610hpcd/u-boot.lds | 1 - board/freescale/mpc8641hpcn/Makefile | 2 - board/freescale/mpc8641hpcn/init.S | 179 ----------------------------- board/freescale/mpc8641hpcn/u-boot.lds | 1 - board/sbc8641d/Makefile | 1 - board/sbc8641d/init.S | 192 -------------------------------- board/sbc8641d/u-boot.lds | 1 - cpu/mpc86xx/spd_sdram.c | 27 ----- cpu/mpc86xx/start.S | 5 - 11 files changed, 0 insertions(+), 558 deletions(-) delete mode 100644 board/freescale/mpc8610hpcd/init.S delete mode 100644 board/freescale/mpc8641hpcn/init.S delete mode 100644 board/sbc8641d/init.S
board/freescale/mpc8610hpcd/Makefile +0 -2
@@ -27,8 +27,6 @@ endif LIB = $(obj)lib$(BOARD).a -SOBJS := init.o - COBJS := $(BOARD).o law.o COBJS-${CONFIG_FSL_DIU_FB} += mpc8610hpcd_diu.o
board/freescale/mpc8610hpcd/init.S deleted +0 -147
147 lines not on this page · raw message
board/freescale/mpc8610hpcd/u-boot.lds +0 -1
@@ -51,7 +51,6 @@ SECTIONS .text : { cpu/mpc86xx/start.o (.text) - board/freescale/mpc8610hpcd/init.o (.bootpg) cpu/mpc86xx/traps.o (.text) cpu/mpc86xx/interrupts.o (.text) cpu/mpc86xx/cpu_init.o (.text)
board/freescale/mpc8641hpcn/Makefile +0 -2
@@ -27,8 +27,6 @@ LIB = $(obj)lib$(BOARD).a COBJS := $(BOARD).o law.o -SOBJS := init.o - SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS)) SOBJS := $(addprefix $(obj),$(SOBJS))
board/freescale/mpc8641hpcn/init.S deleted +0 -179
179 lines not on this page · raw message
board/freescale/mpc8641hpcn/u-boot.lds +0 -1
@@ -51,7 +51,6 @@ SECTIONS .text : { cpu/mpc86xx/start.o (.text) - board/freescale/mpc8641hpcn/init.o (.bootpg) cpu/mpc86xx/traps.o (.text) cpu/mpc86xx/interrupts.o (.text) cpu/mpc86xx/cpu_init.o (.text)
board/sbc8641d/Makefile +0 -1
@@ -26,7 +26,6 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(BOARD).a COBJS := $(BOARD).o law.o -SOBJS := init.o SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c) OBJS := $(addprefix $(obj),$(COBJS))
board/sbc8641d/init.S deleted +0 -192
192 lines not on this page · raw message
board/sbc8641d/u-boot.lds +0 -1
@@ -51,7 +51,6 @@ SECTIONS .text : { cpu/mpc86xx/start.o (.text) - board/sbc8641d/init.o (.bootpg) cpu/mpc86xx/traps.o (.text) cpu/mpc86xx/interrupts.o (.text) cpu/mpc86xx/cpu_init.o (.text)
cpu/mpc86xx/spd_sdram.c +0 -27
@@ -1123,7 +1123,6 @@ spd_sdram(void)int memsize_ddr1 =0 ;unsigned int law_size_ddr1;volatile immap_t *immap = (immap_t *)CFG_IMMR ; -volatile ccsr_local_mcm_t *mcm = &immap->im_local_mcm;#ifdef CONFIG_DDR_INTERLEAVE volatile ccsr_ddr_t *ddr1 = &immap->im_ddr1;#endif
@@ -1181,13 +1180,6 @@ spd_sdram(void)*/ #ifdef CONFIG_FSL_LAW set_law (1 ,CFG_DDR_SDRAM_BASE , law_size_interleaved,LAW_TRGT_IF_DDR_INTRLV ); -#else - mcm->lawbar1 = ((CFG_DDR_SDRAM_BASE >>12 ) &0xfffff ); - mcm->lawar1 = (LAWAR_EN - |LAWAR_TRGT_IF_DDR_INTERLEAVED - | (LAWAR_SIZE & law_size_interleaved)); -debug ("DDR: LAWBAR1=0x%08x\n" , mcm->lawbar1); -debug ("DDR: LAWAR1=0x%08x\n" , mcm->lawar1);#endif debug ("Interleaved memory size is 0x%08lx\n" , memsize_total);
@@ -1245,13 +1237,6 @@ spd_sdram(void)*/ #ifdef CONFIG_FSL_LAW set_law (1 ,CFG_DDR_SDRAM_BASE , law_size_ddr1,LAW_TRGT_IF_DDR_1 ); -#else - mcm->lawbar1 = ((CFG_DDR_SDRAM_BASE >>12 ) &0xfffff ); - mcm->lawar1 = (LAWAR_EN - |LAWAR_TRGT_IF_DDR1 - | (LAWAR_SIZE & law_size_ddr1)); -debug ("DDR: LAWBAR1=0x%08x\n" , mcm->lawbar1); -debug ("DDR: LAWAR1=0x%08x\n" , mcm->lawar1);#endif }
@@ -1281,18 +1266,6 @@ spd_sdram(void)set_law (8 , (ddr1_enabled ? (memsize_ddr1 *1024 *1024 ) :CFG_DDR_SDRAM_BASE ), law_size_ddr2,LAW_TRGT_IF_DDR_2 ); -#else -if (ddr1_enabled) - mcm->lawbar8 = (((memsize_ddr1 *1024 *1024 ) >>12 ) - &0xfffff ); -else - mcm->lawbar8 = ((CFG_DDR_SDRAM_BASE >>12 ) &0xfffff ); - - mcm->lawar8 = (LAWAR_EN - |LAWAR_TRGT_IF_DDR2 - | (LAWAR_SIZE & law_size_ddr2)); -debug ("\nDDR: LAWBAR8=0x%08x\n" , mcm->lawbar8); -debug ("DDR: LAWAR8=0x%08x\n" , mcm->lawar8);#endif }
cpu/mpc86xx/start.S +0 -5
@@ -283,11 +283,6 @@ in_flash: bl setup_ccsrbar #endif -#ifndef CONFIG_FSL_LAW - bl law_entry - sync -#endif - /* run low-level CPU init code (from Flash) */ bl cpu_init_f sync
Signature · 1 line
1.5.3.7
PATCH 6/7 86xx: Add print_laws function to fsl_law.c
This can be used for debug, and will be used by board code to help implement reginfo.
--- drivers/misc/fsl_law.c | 19 +++++++++++++++++++ include/asm-ppc/fsl_law.h | 1 + 2 files changed, 20 insertions(+), 0 deletions(-)
drivers/misc/fsl_law.c +19 -0
@@ -28,6 +28,7 @@#include <asm/io.h> #define LAWAR_EN 0x80000000 +#define FSL_HW_NUM_LAWS 10/* number of LAWs in the hw implementation */ void set_law (u8 idx,phys_addr_t addr,enum law_size sz,enum law_trgt_if id) {
@@ -53,6 +54,24 @@ void disable_law(u8 idx)return ; } +void print_laws (void ) +{ +volatile u32 *base = (volatile u32 *)(CFG_IMMR +0xc08 ); +volatile u32 *lawbar = base; +volatile u32 *lawar = base +2 ; +int i; + +printf ("\nLocal Access Window Configuration\n" ); +for (i =0 ; i <FSL_HW_NUM_LAWS ; i++) { +printf ("\tLAWBAR%d : 0x%08x, LAWAR%d : 0x%08x\n" , + i,in_be32 (lawbar), i,in_be32 (lawar)); + lawbar +=8 ; + lawar +=8 ; + } + +return ; +} +void init_laws (void ) {int i;
include/asm-ppc/fsl_law.h +1 -0
@@ -73,6 +73,7 @@ struct law_entry {extern void set_law (u8 idx,phys_addr_t addr,enum law_size sz,enum law_trgt_if id);extern void disable_law (u8 idx);extern void init_laws (void ); +extern void print_laws (void );/* define in board code */ extern struct law_entry law_table[];
Signature · 1 line
1.5.3.7
PATCH 7/7 86xx: Add reginfo command
--- common/cmd_reginfo.c | 10 ++++++++-- cpu/mpc86xx/cpu.c | 24 +++++++++++++++++++++++- include/configs/MPC8610HPCD.h | 1 + include/configs/MPC8641HPCN.h | 1 + include/configs/sbc8641d.h | 1 + 5 files changed, 34 insertions(+), 3 deletions(-)
common/cmd_reginfo.c +8 -2
@@ -31,6 +31,8 @@#include <mpc5xx.h> #elif defined (CONFIG_MPC5200 )#include <mpc5xxx.h> +#elif defined (CONFIG_MPC86xx) +extern void mpc86xx_reginfo (void );#endif int do_reginfo (cmd_tbl_t *cmdtp,int flag,int argc,char *argv[])
@@ -329,14 +331,18 @@ int do_reginfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) *(volatile ulong*)MPC5XXX_SDRAM_CS0CFG);printf ("\tSDRAMCS1: %08X\n" , *(volatile ulong *)MPC5XXX_SDRAM_CS1CFG ); -#endif /* CONFIG_MPC5200 */ +#elif defined(CONFIG_MPC86xx) +mpc86xx_reginfo (); +#endif /* CONFIG_MPC86xx */ +return 0 ; }/**************************************************/ #if ( defined(CONFIG_8xx) || defined(CONFIG_405GP ) || \ - defined(CONFIG_405EP ) || defined(CONFIG_MPC5200 ) ) && \ + defined(CONFIG_405EP ) || defined(CONFIG_MPC5200 ) || \ + defined(CONFIG_MPC86xx)) && \ defined(CONFIG_CMD_REGINFO ) U_BOOT_CMD(
cpu/mpc86xx/cpu.c +23 -1
@@ -27,6 +27,7 @@#include <command.h> #include <asm/cache.h> #include <mpc86xx.h> +#include <asm/fsl_law.h> #if defined(CONFIG_OF_FLAT_TREE )#include <ft_build.h>
@@ -324,6 +325,27 @@ ft_cpu_setup(void *blob, bd_t *bd)if (p !=NULL )memcpy (p, bd->bi_enet3addr,6 );#endif +#endif /* CONFIG_OF_FLAT_TREE */ + +/* +* Print out the state of various machine registers. +* Currently prints out LAWs and BR0/OR0 +*/ +void mpc86xx_reginfo (void ) +{ +immap_t *immap = (immap_t *)CFG_IMMR ; +ccsr_lbc_t *lbc = &immap->im_lbc; + +print_laws (); + +printf ("Local Bus Controller Registers\n" +"\tBR0\t0x%08X\tOR0\t0x%08X \n" ,in_be32 (&lbc->br0),in_be32 (&lbc->or0)); +printf ("\tBR1\t0x%08X\tOR1\t0x%08X \n" ,in_be32 (&lbc->br1),in_be32 (&lbc->or1)); +printf ("\tBR2\t0x%08X\tOR2\t0x%08X \n" ,in_be32 (&lbc->br2),in_be32 (&lbc->or2)); +printf ("\tBR3\t0x%08X\tOR3\t0x%08X \n" ,in_be32 (&lbc->br3),in_be32 (&lbc->or3)); +printf ("\tBR4\t0x%08X\tOR4\t0x%08X \n" ,in_be32 (&lbc->br4),in_be32 (&lbc->or4)); +printf ("\tBR5\t0x%08X\tOR5\t0x%08X \n" ,in_be32 (&lbc->br5),in_be32 (&lbc->or5)); +printf ("\tBR6\t0x%08X\tOR6\t0x%08X \n" ,in_be32 (&lbc->br6),in_be32 (&lbc->or6)); +printf ("\tBR7\t0x%08X\tOR7\t0x%08X \n" ,in_be32 (&lbc->br7),in_be32 (&lbc->or7)); } -#endif
include/configs/MPC8610HPCD.h +1 -0
@@ -315,6 +315,7 @@#define CONFIG_NET_MULTI #define CONFIG_CMD_NET #define CONFIG_PCI_PNP /* do pci plug-and-play */ +#define CONFIG_CMD_REGINFO #define CONFIG_ULI526X #ifdef CONFIG_ULI526X
include/configs/MPC8641HPCN.h +1 -0
@@ -537,6 +537,7 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);#define CONFIG_CMD_PING #define CONFIG_CMD_I2C +#define CONFIG_CMD_REGINFO #if defined(CFG_RAMBOOT )#undef CONFIG_CMD_ENV
include/configs/sbc8641d.h +1 -0
@@ -480,6 +480,7 @@#include <config_cmd_default.h> #define CONFIG_CMD_PING #define CONFIG_CMD_I2C +#define CONFIG_CMD_REGINFO #if defined(CONFIG_PCI )#define CONFIG_CMD_PCI
Signature · 1 line
1.5.3.7
cover 86xx: New law setup and updated reginfo patchset
In reply to Becky BruceQuoted 26 lines · Becky Bruce
This patchset adds support for the new law setup method in
fsl_law.cto 86xx. The existing platforms (mpc8641hpcn, mpc8610hpcd, and sbc8641d) are converted to use the new method. The old support is them removed.A
print_laws()function is then added tofsl_law.c, and then used to implement a rudimentary reginfo for 86xx.The first 2 patches in this set supersede these 2 previous patches sent to the list:
mpc86xx: Rearrange
start.Sto allow use of new law code
mpc86xx: Convert to using new law setup codeThe new patches are the same, but with cleaned-up commit logs.
This patchset contains:
86xx: Rearrange the sequence instart.Sfor 86xx 86xx: Support new law setup and convert mpc8641 86xx: Convert mpc8610hpcd to new law setup method 86xx: Convert sbc8641d to use new law setup code 86xx: Remove old style law setup code for 86xx 86xx: Addprint_lawsfunction tofsl_law.c86xx: Add reginfo command for mpc86xx
Quoted 2 lines
Cheers,
Becky
Becky,
I've picked up the entire set and applied it.
I'll slate it for the _next_ merge window!
Thanks,
jdl