1 /* 2 * Copyright (C) 2015-2016 Socionext Inc. 3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 4 * 5 * SPDX-License-Identifier: GPL-2.0+ 6 */ 7 8 #ifndef __MACH_INIT_H 9 #define __MACH_INIT_H 10 11 #include <linux/types.h> 12 13 #define UNIPHIER_MAX_NR_DRAM_CH 3 14 15 struct uniphier_dram_ch { 16 unsigned long size; 17 unsigned int width; 18 }; 19 20 struct uniphier_board_data { 21 unsigned int dram_freq; 22 struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH]; 23 unsigned int flags; 24 25 #define UNIPHIER_BD_DRAM_SPARSE BIT(9) 26 #define UNIPHIER_BD_DDR3PLUS BIT(8) 27 }; 28 29 const struct uniphier_board_data *uniphier_get_board_param(void); 30 31 int uniphier_sld3_init(const struct uniphier_board_data *bd); 32 int uniphier_ld4_init(const struct uniphier_board_data *bd); 33 int uniphier_pro4_init(const struct uniphier_board_data *bd); 34 int uniphier_sld8_init(const struct uniphier_board_data *bd); 35 int uniphier_pro5_init(const struct uniphier_board_data *bd); 36 int uniphier_pxs2_init(const struct uniphier_board_data *bd); 37 38 #if defined(CONFIG_MICRO_SUPPORT_CARD) 39 void uniphier_sbc_init_admulti(void); 40 void uniphier_sbc_init_savepin(void); 41 void uniphier_ld4_sbc_init(void); 42 void uniphier_pxs2_sbc_init(void); 43 void uniphier_ld11_sbc_init(void); 44 #else 45 static inline void uniphier_sbc_init_admulti(void) 46 { 47 } 48 49 static inline void uniphier_sbc_init_savepin(void) 50 { 51 } 52 53 static inline void uniphier_ld4_sbc_init(void) 54 { 55 } 56 57 static inline void uniphier_pxs2_sbc_init(void) 58 { 59 } 60 61 static inline void uniphier_ld11_sbc_init(void) 62 { 63 } 64 #endif 65 66 void uniphier_sld3_bcu_init(const struct uniphier_board_data *bd); 67 void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd); 68 69 int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd); 70 int uniphier_memconf_3ch_no_disbit_init(const struct uniphier_board_data *bd); 71 int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd); 72 73 int uniphier_sld3_dpll_init(const struct uniphier_board_data *bd); 74 int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd); 75 int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd); 76 int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd); 77 int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd); 78 int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd); 79 80 void uniphier_sld3_early_clk_init(void); 81 82 void uniphier_sld3_dram_clk_init(void); 83 void uniphier_pro5_dram_clk_init(void); 84 void uniphier_pxs2_dram_clk_init(void); 85 86 int uniphier_sld3_umc_init(const struct uniphier_board_data *bd); 87 int uniphier_ld4_umc_init(const struct uniphier_board_data *bd); 88 int uniphier_pro4_umc_init(const struct uniphier_board_data *bd); 89 int uniphier_sld8_umc_init(const struct uniphier_board_data *bd); 90 int uniphier_pro5_umc_init(const struct uniphier_board_data *bd); 91 int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd); 92 93 void uniphier_sld3_pll_init(void); 94 void uniphier_ld4_pll_init(void); 95 void uniphier_pro4_pll_init(void); 96 void uniphier_ld11_pll_init(void); 97 void uniphier_ld20_pll_init(void); 98 void uniphier_pxs3_pll_init(void); 99 100 void uniphier_ld4_clk_init(void); 101 void uniphier_pro4_clk_init(void); 102 void uniphier_pro5_clk_init(void); 103 void uniphier_pxs2_clk_init(void); 104 void uniphier_ld11_clk_init(void); 105 void uniphier_ld20_clk_init(void); 106 void uniphier_pxs3_clk_init(void); 107 108 unsigned int uniphier_boot_device_raw(void); 109 int uniphier_have_internal_stm(void); 110 int uniphier_boot_from_backend(void); 111 int uniphier_pin_init(const char *pinconfig_name); 112 113 #undef pr_warn 114 #define pr_warn(fmt, args...) printf(fmt, ##args) 115 #undef pr_err 116 #define pr_err(fmt, args...) printf(fmt, ##args) 117 118 #endif /* __MACH_INIT_H */ 119