185043159SSimon Glass /* 285043159SSimon Glass * Ugly header containing required header files. This could be adjusted 385043159SSimon Glass * so that including asm/arch/hardware includes the correct file. 485043159SSimon Glass * 585043159SSimon Glass * (C) Copyright 2000-2009 685043159SSimon Glass * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 785043159SSimon Glass * 885043159SSimon Glass * SPDX-License-Identifier: GPL-2.0+ 985043159SSimon Glass */ 1085043159SSimon Glass 1185043159SSimon Glass #ifndef __ASM_PPC_H 1285043159SSimon Glass #define __ASM_PPC_H 1385043159SSimon Glass 1485043159SSimon Glass #ifndef __ASSEMBLY__ 1585043159SSimon Glass 1685043159SSimon Glass #if defined(CONFIG_8xx) 1785043159SSimon Glass #include <asm/8xx_immap.h> 1885043159SSimon Glass #if defined(CONFIG_MPC859) || defined(CONFIG_MPC859T) || \ 1985043159SSimon Glass defined(CONFIG_MPC866) || defined(CONFIG_MPC866P) 2085043159SSimon Glass # define CONFIG_MPC866_FAMILY 1 2185043159SSimon Glass #elif defined(CONFIG_MPC885) 2285043159SSimon Glass # define CONFIG_MPC885_FAMILY 1 2385043159SSimon Glass #endif 2485043159SSimon Glass #if defined(CONFIG_MPC860) || defined(CONFIG_MPC860T) || \ 2585043159SSimon Glass defined(CONFIG_MPC866_FAMILY) || defined(CONFIG_MPC885_FAMILY) 2685043159SSimon Glass # define CONFIG_MPC86x 1 2785043159SSimon Glass #endif 2885043159SSimon Glass #elif defined(CONFIG_5xx) 2985043159SSimon Glass #include <asm/5xx_immap.h> 3085043159SSimon Glass #elif defined(CONFIG_MPC5xxx) 3185043159SSimon Glass #include <mpc5xxx.h> 3285043159SSimon Glass #elif defined(CONFIG_MPC512X) 3385043159SSimon Glass #include <asm/immap_512x.h> 3485043159SSimon Glass #elif defined(CONFIG_MPC8260) 3585043159SSimon Glass #if defined(CONFIG_MPC8247) || defined(CONFIG_MPC8272) 3685043159SSimon Glass #define CONFIG_MPC8272_FAMILY 1 3785043159SSimon Glass #endif 3885043159SSimon Glass #include <asm/immap_8260.h> 3985043159SSimon Glass #endif 4085043159SSimon Glass #ifdef CONFIG_MPC86xx 4185043159SSimon Glass #include <mpc86xx.h> 4285043159SSimon Glass #include <asm/immap_86xx.h> 4385043159SSimon Glass #endif 4485043159SSimon Glass #ifdef CONFIG_MPC85xx 4585043159SSimon Glass #include <mpc85xx.h> 4685043159SSimon Glass #include <asm/immap_85xx.h> 4785043159SSimon Glass #endif 4885043159SSimon Glass #ifdef CONFIG_MPC83xx 4985043159SSimon Glass #include <mpc83xx.h> 5085043159SSimon Glass #include <asm/immap_83xx.h> 5185043159SSimon Glass #endif 5285043159SSimon Glass #ifdef CONFIG_4xx 5385043159SSimon Glass #include <asm/ppc4xx.h> 5485043159SSimon Glass #endif 5585043159SSimon Glass #ifdef CONFIG_SOC_DA8XX 5685043159SSimon Glass #include <asm/arch/hardware.h> 5785043159SSimon Glass #endif 5885043159SSimon Glass #ifdef CONFIG_FSL_LSCH3 5985043159SSimon Glass #include <asm/arch/immap_lsch3.h> 6085043159SSimon Glass #endif 6185043159SSimon Glass #ifdef CONFIG_FSL_LSCH2 6285043159SSimon Glass #include <asm/arch/immap_lsch2.h> 6385043159SSimon Glass #endif 6485043159SSimon Glass 65*6e2941d7SSimon Glass /* 66*6e2941d7SSimon Glass * enable common handling for all TQM8xxL/M boards: 67*6e2941d7SSimon Glass * - CONFIG_TQM8xxM will be defined for all TQM8xxM boards 68*6e2941d7SSimon Glass * - CONFIG_TQM8xxL will be defined for all TQM8xxL _and_ TQM8xxM boards 69*6e2941d7SSimon Glass * and for the TQM885D board 70*6e2941d7SSimon Glass */ 71*6e2941d7SSimon Glass #if defined(CONFIG_TQM823M) || defined(CONFIG_TQM850M) || \ 72*6e2941d7SSimon Glass defined(CONFIG_TQM855M) || defined(CONFIG_TQM860M) || \ 73*6e2941d7SSimon Glass defined(CONFIG_TQM862M) || defined(CONFIG_TQM866M) 74*6e2941d7SSimon Glass # ifndef CONFIG_TQM8xxM 75*6e2941d7SSimon Glass # define CONFIG_TQM8xxM 76*6e2941d7SSimon Glass # endif 77*6e2941d7SSimon Glass #endif 78*6e2941d7SSimon Glass #if defined(CONFIG_TQM823L) || defined(CONFIG_TQM850L) || \ 79*6e2941d7SSimon Glass defined(CONFIG_TQM855L) || defined(CONFIG_TQM860L) || \ 80*6e2941d7SSimon Glass defined(CONFIG_TQM862L) || defined(CONFIG_TQM8xxM) || \ 81*6e2941d7SSimon Glass defined(CONFIG_TQM885D) 82*6e2941d7SSimon Glass # ifndef CONFIG_TQM8xxL 83*6e2941d7SSimon Glass # define CONFIG_TQM8xxL 84*6e2941d7SSimon Glass # endif 85*6e2941d7SSimon Glass #endif 86*6e2941d7SSimon Glass 87*6e2941d7SSimon Glass #if defined(CONFIG_5xx) || defined(CONFIG_8xx) 88*6e2941d7SSimon Glass uint get_immr(uint); 89*6e2941d7SSimon Glass #endif 90*6e2941d7SSimon Glass #if defined(CONFIG_MPC5xxx) 91*6e2941d7SSimon Glass uint get_svr(void); 92*6e2941d7SSimon Glass #endif 93*6e2941d7SSimon Glass uint get_pvr(void); 94*6e2941d7SSimon Glass uint get_svr(void); 95*6e2941d7SSimon Glass uint rd_ic_cst(void); 96*6e2941d7SSimon Glass void wr_ic_cst(uint); 97*6e2941d7SSimon Glass void wr_ic_adr(uint); 98*6e2941d7SSimon Glass uint rd_dc_cst(void); 99*6e2941d7SSimon Glass void wr_dc_cst(uint); 100*6e2941d7SSimon Glass void wr_dc_adr(uint); 101*6e2941d7SSimon Glass 102*6e2941d7SSimon Glass #if defined(CONFIG_4xx) || \ 103*6e2941d7SSimon Glass defined(CONFIG_MPC5xxx) || \ 104*6e2941d7SSimon Glass defined(CONFIG_MPC85xx) || \ 105*6e2941d7SSimon Glass defined(CONFIG_MPC86xx) || \ 106*6e2941d7SSimon Glass defined(CONFIG_MPC83xx) 107*6e2941d7SSimon Glass unsigned char in8(unsigned int); 108*6e2941d7SSimon Glass void out8(unsigned int, unsigned char); 109*6e2941d7SSimon Glass unsigned short in16(unsigned int); 110*6e2941d7SSimon Glass unsigned short in16r(unsigned int); 111*6e2941d7SSimon Glass void out16(unsigned int, unsigned short value); 112*6e2941d7SSimon Glass void out16r(unsigned int, unsigned short value); 113*6e2941d7SSimon Glass unsigned long in32(unsigned int); 114*6e2941d7SSimon Glass unsigned long in32r(unsigned int); 115*6e2941d7SSimon Glass void out32(unsigned int, unsigned long value); 116*6e2941d7SSimon Glass void out32r(unsigned int, unsigned long value); 117*6e2941d7SSimon Glass void ppcDcbf(unsigned long value); 118*6e2941d7SSimon Glass void ppcDcbi(unsigned long value); 119*6e2941d7SSimon Glass void ppcSync(void); 120*6e2941d7SSimon Glass void ppcDcbz(unsigned long value); 121*6e2941d7SSimon Glass #endif 122*6e2941d7SSimon Glass #if defined(CONFIG_MPC83xx) 123*6e2941d7SSimon Glass void ppcDWload(unsigned int *addr, unsigned int *ret); 124*6e2941d7SSimon Glass void ppcDWstore(unsigned int *addr, unsigned int *value); 125*6e2941d7SSimon Glass void disable_addr_trans(void); 126*6e2941d7SSimon Glass void enable_addr_trans(void); 127*6e2941d7SSimon Glass #if defined(CONFIG_DDR_ECC) && !defined(CONFIG_ECC_INIT_VIA_DDRCONTROLLER) 128*6e2941d7SSimon Glass void ddr_enable_ecc(unsigned int dram_size); 129*6e2941d7SSimon Glass #endif 130*6e2941d7SSimon Glass #endif 131*6e2941d7SSimon Glass 132*6e2941d7SSimon Glass #if defined(CONFIG_MPC5xxx) 133*6e2941d7SSimon Glass int prt_mpc5xxx_clks(void); 134*6e2941d7SSimon Glass #endif 135*6e2941d7SSimon Glass 136*6e2941d7SSimon Glass #if defined(CONFIG_MPC85xx) 137*6e2941d7SSimon Glass typedef MPC85xx_SYS_INFO sys_info_t; 138*6e2941d7SSimon Glass void get_sys_info(sys_info_t *); 139*6e2941d7SSimon Glass void ft_fixup_cpu(void *, u64); 140*6e2941d7SSimon Glass void ft_fixup_num_cores(void *); 141*6e2941d7SSimon Glass #endif 142*6e2941d7SSimon Glass #if defined(CONFIG_MPC86xx) 143*6e2941d7SSimon Glass ulong get_bus_freq(ulong); 144*6e2941d7SSimon Glass typedef MPC86xx_SYS_INFO sys_info_t; 145*6e2941d7SSimon Glass void get_sys_info(sys_info_t *); 146*6e2941d7SSimon Glass static inline ulong get_ddr_freq(ulong dummy) 147*6e2941d7SSimon Glass { 148*6e2941d7SSimon Glass return get_bus_freq(dummy); 149*6e2941d7SSimon Glass } 150*6e2941d7SSimon Glass #else 151*6e2941d7SSimon Glass ulong get_ddr_freq(ulong); 152*6e2941d7SSimon Glass #endif 153*6e2941d7SSimon Glass 15485043159SSimon Glass #endif /* !__ASSEMBLY__ */ 15585043159SSimon Glass 156*6e2941d7SSimon Glass #ifdef CONFIG_PPC 157*6e2941d7SSimon Glass /* 158*6e2941d7SSimon Glass * Has to be included outside of the #ifndef __ASSEMBLY__ section. 159*6e2941d7SSimon Glass * Otherwise might lead to compilation errors in assembler files. 160*6e2941d7SSimon Glass */ 161*6e2941d7SSimon Glass #include <asm/cache.h> 162*6e2941d7SSimon Glass #endif 163*6e2941d7SSimon Glass 16485043159SSimon Glass #endif 165