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) 27f6bbec3dSMasahiro Yamada 28b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_GET_TYPE(f) ((f) & 0x7) 29f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_REF 0 /* LD20 reference */ 30f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_GLOBAL 1 /* LD20 TV Set */ 31b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_C1 2 /* LD20 TV Set C1 */ 32b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_LD21_REF 3 /* LD21 reference */ 33b8909976SMasahiro Yamada #define UNIPHIER_BD_BOARD_LD21_GLOBAL 4 /* LD21 TV Set */ 34107b3fb4SMasahiro Yamada }; 35107b3fb4SMasahiro Yamada 36107b3fb4SMasahiro Yamada const struct uniphier_board_data *uniphier_get_board_param(void); 37107b3fb4SMasahiro Yamada 385b660066SMasahiro Yamada int uniphier_sld3_init(const struct uniphier_board_data *bd); 395b660066SMasahiro Yamada int uniphier_ld4_init(const struct uniphier_board_data *bd); 405b660066SMasahiro Yamada int uniphier_pro4_init(const struct uniphier_board_data *bd); 415b660066SMasahiro Yamada int uniphier_sld8_init(const struct uniphier_board_data *bd); 425b660066SMasahiro Yamada int uniphier_pro5_init(const struct uniphier_board_data *bd); 435b660066SMasahiro Yamada int uniphier_pxs2_init(const struct uniphier_board_data *bd); 44667dbcd0SMasahiro Yamada int uniphier_ld11_init(const struct uniphier_board_data *bd); 459d0c2cebSMasahiro Yamada int uniphier_ld20_init(const struct uniphier_board_data *bd); 46107b3fb4SMasahiro Yamada 47107b3fb4SMasahiro Yamada #if defined(CONFIG_MICRO_SUPPORT_CARD) 489e3bb84bSMasahiro Yamada void uniphier_sbc_init_admulti(void); 499e3bb84bSMasahiro Yamada void uniphier_sbc_init_savepin(void); 509e3bb84bSMasahiro Yamada void uniphier_ld4_sbc_init(void); 519e3bb84bSMasahiro Yamada void uniphier_pxs2_sbc_init(void); 529e3bb84bSMasahiro Yamada void uniphier_ld11_sbc_init(void); 53107b3fb4SMasahiro Yamada #else 549e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_admulti(void) 55107b3fb4SMasahiro Yamada { 56107b3fb4SMasahiro Yamada } 57107b3fb4SMasahiro Yamada 589e3bb84bSMasahiro Yamada static inline void uniphier_sbc_init_savepin(void) 59107b3fb4SMasahiro Yamada { 60107b3fb4SMasahiro Yamada } 61107b3fb4SMasahiro Yamada 629e3bb84bSMasahiro Yamada static inline void uniphier_ld4_sbc_init(void) 635d0607c5SMasahiro Yamada { 645d0607c5SMasahiro Yamada } 655d0607c5SMasahiro Yamada 669e3bb84bSMasahiro Yamada static inline void uniphier_pxs2_sbc_init(void) 67107b3fb4SMasahiro Yamada { 689e3bb84bSMasahiro Yamada } 699e3bb84bSMasahiro Yamada 709e3bb84bSMasahiro Yamada static inline void uniphier_ld11_sbc_init(void) 719e3bb84bSMasahiro Yamada { 72107b3fb4SMasahiro Yamada } 73107b3fb4SMasahiro Yamada #endif 74107b3fb4SMasahiro Yamada 75e94842faSMasahiro Yamada void uniphier_sld3_bcu_init(const struct uniphier_board_data *bd); 76e94842faSMasahiro Yamada void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd); 77107b3fb4SMasahiro Yamada 788d6c99c6SMasahiro Yamada int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd); 798d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_no_disbit_init(const struct uniphier_board_data *bd); 808d6c99c6SMasahiro Yamada int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd); 81107b3fb4SMasahiro Yamada 826a3e4274SMasahiro Yamada int uniphier_sld3_dpll_init(const struct uniphier_board_data *bd); 836a3e4274SMasahiro Yamada int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd); 846a3e4274SMasahiro Yamada int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd); 856a3e4274SMasahiro Yamada int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd); 86a8e6300dSMasahiro Yamada int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd); 87a8e6300dSMasahiro Yamada int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd); 88c72f4d4cSMasahiro Yamada int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd); 89682e09ffSMasahiro Yamada int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd); 90107b3fb4SMasahiro Yamada 9178c627cfSMasahiro Yamada void uniphier_sld3_early_clk_init(void); 9278c627cfSMasahiro Yamada void uniphier_ld11_early_clk_init(void); 9378c627cfSMasahiro Yamada 9478c627cfSMasahiro Yamada void uniphier_sld3_dram_clk_init(void); 9578c627cfSMasahiro Yamada void uniphier_pro5_dram_clk_init(void); 9678c627cfSMasahiro Yamada void uniphier_pxs2_dram_clk_init(void); 9778c627cfSMasahiro Yamada void uniphier_ld11_dram_clk_init(void); 9878c627cfSMasahiro Yamada void uniphier_ld20_dram_clk_init(void); 99107b3fb4SMasahiro Yamada 100a8e6300dSMasahiro Yamada int uniphier_sld3_umc_init(const struct uniphier_board_data *bd); 1015b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd); 1025b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd); 1035b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd); 104a8e6300dSMasahiro Yamada int uniphier_pro5_umc_init(const struct uniphier_board_data *bd); 1055b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd); 1069d0c2cebSMasahiro Yamada int uniphier_ld20_umc_init(const struct uniphier_board_data *bd); 107667dbcd0SMasahiro Yamada int uniphier_ld11_umc_init(const struct uniphier_board_data *bd); 108107b3fb4SMasahiro Yamada 1096a3e4274SMasahiro Yamada void uniphier_sld3_pll_init(void); 1106a3e4274SMasahiro Yamada void uniphier_ld4_pll_init(void); 1116a3e4274SMasahiro Yamada void uniphier_pro4_pll_init(void); 112c72f4d4cSMasahiro Yamada void uniphier_ld11_pll_init(void); 113a314a245SMasahiro Yamada void uniphier_ld20_pll_init(void); 1142c2ab3d4SMasahiro Yamada void uniphier_pxs3_pll_init(void); 1156a3e4274SMasahiro Yamada 1165b660066SMasahiro Yamada void uniphier_ld4_clk_init(void); 1175b660066SMasahiro Yamada void uniphier_pro4_clk_init(void); 1185b660066SMasahiro Yamada void uniphier_pro5_clk_init(void); 1195b660066SMasahiro Yamada void uniphier_pxs2_clk_init(void); 120667dbcd0SMasahiro Yamada void uniphier_ld11_clk_init(void); 121*c21f5854SMasahiro Yamada void uniphier_ld20_clk_init(void); 1229d0c2cebSMasahiro Yamada 123784548efSMasahiro Yamada unsigned int uniphier_boot_device_raw(void); 1245ac9dfbeSMasahiro Yamada int uniphier_pin_init(const char *pinconfig_name); 125b2916712SMasahiro Yamada void uniphier_smp_kick_all_cpus(void); 1269d0c2cebSMasahiro Yamada void cci500_init(int nr_slaves); 127107b3fb4SMasahiro Yamada 128784548efSMasahiro Yamada #undef pr_warn 1293e9952beSMasahiro Yamada #define pr_warn(fmt, args...) printf(fmt, ##args) 130784548efSMasahiro Yamada #undef pr_err 131107b3fb4SMasahiro Yamada #define pr_err(fmt, args...) printf(fmt, ##args) 132107b3fb4SMasahiro Yamada 133107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */ 134