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 base; 17 unsigned long size; 18 unsigned int width; 19 }; 20 21 struct uniphier_board_data { 22 unsigned int dram_freq; 23 unsigned int dram_nr_ch; 24 struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH]; 25 unsigned int flags; 26 27 #define UNIPHIER_BD_DPLL_SSC_GET_RATE(f) (((f) >> 8) & 0x3) 28 #define UNIPHIER_BD_DPLL_SSC_RATE(r) (((r) & 0x3) << 8) 29 30 #define UNIPHIER_BD_DDR3PLUS BIT(2) 31 32 #define UNIPHIER_BD_BOARD_GET_TYPE(f) ((f) & 0x3) 33 #define UNIPHIER_BD_BOARD_LD20_REF 0 /* LD20 reference */ 34 #define UNIPHIER_BD_BOARD_LD20_GLOBAL 1 /* LD20 TV Set */ 35 #define UNIPHIER_BD_BOARD_LD21_REF 2 /* LD21 reference */ 36 #define UNIPHIER_BD_BOARD_LD21_GLOBAL 3 /* LD21 TV Set */ 37 }; 38 39 const struct uniphier_board_data *uniphier_get_board_param(void); 40 41 int uniphier_sld3_init(const struct uniphier_board_data *bd); 42 int uniphier_ld4_init(const struct uniphier_board_data *bd); 43 int uniphier_pro4_init(const struct uniphier_board_data *bd); 44 int uniphier_sld8_init(const struct uniphier_board_data *bd); 45 int uniphier_pro5_init(const struct uniphier_board_data *bd); 46 int uniphier_pxs2_init(const struct uniphier_board_data *bd); 47 int uniphier_ld11_init(const struct uniphier_board_data *bd); 48 int uniphier_ld20_init(const struct uniphier_board_data *bd); 49 50 #if defined(CONFIG_MICRO_SUPPORT_CARD) 51 int uniphier_sbc_init_admulti(const struct uniphier_board_data *bd); 52 int uniphier_sbc_init_savepin(const struct uniphier_board_data *bd); 53 int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd); 54 int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd); 55 #else 56 static inline int uniphier_sbc_init_admulti( 57 const struct uniphier_board_data *bd) 58 { 59 return 0; 60 } 61 62 static inline int uniphier_sbc_init_savepin( 63 const struct uniphier_board_data *bd) 64 { 65 return 0; 66 } 67 68 static inline int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd) 69 { 70 return 0; 71 } 72 73 static inline int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd) 74 { 75 return 0; 76 } 77 #endif 78 79 int uniphier_sld3_bcu_init(const struct uniphier_board_data *bd); 80 int uniphier_ld4_bcu_init(const struct uniphier_board_data *bd); 81 82 int memconf_init(const struct uniphier_board_data *bd); 83 int uniphier_sld3_memconf_init(const struct uniphier_board_data *bd); 84 int uniphier_pxs2_memconf_init(const struct uniphier_board_data *bd); 85 86 int uniphier_sld3_dpll_init(const struct uniphier_board_data *bd); 87 int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd); 88 int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd); 89 int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd); 90 int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd); 91 int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd); 92 93 int uniphier_ld4_early_clk_init(const struct uniphier_board_data *bd); 94 int uniphier_pro5_early_clk_init(const struct uniphier_board_data *bd); 95 int uniphier_pxs2_early_clk_init(const struct uniphier_board_data *bd); 96 int uniphier_ld11_early_clk_init(const struct uniphier_board_data *bd); 97 int uniphier_ld20_early_clk_init(const struct uniphier_board_data *bd); 98 99 int uniphier_ld4_umc_init(const struct uniphier_board_data *bd); 100 int uniphier_pro4_umc_init(const struct uniphier_board_data *bd); 101 int uniphier_sld8_umc_init(const struct uniphier_board_data *bd); 102 int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd); 103 int uniphier_ld20_umc_init(const struct uniphier_board_data *bd); 104 int uniphier_ld11_umc_init(const struct uniphier_board_data *bd); 105 106 void uniphier_sld3_pll_init(void); 107 void uniphier_ld4_pll_init(void); 108 void uniphier_pro4_pll_init(void); 109 void uniphier_ld11_pll_init(void); 110 int uniphier_ld20_pll_init(const struct uniphier_board_data *bd); 111 112 void uniphier_ld4_clk_init(void); 113 void uniphier_pro4_clk_init(void); 114 void uniphier_pro5_clk_init(void); 115 void uniphier_pxs2_clk_init(void); 116 void uniphier_ld11_clk_init(void); 117 void uniphier_ld20_clk_init(void); 118 119 int uniphier_pin_init(const char *pinconfig_name); 120 void uniphier_smp_kick_all_cpus(void); 121 void cci500_init(int nr_slaves); 122 123 #define pr_err(fmt, args...) printf(fmt, ##args) 124 125 #endif /* __MACH_INIT_H */ 126