]> git.ipfire.org Git - people/ms/u-boot.git/blame - arch/arm/mach-uniphier/init.h
ARM: uniphier: detect RAM size by decoding HW register instead of DT
[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)
9e3bb84b
MY
49void uniphier_sbc_init_admulti(void);
50void uniphier_sbc_init_savepin(void);
51void uniphier_ld4_sbc_init(void);
52void uniphier_pxs2_sbc_init(void);
53void uniphier_ld11_sbc_init(void);
323d1f9d 54#else
9e3bb84b 55static inline void uniphier_sbc_init_admulti(void)
323d1f9d 56{
323d1f9d
MY
57}
58
9e3bb84b 59static inline void uniphier_sbc_init_savepin(void)
323d1f9d 60{
323d1f9d
MY
61}
62
9e3bb84b 63static inline void uniphier_ld4_sbc_init(void)
5d0607c5 64{
5d0607c5
MY
65}
66
9e3bb84b
MY
67static inline void uniphier_pxs2_sbc_init(void)
68{
69}
70
71static inline void uniphier_ld11_sbc_init(void)
019df879 72{
019df879 73}
323d1f9d
MY
74#endif
75
e94842fa
MY
76void uniphier_sld3_bcu_init(const struct uniphier_board_data *bd);
77void uniphier_ld4_bcu_init(const struct uniphier_board_data *bd);
323d1f9d 78
8d6c99c6
MY
79int uniphier_memconf_2ch_init(const struct uniphier_board_data *bd);
80int uniphier_memconf_3ch_no_disbit_init(const struct uniphier_board_data *bd);
81int uniphier_memconf_3ch_init(const struct uniphier_board_data *bd);
5b660066 82
6a3e4274
MY
83int uniphier_sld3_dpll_init(const struct uniphier_board_data *bd);
84int uniphier_ld4_dpll_init(const struct uniphier_board_data *bd);
85int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd);
86int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd);
a8e6300d
MY
87int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd);
88int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd);
c72f4d4c 89int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd);
682e09ff 90int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd);
5b660066 91
78c627cf
MY
92void uniphier_sld3_early_clk_init(void);
93void uniphier_ld11_early_clk_init(void);
94
95void uniphier_sld3_dram_clk_init(void);
96void uniphier_pro5_dram_clk_init(void);
97void uniphier_pxs2_dram_clk_init(void);
98void uniphier_ld11_dram_clk_init(void);
99void uniphier_ld20_dram_clk_init(void);
5b660066 100
a8e6300d 101int uniphier_sld3_umc_init(const struct uniphier_board_data *bd);
5b660066
MY
102int uniphier_ld4_umc_init(const struct uniphier_board_data *bd);
103int uniphier_pro4_umc_init(const struct uniphier_board_data *bd);
104int uniphier_sld8_umc_init(const struct uniphier_board_data *bd);
a8e6300d 105int uniphier_pro5_umc_init(const struct uniphier_board_data *bd);
5b660066 106int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd);
9d0c2ceb 107int uniphier_ld20_umc_init(const struct uniphier_board_data *bd);
667dbcd0 108int uniphier_ld11_umc_init(const struct uniphier_board_data *bd);
5b660066 109
6a3e4274
MY
110void uniphier_sld3_pll_init(void);
111void uniphier_ld4_pll_init(void);
112void uniphier_pro4_pll_init(void);
c72f4d4c 113void uniphier_ld11_pll_init(void);
a314a245 114void uniphier_ld20_pll_init(void);
2c2ab3d4 115void uniphier_pxs3_pll_init(void);
6a3e4274 116
5b660066
MY
117void uniphier_ld4_clk_init(void);
118void uniphier_pro4_clk_init(void);
119void uniphier_pro5_clk_init(void);
120void uniphier_pxs2_clk_init(void);
667dbcd0 121void uniphier_ld11_clk_init(void);
9d0c2ceb 122
5ac9dfbe 123int uniphier_pin_init(const char *pinconfig_name);
b2916712 124void uniphier_smp_kick_all_cpus(void);
9d0c2ceb 125void cci500_init(int nr_slaves);
323d1f9d 126
3e9952be 127#define pr_warn(fmt, args...) printf(fmt, ##args)
323d1f9d
MY
128#define pr_err(fmt, args...) printf(fmt, ##args)
129
130#endif /* __MACH_INIT_H */