xref: /rk3399_rockchip-uboot/arch/arm/mach-uniphier/init.h (revision a9a4552a1c74e57a15d331bc9da00f046de9985f)
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)
27107b3fb4SMasahiro Yamada };
28107b3fb4SMasahiro Yamada 
29107b3fb4SMasahiro Yamada const struct uniphier_board_data *uniphier_get_board_param(void);
30107b3fb4SMasahiro Yamada 
315b660066SMasahiro Yamada int uniphier_ld4_init(const struct uniphier_board_data *bd);
325b660066SMasahiro Yamada int uniphier_pro4_init(const struct uniphier_board_data *bd);
335b660066SMasahiro Yamada int uniphier_sld8_init(const struct uniphier_board_data *bd);
345b660066SMasahiro Yamada int uniphier_pro5_init(const struct uniphier_board_data *bd);
355b660066SMasahiro Yamada int uniphier_pxs2_init(const struct uniphier_board_data *bd);
36107b3fb4SMasahiro Yamada 
37107b3fb4SMasahiro Yamada #if defined(CONFIG_MICRO_SUPPORT_CARD)
389e3bb84bSMasahiro Yamada void uniphier_sbc_init_admulti(void);
399e3bb84bSMasahiro Yamada void uniphier_sbc_init_savepin(void);
409e3bb84bSMasahiro Yamada void uniphier_ld4_sbc_init(void);
419e3bb84bSMasahiro Yamada void uniphier_pxs2_sbc_init(void);
429e3bb84bSMasahiro Yamada void uniphier_ld11_sbc_init(void);
43107b3fb4SMasahiro Yamada #else
uniphier_sbc_init_admulti(void)449e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_admulti(void)
45107b3fb4SMasahiro Yamada {
46107b3fb4SMasahiro Yamada }
47107b3fb4SMasahiro Yamada 
uniphier_sbc_init_savepin(void)489e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_savepin(void)
49107b3fb4SMasahiro Yamada {
50107b3fb4SMasahiro Yamada }
51107b3fb4SMasahiro Yamada 
uniphier_ld4_sbc_init(void)529e3bb84bSMasahiro Yamada static inline void uniphier_ld4_sbc_init(void)
535d0607c5SMasahiro Yamada {
545d0607c5SMasahiro Yamada }
555d0607c5SMasahiro Yamada 
uniphier_pxs2_sbc_init(void)569e3bb84bSMasahiro Yamada static inline void uniphier_pxs2_sbc_init(void)
57107b3fb4SMasahiro Yamada {
589e3bb84bSMasahiro Yamada }
599e3bb84bSMasahiro Yamada 
uniphier_ld11_sbc_init(void)609e3bb84bSMasahiro Yamada static inline void uniphier_ld11_sbc_init(void)
619e3bb84bSMasahiro Yamada {
62107b3fb4SMasahiro Yamada }
63107b3fb4SMasahiro Yamada #endif
64107b3fb4SMasahiro Yamada 
65e94842faSMasahiro Yamada void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd);
66107b3fb4SMasahiro Yamada 
678d6c99c6SMasahiro Yamada int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd);
688d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd);
69107b3fb4SMasahiro Yamada 
706a3e4274SMasahiro Yamada int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd);
716a3e4274SMasahiro Yamada int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd);
726a3e4274SMasahiro Yamada int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd);
73a8e6300dSMasahiro Yamada int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd);
74a8e6300dSMasahiro Yamada int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd);
75107b3fb4SMasahiro Yamada 
76*00aa453eSMasahiro Yamada void uniphier_ld4_early_clk_init(void);
7778c627cfSMasahiro Yamada 
78*00aa453eSMasahiro Yamada void uniphier_ld4_dram_clk_init(void);
7978c627cfSMasahiro Yamada void uniphier_pro5_dram_clk_init(void);
8078c627cfSMasahiro Yamada void uniphier_pxs2_dram_clk_init(void);
81107b3fb4SMasahiro Yamada 
825b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd);
835b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd);
845b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd);
85a8e6300dSMasahiro Yamada int uniphier_pro5_umc_init(const struct uniphier_board_data *bd);
865b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd);
87107b3fb4SMasahiro Yamada 
886a3e4274SMasahiro Yamada void uniphier_ld4_pll_init(void);
896a3e4274SMasahiro Yamada void uniphier_pro4_pll_init(void);
90c72f4d4cSMasahiro Yamada void uniphier_ld11_pll_init(void);
91a314a245SMasahiro Yamada void uniphier_ld20_pll_init(void);
922c2ab3d4SMasahiro Yamada void uniphier_pxs3_pll_init(void);
936a3e4274SMasahiro Yamada 
945b660066SMasahiro Yamada void uniphier_ld4_clk_init(void);
955b660066SMasahiro Yamada void uniphier_pro4_clk_init(void);
965b660066SMasahiro Yamada void uniphier_pro5_clk_init(void);
975b660066SMasahiro Yamada void uniphier_pxs2_clk_init(void);
98667dbcd0SMasahiro Yamada void uniphier_ld11_clk_init(void);
99c21f5854SMasahiro Yamada void uniphier_ld20_clk_init(void);
10081afa9c9SMasahiro Yamada void uniphier_pxs3_clk_init(void);
1019d0c2cebSMasahiro Yamada 
102784548efSMasahiro Yamada unsigned int uniphier_boot_device_raw(void);
10363754842SMasahiro Yamada int uniphier_have_internal_stm(void);
10463754842SMasahiro Yamada int uniphier_boot_from_backend(void);
1055ac9dfbeSMasahiro Yamada int uniphier_pin_init(const char *pinconfig_name);
106107b3fb4SMasahiro Yamada 
107107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */
108