xref: /openbmc/u-boot/arch/arm/mach-uniphier/init.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2107b3fb4SMasahiro Yamada /*
3a74c28a0SMasahiro Yamada  * Copyright (C) 2015-2016 Socionext Inc.
4a74c28a0SMasahiro Yamada  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
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 size;
1646abfcc9SMasahiro Yamada 	unsigned int width;
1746abfcc9SMasahiro Yamada };
1846abfcc9SMasahiro Yamada 
19107b3fb4SMasahiro Yamada struct uniphier_board_data {
20107b3fb4SMasahiro Yamada 	unsigned int dram_freq;
2146abfcc9SMasahiro Yamada 	struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH];
22a74c28a0SMasahiro Yamada 	unsigned int flags;
23f6bbec3dSMasahiro Yamada 
2404cd4e72SMasahiro Yamada #define UNIPHIER_BD_DRAM_SPARSE			BIT(9)
2504cd4e72SMasahiro Yamada #define UNIPHIER_BD_DDR3PLUS			BIT(8)
26107b3fb4SMasahiro Yamada };
27107b3fb4SMasahiro Yamada 
28107b3fb4SMasahiro Yamada const struct uniphier_board_data *uniphier_get_board_param(void);
29107b3fb4SMasahiro Yamada 
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);
35107b3fb4SMasahiro Yamada 
36107b3fb4SMasahiro Yamada #if defined(CONFIG_MICRO_SUPPORT_CARD)
379e3bb84bSMasahiro Yamada void uniphier_sbc_init_admulti(void);
389e3bb84bSMasahiro Yamada void uniphier_sbc_init_savepin(void);
399e3bb84bSMasahiro Yamada void uniphier_ld4_sbc_init(void);
409e3bb84bSMasahiro Yamada void uniphier_pxs2_sbc_init(void);
419e3bb84bSMasahiro Yamada void uniphier_ld11_sbc_init(void);
42107b3fb4SMasahiro Yamada #else
uniphier_sbc_init_admulti(void)439e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_admulti(void)
44107b3fb4SMasahiro Yamada {
45107b3fb4SMasahiro Yamada }
46107b3fb4SMasahiro Yamada 
uniphier_sbc_init_savepin(void)479e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_savepin(void)
48107b3fb4SMasahiro Yamada {
49107b3fb4SMasahiro Yamada }
50107b3fb4SMasahiro Yamada 
uniphier_ld4_sbc_init(void)519e3bb84bSMasahiro Yamada static inline void uniphier_ld4_sbc_init(void)
525d0607c5SMasahiro Yamada {
535d0607c5SMasahiro Yamada }
545d0607c5SMasahiro Yamada 
uniphier_pxs2_sbc_init(void)559e3bb84bSMasahiro Yamada static inline void uniphier_pxs2_sbc_init(void)
56107b3fb4SMasahiro Yamada {
579e3bb84bSMasahiro Yamada }
589e3bb84bSMasahiro Yamada 
uniphier_ld11_sbc_init(void)599e3bb84bSMasahiro Yamada static inline void uniphier_ld11_sbc_init(void)
609e3bb84bSMasahiro Yamada {
61107b3fb4SMasahiro Yamada }
62107b3fb4SMasahiro Yamada #endif
63107b3fb4SMasahiro Yamada 
64e94842faSMasahiro Yamada void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd);
65107b3fb4SMasahiro Yamada 
668d6c99c6SMasahiro Yamada int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd);
678d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd);
68107b3fb4SMasahiro Yamada 
696a3e4274SMasahiro Yamada int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd);
706a3e4274SMasahiro Yamada int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd);
716a3e4274SMasahiro Yamada int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd);
72a8e6300dSMasahiro Yamada int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd);
73a8e6300dSMasahiro Yamada int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd);
74107b3fb4SMasahiro Yamada 
7500aa453eSMasahiro Yamada void uniphier_ld4_early_clk_init(void);
7678c627cfSMasahiro Yamada 
7700aa453eSMasahiro Yamada void uniphier_ld4_dram_clk_init(void);
7878c627cfSMasahiro Yamada void uniphier_pro5_dram_clk_init(void);
7978c627cfSMasahiro Yamada void uniphier_pxs2_dram_clk_init(void);
80107b3fb4SMasahiro Yamada 
815b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd);
825b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd);
835b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd);
84a8e6300dSMasahiro Yamada int uniphier_pro5_umc_init(const struct uniphier_board_data *bd);
855b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd);
86107b3fb4SMasahiro Yamada 
876a3e4274SMasahiro Yamada void uniphier_ld4_pll_init(void);
886a3e4274SMasahiro Yamada void uniphier_pro4_pll_init(void);
89c72f4d4cSMasahiro Yamada void uniphier_ld11_pll_init(void);
90a314a245SMasahiro Yamada void uniphier_ld20_pll_init(void);
912c2ab3d4SMasahiro Yamada void uniphier_pxs3_pll_init(void);
926a3e4274SMasahiro Yamada 
935b660066SMasahiro Yamada void uniphier_ld4_clk_init(void);
945b660066SMasahiro Yamada void uniphier_pro4_clk_init(void);
955b660066SMasahiro Yamada void uniphier_pro5_clk_init(void);
965b660066SMasahiro Yamada void uniphier_pxs2_clk_init(void);
97667dbcd0SMasahiro Yamada void uniphier_ld11_clk_init(void);
98c21f5854SMasahiro Yamada void uniphier_ld20_clk_init(void);
9981afa9c9SMasahiro Yamada void uniphier_pxs3_clk_init(void);
1009d0c2cebSMasahiro Yamada 
101784548efSMasahiro Yamada unsigned int uniphier_boot_device_raw(void);
10263754842SMasahiro Yamada int uniphier_have_internal_stm(void);
10363754842SMasahiro Yamada int uniphier_boot_from_backend(void);
1045ac9dfbeSMasahiro Yamada int uniphier_pin_init(const char *pinconfig_name);
105107b3fb4SMasahiro Yamada 
106107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */
107