]> git.ipfire.org Git - people/ms/u-boot.git/blame - arch/arm/mach-uniphier/init.h
ARM: uniphier: refactor MEMCONF init code
[people/ms/u-boot.git] / arch / arm / mach-uniphier / init.h
CommitLineData
323d1f9d 1/*
a74c28a0
MY
2 * Copyright (C) 2015-2016 Socionext Inc.
3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
323d1f9d
MY
4 *
5 * SPDX-License-Identifier: GPL-2.0+
6 */
7
8#ifndef __MACH_INIT_H
9#define __MACH_INIT_H
10
4021b438
MY
11#include <linux/types.h>
12
46abfcc9
MY
13#define UNIPHIER_MAX_NR_DRAM_CH 3
14
15struct uniphier_dram_ch {
16 unsigned long base;
17 unsigned long size;
18 unsigned int width;
19};
20
323d1f9d 21struct uniphier_board_data {
46abfcc9
MY
22 unsigned int dram_freq;
23 unsigned int dram_nr_ch;
24 struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH];
a74c28a0 25 unsigned int flags;
f6bbec3d
MY
26
27#define UNIPHIER_BD_DDR3PLUS BIT(2)
28
b8909976 29#define UNIPHIER_BD_BOARD_GET_TYPE(f) ((f) & 0x7)
f6bbec3d
MY
30#define UNIPHIER_BD_BOARD_LD20_REF 0 /* LD20 reference */
31#define UNIPHIER_BD_BOARD_LD20_GLOBAL 1 /* LD20 TV Set */
b8909976
MY
32#define UNIPHIER_BD_BOARD_LD20_C1 2 /* LD20 TV Set C1 */
33#define UNIPHIER_BD_BOARD_LD21_REF 3 /* LD21 reference */
34#define UNIPHIER_BD_BOARD_LD21_GLOBAL 4 /* LD21 TV Set */
323d1f9d
MY
35};
36
6ba60faf 37const struct uniphier_board_data *uniphier_get_board_param(void);
323d1f9d 38
5b660066
MY
39int uniphier_sld3_init(const struct uniphier_board_data *bd);
40int uniphier_ld4_init(const struct uniphier_board_data *bd);
41int uniphier_pro4_init(const struct uniphier_board_data *bd);
42int uniphier_sld8_init(const struct uniphier_board_data *bd);
43int uniphier_pro5_init(const struct uniphier_board_data *bd);
44int uniphier_pxs2_init(const struct uniphier_board_data *bd);
667dbcd0 45int uniphier_ld11_init(const struct uniphier_board_data *bd);
9d0c2ceb 46int uniphier_ld20_init(const struct uniphier_board_data *bd);
323d1f9d
MY
47
48#if defined(CONFIG_MICRO_SUPPORT_CARD)
5b660066
MY
49int uniphier_sbc_init_admulti(const struct uniphier_board_data *bd);
50int uniphier_sbc_init_savepin(const struct uniphier_board_data *bd);
5d0607c5
MY
51int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd);
52int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd);
323d1f9d 53#else
5b660066
MY
54static inline int uniphier_sbc_init_admulti(
55 const struct uniphier_board_data *bd)
323d1f9d
MY
56{
57 return 0;
58}
59
5b660066
MY
60static inline int uniphier_sbc_init_savepin(
61 const struct uniphier_board_data *bd)
323d1f9d
MY
62{
63 return 0;
64}
65
5d0607c5
MY
66static inline int uniphier_ld4_sbc_init(const struct uniphier_board_data *bd)
67{
68 return 0;
69}
70
71static inline int uniphier_pxs2_sbc_init(const struct uniphier_board_data *bd)
019df879
MY
72{
73 return 0;
74}
323d1f9d
MY
75#endif
76
5b660066
MY
77int uniphier_sld3_bcu_init(const struct uniphier_board_data *bd);
78int uniphier_ld4_bcu_init(const struct uniphier_board_data *bd);
323d1f9d 79
8d6c99c6
MY
80int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd);
81int uniphier_memconf_3ch_no_disbit_init(const struct uniphier_board_data *bd);
82int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd);
5b660066 83
6a3e4274
MY
84int uniphier_sld3_dpll_init(const struct uniphier_board_data *bd);
85int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd);
86int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd);
87int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd);
c72f4d4c 88int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd);
682e09ff 89int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd);
5b660066 90
78c627cf
MY
91void uniphier_sld3_early_clk_init(void);
92void uniphier_ld11_early_clk_init(void);
93
94void uniphier_sld3_dram_clk_init(void);
95void uniphier_pro5_dram_clk_init(void);
96void uniphier_pxs2_dram_clk_init(void);
97void uniphier_ld11_dram_clk_init(void);
98void uniphier_ld20_dram_clk_init(void);
5b660066 99
5b660066
MY
100int uniphier_ld4_umc_init(const struct uniphier_board_data *bd);
101int uniphier_pro4_umc_init(const struct uniphier_board_data *bd);
102int uniphier_sld8_umc_init(const struct uniphier_board_data *bd);
103int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd);
9d0c2ceb 104int uniphier_ld20_umc_init(const struct uniphier_board_data *bd);
667dbcd0 105int uniphier_ld11_umc_init(const struct uniphier_board_data *bd);
5b660066 106
6a3e4274
MY
107void uniphier_sld3_pll_init(void);
108void uniphier_ld4_pll_init(void);
109void uniphier_pro4_pll_init(void);
c72f4d4c 110void uniphier_ld11_pll_init(void);
a314a245 111void uniphier_ld20_pll_init(void);
6a3e4274 112
5b660066
MY
113void uniphier_ld4_clk_init(void);
114void uniphier_pro4_clk_init(void);
115void uniphier_pro5_clk_init(void);
116void uniphier_pxs2_clk_init(void);
667dbcd0 117void uniphier_ld11_clk_init(void);
9d0c2ceb
MY
118void uniphier_ld20_clk_init(void);
119
5ac9dfbe 120int uniphier_pin_init(const char *pinconfig_name);
b2916712 121void uniphier_smp_kick_all_cpus(void);
9d0c2ceb 122void cci500_init(int nr_slaves);
323d1f9d
MY
123
124#define pr_err(fmt, args...) printf(fmt, ##args)
125
126#endif /* __MACH_INIT_H */