xref: /rk3399_rockchip-uboot/arch/arm/mach-uniphier/init.h (revision 667dbcd01d35a69a0a01ecd09b9f18d9aa0efe72)
1107b3fb4SMasahiro Yamada /*
2107b3fb4SMasahiro Yamada  * Copyright (C) 2015 Masahiro Yamada <yamada.masahiro@socionext.com>
3107b3fb4SMasahiro Yamada  *
4107b3fb4SMasahiro Yamada  * SPDX-License-Identifier:	GPL-2.0+
5107b3fb4SMasahiro Yamada  */
6107b3fb4SMasahiro Yamada 
7107b3fb4SMasahiro Yamada #ifndef __MACH_INIT_H
8107b3fb4SMasahiro Yamada #define __MACH_INIT_H
9107b3fb4SMasahiro Yamada 
104021b438SMasahiro Yamada #include <linux/types.h>
114021b438SMasahiro Yamada 
1246abfcc9SMasahiro Yamada #define UNIPHIER_MAX_NR_DRAM_CH		3
1346abfcc9SMasahiro Yamada 
1446abfcc9SMasahiro Yamada struct uniphier_dram_ch {
1546abfcc9SMasahiro Yamada 	unsigned long base;
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 	unsigned int dram_nr_ch;
234021b438SMasahiro Yamada 	bool dram_ddr3plus;
2446abfcc9SMasahiro Yamada 	struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH];
25107b3fb4SMasahiro Yamada };
26107b3fb4SMasahiro Yamada 
27107b3fb4SMasahiro Yamada const struct uniphier_board_data *uniphier_get_board_param(void);
28107b3fb4SMasahiro Yamada 
295b660066SMasahiro Yamada int uniphier_sld3_init(const struct uniphier_board_data *bd);
305b660066SMasahiro Yamada int uniphier_ld4_init(const struct uniphier_board_data *bd);
315b660066SMasahiro Yamada int uniphier_pro4_init(const struct uniphier_board_data *bd);
325b660066SMasahiro Yamada int uniphier_sld8_init(const struct uniphier_board_data *bd);
335b660066SMasahiro Yamada int uniphier_pro5_init(const struct uniphier_board_data *bd);
345b660066SMasahiro Yamada int uniphier_pxs2_init(const struct uniphier_board_data *bd);
35*667dbcd0SMasahiro Yamada int uniphier_ld11_init(const struct uniphier_board_data *bd);
369d0c2cebSMasahiro Yamada int uniphier_ld20_init(const struct uniphier_board_data *bd);
37107b3fb4SMasahiro Yamada 
38107b3fb4SMasahiro Yamada #if defined(CONFIG_MICRO_SUPPORT_CARD)
395b660066SMasahiro Yamada int uniphier_sbc_init_admulti(const struct uniphier_board_data *bd);
405b660066SMasahiro Yamada int uniphier_sbc_init_savepin(const struct uniphier_board_data *bd);
415d0607c5SMasahiro Yamada int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd);
425d0607c5SMasahiro Yamada int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd);
43107b3fb4SMasahiro Yamada #else
445b660066SMasahiro Yamada static inline int uniphier_sbc_init_admulti(
455b660066SMasahiro Yamada 					const struct uniphier_board_data *bd)
46107b3fb4SMasahiro Yamada {
47107b3fb4SMasahiro Yamada 	return 0;
48107b3fb4SMasahiro Yamada }
49107b3fb4SMasahiro Yamada 
505b660066SMasahiro Yamada static inline int uniphier_sbc_init_savepin(
515b660066SMasahiro Yamada 					const struct uniphier_board_data *bd)
52107b3fb4SMasahiro Yamada {
53107b3fb4SMasahiro Yamada 	return 0;
54107b3fb4SMasahiro Yamada }
55107b3fb4SMasahiro Yamada 
565d0607c5SMasahiro Yamada static inline int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd)
575d0607c5SMasahiro Yamada {
585d0607c5SMasahiro Yamada 	return 0;
595d0607c5SMasahiro Yamada }
605d0607c5SMasahiro Yamada 
615d0607c5SMasahiro Yamada static inline int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd)
62107b3fb4SMasahiro Yamada {
63107b3fb4SMasahiro Yamada 	return 0;
64107b3fb4SMasahiro Yamada }
65107b3fb4SMasahiro Yamada #endif
66107b3fb4SMasahiro Yamada 
675b660066SMasahiro Yamada int uniphier_sld3_bcu_init(const struct uniphier_board_data *bd);
685b660066SMasahiro Yamada int uniphier_ld4_bcu_init(const struct uniphier_board_data *bd);
69107b3fb4SMasahiro Yamada 
70107b3fb4SMasahiro Yamada int memconf_init(const struct uniphier_board_data *bd);
715b660066SMasahiro Yamada int uniphier_sld3_memconf_init(const struct uniphier_board_data *bd);
725b660066SMasahiro Yamada int uniphier_pxs2_memconf_init(const struct uniphier_board_data *bd);
73107b3fb4SMasahiro Yamada 
745b660066SMasahiro Yamada int uniphier_sld3_pll_init(const struct uniphier_board_data *bd);
755b660066SMasahiro Yamada int uniphier_ld4_pll_init(const struct uniphier_board_data *bd);
765b660066SMasahiro Yamada int uniphier_pro4_pll_init(const struct uniphier_board_data *bd);
775b660066SMasahiro Yamada int uniphier_sld8_pll_init(const struct uniphier_board_data *bd);
78107b3fb4SMasahiro Yamada 
795b660066SMasahiro Yamada int uniphier_sld3_enable_dpll_ssc(const struct uniphier_board_data *bd);
805b660066SMasahiro Yamada int uniphier_ld4_enable_dpll_ssc(const struct uniphier_board_data *bd);
81107b3fb4SMasahiro Yamada 
825b660066SMasahiro Yamada int uniphier_ld4_early_clk_init(const struct uniphier_board_data *bd);
835b660066SMasahiro Yamada int uniphier_pro5_early_clk_init(const struct uniphier_board_data *bd);
845b660066SMasahiro Yamada int uniphier_pxs2_early_clk_init(const struct uniphier_board_data *bd);
85*667dbcd0SMasahiro Yamada int uniphier_ld11_early_clk_init(const struct uniphier_board_data *bd);
869d0c2cebSMasahiro Yamada int uniphier_ld20_early_clk_init(const struct uniphier_board_data *bd);
87107b3fb4SMasahiro Yamada 
885b660066SMasahiro Yamada int uniphier_sld3_early_pin_init(const struct uniphier_board_data *bd);
895eb4150eSMasahiro Yamada int uniphier_ld20_early_pin_init(const struct uniphier_board_data *bd);
90107b3fb4SMasahiro Yamada 
915b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd);
925b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd);
935b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd);
945b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd);
959d0c2cebSMasahiro Yamada int uniphier_ld20_umc_init(const struct uniphier_board_data *bd);
96*667dbcd0SMasahiro Yamada int uniphier_ld11_umc_init(const struct uniphier_board_data *bd);
97107b3fb4SMasahiro Yamada 
985b660066SMasahiro Yamada void uniphier_sld3_pin_init(void);
995b660066SMasahiro Yamada void uniphier_ld4_pin_init(void);
1005b660066SMasahiro Yamada void uniphier_pro4_pin_init(void);
1015b660066SMasahiro Yamada void uniphier_sld8_pin_init(void);
1025b660066SMasahiro Yamada void uniphier_pro5_pin_init(void);
1035b660066SMasahiro Yamada void uniphier_pxs2_pin_init(void);
1045b660066SMasahiro Yamada void uniphier_ld6b_pin_init(void);
1059d0c2cebSMasahiro Yamada void uniphier_ld20_pin_init(void);
106107b3fb4SMasahiro Yamada 
1075b660066SMasahiro Yamada void uniphier_ld4_clk_init(void);
1085b660066SMasahiro Yamada void uniphier_pro4_clk_init(void);
1095b660066SMasahiro Yamada void uniphier_pro5_clk_init(void);
1105b660066SMasahiro Yamada void uniphier_pxs2_clk_init(void);
111*667dbcd0SMasahiro Yamada void uniphier_ld11_clk_init(void);
1129d0c2cebSMasahiro Yamada void uniphier_ld20_clk_init(void);
1139d0c2cebSMasahiro Yamada 
1149d0c2cebSMasahiro Yamada void cci500_init(int nr_slaves);
115107b3fb4SMasahiro Yamada 
116107b3fb4SMasahiro Yamada #define pr_err(fmt, args...)	printf(fmt, ##args)
117107b3fb4SMasahiro Yamada 
118107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */
119