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 base; 1746abfcc9SMasahiro Yamada unsigned long size; 1846abfcc9SMasahiro Yamada unsigned int width; 1946abfcc9SMasahiro Yamada }; 2046abfcc9SMasahiro Yamada 21107b3fb4SMasahiro Yamada struct uniphier_board_data { 22107b3fb4SMasahiro Yamada unsigned int dram_freq; 2346abfcc9SMasahiro Yamada unsigned int dram_nr_ch; 2446abfcc9SMasahiro Yamada struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH]; 25a74c28a0SMasahiro Yamada unsigned int flags; 26*f6bbec3dSMasahiro Yamada 27a74c28a0SMasahiro Yamada #define UNIPHIER_BD_DDR3PLUS BIT(2) 28*f6bbec3dSMasahiro Yamada 29*f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_GET_TYPE(f) ((f) & 0x3) 30*f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_REF 0 /* LD20 reference */ 31*f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD20_GLOBAL 1 /* LD20 TV Set */ 32*f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD21_REF 2 /* LD21 reference */ 33*f6bbec3dSMasahiro Yamada #define UNIPHIER_BD_BOARD_LD21_GLOBAL 3 /* 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) 485b660066SMasahiro Yamada int uniphier_sbc_init_admulti(const struct uniphier_board_data *bd); 495b660066SMasahiro Yamada int uniphier_sbc_init_savepin(const struct uniphier_board_data *bd); 505d0607c5SMasahiro Yamada int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd); 515d0607c5SMasahiro Yamada int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd); 52107b3fb4SMasahiro Yamada #else 535b660066SMasahiro Yamada static inline int uniphier_sbc_init_admulti( 545b660066SMasahiro Yamada const struct uniphier_board_data *bd) 55107b3fb4SMasahiro Yamada { 56107b3fb4SMasahiro Yamada return 0; 57107b3fb4SMasahiro Yamada } 58107b3fb4SMasahiro Yamada 595b660066SMasahiro Yamada static inline int uniphier_sbc_init_savepin( 605b660066SMasahiro Yamada const struct uniphier_board_data *bd) 61107b3fb4SMasahiro Yamada { 62107b3fb4SMasahiro Yamada return 0; 63107b3fb4SMasahiro Yamada } 64107b3fb4SMasahiro Yamada 655d0607c5SMasahiro Yamada static inline int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd) 665d0607c5SMasahiro Yamada { 675d0607c5SMasahiro Yamada return 0; 685d0607c5SMasahiro Yamada } 695d0607c5SMasahiro Yamada 705d0607c5SMasahiro Yamada static inline int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd) 71107b3fb4SMasahiro Yamada { 72107b3fb4SMasahiro Yamada return 0; 73107b3fb4SMasahiro Yamada } 74107b3fb4SMasahiro Yamada #endif 75107b3fb4SMasahiro Yamada 765b660066SMasahiro Yamada int uniphier_sld3_bcu_init(const struct uniphier_board_data *bd); 775b660066SMasahiro Yamada int uniphier_ld4_bcu_init(const struct uniphier_board_data *bd); 78107b3fb4SMasahiro Yamada 79107b3fb4SMasahiro Yamada int memconf_init(const struct uniphier_board_data *bd); 805b660066SMasahiro Yamada int uniphier_sld3_memconf_init(const struct uniphier_board_data *bd); 815b660066SMasahiro Yamada int uniphier_pxs2_memconf_init(const struct uniphier_board_data *bd); 82107b3fb4SMasahiro Yamada 835b660066SMasahiro Yamada int uniphier_sld3_pll_init(const struct uniphier_board_data *bd); 845b660066SMasahiro Yamada int uniphier_ld4_pll_init(const struct uniphier_board_data *bd); 855b660066SMasahiro Yamada int uniphier_pro4_pll_init(const struct uniphier_board_data *bd); 865b660066SMasahiro Yamada int uniphier_sld8_pll_init(const struct uniphier_board_data *bd); 87107b3fb4SMasahiro Yamada 885b660066SMasahiro Yamada int uniphier_sld3_enable_dpll_ssc(const struct uniphier_board_data *bd); 895b660066SMasahiro Yamada int uniphier_ld4_enable_dpll_ssc(const struct uniphier_board_data *bd); 90107b3fb4SMasahiro Yamada 915b660066SMasahiro Yamada int uniphier_ld4_early_clk_init(const struct uniphier_board_data *bd); 925b660066SMasahiro Yamada int uniphier_pro5_early_clk_init(const struct uniphier_board_data *bd); 935b660066SMasahiro Yamada int uniphier_pxs2_early_clk_init(const struct uniphier_board_data *bd); 94667dbcd0SMasahiro Yamada int uniphier_ld11_early_clk_init(const struct uniphier_board_data *bd); 959d0c2cebSMasahiro Yamada int uniphier_ld20_early_clk_init(const struct uniphier_board_data *bd); 96107b3fb4SMasahiro Yamada 975b660066SMasahiro Yamada int uniphier_sld3_early_pin_init(const struct uniphier_board_data *bd); 985eb4150eSMasahiro Yamada int uniphier_ld20_early_pin_init(const struct uniphier_board_data *bd); 99107b3fb4SMasahiro Yamada 1005b660066SMasahiro Yamada int uniphier_ld4_umc_init(const struct uniphier_board_data *bd); 1015b660066SMasahiro Yamada int uniphier_pro4_umc_init(const struct uniphier_board_data *bd); 1025b660066SMasahiro Yamada int uniphier_sld8_umc_init(const struct uniphier_board_data *bd); 1035b660066SMasahiro Yamada int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd); 1049d0c2cebSMasahiro Yamada int uniphier_ld20_umc_init(const struct uniphier_board_data *bd); 105667dbcd0SMasahiro Yamada int uniphier_ld11_umc_init(const struct uniphier_board_data *bd); 106107b3fb4SMasahiro Yamada 1075b660066SMasahiro Yamada void uniphier_sld3_pin_init(void); 1085b660066SMasahiro Yamada void uniphier_ld4_pin_init(void); 1095b660066SMasahiro Yamada void uniphier_pro4_pin_init(void); 1105b660066SMasahiro Yamada void uniphier_sld8_pin_init(void); 1115b660066SMasahiro Yamada void uniphier_pro5_pin_init(void); 1125b660066SMasahiro Yamada void uniphier_pxs2_pin_init(void); 1135b660066SMasahiro Yamada void uniphier_ld6b_pin_init(void); 1149d0c2cebSMasahiro Yamada void uniphier_ld20_pin_init(void); 115107b3fb4SMasahiro 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); 1219d0c2cebSMasahiro Yamada void uniphier_ld20_clk_init(void); 1229d0c2cebSMasahiro Yamada 123b2916712SMasahiro Yamada void uniphier_smp_kick_all_cpus(void); 1249d0c2cebSMasahiro Yamada void cci500_init(int nr_slaves); 125107b3fb4SMasahiro Yamada 126107b3fb4SMasahiro Yamada #define pr_err(fmt, args...) printf(fmt, ##args) 127107b3fb4SMasahiro Yamada 128107b3fb4SMasahiro Yamada #endif /* __MACH_INIT_H */ 129