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