1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 2107b3fb4SMasahiro Yamada /* 3a74c28a0SMasahiro Yamada * Copyright (C) 2015-2016 Socionext Inc. 4a74c28a0SMasahiro Yamada * Author: Masahiro Yamada <yamada.masahiro@socionext.com> 5107b3fb4SMasahiro Yamada */ 6107b3fb4SMasahiro Yamada 7107b3fb4SMasahiro Yamada #ifndef __MACH_INIT_H 8107b3fb4SMasahiro Yamada #define __MACH_INIT_H 9107b3fb4SMasahiro Yamada 104021b438SMasahiro Yamada #include <linux/types.h> 114021b438SMasahiro Yamada 1246abfcc9SMasahiro Yamada #define UNIPHIER_MAX_NR_DRAM_CH 3 1346abfcc9SMasahiro Yamada 1446abfcc9SMasahiro Yamada struct uniphier_dram_ch { 1546abfcc9SMasahiro Yamada unsigned long size; 1646abfcc9SMasahiro Yamada unsigned int width; 1746abfcc9SMasahiro Yamada }; 1846abfcc9SMasahiro Yamada 19107b3fb4SMasahiro Yamada struct uniphier_board_data { 20107b3fb4SMasahiro Yamada unsigned int dram_freq; 2146abfcc9SMasahiro Yamada struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH]; 22a74c28a0SMasahiro Yamada unsigned int flags; 23f6bbec3dSMasahiro Yamada 2404cd4e72SMasahiro Yamada #define UNIPHIER_BD_DRAM_SPARSE BIT(9) 2504cd4e72SMasahiro Yamada #define UNIPHIER_BD_DDR3PLUS BIT(8) 26107b3fb4SMasahiro Yamada }; 27107b3fb4SMasahiro Yamada 28107b3fb4SMasahiro Yamada const struct uniphier_board_data *uniphier_get_board_param(void); 29107b3fb4SMasahiro Yamada 305b660066SMasahiro Yamada int uniphier_ld4_init(const struct uniphier_board_data *bd); 315b660066SMasahiro Yamada int uniphier_pro4_init(const struct uniphier_board_data *bd); 325b660066SMasahiro Yamada int uniphier_sld8_init(const struct uniphier_board_data *bd); 335b660066SMasahiro Yamada int uniphier_pro5_init(const struct uniphier_board_data *bd); 345b660066SMasahiro Yamada int uniphier_pxs2_init(const struct uniphier_board_data *bd); 35107b3fb4SMasahiro Yamada 36107b3fb4SMasahiro Yamada #if defined(CONFIG_MICRO_SUPPORT_CARD) 379e3bb84bSMasahiro Yamada void uniphier_sbc_init_admulti(void); 389e3bb84bSMasahiro Yamada void uniphier_sbc_init_savepin(void); 399e3bb84bSMasahiro Yamada void uniphier_ld4_sbc_init(void); 409e3bb84bSMasahiro Yamada void uniphier_pxs2_sbc_init(void); 419e3bb84bSMasahiro Yamada void uniphier_ld11_sbc_init(void); 42107b3fb4SMasahiro Yamada #else uniphier_sbc_init_admulti(void)439e3bb84bSMasahiro Yamadastatic inline void uniphier_sbc_init_admulti(void) 44107b3fb4SMasahiro Yamada { 45107b3fb4SMasahiro Yamada } 46107b3fb4SMasahiro Yamada uniphier_sbc_init_savepin(void)479e3bb84bSMasahiro Yamadastatic inline void uniphier_sbc_init_savepin(void) 48107b3fb4SMasahiro Yamada { 49107b3fb4SMasahiro Yamada } 50107b3fb4SMasahiro Yamada uniphier_ld4_sbc_init(void)519e3bb84bSMasahiro Yamadastatic inline void uniphier_ld4_sbc_init(void) 525d0607c5SMasahiro Yamada { 535d0607c5SMasahiro Yamada } 545d0607c5SMasahiro Yamada uniphier_pxs2_sbc_init(void)559e3bb84bSMasahiro Yamadastatic inline void uniphier_pxs2_sbc_init(void) 56107b3fb4SMasahiro Yamada { 579e3bb84bSMasahiro Yamada } 589e3bb84bSMasahiro Yamada uniphier_ld11_sbc_init(void)599e3bb84bSMasahiro Yamadastatic inline void uniphier_ld11_sbc_init(void) 609e3bb84bSMasahiro Yamada { 61107b3fb4SMasahiro Yamada } 62107b3fb4SMasahiro Yamada #endif 63107b3fb4SMasahiro Yamada 64e94842faSMasahiro Yamada void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd); 65107b3fb4SMasahiro Yamada 668d6c99c6SMasahiro Yamada int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd); 678d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd); 68107b3fb4SMasahiro Yamada 696a3e4274SMasahiro Yamada int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd); 706a3e4274SMasahiro Yamada int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd); 716a3e4274SMasahiro Yamada int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd); 72a8e6300dSMasahiro Yamada int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd); 73a8e6300dSMasahiro Yamada int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd); 74107b3fb4SMasahiro Yamada 7500aa453eSMasahiro Yamada void uniphier_ld4_early_clk_init(void); 7678c627cfSMasahiro Yamada 7700aa453eSMasahiro Yamada void uniphier_ld4_dram_clk_init(void); 7878c627cfSMasahiro Yamada void uniphier_pro5_dram_clk_init(void); 7978c627cfSMasahiro Yamada void uniphier_pxs2_dram_clk_init(void); 80107b3fb4SMasahiro Yamada 815b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd); 825b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd); 835b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd); 84a8e6300dSMasahiro Yamada int uniphier_pro5_umc_init(const struct uniphier_board_data *bd); 855b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd); 86107b3fb4SMasahiro Yamada 876a3e4274SMasahiro Yamada void uniphier_ld4_pll_init(void); 886a3e4274SMasahiro Yamada void uniphier_pro4_pll_init(void); 89c72f4d4cSMasahiro Yamada void uniphier_ld11_pll_init(void); 90a314a245SMasahiro Yamada void uniphier_ld20_pll_init(void); 912c2ab3d4SMasahiro Yamada void uniphier_pxs3_pll_init(void); 926a3e4274SMasahiro Yamada 935b660066SMasahiro Yamada void uniphier_ld4_clk_init(void); 945b660066SMasahiro Yamada void uniphier_pro4_clk_init(void); 955b660066SMasahiro Yamada void uniphier_pro5_clk_init(void); 965b660066SMasahiro Yamada void uniphier_pxs2_clk_init(void); 97667dbcd0SMasahiro Yamada void uniphier_ld11_clk_init(void); 98c21f5854SMasahiro Yamada void uniphier_ld20_clk_init(void); 9981afa9c9SMasahiro Yamada void uniphier_pxs3_clk_init(void); 1009d0c2cebSMasahiro Yamada 101784548efSMasahiro Yamada unsigned int uniphier_boot_device_raw(void); 10263754842SMasahiro Yamada int uniphier_have_internal_stm(void); 10363754842SMasahiro Yamada int uniphier_boot_from_backend(void); 1045ac9dfbeSMasahiro Yamada int uniphier_pin_init(const char *pinconfig_name); 105107b3fb4SMasahiro Yamada 106107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */ 107