xref: /rk3399_rockchip-uboot/arch/powerpc/include/asm/ppc.h (revision 6e2941d787819ae1221d7f8295fa67d2ba94a913)
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