diff options
| -rw-r--r-- | board/freescale/mpc8572ds/law.c | 1 | ||||
| -rw-r--r-- | board/freescale/mpc8572ds/tlb.c | 6 | ||||
| -rw-r--r-- | include/configs/MPC8572DS.h | 56 | 
3 files changed, 62 insertions, 1 deletions
| diff --git a/board/freescale/mpc8572ds/law.c b/board/freescale/mpc8572ds/law.c index 9f1190246..83eb6811c 100644 --- a/board/freescale/mpc8572ds/law.c +++ b/board/freescale/mpc8572ds/law.c @@ -36,6 +36,7 @@ struct law_entry law_table[] = {  	SET_LAW(CONFIG_SYS_PCIE3_MEM_PHYS, LAWAR_SIZE_512M, LAW_TRGT_IF_PCIE_3),  	SET_LAW(CONFIG_SYS_PCIE3_IO_PHYS, LAW_SIZE_64K, LAW_TRGT_IF_PCIE_3),  	SET_LAW(PIXIS_BASE, LAW_SIZE_4K, LAW_TRGT_IF_LBC), +	SET_LAW(CONFIG_SYS_NAND_BASE_PHYS, LAW_SIZE_1M, LAW_TRGT_IF_LBC),  };  int num_law_entries = ARRAY_SIZE(law_table); diff --git a/board/freescale/mpc8572ds/tlb.c b/board/freescale/mpc8572ds/tlb.c index 1c5ed3f2d..8d1f646fa 100644 --- a/board/freescale/mpc8572ds/tlb.c +++ b/board/freescale/mpc8572ds/tlb.c @@ -80,6 +80,12 @@ struct fsl_e_tlb_entry tlb_table[] = {  	SET_TLB_ENTRY(1, CONFIG_SYS_PCIE3_IO_PHYS, CONFIG_SYS_PCIE3_IO_PHYS,  		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,  		      0, 6, BOOKE_PAGESZ_256K, 1), + +	/* *I*G - NAND */ +	SET_TLB_ENTRY(1, CONFIG_SYS_NAND_BASE, CONFIG_SYS_NAND_BASE_PHYS, +		      MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G, +		      0, 7, BOOKE_PAGESZ_1M, 1), +  };  int num_tlb_entries = ARRAY_SIZE(tlb_table); diff --git a/include/configs/MPC8572DS.h b/include/configs/MPC8572DS.h index eefb06c67..f98e7fbf0 100644 --- a/include/configs/MPC8572DS.h +++ b/include/configs/MPC8572DS.h @@ -158,6 +158,7 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);   * Localbus non-cacheable   * 0xe000_0000	0xe80f_ffff	Promjet/free		128M non-cacheable   * 0xe800_0000	0xefff_ffff	FLASH			128M non-cacheable + * 0xffa0_0000	0xffaf_ffff     NAND                    1M non-cacheable   * 0xffdf_0000	0xffdf_7fff	PIXIS			32K non-cacheable TLB0   * 0xffd0_0000	0xffd0_3fff	L1 for stack		16K Cacheable TLB0   * 0xffe0_0000	0xffef_ffff	CCSR			1M non-cacheable @@ -260,6 +261,59 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);  #define CONFIG_SYS_MONITOR_LEN		(256 * 1024) /* Reserve 256 kB for Mon */  #define CONFIG_SYS_MALLOC_LEN		(1024 * 1024)	/* Reserved for malloc */ +#define CONFIG_SYS_NAND_BASE		0xffa00000 +#define CONFIG_SYS_NAND_BASE_PHYS	CONFIG_SYS_NAND_BASE +#define CONFIG_SYS_NAND_BASE_LIST     { CONFIG_SYS_NAND_BASE,\ +				CONFIG_SYS_NAND_BASE + 0x40000, \ +				CONFIG_SYS_NAND_BASE + 0x80000,\ +				CONFIG_SYS_NAND_BASE + 0xC0000} +#define CONFIG_SYS_MAX_NAND_DEVICE    4 +#define NAND_MAX_CHIPS         1 +#define CONFIG_MTD_NAND_VERIFY_WRITE +#define CONFIG_CMD_NAND        1 +#define CONFIG_NAND_FSL_ELBC   1 +#define CONFIG_SYS_NAND_BLOCK_SIZE    (128 * 1024) + +/* NAND flash config */ +#define CONFIG_NAND_BR_PRELIM  (CONFIG_SYS_NAND_BASE_PHYS \ +                               | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \ +                               | BR_PS_8               /* Port Size = 8 bit */ \ +                               | BR_MS_FCM             /* MSEL = FCM */ \ +                               | BR_V)                 /* valid */ +#define CONFIG_NAND_OR_PRELIM  (0xFFFC0000            /* length 256K */ \ +                               | OR_FCM_PGS            /* Large Page*/ \ +                               | OR_FCM_CSCT \ +                               | OR_FCM_CST \ +                               | OR_FCM_CHT \ +                               | OR_FCM_SCY_1 \ +                               | OR_FCM_TRLX \ +                               | OR_FCM_EHTR) + +#define CONFIG_SYS_BR2_PRELIM  CONFIG_NAND_BR_PRELIM  /* NAND Base Address */ +#define CONFIG_SYS_OR2_PRELIM  CONFIG_NAND_OR_PRELIM  /* NAND Options */ + +#define CONFIG_SYS_BR4_PRELIM  ((CONFIG_SYS_NAND_BASE_PHYS + 0x40000)\ +                               | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \ +                               | BR_PS_8               /* Port Size = 8 bit */ \ +                               | BR_MS_FCM             /* MSEL = FCM */ \ +                               | BR_V)                 /* valid */ +#define CONFIG_SYS_OR4_PRELIM  CONFIG_NAND_OR_PRELIM     /* NAND Options */ +#define CONFIG_SYS_BR5_PRELIM  ((CONFIG_SYS_NAND_BASE_PHYS + 0x80000)\ +                               | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \ +                               | BR_PS_8               /* Port Size = 8 bit */ \ +                               | BR_MS_FCM             /* MSEL = FCM */ \ +                               | BR_V)                 /* valid */ +#define CONFIG_SYS_OR5_PRELIM  CONFIG_NAND_OR_PRELIM     /* NAND Options */ + +#define CONFIG_SYS_BR6_PRELIM  ((CONFIG_SYS_NAND_BASE_PHYS + 0xC0000)\ +                               | (2<<BR_DECC_SHIFT)    /* Use HW ECC */ \ +                               | BR_PS_8               /* Port Size = 8 bit */ \ +                               | BR_MS_FCM             /* MSEL = FCM */ \ +                               | BR_V)                 /* valid */ +#define CONFIG_SYS_OR6_PRELIM  CONFIG_NAND_OR_PRELIM     /* NAND Options */ + + +  /* Serial Port - controlled on board with jumper J8   * open - index 2   * shorted - index 1 @@ -455,7 +509,7 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);  #if CONFIG_SYS_MONITOR_BASE > 0xfff80000  #define CONFIG_ENV_ADDR		0xfff80000  #else -#define CONFIG_ENV_ADDR		(CONFIG_SYS_MONITOR_BASE + 0x70000) +#define CONFIG_ENV_ADDR		(CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE)  #endif  #define CONFIG_ENV_SIZE		0x2000  #define CONFIG_ENV_SECT_SIZE	0x20000 /* 128K (one sector) */ |