1107b3fb4SMasahiro Yamada /* 2a74c28a0SMasahiro Yamada * Copyright (C) 2015-2016 Socionext Inc. 3a74c28a0SMasahiro Yamada * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 4107b3fb4SMasahiro Yamada * 5107b3fb4SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 6107b3fb4SMasahiro Yamada */ 7107b3fb4SMasahiro Yamada 8107b3fb4SMasahiro Yamada #ifndef __MACH_INIT_H 9107b3fb4SMasahiro Yamada #define __MACH_INIT_H 10107b3fb4SMasahiro Yamada 114021b438SMasahiro Yamada #include <linux/types.h> 124021b438SMasahiro Yamada 1346abfcc9SMasahiro Yamada #define UNIPHIER_MAX_NR_DRAM_CH 3 1446abfcc9SMasahiro Yamada 1546abfcc9SMasahiro Yamada struct uniphier_dram_ch { 1646abfcc9SMasahiro Yamada unsigned long size; 1746abfcc9SMasahiro Yamada unsigned int width; 1846abfcc9SMasahiro Yamada }; 1946abfcc9SMasahiro Yamada 20107b3fb4SMasahiro Yamada struct uniphier_board_data { 21107b3fb4SMasahiro Yamada unsigned int dram_freq; 2246abfcc9SMasahiro Yamada struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH]; 23a74c28a0SMasahiro Yamada unsigned int flags; 24f6bbec3dSMasahiro Yamada 2504cd4e72SMasahiro Yamada #define UNIPHIER_BD_DRAM_SPARSE BIT(9) 2604cd4e72SMasahiro Yamada #define UNIPHIER_BD_DDR3PLUS BIT(8) 27107b3fb4SMasahiro Yamada }; 28107b3fb4SMasahiro Yamada 29107b3fb4SMasahiro Yamada const struct uniphier_board_data *uniphier_get_board_param(void); 30107b3fb4SMasahiro Yamada 315b660066SMasahiro Yamada int uniphier_ld4_init(const struct uniphier_board_data *bd); 325b660066SMasahiro Yamada int uniphier_pro4_init(const struct uniphier_board_data *bd); 335b660066SMasahiro Yamada int uniphier_sld8_init(const struct uniphier_board_data *bd); 345b660066SMasahiro Yamada int uniphier_pro5_init(const struct uniphier_board_data *bd); 355b660066SMasahiro Yamada int uniphier_pxs2_init(const struct uniphier_board_data *bd); 36107b3fb4SMasahiro Yamada 37107b3fb4SMasahiro Yamada #if defined(CONFIG_MICRO_SUPPORT_CARD) 389e3bb84bSMasahiro Yamada void uniphier_sbc_init_admulti(void); 399e3bb84bSMasahiro Yamada void uniphier_sbc_init_savepin(void); 409e3bb84bSMasahiro Yamada void uniphier_ld4_sbc_init(void); 419e3bb84bSMasahiro Yamada void uniphier_pxs2_sbc_init(void); 429e3bb84bSMasahiro Yamada void uniphier_ld11_sbc_init(void); 43107b3fb4SMasahiro Yamada #else uniphier_sbc_init_admulti(void)449e3bb84bSMasahiro Yamadastatic inline void uniphier_sbc_init_admulti(void) 45107b3fb4SMasahiro Yamada { 46107b3fb4SMasahiro Yamada } 47107b3fb4SMasahiro Yamada uniphier_sbc_init_savepin(void)489e3bb84bSMasahiro Yamadastatic inline void uniphier_sbc_init_savepin(void) 49107b3fb4SMasahiro Yamada { 50107b3fb4SMasahiro Yamada } 51107b3fb4SMasahiro Yamada uniphier_ld4_sbc_init(void)529e3bb84bSMasahiro Yamadastatic inline void uniphier_ld4_sbc_init(void) 535d0607c5SMasahiro Yamada { 545d0607c5SMasahiro Yamada } 555d0607c5SMasahiro Yamada uniphier_pxs2_sbc_init(void)569e3bb84bSMasahiro Yamadastatic inline void uniphier_pxs2_sbc_init(void) 57107b3fb4SMasahiro Yamada { 589e3bb84bSMasahiro Yamada } 599e3bb84bSMasahiro Yamada uniphier_ld11_sbc_init(void)609e3bb84bSMasahiro Yamadastatic inline void uniphier_ld11_sbc_init(void) 619e3bb84bSMasahiro Yamada { 62107b3fb4SMasahiro Yamada } 63107b3fb4SMasahiro Yamada #endif 64107b3fb4SMasahiro Yamada 65e94842faSMasahiro Yamada void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd); 66107b3fb4SMasahiro Yamada 678d6c99c6SMasahiro Yamada int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd); 688d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd); 69107b3fb4SMasahiro Yamada 706a3e4274SMasahiro Yamada int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd); 716a3e4274SMasahiro Yamada int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd); 726a3e4274SMasahiro Yamada int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd); 73a8e6300dSMasahiro Yamada int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd); 74a8e6300dSMasahiro Yamada int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd); 75107b3fb4SMasahiro Yamada 76*00aa453eSMasahiro Yamada void uniphier_ld4_early_clk_init(void); 7778c627cfSMasahiro Yamada 78*00aa453eSMasahiro Yamada void uniphier_ld4_dram_clk_init(void); 7978c627cfSMasahiro Yamada void uniphier_pro5_dram_clk_init(void); 8078c627cfSMasahiro Yamada void uniphier_pxs2_dram_clk_init(void); 81107b3fb4SMasahiro Yamada 825b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd); 835b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd); 845b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd); 85a8e6300dSMasahiro Yamada int uniphier_pro5_umc_init(const struct uniphier_board_data *bd); 865b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd); 87107b3fb4SMasahiro Yamada 886a3e4274SMasahiro Yamada void uniphier_ld4_pll_init(void); 896a3e4274SMasahiro Yamada void uniphier_pro4_pll_init(void); 90c72f4d4cSMasahiro Yamada void uniphier_ld11_pll_init(void); 91a314a245SMasahiro Yamada void uniphier_ld20_pll_init(void); 922c2ab3d4SMasahiro Yamada void uniphier_pxs3_pll_init(void); 936a3e4274SMasahiro Yamada 945b660066SMasahiro Yamada void uniphier_ld4_clk_init(void); 955b660066SMasahiro Yamada void uniphier_pro4_clk_init(void); 965b660066SMasahiro Yamada void uniphier_pro5_clk_init(void); 975b660066SMasahiro Yamada void uniphier_pxs2_clk_init(void); 98667dbcd0SMasahiro Yamada void uniphier_ld11_clk_init(void); 99c21f5854SMasahiro Yamada void uniphier_ld20_clk_init(void); 10081afa9c9SMasahiro Yamada void uniphier_pxs3_clk_init(void); 1019d0c2cebSMasahiro Yamada 102784548efSMasahiro Yamada unsigned int uniphier_boot_device_raw(void); 10363754842SMasahiro Yamada int uniphier_have_internal_stm(void); 10463754842SMasahiro Yamada int uniphier_boot_from_backend(void); 1055ac9dfbeSMasahiro Yamada int uniphier_pin_init(const char *pinconfig_name); 106107b3fb4SMasahiro Yamada 107107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */ 108