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