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 #define UNIPHIER_BD_BOARD_GET_TYPE(f) ((f) & 0x7) 29 #define UNIPHIER_BD_BOARD_LD20_REF 0 /* LD20 reference */ 30 #define UNIPHIER_BD_BOARD_LD20_GLOBAL 1 /* LD20 TV Set */ 31 #define UNIPHIER_BD_BOARD_LD20_C1 2 /* LD20 TV Set C1 */ 32 #define UNIPHIER_BD_BOARD_LD21_REF 3 /* LD21 reference */ 33 #define UNIPHIER_BD_BOARD_LD21_GLOBAL 4 /* LD21 TV Set */ 34 }; 35 36 const struct uniphier_board_data *uniphier_get_board_param(void); 37 38 int uniphier_sld3_init(const struct uniphier_board_data *bd); 39 int uniphier_ld4_init(const struct uniphier_board_data *bd); 40 int uniphier_pro4_init(const struct uniphier_board_data *bd); 41 int uniphier_sld8_init(const struct uniphier_board_data *bd); 42 int uniphier_pro5_init(const struct uniphier_board_data *bd); 43 int uniphier_pxs2_init(const struct uniphier_board_data *bd); 44 int uniphier_ld11_init(const struct uniphier_board_data *bd); 45 int uniphier_ld20_init(const struct uniphier_board_data *bd); 46 47 #if defined(CONFIG_MICRO_SUPPORT_CARD) 48 void uniphier_sbc_init_admulti(void); 49 void uniphier_sbc_init_savepin(void); 50 void uniphier_ld4_sbc_init(void); 51 void uniphier_pxs2_sbc_init(void); 52 void uniphier_ld11_sbc_init(void); 53 #else 54 static inline void uniphier_sbc_init_admulti(void) 55 { 56 } 57 58 static inline void uniphier_sbc_init_savepin(void) 59 { 60 } 61 62 static inline void uniphier_ld4_sbc_init(void) 63 { 64 } 65 66 static inline void uniphier_pxs2_sbc_init(void) 67 { 68 } 69 70 static inline void uniphier_ld11_sbc_init(void) 71 { 72 } 73 #endif 74 75 void uniphier_sld3_bcu_init(const struct uniphier_board_data *bd); 76 void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd); 77 78 int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd); 79 int uniphier_memconf_3ch_no_disbit_init(const struct uniphier_board_data *bd); 80 int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd); 81 82 int uniphier_sld3_dpll_init(const struct uniphier_board_data *bd); 83 int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd); 84 int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd); 85 int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd); 86 int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd); 87 int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd); 88 int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd); 89 int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd); 90 91 void uniphier_sld3_early_clk_init(void); 92 void uniphier_ld11_early_clk_init(void); 93 94 void uniphier_sld3_dram_clk_init(void); 95 void uniphier_pro5_dram_clk_init(void); 96 void uniphier_pxs2_dram_clk_init(void); 97 void uniphier_ld11_dram_clk_init(void); 98 void uniphier_ld20_dram_clk_init(void); 99 100 int uniphier_sld3_umc_init(const struct uniphier_board_data *bd); 101 int uniphier_ld4_umc_init(const struct uniphier_board_data *bd); 102 int uniphier_pro4_umc_init(const struct uniphier_board_data *bd); 103 int uniphier_sld8_umc_init(const struct uniphier_board_data *bd); 104 int uniphier_pro5_umc_init(const struct uniphier_board_data *bd); 105 int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd); 106 int uniphier_ld20_umc_init(const struct uniphier_board_data *bd); 107 int uniphier_ld11_umc_init(const struct uniphier_board_data *bd); 108 109 void uniphier_sld3_pll_init(void); 110 void uniphier_ld4_pll_init(void); 111 void uniphier_pro4_pll_init(void); 112 void uniphier_ld11_pll_init(void); 113 void uniphier_ld20_pll_init(void); 114 void uniphier_pxs3_pll_init(void); 115 116 void uniphier_ld4_clk_init(void); 117 void uniphier_pro4_clk_init(void); 118 void uniphier_pro5_clk_init(void); 119 void uniphier_pxs2_clk_init(void); 120 void uniphier_ld11_clk_init(void); 121 void uniphier_ld20_clk_init(void); 122 123 unsigned int uniphier_boot_device_raw(void); 124 int uniphier_have_internal_stm(void); 125 int uniphier_boot_from_backend(void); 126 int uniphier_pin_init(const char *pinconfig_name); 127 void uniphier_smp_kick_all_cpus(void); 128 void cci500_init(int nr_slaves); 129 130 #undef pr_warn 131 #define pr_warn(fmt, args...) printf(fmt, ##args) 132 #undef pr_err 133 #define pr_err(fmt, args...) printf(fmt, ##args) 134 135 #endif /* __MACH_INIT_H */ 136