diff options
Diffstat (limited to 'arch/powerpc')
| -rw-r--r-- | arch/powerpc/config.mk | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/74xx_7xx/config.mk | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/Makefile | 6 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc512x/config.mk | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc5xx/config.mk | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc5xxx/config.mk | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc824x/config.mk | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8260/config.mk | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc83xx/config.mk | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/config.mk | 7 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc85xx/speed.c | 28 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc86xx/config.mk | 5 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8xx/config.mk | 4 | ||||
| -rw-r--r-- | arch/powerpc/cpu/mpc8xxx/Makefile | 6 | ||||
| -rw-r--r-- | arch/powerpc/cpu/ppc4xx/config.mk | 3 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/config_mpc85xx.h | 5 | ||||
| -rw-r--r-- | arch/powerpc/include/asm/immap_85xx.h | 3 | ||||
| -rw-r--r-- | arch/powerpc/lib/bootm.c | 56 | 
18 files changed, 108 insertions, 50 deletions
| diff --git a/arch/powerpc/config.mk b/arch/powerpc/config.mk index e6bb93572..f75c3bf18 100644 --- a/arch/powerpc/config.mk +++ b/arch/powerpc/config.mk @@ -9,8 +9,9 @@ CROSS_COMPILE ?= ppc_8xx-  CONFIG_STANDALONE_LOAD_ADDR ?= 0x40000  LDFLAGS_FINAL += --gc-sections -PLATFORM_RELFLAGS += -fpic -mrelocatable -ffunction-sections -fdata-sections -PLATFORM_CPPFLAGS += -DCONFIG_PPC -D__powerpc__ +PLATFORM_RELFLAGS += -fpic -mrelocatable -ffunction-sections -fdata-sections \ +								-meabi +PLATFORM_CPPFLAGS += -DCONFIG_PPC -D__powerpc__ -ffixed-r2  PLATFORM_LDFLAGS  += -n  # Support generic board on PPC diff --git a/arch/powerpc/cpu/74xx_7xx/config.mk b/arch/powerpc/cpu/74xx_7xx/config.mk index 905319160..96812a02d 100644 --- a/arch/powerpc/cpu/74xx_7xx/config.mk +++ b/arch/powerpc/cpu/74xx_7xx/config.mk @@ -5,6 +5,4 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -DCONFIG_74xx_7xx -ffixed-r2 -mstring +PLATFORM_CPPFLAGS += -DCONFIG_74xx_7xx -mstring diff --git a/arch/powerpc/cpu/Makefile b/arch/powerpc/cpu/Makefile index d630abe1d..88b5298be 100644 --- a/arch/powerpc/cpu/Makefile +++ b/arch/powerpc/cpu/Makefile @@ -1,3 +1,3 @@ -ifneq ($(filter mpc83xx mpc85xx mpc86xx,$(CPU)),) -obj-y += mpc8xxx/ -endif +obj-$(CONFIG_MPC83xx) += mpc8xxx/ +obj-$(CONFIG_MPC85xx) += mpc8xxx/ +obj-$(CONFIG_MPC86xx) += mpc8xxx/ diff --git a/arch/powerpc/cpu/mpc512x/config.mk b/arch/powerpc/cpu/mpc512x/config.mk index 04717a485..03759e662 100644 --- a/arch/powerpc/cpu/mpc512x/config.mk +++ b/arch/powerpc/cpu/mpc512x/config.mk @@ -4,7 +4,4 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -DCONFIG_MPC512X -DCONFIG_E300 \ -			-ffixed-r2 -msoft-float -mcpu=603e +PLATFORM_CPPFLAGS += -DCONFIG_MPC512X -DCONFIG_E300 -msoft-float -mcpu=603e diff --git a/arch/powerpc/cpu/mpc5xx/config.mk b/arch/powerpc/cpu/mpc5xx/config.mk index b33f17a1b..31e2dc987 100644 --- a/arch/powerpc/cpu/mpc5xx/config.mk +++ b/arch/powerpc/cpu/mpc5xx/config.mk @@ -5,6 +5,4 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS +=	-meabi - -PLATFORM_CPPFLAGS +=	-DCONFIG_5xx -ffixed-r2 -mpowerpc -msoft-float +PLATFORM_CPPFLAGS += -DCONFIG_5xx -mpowerpc -msoft-float diff --git a/arch/powerpc/cpu/mpc5xxx/config.mk b/arch/powerpc/cpu/mpc5xxx/config.mk index 57bdd2d25..3384f6ffc 100644 --- a/arch/powerpc/cpu/mpc5xxx/config.mk +++ b/arch/powerpc/cpu/mpc5xxx/config.mk @@ -5,7 +5,5 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -DCONFIG_MPC5xxx -ffixed-r2 \ +PLATFORM_CPPFLAGS += -DCONFIG_MPC5xxx \  		     -mstring -mcpu=603e -mmultiple diff --git a/arch/powerpc/cpu/mpc824x/config.mk b/arch/powerpc/cpu/mpc824x/config.mk index ef605f079..a224bc8e7 100644 --- a/arch/powerpc/cpu/mpc824x/config.mk +++ b/arch/powerpc/cpu/mpc824x/config.mk @@ -5,6 +5,4 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -DCONFIG_MPC824X -ffixed-r2 -mstring -mcpu=603e -msoft-float +PLATFORM_CPPFLAGS += -DCONFIG_MPC824X -mstring -mcpu=603e -msoft-float diff --git a/arch/powerpc/cpu/mpc8260/config.mk b/arch/powerpc/cpu/mpc8260/config.mk index 91b0497cc..dfac710e6 100644 --- a/arch/powerpc/cpu/mpc8260/config.mk +++ b/arch/powerpc/cpu/mpc8260/config.mk @@ -5,7 +5,5 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -DCONFIG_8260 -DCONFIG_CPM2 -ffixed-r2 \ +PLATFORM_CPPFLAGS += -DCONFIG_8260 -DCONFIG_CPM2 \  		     -mstring -mcpu=603e -mmultiple diff --git a/arch/powerpc/cpu/mpc83xx/config.mk b/arch/powerpc/cpu/mpc83xx/config.mk index c16a00376..dfce4d53b 100644 --- a/arch/powerpc/cpu/mpc83xx/config.mk +++ b/arch/powerpc/cpu/mpc83xx/config.mk @@ -4,7 +4,4 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -DCONFIG_MPC83xx -DCONFIG_E300 \ -			-ffixed-r2 -msoft-float +PLATFORM_CPPFLAGS += -DCONFIG_MPC83xx -DCONFIG_E300 -msoft-float diff --git a/arch/powerpc/cpu/mpc85xx/config.mk b/arch/powerpc/cpu/mpc85xx/config.mk index 9eef539e5..72c964cd1 100644 --- a/arch/powerpc/cpu/mpc85xx/config.mk +++ b/arch/powerpc/cpu/mpc85xx/config.mk @@ -5,13 +5,10 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -ffixed-r2 -Wa,-me500 -msoft-float -mno-string +PLATFORM_CPPFLAGS += -Wa,-me500 -msoft-float -mno-string  # -mspe=yes is needed to have -mno-spe accepted by a buggy GCC;  # see "[PATCH,rs6000] make -mno-spe work as expected" on  # http://gcc.gnu.org/ml/gcc-patches/2008-04/msg00311.html -PF_CPPFLAGS_SPE := $(call cc-option,-mspe=yes) \ +PLATFORM_CPPFLAGS += $(call cc-option,-mspe=yes) \  		   $(call cc-option,-mno-spe) -PLATFORM_CPPFLAGS += $(PF_CPPFLAGS_SPE) diff --git a/arch/powerpc/cpu/mpc85xx/speed.c b/arch/powerpc/cpu/mpc85xx/speed.c index 46ae80c4d..35867dffd 100644 --- a/arch/powerpc/cpu/mpc85xx/speed.c +++ b/arch/powerpc/cpu/mpc85xx/speed.c @@ -74,12 +74,33 @@ void get_sys_info(sys_info_t *sys_info)  	uint ratio[CONFIG_SYS_FSL_NUM_CC_PLLS];  	unsigned long sysclk = CONFIG_SYS_CLK_FREQ;  	uint mem_pll_rat; +#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK +	uint single_src; +#endif  	sys_info->freq_systembus = sysclk; +#ifdef CONFIG_SYS_FSL_SINGLE_SOURCE_CLK +	/* +	 * DDR_REFCLK_SEL rcw bit is used to determine if DDR PLLS +	 * are driven by separate DDR Refclock or single source +	 * differential clock. +	 */ +	single_src = (in_be32(&gur->rcwsr[5]) >> +		      FSL_CORENET2_RCWSR5_DDR_REFCLK_SEL_SHIFT) & +		      FSL_CORENET2_RCWSR5_DDR_REFCLK_SEL_MASK; +	/* +	 * For single source clocking, both ddrclock and syclock +	 * are driven by differential sysclock. +	 */ +	if (single_src == FSL_CORENET2_RCWSR5_DDR_REFCLK_SINGLE_CLK) { +		printf("Single Source Clock Configuration\n"); +		sys_info->freq_ddrbus = CONFIG_SYS_CLK_FREQ; +	} else +#endif  #ifdef CONFIG_DDR_CLK_FREQ -	sys_info->freq_ddrbus = CONFIG_DDR_CLK_FREQ; +		sys_info->freq_ddrbus = CONFIG_DDR_CLK_FREQ;  #else -	sys_info->freq_ddrbus = sysclk; +		sys_info->freq_ddrbus = sysclk;  #endif  	sys_info->freq_systembus *= (in_be32(&gur->rcwsr[0]) >> 25) & 0x1f; @@ -229,6 +250,9 @@ void get_sys_info(sys_info_t *sys_info)  	case 4:  		sys_info->freq_fman[1] = freq_c_pll[CONFIG_SYS_FM2_CLK + 1] / 4;  		break; +	case 5: +		sys_info->freq_fman[1] = sys_info->freq_systembus; +		break;  	case 6:  		sys_info->freq_fman[1] = freq_c_pll[CONFIG_SYS_FM2_CLK] / 2;  		break; diff --git a/arch/powerpc/cpu/mpc86xx/config.mk b/arch/powerpc/cpu/mpc86xx/config.mk index 5dbf6a847..69a0b96ea 100644 --- a/arch/powerpc/cpu/mpc86xx/config.mk +++ b/arch/powerpc/cpu/mpc86xx/config.mk @@ -5,7 +5,4 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -ffixed-r2 -mstring -PLATFORM_CPPFLAGS += -maltivec -mabi=altivec -msoft-float +PLATFORM_CPPFLAGS += -mstring -maltivec -mabi=altivec -msoft-float diff --git a/arch/powerpc/cpu/mpc8xx/config.mk b/arch/powerpc/cpu/mpc8xx/config.mk index c04e7338c..ee2c88366 100644 --- a/arch/powerpc/cpu/mpc8xx/config.mk +++ b/arch/powerpc/cpu/mpc8xx/config.mk @@ -5,6 +5,4 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi - -PLATFORM_CPPFLAGS += -DCONFIG_8xx -ffixed-r2 -mstring -mcpu=860 -msoft-float +PLATFORM_CPPFLAGS += -DCONFIG_8xx -mstring -mcpu=860 -msoft-float diff --git a/arch/powerpc/cpu/mpc8xxx/Makefile b/arch/powerpc/cpu/mpc8xxx/Makefile index f66ee2e42..e95539e0a 100644 --- a/arch/powerpc/cpu/mpc8xxx/Makefile +++ b/arch/powerpc/cpu/mpc8xxx/Makefile @@ -19,10 +19,8 @@ ifdef MINIMAL  obj-$(CONFIG_FSL_LAW) += law.o  else - -ifneq ($(CPU),mpc83xx) -obj-y	+= cpu.o -endif +obj-$(CONFIG_MPC85xx) += cpu.o +obj-$(CONFIG_MPC86xx) += cpu.o  obj-$(CONFIG_OF_LIBFDT) += fdt.o  obj-$(CONFIG_FSL_LBC) += fsl_lbc.o diff --git a/arch/powerpc/cpu/ppc4xx/config.mk b/arch/powerpc/cpu/ppc4xx/config.mk index c2b0f9aab..71c2a6c72 100644 --- a/arch/powerpc/cpu/ppc4xx/config.mk +++ b/arch/powerpc/cpu/ppc4xx/config.mk @@ -5,8 +5,7 @@  # SPDX-License-Identifier:	GPL-2.0+  # -PLATFORM_RELFLAGS += -meabi -PLATFORM_CPPFLAGS += -DCONFIG_4xx -ffixed-r2 -mstring -msoft-float +PLATFORM_CPPFLAGS += -DCONFIG_4xx -mstring -msoft-float  cfg=$(shell grep configs $(OBJTREE)/include/config.h | sed 's/.*<\(configs.*\)>/\1/')  is440:=$(shell grep CONFIG_440 $(TOPDIR)/include/$(cfg)) diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h index 99e16bdf6..54ce2f053 100644 --- a/arch/powerpc/include/asm/config_mpc85xx.h +++ b/arch/powerpc/include/asm/config_mpc85xx.h @@ -711,7 +711,8 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)  #define CONFIG_FM_PLAT_CLK_DIV	1  #define CONFIG_SYS_FM1_CLK		CONFIG_FM_PLAT_CLK_DIV  #define CONFIG_SYS_FM_MURAM_SIZE	0x30000 -#define CONFIG_SYS_FSL_TBCLK_DIV	32 +#define CONFIG_SYS_FSL_SINGLE_SOURCE_CLK +#define CONFIG_SYS_FSL_TBCLK_DIV	16  #define CONFIG_SYS_FSL_PCIE_COMPAT	"fsl,qoriq-pcie-v2.4"  #define CONFIG_SYS_FSL_USB1_PHY_ENABLE  #define CONFIG_SYS_FSL_USB2_PHY_ENABLE @@ -745,7 +746,7 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)  #define CONFIG_SYS_NUM_FM1_DTSEC	6  #define CONFIG_SYS_NUM_FM1_10GEC	2  #endif -#define CONFIG_SYS_FSL_NUM_USB_CTRLS	2 +#define CONFIG_USB_MAX_CONTROLLER_COUNT 2  #define CONFIG_NUM_DDR_CONTROLLERS	1  #define CONFIG_PME_PLAT_CLK_DIV		1  #define CONFIG_SYS_PME_CLK		CONFIG_PME_PLAT_CLK_DIV diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index 672e8c665..68c3c8245 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -1774,6 +1774,9 @@ defined(CONFIG_PPC_T1020) || defined(CONFIG_PPC_T1022)  #define FSL_CORENET2_RCWSR5_SRDS_PLL_PD_S3_PLL2	0x00040000  #define FSL_CORENET2_RCWSR5_SRDS_PLL_PD_S4_PLL1	0x00020000  #define FSL_CORENET2_RCWSR5_SRDS_PLL_PD_S4_PLL2	0x00010000 +#define FSL_CORENET2_RCWSR5_DDR_REFCLK_SEL_SHIFT 4 +#define FSL_CORENET2_RCWSR5_DDR_REFCLK_SEL_MASK	0x00000011 +#define FSL_CORENET2_RCWSR5_DDR_REFCLK_SINGLE_CLK	1  #else /* CONFIG_SYS_FSL_QORIQ_CHASSIS2 */  #define FSL_CORENET_RCWSR0_MEM_PLL_RAT_SHIFT	17 diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c index e7153b048..41fc8f7ff 100644 --- a/arch/powerpc/lib/bootm.c +++ b/arch/powerpc/lib/bootm.c @@ -32,6 +32,7 @@ DECLARE_GLOBAL_DATA_PTR;  extern ulong get_effective_memsize(void);  static ulong get_sp (void); +extern void ft_fixup_num_cores(void *blob);  static void set_clocks_in_mhz (bd_t *kbd);  #ifndef CONFIG_SYS_LINUX_LOWMEM_MAX_SIZE @@ -277,3 +278,58 @@ static void set_clocks_in_mhz (bd_t *kbd)  #endif /* CONFIG_MPC5xxx */  	}  } + +#if defined(CONFIG_BOOTM_VXWORKS) +void boot_prep_vxworks(bootm_headers_t *images) +{ +#if defined(CONFIG_OF_LIBFDT) +	int off; +	u64 base, size; + +	if (!images->ft_addr) +		return; + +	base = (u64)gd->bd->bi_memstart; +	size = (u64)gd->bd->bi_memsize; + +	off = fdt_path_offset(images->ft_addr, "/memory"); +	if (off < 0) +		fdt_fixup_memory(images->ft_addr, base, size); + +#if defined(CONFIG_MP) +#if defined(CONFIG_MPC85xx) +	ft_fixup_cpu(images->ft_addr, base + size); +	ft_fixup_num_cores(images->ft_addr); +#elif defined(CONFIG_MPC86xx) +	off = fdt_add_mem_rsv(images->ft_addr, +			determine_mp_bootpg(NULL), (u64)4096); +	if (off < 0) +		printf("## WARNING %s: %s\n", __func__, fdt_strerror(off)); +	ft_fixup_num_cores(images->ft_addr); +#endif +	flush_cache((unsigned long)images->ft_addr, images->ft_len); +#endif +#endif +} + +void boot_jump_vxworks(bootm_headers_t *images) +{ +	/* PowerPC VxWorks boot interface conforms to the ePAPR standard +	 * general purpuse registers: +	 * +	 *	r3: Effective address of the device tree image +	 *	r4: 0 +	 *	r5: 0 +	 *	r6: ePAPR magic value +	 *	r7: shall be the size of the boot IMA in bytes +	 *	r8: 0 +	 *	r9: 0 +	 *	TCR: WRC = 0, no watchdog timer reset will occur +	 */ +	WATCHDOG_RESET(); + +	((void (*)(void *, ulong, ulong, ulong, +		ulong, ulong, ulong))images->ep)(images->ft_addr, +		0, 0, EPAPR_MAGIC, getenv_bootm_mapsize(), 0, 0); +} +#endif |