xref: /rk3399_rockchip-uboot/arch/arm/mach-uniphier/init.h (revision c21f58548c812032207d986ca7b5baa0bb4a5972)
1107b3fb4SMasahiro Yamada /*
2a74c28a0SMasahiro Yamada  * Copyright (C) 2015-2016 Socionext Inc.
3a74c28a0SMasahiro Yamada  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
4107b3fb4SMasahiro Yamada  *
5107b3fb4SMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
6107b3fb4SMasahiro Yamada  */
7107b3fb4SMasahiro Yamada 
8107b3fb4SMasahiro Yamada #ifndef __MACH_INIT_H
9107b3fb4SMasahiro Yamada #define __MACH_INIT_H
10107b3fb4SMasahiro Yamada 
114021b438SMasahiro Yamada #include <linux/types.h>
124021b438SMasahiro Yamada 
1346abfcc9SMasahiro Yamada #define UNIPHIER_MAX_NR_DRAM_CH		3
1446abfcc9SMasahiro Yamada 
1546abfcc9SMasahiro Yamada struct uniphier_dram_ch {
1646abfcc9SMasahiro Yamada 	unsigned long size;
1746abfcc9SMasahiro Yamada 	unsigned int width;
1846abfcc9SMasahiro Yamada };
1946abfcc9SMasahiro Yamada 
20107b3fb4SMasahiro Yamada struct uniphier_board_data {
21107b3fb4SMasahiro Yamada 	unsigned int dram_freq;
2246abfcc9SMasahiro Yamada 	struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH];
23a74c28a0SMasahiro Yamada 	unsigned int flags;
24f6bbec3dSMasahiro Yamada 
2504cd4e72SMasahiro Yamada #define UNIPHIER_BD_DRAM_SPARSE			BIT(9)
2604cd4e72SMasahiro Yamada #define UNIPHIER_BD_DDR3PLUS			BIT(8)
27f6bbec3dSMasahiro Yamada 
28b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_GET_TYPE(f)		((f) & 0x7)
29f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_REF		0	/* LD20 reference */
30f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_GLOBAL		1	/* LD20 TV Set */
31b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_C1		2	/* LD20 TV Set C1 */
32b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_LD21_REF		3	/* LD21 reference */
33b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_LD21_GLOBAL		4	/* LD21 TV Set */
34107b3fb4SMasahiro Yamada };
35107b3fb4SMasahiro Yamada 
36107b3fb4SMasahiro Yamada const struct uniphier_board_data *uniphier_get_board_param(void);
37107b3fb4SMasahiro Yamada 
385b660066SMasahiro Yamada int uniphier_sld3_init(const struct uniphier_board_data *bd);
395b660066SMasahiro Yamada int uniphier_ld4_init(const struct uniphier_board_data *bd);
405b660066SMasahiro Yamada int uniphier_pro4_init(const struct uniphier_board_data *bd);
415b660066SMasahiro Yamada int uniphier_sld8_init(const struct uniphier_board_data *bd);
425b660066SMasahiro Yamada int uniphier_pro5_init(const struct uniphier_board_data *bd);
435b660066SMasahiro Yamada int uniphier_pxs2_init(const struct uniphier_board_data *bd);
44667dbcd0SMasahiro Yamada int uniphier_ld11_init(const struct uniphier_board_data *bd);
459d0c2cebSMasahiro Yamada int uniphier_ld20_init(const struct uniphier_board_data *bd);
46107b3fb4SMasahiro Yamada 
47107b3fb4SMasahiro Yamada #if defined(CONFIG_MICRO_SUPPORT_CARD)
489e3bb84bSMasahiro Yamada void uniphier_sbc_init_admulti(void);
499e3bb84bSMasahiro Yamada void uniphier_sbc_init_savepin(void);
509e3bb84bSMasahiro Yamada void uniphier_ld4_sbc_init(void);
519e3bb84bSMasahiro Yamada void uniphier_pxs2_sbc_init(void);
529e3bb84bSMasahiro Yamada void uniphier_ld11_sbc_init(void);
53107b3fb4SMasahiro Yamada #else
549e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_admulti(void)
55107b3fb4SMasahiro Yamada {
56107b3fb4SMasahiro Yamada }
57107b3fb4SMasahiro Yamada 
589e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_savepin(void)
59107b3fb4SMasahiro Yamada {
60107b3fb4SMasahiro Yamada }
61107b3fb4SMasahiro Yamada 
629e3bb84bSMasahiro Yamada static inline void uniphier_ld4_sbc_init(void)
635d0607c5SMasahiro Yamada {
645d0607c5SMasahiro Yamada }
655d0607c5SMasahiro Yamada 
669e3bb84bSMasahiro Yamada static inline void uniphier_pxs2_sbc_init(void)
67107b3fb4SMasahiro Yamada {
689e3bb84bSMasahiro Yamada }
699e3bb84bSMasahiro Yamada 
709e3bb84bSMasahiro Yamada static inline void uniphier_ld11_sbc_init(void)
719e3bb84bSMasahiro Yamada {
72107b3fb4SMasahiro Yamada }
73107b3fb4SMasahiro Yamada #endif
74107b3fb4SMasahiro Yamada 
75e94842faSMasahiro Yamada void uniphier_sld3_bcu_init(const struct uniphier_board_data *bd);
76e94842faSMasahiro Yamada void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd);
77107b3fb4SMasahiro Yamada 
788d6c99c6SMasahiro Yamada int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd);
798d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_no_disbit_init(const struct uniphier_board_data *bd);
808d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd);
81107b3fb4SMasahiro Yamada 
826a3e4274SMasahiro Yamada int uniphier_sld3_dpll_init(const struct uniphier_board_data *bd);
836a3e4274SMasahiro Yamada int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd);
846a3e4274SMasahiro Yamada int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd);
856a3e4274SMasahiro Yamada int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd);
86a8e6300dSMasahiro Yamada int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd);
87a8e6300dSMasahiro Yamada int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd);
88c72f4d4cSMasahiro Yamada int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd);
89682e09ffSMasahiro Yamada int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd);
90107b3fb4SMasahiro Yamada 
9178c627cfSMasahiro Yamada void uniphier_sld3_early_clk_init(void);
9278c627cfSMasahiro Yamada void uniphier_ld11_early_clk_init(void);
9378c627cfSMasahiro Yamada 
9478c627cfSMasahiro Yamada void uniphier_sld3_dram_clk_init(void);
9578c627cfSMasahiro Yamada void uniphier_pro5_dram_clk_init(void);
9678c627cfSMasahiro Yamada void uniphier_pxs2_dram_clk_init(void);
9778c627cfSMasahiro Yamada void uniphier_ld11_dram_clk_init(void);
9878c627cfSMasahiro Yamada void uniphier_ld20_dram_clk_init(void);
99107b3fb4SMasahiro Yamada 
100a8e6300dSMasahiro Yamada int uniphier_sld3_umc_init(const struct uniphier_board_data *bd);
1015b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd);
1025b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd);
1035b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd);
104a8e6300dSMasahiro Yamada int uniphier_pro5_umc_init(const struct uniphier_board_data *bd);
1055b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd);
1069d0c2cebSMasahiro Yamada int uniphier_ld20_umc_init(const struct uniphier_board_data *bd);
107667dbcd0SMasahiro Yamada int uniphier_ld11_umc_init(const struct uniphier_board_data *bd);
108107b3fb4SMasahiro Yamada 
1096a3e4274SMasahiro Yamada void uniphier_sld3_pll_init(void);
1106a3e4274SMasahiro Yamada void uniphier_ld4_pll_init(void);
1116a3e4274SMasahiro Yamada void uniphier_pro4_pll_init(void);
112c72f4d4cSMasahiro Yamada void uniphier_ld11_pll_init(void);
113a314a245SMasahiro Yamada void uniphier_ld20_pll_init(void);
1142c2ab3d4SMasahiro Yamada void uniphier_pxs3_pll_init(void);
1156a3e4274SMasahiro Yamada 
1165b660066SMasahiro Yamada void uniphier_ld4_clk_init(void);
1175b660066SMasahiro Yamada void uniphier_pro4_clk_init(void);
1185b660066SMasahiro Yamada void uniphier_pro5_clk_init(void);
1195b660066SMasahiro Yamada void uniphier_pxs2_clk_init(void);
120667dbcd0SMasahiro Yamada void uniphier_ld11_clk_init(void);
121*c21f5854SMasahiro Yamada void uniphier_ld20_clk_init(void);
1229d0c2cebSMasahiro Yamada 
123784548efSMasahiro Yamada unsigned int uniphier_boot_device_raw(void);
1245ac9dfbeSMasahiro Yamada int uniphier_pin_init(const char *pinconfig_name);
125b2916712SMasahiro Yamada void uniphier_smp_kick_all_cpus(void);
1269d0c2cebSMasahiro Yamada void cci500_init(int nr_slaves);
127107b3fb4SMasahiro Yamada 
128784548efSMasahiro Yamada #undef pr_warn
1293e9952beSMasahiro Yamada #define pr_warn(fmt, args...)	printf(fmt, ##args)
130784548efSMasahiro Yamada #undef pr_err
131107b3fb4SMasahiro Yamada #define pr_err(fmt, args...)	printf(fmt, ##args)
132107b3fb4SMasahiro Yamada 
133107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */
134