diff options
Diffstat (limited to 'arch/powerpc/include')
| -rw-r--r-- | arch/powerpc/include/asm/config.h | 19 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_law.h | 1 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_lbc.h | 110 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_pci.h | 103 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_serdes.h | 1 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/global_data.h | 6 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/immap_83xx.h | 28 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/immap_85xx.h | 104 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/immap_86xx.h | 66 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/mmu.h | 2 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/mp.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/mpc8xxx_spi.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/ppc4xx-sdram.h | 10 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/processor.h | 10 | 
14 files changed, 304 insertions, 162 deletions
diff --git a/arch/powerpc/include/asm/config.h b/arch/powerpc/include/asm/config.h index fc3facb30..f70699de2 100644 --- a/arch/powerpc/include/asm/config.h +++ b/arch/powerpc/include/asm/config.h @@ -44,8 +44,12 @@  	defined(CONFIG_P1021) || defined(CONFIG_P1022) || \  	defined(CONFIG_P2020) || defined(CONFIG_MPC8641)  #define CONFIG_MAX_CPUS		2 +#elif defined(CONFIG_PPC_P3041) +#define CONFIG_MAX_CPUS		4  #elif defined(CONFIG_PPC_P4080)  #define CONFIG_MAX_CPUS		8 +#elif defined(CONFIG_PPC_P5020) +#define CONFIG_MAX_CPUS		2  #else  #define CONFIG_MAX_CPUS		1  #endif @@ -66,6 +70,15 @@  #define CONFIG_TSECV2  #endif +/* + * SEC (crypto unit) major compatible version determination + */ +#if defined(CONFIG_FSL_CORENET) +#define CONFIG_SYS_FSL_SEC_COMPAT	4 +#elif defined(CONFIG_MPC85xx) || defined(CONFIG_MPC83xx) +#define CONFIG_SYS_FSL_SEC_COMPAT	2 +#endif +  /* Number of TLB CAM entries we have on FSL Book-E chips */  #if defined(CONFIG_E500MC)  #define CONFIG_SYS_NUM_TLBCAMS	64 @@ -76,4 +89,10 @@  /* Relocation to SDRAM works on all PPC boards */  #define CONFIG_RELOC_FIXUP_WORKS +/* Since so many PPC SOCs have a semi-common LBC, define this here */ +#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx) || \ +	defined(CONFIG_MPC83xx) +#define CONFIG_FSL_LBC +#endif +  #endif /* _ASM_CONFIG_H_ */ diff --git a/arch/powerpc/include/asm/fsl_law.h b/arch/powerpc/include/asm/fsl_law.h index 34c56a259..12ba1a6a0 100644 --- a/arch/powerpc/include/asm/fsl_law.h +++ b/arch/powerpc/include/asm/fsl_law.h @@ -47,6 +47,7 @@ enum law_size {  };  #define law_size_bits(sz)	(__ilog2_u64(sz) - 1) +#define lawar_size(x)	(1ULL << ((x & 0x3f) + 1))  #ifdef CONFIG_FSL_CORENET  enum law_trgt_if { diff --git a/arch/powerpc/include/asm/fsl_lbc.h b/arch/powerpc/include/asm/fsl_lbc.h index 03ae6a765..82d24ab13 100644 --- a/arch/powerpc/include/asm/fsl_lbc.h +++ b/arch/powerpc/include/asm/fsl_lbc.h @@ -14,6 +14,7 @@  #define __ASM_PPC_FSL_LBC_H  #include <config.h> +#include <common.h>  /* BR - Base Registers   */ @@ -61,6 +62,8 @@  #define BR_V				0x00000001  #define BR_V_SHIFT			0 +#define BR_UPMx_TO_MSEL(x)		((x + 4) << BR_MSEL_SHIFT) +  #define UPMA			0  #define UPMB			1  #define UPMC			2 @@ -453,49 +456,70 @@  #define LTESR_CC               0x00000001  #ifndef __ASSEMBLY__ -/* - * Local Bus Controller Registers. - */ -typedef struct lbus_bank { -	u32 br;                 /* Base Register */ -	u32 or;                 /* Option Register */ -} lbus_bank_t; +#include <asm/io.h> -typedef struct fsl_lbus { -	lbus_bank_t bank[8]; -	u8 res0[0x28]; -	u32 mar;                /* UPM Address Register */ -	u8 res1[0x4]; -	u32 mamr;               /* UPMA Mode Register */ -	u32 mbmr;               /* UPMB Mode Register */ -	u32 mcmr;               /* UPMC Mode Register */ -	u8 res2[0x8]; -	u32 mrtpr;              /* Memory Refresh Timer Prescaler Register */ -	u32 mdr;                /* UPM Data Register */ -	u8 res3[0x4]; -	u32 lsor;               /* Special Operation Initiation Register */ -	u32 lsdmr;              /* SDRAM Mode Register */ -	u8 res4[0x8]; -	u32 lurt;               /* UPM Refresh Timer */ -	u32 lsrt;               /* SDRAM Refresh Timer */ -	u8 res5[0x8]; -	u32 ltesr;              /* Transfer Error Status Register */ -	u32 ltedr;              /* Transfer Error Disable Register */ -	u32 lteir;              /* Transfer Error Interrupt Register */ -	u32 lteatr;             /* Transfer Error Attributes Register */ -	u32 ltear;               /* Transfer Error Address Register */ -	u8 res6[0xC]; -	u32 lbcr;               /* Configuration Register */ -	u32 lcrr;               /* Clock Ratio Register */ -	u8 res7[0x8]; -	u32 fmr;                /* Flash Mode Register */ -	u32 fir;                /* Flash Instruction Register */ -	u32 fcr;                /* Flash Command Register */ -	u32 fbar;               /* Flash Block Addr Register */ -	u32 fpar;               /* Flash Page Addr Register */ -	u32 fbcr;               /* Flash Byte Count Register */ -	u8 res8[0xF08]; -} fsl_lbus_t; -#endif /* __ASSEMBLY__ */ +extern void print_lbc_regs(void); +extern void init_early_memctl_regs(void); +extern void upmconfig(uint upm, uint *table, uint size); + +#define LBC_BASE_ADDR ((fsl_lbc_t *)CONFIG_SYS_LBC_ADDR) +#define get_lbc_br(i) (in_be32(&(LBC_BASE_ADDR)->bank[i].br)) +#define get_lbc_or(i) (in_be32(&(LBC_BASE_ADDR)->bank[i].or)) +#define set_lbc_br(i, v) (out_be32(&(LBC_BASE_ADDR)->bank[i].br, v)) +#define set_lbc_or(i, v) (out_be32(&(LBC_BASE_ADDR)->bank[i].or, v)) + +typedef struct lbc_bank { +	u32     br; +	u32     or; +} lbc_bank_t; +/* Local Bus Controller Registers */ +typedef struct fsl_lbc { +	lbc_bank_t      bank[8]; +	u8	res1[40]; +	u32     mar;            /* LBC UPM Addr */ +	u8      res2[4]; +	u32     mamr;           /* LBC UPMA Mode */ +	u32     mbmr;           /* LBC UPMB Mode */ +	u32     mcmr;           /* LBC UPMC Mode */ +	u8      res3[8]; +	u32     mrtpr;          /* LBC Memory Refresh Timer Prescaler */ +	u32     mdr;            /* LBC UPM Data */ +#ifdef CONFIG_FSL_ELBC +	u8      res4[4]; +	u32     lsor; +	u8      res5[12]; +	u32     lurt;           /* LBC UPM Refresh Timer */ +	u8	res6[4]; +#else +	u8	res4[8]; +	u32     lsdmr;          /* LBC SDRAM Mode */ +	u8	res5[8]; +	u32     lurt;           /* LBC UPM Refresh Timer */ +	u32     lsrt;           /* LBC SDRAM Refresh Timer */ +#endif +	u8      res7[8]; +	u32     ltesr;          /* LBC Transfer Error Status */ +	u32     ltedr;          /* LBC Transfer Error Disable */ +	u32     lteir;          /* LBC Transfer Error IRQ */ +	u32     lteatr;         /* LBC Transfer Error Attrs */ +	u32     ltear;          /* LBC Transfer Error Addr */ +	u8      res8[12]; +	u32     lbcr;           /* LBC Configuration */ +	u32     lcrr;           /* LBC Clock Ratio */ +#ifdef CONFIG_NAND_FSL_ELBC +	u8	res9[0x8]; +	u32     fmr;            /* Flash Mode Register */ +	u32     fir;            /* Flash Instruction Register */ +	u32     fcr;            /* Flash Command Register */ +	u32     fbar;           /* Flash Block Addr Register */ +	u32     fpar;           /* Flash Page Addr Register */ +	u32     fbcr;           /* Flash Byte Count Register */ +	u8      res10[0xF08]; +#else +	u8      res9[0xF28]; +#endif +} fsl_lbc_t; + +#endif /* __ASSEMBLY__ */  #endif /* __ASM_PPC_FSL_LBC_H */ diff --git a/arch/powerpc/include/asm/fsl_pci.h b/arch/powerpc/include/asm/fsl_pci.h index db61e7e9c..dc5c579e1 100644 --- a/arch/powerpc/include/asm/fsl_pci.h +++ b/arch/powerpc/include/asm/fsl_pci.h @@ -1,5 +1,5 @@  /* - * Copyright 2007,2009 Freescale Semiconductor, Inc. + * Copyright 2007,2009-2010 Freescale Semiconductor, Inc.   *   * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License as @@ -29,8 +29,8 @@ int fsl_setup_hose(struct pci_controller *hose, unsigned long addr);  int fsl_is_pci_agent(struct pci_controller *hose);  void fsl_pci_init(struct pci_controller *hose, u32 cfg_addr, u32 cfg_data);  void fsl_pci_config_unlock(struct pci_controller *hose); -void ft_fsl_pci_setup(void *blob, const char *pci_alias, -			struct pci_controller *hose); +void ft_fsl_pci_setup(void *blob, const char *pci_compat, +			struct pci_controller *hose, unsigned long ctrl_addr);  /*   * Common PCI/PCIE Register structure for mpc85xx and mpc86xx @@ -162,14 +162,15 @@ typedef struct ccsr_pci {  } ccsr_fsl_pci_t;  struct fsl_pci_info { -	unsigned long	regs; -	pci_addr_t	mem_bus; -	phys_size_t	mem_phys; -	pci_size_t	mem_size; -	pci_addr_t	io_bus; -	phys_size_t	io_phys; -	pci_size_t	io_size; -	int		pci_num; +	unsigned long regs; +	pci_addr_t mem_bus; +	phys_size_t mem_phys; +	pci_size_t mem_size; +	pci_addr_t io_bus; +	phys_size_t io_phys; +	pci_size_t io_size; +	enum law_trgt_if law; +	int pci_num;  };  int fsl_pci_init_port(struct fsl_pci_info *pci_info, @@ -184,6 +185,7 @@ int fsl_pci_init_port(struct fsl_pci_info *pci_info,  	x.io_bus = CONFIG_SYS_PCI##num##_IO_BUS; \  	x.io_phys = CONFIG_SYS_PCI##num##_IO_PHYS; \  	x.io_size = CONFIG_SYS_PCI##num##_IO_SIZE; \ +	x.law = LAW_TRGT_IF_PCI_##num; \  	x.pci_num = num; \  } @@ -196,7 +198,86 @@ int fsl_pci_init_port(struct fsl_pci_info *pci_info,  	x.io_bus = CONFIG_SYS_PCIE##num##_IO_BUS; \  	x.io_phys = CONFIG_SYS_PCIE##num##_IO_PHYS; \  	x.io_size = CONFIG_SYS_PCIE##num##_IO_SIZE; \ +	x.law = LAW_TRGT_IF_PCIE_##num; \  	x.pci_num = num; \  } +#define __FT_FSL_PCI_SETUP(blob, compat, num) \ +	ft_fsl_pci_setup(blob, compat, &pci##num##_hose, \ +			 CONFIG_SYS_PCI##num##_ADDR) + +#define __FT_FSL_PCI_DEL(blob, compat, num) \ +	ft_fsl_pci_setup(blob, compat, NULL, CONFIG_SYS_PCI##num##_ADDR) + +#define __FT_FSL_PCIE_SETUP(blob, compat, num) \ +	ft_fsl_pci_setup(blob, compat, &pcie##num##_hose, \ +			 CONFIG_SYS_PCIE##num##_ADDR) + +#define __FT_FSL_PCIE_DEL(blob, compat, num) \ +	ft_fsl_pci_setup(blob, compat, NULL, CONFIG_SYS_PCIE##num##_ADDR) + +#ifdef CONFIG_PCI1 +#define FT_FSL_PCI1_SETUP __FT_FSL_PCI_SETUP(blob, FSL_PCI_COMPAT, 1) +#else +#define FT_FSL_PCI1_SETUP __FT_FSL_PCI_DEL(blob, FSL_PCI_COMPAT, 1) +#endif + +#ifdef CONFIG_PCI2 +#define FT_FSL_PCI2_SETUP __FT_FSL_PCI_SETUP(blob, FSL_PCI_COMPAT, 2) +#else +#define FT_FSL_PCI2_SETUP __FT_FSL_PCI_DEL(blob, FSL_PCI_COMPAT, 2) +#endif + +#ifdef CONFIG_PCIE1 +#define FT_FSL_PCIE1_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 1) +#else +#define FT_FSL_PCIE1_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 1) +#endif + +#ifdef CONFIG_PCIE2 +#define FT_FSL_PCIE2_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 2) +#else +#define FT_FSL_PCIE2_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 2) +#endif + +#ifdef CONFIG_PCIE3 +#define FT_FSL_PCIE3_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 3) +#else +#define FT_FSL_PCIE3_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 3) +#endif + +#ifdef CONFIG_PCIE4 +#define FT_FSL_PCIE4_SETUP __FT_FSL_PCIE_SETUP(blob, FSL_PCIE_COMPAT, 4) +#else +#define FT_FSL_PCIE4_SETUP __FT_FSL_PCIE_DEL(blob, FSL_PCIE_COMPAT, 4) +#endif + +#if defined(CONFIG_FSL_CORENET) +#define FSL_PCIE_COMPAT	"fsl,p4080-pcie" +#define FT_FSL_PCI_SETUP \ +	FT_FSL_PCIE1_SETUP; \ +	FT_FSL_PCIE2_SETUP; \ +	FT_FSL_PCIE3_SETUP; \ +	FT_FSL_PCIE4_SETUP; +#elif defined(CONFIG_MPC85xx) +#define FSL_PCI_COMPAT	"fsl,mpc8540-pci" +#define FSL_PCIE_COMPAT	"fsl,mpc8548-pcie" +#define FT_FSL_PCI_SETUP \ +	FT_FSL_PCI1_SETUP; \ +	FT_FSL_PCI2_SETUP; \ +	FT_FSL_PCIE1_SETUP; \ +	FT_FSL_PCIE2_SETUP; \ +	FT_FSL_PCIE3_SETUP; +#elif defined(CONFIG_MPC86xx) +#define FSL_PCI_COMPAT	"fsl,mpc8610-pci" +#define FSL_PCIE_COMPAT	"fsl,mpc8641-pcie" +#define FT_FSL_PCI_SETUP \ +	FT_FSL_PCI1_SETUP; \ +	FT_FSL_PCIE1_SETUP; \ +	FT_FSL_PCIE2_SETUP; +#else +#error FT_FSL_PCI_SETUP not defined +#endif + +  #endif diff --git a/arch/powerpc/include/asm/fsl_serdes.h b/arch/powerpc/include/asm/fsl_serdes.h index d4839f467..c7877b91a 100644 --- a/arch/powerpc/include/asm/fsl_serdes.h +++ b/arch/powerpc/include/asm/fsl_serdes.h @@ -44,5 +44,6 @@ enum srds_prtcl {  };  int is_serdes_configured(enum srds_prtcl device); +void fsl_serdes_init(void);  #endif /* __FSL_SERDES_H */ diff --git a/arch/powerpc/include/asm/global_data.h b/arch/powerpc/include/asm/global_data.h index d3dd44e96..c854ce948 100644 --- a/arch/powerpc/include/asm/global_data.h +++ b/arch/powerpc/include/asm/global_data.h @@ -60,7 +60,8 @@ typedef	struct	global_data {  #if defined(CONFIG_MPC83xx)  	/* There are other clocks in the MPC83XX */  	u32 csb_clk; -#if defined(CONFIG_MPC834x) || defined(CONFIG_MPC831x) || defined(CONFIG_MPC837x) +#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \ +	defined(CONFIG_MPC834x) || defined(CONFIG_MPC837x)  	u32 tsec1_clk;  	u32 tsec2_clk;  	u32 usbdr_clk; @@ -76,7 +77,8 @@ typedef	struct	global_data {  	u32 lbiu_clk;  	u32 lclk_clk;  	u32 pci_clk; -#if defined(CONFIG_MPC837x) || defined(CONFIG_MPC831x) +#if defined(CONFIG_MPC8308) || defined(CONFIG_MPC831x) || \ +	defined(CONFIG_MPC837x)  	u32 pciexp1_clk;  	u32 pciexp2_clk;  #endif diff --git a/arch/powerpc/include/asm/immap_83xx.h b/arch/powerpc/include/asm/immap_83xx.h index 6b42a73f3..cc0293acd 100644 --- a/arch/powerpc/include/asm/immap_83xx.h +++ b/arch/powerpc/include/asm/immap_83xx.h @@ -73,7 +73,11 @@ typedef struct sysconf83xx {  	u32 obir;		/* Output Buffer Impedance Register */  	u8 res8[0xC];  	u32 pecr1;		/* PCI Express control register 1 */ +#ifdef CONFIG_MPC8308 +	u32 sdhccr;		/* eSDHC Control Registers for MPC8308 */ +#else  	u32 pecr2;		/* PCI Express control register 2 */ +#endif  	u8 res9[0xB8];  } sysconf83xx_t; @@ -589,7 +593,14 @@ typedef struct sdhc83xx {   * SerDes   */  typedef struct serdes83xx { -	u8 fixme[0x100]; +	u32 srdscr0; +	u32 srdscr1; +	u32 srdscr2; +	u32 srdscr3; +	u32 srdscr4; +	u8 res0[0xc]; +	u32 srdsrstctl; +	u8 res1[0xdc];  } serdes83xx_t;  /* @@ -635,7 +646,7 @@ typedef struct immap {  	u8			res2[0x1300];  	duart83xx_t		duart[2];	/* DUART */  	u8			res3[0x900]; -	fsl_lbus_t		lbus;	/* Local Bus Controller Registers */ +	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */  	u8			res4[0x1000];  	spi8xxx_t		spi;		/* Serial Peripheral Interface */  	dma83xx_t		dma;		/* DMA */ @@ -675,7 +686,7 @@ typedef struct immap {  	u8			res1[0x1300];  	duart83xx_t		duart[2];	/* DUART */  	u8			res2[0x900]; -	fsl_lbus_t		lbus;	/* Local Bus Controller Registers */ +	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */  	u8			res3[0x1000];  	spi8xxx_t		spi;		/* Serial Peripheral Interface */  	dma83xx_t		dma;		/* DMA */ @@ -691,7 +702,7 @@ typedef struct immap {  	u8			res7[0xC0000];  } immap_t; -#elif defined(CONFIG_MPC8315) +#elif defined(CONFIG_MPC8308) || defined(CONFIG_MPC8315)  typedef struct immap {  	sysconf83xx_t		sysconf;	/* System configuration */  	wdt83xx_t		wdt;		/* Watch Dog Timer (WDT) Registers */ @@ -710,7 +721,7 @@ typedef struct immap {  	u8			res1[0x1300];  	duart83xx_t		duart[2];	/* DUART */  	u8			res2[0x900]; -	fsl_lbus_t		lbus;	/* Local Bus Controller Registers */ +	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */  	u8			res3[0x1000];  	spi8xxx_t		spi;		/* Serial Peripheral Interface */  	dma83xx_t		dma;		/* DMA */ @@ -755,7 +766,7 @@ typedef struct immap {  	u8			res1[0x1300];  	duart83xx_t		duart[2];	/* DUART */  	u8			res2[0x900]; -	fsl_lbus_t		lbus;	/* Local Bus Controller Registers */ +	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */  	u8			res3[0x1000];  	spi8xxx_t		spi;		/* Serial Peripheral Interface */  	dma83xx_t		dma;		/* DMA */ @@ -805,7 +816,7 @@ typedef struct immap {  	u8			res4[0x1300];  	duart83xx_t		duart[2];	/* DUART */  	u8			res5[0x900]; -	fsl_lbus_t		lbus;	/* Local Bus Controller Registers */ +	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */  	u8			res6[0x2000];  	dma83xx_t		dma;		/* DMA */  	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */ @@ -844,7 +855,7 @@ typedef struct immap {  	u8			res3[0x1300];  	duart83xx_t		duart[2];	/* DUART */  	u8			res4[0x900]; -	fsl_lbus_t		lbus;	/* Local Bus Controller Registers */ +	fsl_lbc_t		im_lbc;		/* Local Bus Controller Regs */  	u8			res5[0x2000];  	dma83xx_t		dma;		/* DMA */  	pciconf83xx_t		pci_conf[1];	/* PCI Software Configuration Registers */ @@ -868,6 +879,7 @@ typedef struct immap {  #endif  #define CONFIG_SYS_MPC83xx_USB_ADDR \  			(CONFIG_SYS_IMMR + CONFIG_SYS_MPC83xx_USB_OFFSET) +#define CONFIG_SYS_LBC_ADDR (&((immap_t *)CONFIG_SYS_IMMR)->im_lbc)  #define CONFIG_SYS_TSEC1_OFFSET		0x24000  #define CONFIG_SYS_MDIO1_OFFSET		0x24000 diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index 5b205d1c2..b1d219b7a 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -266,50 +266,6 @@ typedef struct ccsr_duart {  } ccsr_duart_t;  #endif -/* Local Bus Controller Registers */ -typedef struct ccsr_lbc { -	u32	br0;		/* LBC Base 0 */ -	u32	or0;		/* LBC Options 0 */ -	u32	br1;		/* LBC Base 1 */ -	u32	or1;		/* LBC Options 1 */ -	u32	br2;		/* LBC Base 2 */ -	u32	or2;		/* LBC Options 2 */ -	u32	br3;		/* LBC Base 3 */ -	u32	or3;		/* LBC Options 3 */ -	u32	br4;		/* LBC Base 4 */ -	u32	or4;		/* LBC Options 4 */ -	u32	br5;		/* LBC Base 5 */ -	u32	or5;		/* LBC Options 5 */ -	u32	br6;		/* LBC Base 6 */ -	u32	or6;		/* LBC Options 6 */ -	u32	br7;		/* LBC Base 7 */ -	u32	or7;		/* LBC Options 7 */ -	u8	res1[40]; -	u32	mar;		/* LBC UPM Addr */ -	u8	res2[4]; -	u32	mamr;		/* LBC UPMA Mode */ -	u32	mbmr;		/* LBC UPMB Mode */ -	u32	mcmr;		/* LBC UPMC Mode */ -	u8	res3[8]; -	u32	mrtpr;		/* LBC Memory Refresh Timer Prescaler */ -	u32	mdr;		/* LBC UPM Data */ -	u8	res4[8]; -	u32	lsdmr;		/* LBC SDRAM Mode */ -	u8	res5[8]; -	u32	lurt;		/* LBC UPM Refresh Timer */ -	u32	lsrt;		/* LBC SDRAM Refresh Timer */ -	u8	res6[8]; -	u32	ltesr;		/* LBC Transfer Error Status */ -	u32	ltedr;		/* LBC Transfer Error Disable */ -	u32	lteir;		/* LBC Transfer Error IRQ */ -	u32	lteatr;		/* LBC Transfer Error Attrs */ -	u32	ltear;		/* LBC Transfer Error Addr */ -	u8	res7[12]; -	u32	lbcr;		/* LBC Configuration */ -	u32	lcrr;		/* LBC Clock Ratio */ -	u8	res8[3880]; -} ccsr_lbc_t; -  /* eSPI Registers */  typedef struct ccsr_espi {  	u32	mode;		/* eSPI mode */ @@ -2045,6 +2001,41 @@ enum {  	FSL_SRDS_B3_LANE_D = 23,  }; +/* Security Engine Block (MS = Most Sig., LS = Least Sig.) */ +#if CONFIG_SYS_FSL_SEC_COMPAT >= 4 +typedef struct ccsr_sec { +	u8	res1[0xfa0]; +	u32	crnr_ms;	/* CHA Revision Number Register, MS */ +	u32	crnr_ls;	/* CHA Revision Number Register, LS */ +	u32	ctpr_ms;	/* Compile Time Parameters Register, MS */ +#define SEC_CTPR_MS_AXI_LIODN		0x08000000 +#define SEC_CTPR_MS_QI			0x02000000 +	u32	ctpr_ls;	/* Compile Time Parameters Register, LS */ +	u8	res2[0x10]; +	u32	far_ms;		/* Fault Address Register, MS */ +	u32	far_ls;		/* Fault Address Register, LS */ +	u32	falr;		/* Fault Address LIODN Register */ +	u32	fadr;		/* Fault Address Detail Register */ +	u8	res3[0x4]; +	u32	csta;		/* CAAM Status Register */ +	u8	res4[0x8]; +	u32	rvid;		/* Run Time Integrity Checking Version ID Reg.*/ +#define SEC_RVID_MA			0x0f000000 +	u32	ccbvid;		/* CHA Cluster Block Version ID Register */ +	u32	chavid_ms;	/* CHA Version ID Register, MS */ +	u32	chavid_ls;	/* CHA Version ID Register, LS */ +	u32	chanum_ms;	/* CHA Number Register, MS */ +#define SEC_CHANUM_MS_JQNUM_MASK	0xf0000000 +#define SEC_CHANUM_MS_JQNUM_SHIFT	28 +#define SEC_CHANUM_MS_DECONUM_MASK	0x0f000000 +#define SEC_CHANUM_MS_DECONUM_SHIFT	24 +	u32	chanum_ls;	/* CHA Number Register, LS */ +	u32	caamvid_ms;	/* CAAM Version ID Register, MS */ +	u32	caamvid_ls;	/* CAAM Version ID Register, LS */ +	u8	res5[0xf000]; +} ccsr_sec_t; +#endif +  #ifdef CONFIG_FSL_CORENET  #define CONFIG_SYS_FSL_CORENET_CCM_OFFSET	0x0000  #define CONFIG_SYS_MPC85xx_DDR_OFFSET		0x8000 @@ -2059,6 +2050,7 @@ enum {  #define CONFIG_SYS_MPC85xx_LBC_OFFSET		0x124000  #define CONFIG_SYS_MPC85xx_GPIO_OFFSET		0x130000  #define CONFIG_SYS_MPC85xx_USB_OFFSET		0x210000 +#define CONFIG_SYS_FSL_SEC_OFFSET		0x300000  #define CONFIG_SYS_FSL_CORENET_QMAN_OFFSET	0x318000  #define CONFIG_SYS_FSL_CORENET_BMAN_OFFSET	0x31a000  #define CONFIG_SYS_TSEC1_OFFSET			0x4e0000 /* FM1@DTSEC0 */ @@ -2068,8 +2060,17 @@ enum {  #define CONFIG_SYS_MPC85xx_LBC_OFFSET		0x5000  #define CONFIG_SYS_MPC85xx_DDR2_OFFSET		0x6000  #define CONFIG_SYS_MPC85xx_ESPI_OFFSET		0x7000 +#define CONFIG_SYS_MPC85xx_PCI1_OFFSET		0x8000  #define CONFIG_SYS_MPC85xx_PCIX_OFFSET		0x8000 +#define CONFIG_SYS_MPC85xx_PCI2_OFFSET		0x9000  #define CONFIG_SYS_MPC85xx_PCIX2_OFFSET		0x9000 +#define CONFIG_SYS_MPC85xx_PCIE1_OFFSET         0xa000 +#define CONFIG_SYS_MPC85xx_PCIE2_OFFSET         0x9000 +#if defined(CONFIG_MPC8572) || defined(CONFIG_P2020) +#define CONFIG_SYS_MPC85xx_PCIE3_OFFSET         0x8000 +#else +#define CONFIG_SYS_MPC85xx_PCIE3_OFFSET         0xb000 +#endif  #define CONFIG_SYS_MPC85xx_GPIO_OFFSET		0xF000  #define CONFIG_SYS_MPC85xx_SATA1_OFFSET		0x18000  #define CONFIG_SYS_MPC85xx_SATA2_OFFSET		0x19000 @@ -2111,7 +2112,7 @@ enum {  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_DDR_OFFSET)  #define CONFIG_SYS_MPC85xx_DDR2_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_DDR2_OFFSET) -#define CONFIG_SYS_MPC85xx_LBC_ADDR \ +#define CONFIG_SYS_LBC_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_LBC_OFFSET)  #define CONFIG_SYS_MPC85xx_ESPI_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_ESPI_OFFSET) @@ -2143,6 +2144,19 @@ enum {  	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_CORENET_SERDES_OFFSET)  #define CONFIG_SYS_MPC85xx_USB_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_USB_OFFSET) +#define CONFIG_SYS_FSL_SEC_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_SEC_OFFSET) + +#define CONFIG_SYS_PCI1_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCI1_OFFSET) +#define CONFIG_SYS_PCI2_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCI2_OFFSET) +#define CONFIG_SYS_PCIE1_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE1_OFFSET) +#define CONFIG_SYS_PCIE2_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE2_OFFSET) +#define CONFIG_SYS_PCIE3_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC85xx_PCIE3_OFFSET)  #define TSEC_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_TSEC1_OFFSET)  #define MDIO_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_MDIO1_OFFSET) diff --git a/arch/powerpc/include/asm/immap_86xx.h b/arch/powerpc/include/asm/immap_86xx.h index fd7acdb76..4bebb6856 100644 --- a/arch/powerpc/include/asm/immap_86xx.h +++ b/arch/powerpc/include/asm/immap_86xx.h @@ -12,6 +12,7 @@  #include <asm/types.h>  #include <asm/fsl_dma.h> +#include <asm/fsl_lbc.h>  #include <asm/fsl_i2c.h>  /* Local-Access Registers and MCM Registers(0x0000-0x2000) */ @@ -190,51 +191,6 @@ typedef struct ccsr_duart {  	char	res5[2543];  } ccsr_duart_t; - -/* Local Bus Controller Registers(0x5000-0x6000) */ -typedef struct ccsr_lbc { -	uint	br0;		/* 0x5000 - LBC Base Register 0 */ -	uint	or0;		/* 0x5004 - LBC Options Register 0 */ -	uint	br1;		/* 0x5008 - LBC Base Register 1 */ -	uint	or1;		/* 0x500c - LBC Options Register 1 */ -	uint	br2;		/* 0x5010 - LBC Base Register 2 */ -	uint	or2;		/* 0x5014 - LBC Options Register 2 */ -	uint	br3;		/* 0x5018 - LBC Base Register 3 */ -	uint	or3;		/* 0x501c - LBC Options Register 3 */ -	uint	br4;		/* 0x5020 - LBC Base Register 4 */ -	uint	or4;		/* 0x5024 - LBC Options Register 4 */ -	uint	br5;		/* 0x5028 - LBC Base Register 5 */ -	uint	or5;		/* 0x502c - LBC Options Register 5 */ -	uint	br6;		/* 0x5030 - LBC Base Register 6 */ -	uint	or6;		/* 0x5034 - LBC Options Register 6 */ -	uint	br7;		/* 0x5038 - LBC Base Register 7 */ -	uint	or7;		/* 0x503c - LBC Options Register 7 */ -	char	res1[40]; -	uint	mar;		/* 0x5068 - LBC UPM Address Register */ -	char	res2[4]; -	uint	mamr;		/* 0x5070 - LBC UPMA Mode Register */ -	uint	mbmr;		/* 0x5074 - LBC UPMB Mode Register */ -	uint	mcmr;		/* 0x5078 - LBC UPMC Mode Register */ -	char	res3[8]; -	uint	mrtpr;		/* 0x5084 - LBC Memory Refresh Timer Prescaler Register */ -	uint	mdr;		/* 0x5088 - LBC UPM Data Register */ -	char	res4[8]; -	uint	lsdmr;		/* 0x5094 - LBC SDRAM Mode Register */ -	char	res5[8]; -	uint	lurt;		/* 0x50a0 - LBC UPM Refresh Timer */ -	uint	lsrt;		/* 0x50a4 - LBC SDRAM Refresh Timer */ -	char	res6[8]; -	uint	ltesr;		/* 0x50b0 - LBC Transfer Error Status Register */ -	uint	ltedr;		/* 0x50b4 - LBC Transfer Error Disable Register */ -	uint	lteir;		/* 0x50b8 - LBC Transfer Error Interrupt Register */ -	uint	lteatr;		/* 0x50bc - LBC Transfer Error Attributes Register */ -	uint	ltear;		/* 0x50c0 - LBC Transfer Error Address Register */ -	char	res7[12]; -	uint	lbcr;		/* 0x50d0 - LBC Configuration Register */ -	uint	lcrr;		/* 0x50d4 - LBC Clock Ratio Register */ -	char	res8[3880]; -} ccsr_lbc_t; -  /* PCI Express Registers(0x8000-0x9000) and (0x9000-0xA000) */  typedef struct ccsr_pex {  	uint	cfg_addr;	/* 0x8000 - PEX Configuration Address Register */ @@ -1270,7 +1226,7 @@ typedef struct immap {  	ccsr_ddr_t		im_ddr1;  	ccsr_i2c_t		im_i2c;  	ccsr_duart_t		im_duart; -	ccsr_lbc_t		im_lbc; +	fsl_lbc_t		im_lbc;  	ccsr_ddr_t		im_ddr2;  	char                    res1[4096];  	ccsr_pex_t		im_pex1; @@ -1301,8 +1257,26 @@ extern immap_t  *immr;  #define CONFIG_SYS_MPC86xx_DMA_OFFSET	(0x21000)  #define CONFIG_SYS_MPC86xx_DMA_ADDR	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_DMA_OFFSET) +#define CONFIG_SYS_MPC86xx_PCI1_OFFSET		0x8000 +#ifdef CONFIG_MPC8610 +#define CONFIG_SYS_MPC86xx_PCIE1_OFFSET         0xa000 +#else +#define CONFIG_SYS_MPC86xx_PCIE1_OFFSET         0x8000 +#endif +#define CONFIG_SYS_MPC86xx_PCIE2_OFFSET         0x9000 + +#define CONFIG_SYS_PCI1_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCI1_OFFSET) +#define CONFIG_SYS_PCI2_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCI2_OFFSET) +#define CONFIG_SYS_PCIE1_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCIE1_OFFSET) +#define CONFIG_SYS_PCIE2_ADDR \ +	(CONFIG_SYS_IMMR + CONFIG_SYS_MPC86xx_PCIE2_OFFSET) +  #define CONFIG_SYS_TSEC1_OFFSET		0x24000  #define CONFIG_SYS_MDIO1_OFFSET		0x24000 +#define CONFIG_SYS_LBC_ADDR		(&((immap_t *)CONFIG_SYS_IMMR)->im_lbc)  #define TSEC_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_TSEC1_OFFSET)  #define MDIO_BASE_ADDR		(CONFIG_SYS_IMMR + CONFIG_SYS_MDIO1_OFFSET) diff --git a/arch/powerpc/include/asm/mmu.h b/arch/powerpc/include/asm/mmu.h index 5166507f9..c01c85f6d 100644 --- a/arch/powerpc/include/asm/mmu.h +++ b/arch/powerpc/include/asm/mmu.h @@ -402,6 +402,7 @@ extern void print_bats(void);  #define MAS1_TID(x)	((x << 16) & 0x3FFF0000)  #define MAS1_TS		0x00001000  #define MAS1_TSIZE(x)	((x << 8) & 0x00000F00) +#define TSIZE_TO_BYTES(x) ((phys_addr_t)(1UL << ((tsize * 2) + 10)))  #define MAS2_EPN	0xFFFFF000  #define MAS2_X0		0x00000040 @@ -485,6 +486,7 @@ extern void init_tlbs(void);  extern int find_tlb_idx(void *addr, u8 tlbsel);  extern void init_used_tlb_cams(void);  extern int find_free_tlbcam(void); +extern void print_tlbcam(void);  extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg); diff --git a/arch/powerpc/include/asm/mp.h b/arch/powerpc/include/asm/mp.h index 5388c951c..3ffa30b97 100644 --- a/arch/powerpc/include/asm/mp.h +++ b/arch/powerpc/include/asm/mp.h @@ -1,5 +1,5 @@  /* - * Copyright 2009 Freescale Semiconductor, Inc. + * Copyright 2009-2010 Freescale Semiconductor, Inc.   *   * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License as @@ -26,5 +26,6 @@  void setup_mp(void);  void cpu_mp_lmb_reserve(struct lmb *lmb);  u32 determine_mp_bootpg(void); +int is_core_disabled(int nr);  #endif diff --git a/arch/powerpc/include/asm/mpc8xxx_spi.h b/arch/powerpc/include/asm/mpc8xxx_spi.h index 41737d3c6..b0082affd 100644 --- a/arch/powerpc/include/asm/mpc8xxx_spi.h +++ b/arch/powerpc/include/asm/mpc8xxx_spi.h @@ -27,9 +27,10 @@  #include <asm/types.h> -#if defined(CONFIG_MPC834x) || \ +#if defined(CONFIG_MPC8308) || \  	defined(CONFIG_MPC8313) || \  	defined(CONFIG_MPC8315) || \ +	defined(CONFIG_MPC834x) || \  	defined(CONFIG_MPC837x)  typedef struct spi8xxx { diff --git a/arch/powerpc/include/asm/ppc4xx-sdram.h b/arch/powerpc/include/asm/ppc4xx-sdram.h index d9506e27c..4ec1ef866 100644 --- a/arch/powerpc/include/asm/ppc4xx-sdram.h +++ b/arch/powerpc/include/asm/ppc4xx-sdram.h @@ -63,6 +63,8 @@  #define SDRAM_CFG0	0x20	/* memory controller options 0		*/  #define SDRAM_CFG1	0x21	/* memory controller options 1		*/ +#define SDRAM0_BESR0	0x0000	/* bus error status reg 0		*/ +#define SDRAM0_BESR1	0x0008	/* bus error status reg 1		*/  #define SDRAM0_BEAR	0x0010	/* bus error address reg		*/  #define SDRAM0_SLIO	0x0018	/* ddr sdram slave interface options	*/  #define SDRAM0_CFG0	0x0020	/* ddr sdram options 0			*/ @@ -363,6 +365,7 @@  /*   * Memory controller registers   */ +#ifdef CONFIG_405EX  #define SDRAM_BESR	0x00	/* PLB bus error status (read/clear)         */  #define SDRAM_BESRT	0x01	/* PLB bus error status (test/set)           */  #define SDRAM_BEARL	0x02	/* PLB bus error address low                 */ @@ -371,11 +374,10 @@  #define SDRAM_WMIRQT	0x07	/* PLB write master interrupt (test/set)     */  #define SDRAM_PLBOPT	0x08	/* PLB slave options                         */  #define SDRAM_PUABA	0x09	/* PLB upper address base                    */ -#ifndef CONFIG_405EX -#define SDRAM_MCSTAT	0x14	/* memory controller status                  */ -#else  #define SDRAM_MCSTAT	0x1F	/* memory controller status                  */ -#endif +#else /* CONFIG_405EX */ +#define SDRAM_MCSTAT	0x14	/* memory controller status                  */ +#endif /* CONFIG_405EX */  #define SDRAM_MCOPT1	0x20	/* memory controller options 1               */  #define SDRAM_MCOPT2	0x21	/* memory controller options 2               */  #define SDRAM_MODT0	0x22	/* on die termination for bank 0             */ diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index 9ec319ae1..89f283a6c 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h @@ -534,9 +534,11 @@  #define SPRN_MCSRR0	0x23a	/* Machine Check Save and Restore Register 0 */  #define SPRN_MCSRR1	0x23b	/* Machine Check Save and Restore Register 1 */  #define SPRN_BUCSR	0x3f5	/* Branch Control and Status Register */ +#define	  BUCSR_STAC_EN	0x01000000	/* Segment target addr cache enable */ +#define	  BUCSR_LS_EN	0x00400000	/* Link stack enable */  #define	  BUCSR_BBFI	0x00000200	/* Branch buffer flash invalidate */  #define	  BUCSR_BPEN	0x00000001	/* Branch prediction enable */ -#define   BUCSR_ENABLE (BUCSR_BBFI|BUCSR_BPEN) +#define   BUCSR_ENABLE (BUCSR_STAC_EN|BUCSR_LS_EN|BUCSR_BBFI|BUCSR_BPEN)  #define SPRN_BBEAR	0x201	/* Branch Buffer Entry Address Register */  #define SPRN_BBTAR	0x202	/* Branch Buffer Target Address Register */  #define SPRN_PID1	0x279	/* Process ID Register 1 */ @@ -1050,10 +1052,16 @@  #define SVR_P2010_E	0x80EB00  #define SVR_P2020	0x80E200  #define SVR_P2020_E	0x80EA00 +#define SVR_P3041	0x821103 +#define SVR_P3041_E	0x821903  #define SVR_P4040	0x820100  #define SVR_P4040_E	0x820900  #define SVR_P4080	0x820000  #define SVR_P4080_E	0x820800 +#define SVR_P5010	0x822100 +#define SVR_P5010_E	0x822900 +#define SVR_P5020	0x822000 +#define SVR_P5020_E	0x822800  #define SVR_8610	0x80A000  #define SVR_8641	0x809000  |