diff options
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/b4860_serdes.c | 61 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/cmd_errata.c | 12 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/cpu_init.c | 62 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/config_mpc85xx.h | 11 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/fsl_errata.h | 34 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/immap_85xx.h | 31 | ||||
| -rw-r--r-- | arch/powerpc/lib/bootm.c | 7 | 
7 files changed, 216 insertions, 2 deletions
| diff --git a/arch/powerpc/cpu/mpc85xx/b4860_serdes.c b/arch/powerpc/cpu/mpc85xx/b4860_serdes.c index 6ff6a7029..cf18be552 100644 --- a/arch/powerpc/cpu/mpc85xx/b4860_serdes.c +++ b/arch/powerpc/cpu/mpc85xx/b4860_serdes.c @@ -18,12 +18,32 @@ struct serdes_config {  #ifdef CONFIG_PPC_B4860  static struct serdes_config serdes1_cfg_tbl[] = {  	/* SerDes 1 */ +	{0x02, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x04, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x05, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x06, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x08, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x09, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x0A, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x0B, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x0C, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} },  	{0x0D, {CPRI8, CPRI7, CPRI6, CPRI5,  		CPRI4, CPRI3, CPRI2, CPRI1}},  	{0x0E, {CPRI8, CPRI7,	CPRI6, CPRI5,  		CPRI4, CPRI3, CPRI2, CPRI1}},  	{0x12, {CPRI8, CPRI7,	CPRI6, CPRI5,  		CPRI4, CPRI3, CPRI2, CPRI1}}, +	{0x29, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, +		CPRI6, CPRI5, CPRI4, CPRI3, CPRI2, CPRI1} },  	{0x2a, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,  		CPRI6, CPRI5, CPRI4, CPRI3, CPRI2, CPRI1}},  	{0x2C, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6, @@ -32,6 +52,9 @@ static struct serdes_config serdes1_cfg_tbl[] = {  		CPRI6, CPRI5, CPRI4, CPRI3, CPRI2, CPRI1}},  	{0x2E, {SGMII_FM1_DTSEC5, SGMII_FM1_DTSEC6,  		CPRI6, CPRI5, CPRI4, CPRI3, CPRI2, CPRI1}}, +	{0x2F, {AURORA, AURORA, +		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, +		CPRI4, CPRI3, CPRI2, CPRI1} },  	{0x30, {AURORA, AURORA,  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		CPRI4, CPRI3, CPRI2, CPRI1}}, @@ -44,18 +67,38 @@ static struct serdes_config serdes1_cfg_tbl[] = {  	{0x34, {AURORA, AURORA,  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		CPRI4, CPRI3, CPRI2, CPRI1}}, +	{0x39, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x3A, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x3C, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x3D, {AURORA, AURORA, CPRI6, CPRI5, +		CPRI4, CPRI3, CPRI2, CPRI1} },  	{0x3E, {CPRI8, CPRI7,	CPRI6, CPRI5,  		CPRI4, CPRI3, CPRI2, CPRI1}}, +	{0x5C, {AURORA, AURORA, +		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, +		CPRI4, CPRI3, CPRI2, CPRI1} }, +	{0x5D, {AURORA, AURORA, +		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, +		CPRI4, CPRI3, CPRI2, CPRI1} },  	{}  };  static struct serdes_config serdes2_cfg_tbl[] = {  	/* SerDes 2 */ +	{0x17, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, +		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, +		AURORA, AURORA,	SRIO1, SRIO1} },  	{0x18, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		AURORA, AURORA,	SRIO1, SRIO1}},  	{0x1D, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		AURORA, AURORA,	SRIO1, SRIO1}}, +	{0x2A, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, +		SRIO2, SRIO2, +		AURORA, AURORA, SRIO1, SRIO1} },  	{0x2B, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SRIO2, SRIO2,  		AURORA, AURORA, SRIO1, SRIO1}}, @@ -63,6 +106,9 @@ static struct serdes_config serdes2_cfg_tbl[] = {  		SRIO2, SRIO2,  		AURORA, AURORA,  		SRIO1, SRIO1}}, +	{0x48, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, +		SGMII_FM1_DTSEC3, AURORA, +		SRIO1, SRIO1, SRIO1, SRIO1} },  	{0x49, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SGMII_FM1_DTSEC3, AURORA,  		SRIO1, SRIO1, SRIO1, SRIO1}}, @@ -75,18 +121,30 @@ static struct serdes_config serdes2_cfg_tbl[] = {  	{0x4E, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SGMII_FM1_DTSEC3, AURORA,  		SRIO1, SRIO1, SRIO1, SRIO1}}, +	{0x79, {SRIO2, SRIO2, SRIO2, SRIO2, +		SRIO1, SRIO1, SRIO1, SRIO1} },  	{0x7A, {SRIO2, SRIO2, SRIO2, SRIO2,  		SRIO1, SRIO1, SRIO1, SRIO1}}, +	{0x83, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, +		SRIO2, SRIO2, AURORA, AURORA, +		XFI_FM1_MAC9, XFI_FM1_MAC10} },  	{0x84, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SRIO2, SRIO2, AURORA, AURORA,  		XFI_FM1_MAC9, XFI_FM1_MAC10}},  	{0x85, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SRIO2, SRIO2, AURORA, AURORA,  		XFI_FM1_MAC9, XFI_FM1_MAC10}}, +	{0x86, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, +		SRIO2, SRIO2, +		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, +		XFI_FM1_MAC9, XFI_FM1_MAC10} },  	{0x87, {SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,  		SRIO2, SRIO2,  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		XFI_FM1_MAC9, XFI_FM1_MAC10}}, +	{0x8C, {SRIO2, SRIO2, SRIO2, SRIO2, +		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, +		XFI_FM1_MAC9, XFI_FM1_MAC10} },  	{0x8D, {SRIO2, SRIO2, SRIO2, SRIO2,  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		XFI_FM1_MAC9, XFI_FM1_MAC10}}, @@ -101,6 +159,9 @@ static struct serdes_config serdes2_cfg_tbl[] = {  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		XAUI_FM1_MAC10, XAUI_FM1_MAC10,  		XAUI_FM1_MAC10, XAUI_FM1_MAC10}}, +	{0xB1, {PCIE1, PCIE1, PCIE1, PCIE1, +		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, +		XFI_FM1_MAC9, XFI_FM1_MAC10} },  	{0xB2, {PCIE1, PCIE1, PCIE1, PCIE1,  		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4,  		XFI_FM1_MAC9, XFI_FM1_MAC10}}, diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c index 769389905..8b79c05b1 100644 --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c @@ -229,6 +229,14 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  	if (IS_SVR_REV(svr, 1, 0))  		puts("Work-around for Erratum A005871 enabled\n");  #endif +#ifdef CONFIG_SYS_FSL_ERRATUM_A006475 +	if (SVR_MAJ(get_svr()) == 1) +		puts("Work-around for Erratum A006475 enabled\n"); +#endif +#ifdef CONFIG_SYS_FSL_ERRATUM_A006384 +	if (SVR_MAJ(get_svr()) == 1) +		puts("Work-around for Erratum A006384 enabled\n"); +#endif  #ifdef CONFIG_SYS_FSL_ERRATUM_A004849  	/* This work-around is implemented in PBI, so just check for it */  	check_erratum_a4849(svr); @@ -265,6 +273,10 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  	    (SVR_REV(svr) <= CONFIG_SYS_FSL_A004447_SVR_REV))  		puts("Work-around for Erratum I2C-A004447 enabled\n");  #endif +#ifdef CONFIG_SYS_FSL_ERRATUM_A006261 +	if (has_erratum_a006261()) +		puts("Work-around for Erratum A006261 enabled\n"); +#endif  	return 0;  } diff --git a/arch/powerpc/cpu/mpc85xx/cpu_init.c b/arch/powerpc/cpu/mpc85xx/cpu_init.c index b31efb761..81aeadd36 100644 --- a/arch/powerpc/cpu/mpc85xx/cpu_init.c +++ b/arch/powerpc/cpu/mpc85xx/cpu_init.c @@ -36,6 +36,54 @@  DECLARE_GLOBAL_DATA_PTR; +#ifdef CONFIG_SYS_FSL_ERRATUM_A006261 +void fsl_erratum_a006261_workaround(struct ccsr_usb_phy __iomem *usb_phy) +{ +#ifdef CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE +	u32 xcvrprg = in_be32(&usb_phy->port1.xcvrprg); + +	/* Increase Disconnect Threshold by 50mV */ +	xcvrprg &= ~CONFIG_SYS_FSL_USB_XCVRPRG_HS_DCNT_PROG_MASK | +						INC_DCNT_THRESHOLD_50MV; +	/* Enable programming of USB High speed Disconnect threshold */ +	xcvrprg |= CONFIG_SYS_FSL_USB_XCVRPRG_HS_DCNT_PROG_EN; +	out_be32(&usb_phy->port1.xcvrprg, xcvrprg); + +	xcvrprg = in_be32(&usb_phy->port2.xcvrprg); +	/* Increase Disconnect Threshold by 50mV */ +	xcvrprg &= ~CONFIG_SYS_FSL_USB_XCVRPRG_HS_DCNT_PROG_MASK | +						INC_DCNT_THRESHOLD_50MV; +	/* Enable programming of USB High speed Disconnect threshold */ +	xcvrprg |= CONFIG_SYS_FSL_USB_XCVRPRG_HS_DCNT_PROG_EN; +	out_be32(&usb_phy->port2.xcvrprg, xcvrprg); +#else + +	u32 temp = 0; +	u32 status = in_be32(&usb_phy->status1); + +	u32 squelch_prog_rd_0_2 = +		(status >> CONFIG_SYS_FSL_USB_SQUELCH_PROG_RD_0) +			& CONFIG_SYS_FSL_USB_SQUELCH_PROG_MASK; + +	u32 squelch_prog_rd_3_5 = +		(status >> CONFIG_SYS_FSL_USB_SQUELCH_PROG_RD_3) +			& CONFIG_SYS_FSL_USB_SQUELCH_PROG_MASK; + +	setbits_be32(&usb_phy->config1, +		     CONFIG_SYS_FSL_USB_HS_DISCNCT_INC); +	setbits_be32(&usb_phy->config2, +		     CONFIG_SYS_FSL_USB_RX_AUTO_CAL_RD_WR_SEL); + +	temp = squelch_prog_rd_0_2 << CONFIG_SYS_FSL_USB_SQUELCH_PROG_WR_0; +	out_be32(&usb_phy->config2, in_be32(&usb_phy->config2) | temp); + +	temp = squelch_prog_rd_3_5 << CONFIG_SYS_FSL_USB_SQUELCH_PROG_WR_3; +	out_be32(&usb_phy->config2, in_be32(&usb_phy->config2) | temp); +#endif +} +#endif + +  #ifdef CONFIG_QE  extern qe_iop_conf_t qe_iop_conf_tab[];  extern void qe_config_iopin(u8 port, u8 pin, int dir, @@ -625,6 +673,10 @@ skip_l2:  	{  		struct ccsr_usb_phy __iomem *usb_phy1 =  			(void *)CONFIG_SYS_MPC85xx_USB1_PHY_ADDR; +#ifdef CONFIG_SYS_FSL_ERRATUM_A006261 +		if (has_erratum_a006261()) +			fsl_erratum_a006261_workaround(usb_phy1); +#endif  		out_be32(&usb_phy1->usb_enable_override,  				CONFIG_SYS_FSL_USB_ENABLE_OVERRIDE);  	} @@ -633,6 +685,10 @@ skip_l2:  	{  		struct ccsr_usb_phy __iomem *usb_phy2 =  			(void *)CONFIG_SYS_MPC85xx_USB2_PHY_ADDR; +#ifdef CONFIG_SYS_FSL_ERRATUM_A006261 +		if (has_erratum_a006261()) +			fsl_erratum_a006261_workaround(usb_phy2); +#endif  		out_be32(&usb_phy2->usb_enable_override,  				CONFIG_SYS_FSL_USB_ENABLE_OVERRIDE);  	} @@ -672,8 +728,14 @@ skip_l2:  			     CONFIG_SYS_FSL_USB_DRVVBUS_CR_EN);  		setbits_be32(&usb_phy->port2.pwrfltcfg,  			     CONFIG_SYS_FSL_USB_PWRFLT_CR_EN); + +#ifdef CONFIG_SYS_FSL_ERRATUM_A006261 +		if (has_erratum_a006261()) +			fsl_erratum_a006261_workaround(usb_phy);  #endif +#endif /* CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE */ +  #ifdef CONFIG_FMAN_ENET  	fman_enet_init();  #endif diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h index 56587aebc..9a20b971c 100644 --- a/arch/powerpc/include/asm/config_mpc85xx.h +++ b/arch/powerpc/include/asm/config_mpc85xx.h @@ -154,6 +154,7 @@  #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399  #define CONFIG_SYS_FSL_ERRATUM_A005125  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 +#define CONFIG_SYS_FSL_ERRATUM_A006261  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x10  #define CONFIG_ESDHC_HC_BLK_ADDR @@ -386,6 +387,7 @@  #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034  #define CONFIG_SYS_FSL_ERRATUM_A004849  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 +#define CONFIG_SYS_FSL_ERRATUM_A006261  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x11  #elif defined(CONFIG_PPC_P3041) @@ -424,6 +426,7 @@  #define CONFIG_SYS_FSL_ERRATUM_A004849  #define CONFIG_SYS_FSL_ERRATUM_A005812  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 +#define CONFIG_SYS_FSL_ERRATUM_A006261  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x20  #elif defined(CONFIG_PPC_P4080) /* also supports P4040 */ @@ -507,6 +510,7 @@  #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xc0000000  #define CONFIG_SYS_FSL_ERRATUM_SRIO_A004034  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447 +#define CONFIG_SYS_FSL_ERRATUM_A006261  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x20  #elif defined(CONFIG_PPC_P5040) @@ -538,6 +542,7 @@  #define CONFIG_SYS_FSL_ERRATUM_A004699  #define CONFIG_SYS_FSL_ERRATUM_A004510  #define CONFIG_SYS_FSL_ERRATUM_A004510_SVR_REV	0x10 +#define CONFIG_SYS_FSL_ERRATUM_A006261  #define CONFIG_SYS_FSL_CORENET_SNOOPVEC_COREONLY 0xf0000000  #define CONFIG_SYS_FSL_ERRATUM_A005812 @@ -633,6 +638,7 @@  #define CONFIG_SYS_FSL_ERRATUM_A004468  #define CONFIG_SYS_FSL_ERRATUM_A_004934  #define CONFIG_SYS_FSL_ERRATUM_A005871 +#define CONFIG_SYS_FSL_ERRATUM_A006261  #define CONFIG_SYS_FSL_ERRATUM_A006379  #define CONFIG_SYS_FSL_ERRATUM_A006593  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xfe000000 @@ -662,11 +668,14 @@  #define CONFIG_SYS_FSL_ERRATUM_A005871  #define CONFIG_SYS_FSL_ERRATUM_A006379  #define CONFIG_SYS_FSL_ERRATUM_A006593 +#define CONFIG_SYS_FSL_ERRATUM_A006475 +#define CONFIG_SYS_FSL_ERRATUM_A006384  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xfe000000  #ifdef CONFIG_PPC_B4860  #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 4  #define CONFIG_MAX_CPUS			4 +#define CONFIG_SYS_FSL_SRDS_NUM_PLLS	2  #define CONFIG_SYS_FSL_NUM_CC_PLLS	4  #define CONFIG_SYS_FSL_CLUSTER_CLOCKS	{ 1, 4, 4, 4 }  #define CONFIG_SYS_NUM_FM1_DTSEC	6 @@ -679,6 +688,7 @@  #define CONFIG_SYS_FSL_SRIO_LIODN  #else  #define CONFIG_MAX_CPUS			2 +#define CONFIG_SYS_FSL_SRDS_NUM_PLLS	1  #define CONFIG_SYS_FSL_CORES_PER_CLUSTER 2  #define CONFIG_SYS_FSL_NUM_CC_PLLS	4  #define CONFIG_SYS_FSL_CLUSTER_CLOCKS	{ 1, 4 } @@ -722,6 +732,7 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)  #define CONFIG_SYS_FSL_PCIE_COMPAT	"fsl,qoriq-pcie-v2.4"  #define CONFIG_SYS_FSL_USB_DUAL_PHY_ENABLE  #define CONFIG_SYS_FSL_USB_INTERNAL_UTMI_PHY +#define CONFIG_SYS_FSL_ERRATUM_A006261  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xfe000000  #elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081) diff --git a/arch/powerpc/include/asm/fsl_errata.h b/arch/powerpc/include/asm/fsl_errata.h index a59091977..c9982cc8e 100644 --- a/arch/powerpc/include/asm/fsl_errata.h +++ b/arch/powerpc/include/asm/fsl_errata.h @@ -26,4 +26,38 @@ static inline bool has_erratum_a006379(void)  }  #endif +#ifdef CONFIG_SYS_FSL_ERRATUM_A006261 +static inline bool has_erratum_a006261(void) +{ +	u32 svr = get_svr(); +	u32 soc = SVR_SOC_VER(svr); + +	switch (soc) { +	case SVR_P1010: +		return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0); +	case SVR_P2041: +	case SVR_P2040: +		return IS_SVR_REV(svr, 1, 0) || +			IS_SVR_REV(svr, 1, 1) || IS_SVR_REV(svr, 2, 1); +	case SVR_P3041: +		return IS_SVR_REV(svr, 1, 0) || +			IS_SVR_REV(svr, 1, 1) || +			IS_SVR_REV(svr, 2, 0) || IS_SVR_REV(svr, 2, 1); +	case SVR_P5010: +	case SVR_P5020: +	case SVR_P5021: +		return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0); +	case SVR_T4240: +	case SVR_T4160: +		return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0); +	case SVR_T1040: +		return IS_SVR_REV(svr, 1, 0); +	case SVR_P5040: +		return IS_SVR_REV(svr, 1, 0); +	} + +	return false; +} +#endif +  #endif diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index 9d08321f5..4b6f9d018 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -1722,6 +1722,9 @@ typedef struct ccsr_gur {  	u32	rstrqpblsr;	/* Reset request preboot loader status */  	u8	res11[8];  	u32	rstrqmr1;	/* Reset request mask */ +#ifdef CONFIG_SYS_FSL_QORIQ_CHASSIS2 +#define FSL_CORENET_RSTRQMR1_SRDS_RST_MSK      0x00000800 +#endif  	u8	res12[4];  	u32	rstrqsr1;	/* Reset request status */  	u8	res13[4]; @@ -1770,6 +1773,10 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)  #define FSL_CORENET_RCWSR13_MAC2_GMII_SEL	0x00000080  #define FSL_CORENET_RCWSR13_MAC2_GMII_SEL_L2_SWITCH	0x00000000  #define FSL_CORENET_RCWSR13_MAC2_GMII_SEL_ENET_PORT	0x80000000 +#define CONFIG_SYS_FSL_SCFG_PIXCLKCR_OFFSET	0x28 +#define PXCKEN_MASK	0x80000000 +#define PXCK_MASK	0x00FF0000 +#define PXCK_BITS_START	16  #elif defined(CONFIG_PPC_T2080) || defined(CONFIG_PPC_T2081)  #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL		0xff000000  #define FSL_CORENET2_RCWSR4_SRDS1_PRTCL_SHIFT	24 @@ -2492,6 +2499,7 @@ typedef struct serdes_corenet {  #define SRDS_RSTCTL_SDEN	0x00000020  #define SRDS_RSTCTL_SDRST_B	0x00000040  #define SRDS_RSTCTL_PLLRST_B	0x00000080 +#define SRDS_RSTCTL_RSTERR_SHIFT  29  		u32	pllcr0; /* PLL Control Register 0 */  #define SRDS_PLLCR0_POFF		0x80000000  #define SRDS_PLLCR0_RFCK_SEL_MASK	0x70000000 @@ -2501,6 +2509,7 @@ typedef struct serdes_corenet {  #define SRDS_PLLCR0_RFCK_SEL_150	0x30000000  #define SRDS_PLLCR0_RFCK_SEL_161_13	0x40000000  #define SRDS_PLLCR0_RFCK_SEL_122_88	0x50000000 +#define SRDS_PLLCR0_DCBIAS_OUT_EN      0x02000000  #define SRDS_PLLCR0_FRATE_SEL_MASK	0x000f0000  #define SRDS_PLLCR0_FRATE_SEL_5		0x00000000  #define SRDS_PLLCR0_FRATE_SEL_3_75	0x00050000 @@ -2508,9 +2517,22 @@ typedef struct serdes_corenet {  #define SRDS_PLLCR0_FRATE_SEL_4		0x00070000  #define SRDS_PLLCR0_FRATE_SEL_3_12	0x00090000  #define SRDS_PLLCR0_FRATE_SEL_3		0x000a0000 +#define SRDS_PLLCR0_DCBIAS_OVRD		0x000000F0 +#define SRDS_PLLCR0_DCBIAS_OVRD_SHIFT	4  		u32	pllcr1; /* PLL Control Register 1 */ -#define SRDS_PLLCR1_PLL_BWSEL	0x08000000 -		u32	res_0c;	/* 0x00c */ +#define SRDS_PLLCR1_BCAP_EN		0x20000000 +#define SRDS_PLLCR1_BCAP_OVD		0x10000000 +#define SRDS_PLLCR1_PLL_FCAP		0x001F8000 +#define SRDS_PLLCR1_PLL_FCAP_SHIFT	15 +#define SRDS_PLLCR1_PLL_BWSEL		0x08000000 +#define SRDS_PLLCR1_BYP_CAL		0x02000000 +		u32	pllsr2;	/* At 0x00c, PLL Status Register 2 */ +#define SRDS_PLLSR2_BCAP_EN		0x00800000 +#define SRDS_PLLSR2_BCAP_EN_SHIFT	23 +#define SRDS_PLLSR2_FCAP		0x003F0000 +#define SRDS_PLLSR2_FCAP_SHIFT		16 +#define SRDS_PLLSR2_DCBIAS		0x000F0000 +#define SRDS_PLLSR2_DCBIAS_SHIFT	16  		u32	pllcr3;  		u32	pllcr4;  		u8	res_18[0x20-0x18]; @@ -2845,6 +2867,7 @@ struct ccsr_pman {  #define CONFIG_SYS_FSL_CORENET_SERDES_OFFSET	0xEA000  #define CONFIG_SYS_FSL_CORENET_SERDES2_OFFSET	0xEB000  #define CONFIG_SYS_FSL_CPC_OFFSET		0x10000 +#define CONFIG_SYS_FSL_SCFG_OFFSET		0xFC000  #define CONFIG_SYS_MPC85xx_DMA1_OFFSET		0x100000  #define CONFIG_SYS_MPC85xx_DMA2_OFFSET		0x101000  #define CONFIG_SYS_MPC85xx_DMA3_OFFSET		0x102000 @@ -2962,6 +2985,10 @@ struct ccsr_pman {  #define CONFIG_SYS_FSL_CPC_ADDR	\  	(CONFIG_SYS_CCSRBAR + CONFIG_SYS_FSL_CPC_OFFSET) +#define CONFIG_SYS_FSL_SCFG_ADDR	\ +	(CONFIG_SYS_CCSRBAR + CONFIG_SYS_FSL_SCFG_OFFSET) +#define CONFIG_SYS_FSL_SCFG_PIXCLK_ADDR	\ +	(CONFIG_SYS_FSL_SCFG_ADDR + CONFIG_SYS_FSL_SCFG_PIXCLKCR_OFFSET)  #define CONFIG_SYS_FSL_QMAN_ADDR \  	(CONFIG_SYS_IMMR + CONFIG_SYS_FSL_QMAN_OFFSET)  #define CONFIG_SYS_FSL_BMAN_ADDR \ diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c index c08b62c47..33099a492 100644 --- a/arch/powerpc/lib/bootm.c +++ b/arch/powerpc/lib/bootm.c @@ -53,6 +53,13 @@ static void boot_jump_linux(bootm_headers_t *images)  	bootstage_mark(BOOTSTAGE_ID_RUN_OS); +#ifdef CONFIG_BOOTSTAGE_FDT +	bootstage_fdt_add_report(); +#endif +#ifdef CONFIG_BOOTSTAGE_REPORT +	bootstage_report(); +#endif +  #if defined(CONFIG_SYS_INIT_RAM_LOCK) && !defined(CONFIG_E500)  	unlock_ram_in_cache();  #endif |