2 * Copyright (C) 2015-2016 Socionext Inc.
3 * Author: Masahiro Yamada <yamada.masahiro@socionext.com>
5 * SPDX-License-Identifier: GPL-2.0+
10 #include <linux/kernel.h>
14 DECLARE_GLOBAL_DATA_PTR
;
16 #if defined(CONFIG_ARCH_UNIPHIER_SLD3)
17 static const struct uniphier_board_data uniphier_sld3_data
= {
38 #if defined(CONFIG_ARCH_UNIPHIER_LD4)
39 static const struct uniphier_board_data uniphier_ld4_data
= {
52 .flags
= UNIPHIER_BD_DDR3PLUS
,
56 #if defined(CONFIG_ARCH_UNIPHIER_PRO4)
58 static const struct uniphier_board_data uniphier_pro4_data
= {
74 static const struct uniphier_board_data uniphier_pro4_2g_data
= {
90 #if defined(CONFIG_ARCH_UNIPHIER_SLD8)
91 static const struct uniphier_board_data uniphier_sld8_data
= {
104 .flags
= UNIPHIER_BD_DDR3PLUS
,
108 #if defined(CONFIG_ARCH_UNIPHIER_PRO5)
109 static const struct uniphier_board_data uniphier_pro5_data
= {
125 #if defined(CONFIG_ARCH_UNIPHIER_PXS2)
126 static const struct uniphier_board_data uniphier_pxs2_data
= {
147 #if defined(CONFIG_ARCH_UNIPHIER_LD6B)
148 static const struct uniphier_board_data uniphier_ld6b_data
= {
169 #if defined(CONFIG_ARCH_UNIPHIER_LD11)
170 static const struct uniphier_board_data uniphier_ld11_data
= {
186 #if defined(CONFIG_ARCH_UNIPHIER_LD20)
187 static const struct uniphier_board_data uniphier_ld20_ref_data
= {
201 .base
= 0x100000000UL
,
205 .flags
= UNIPHIER_BD_BOARD_LD20_REF
,
208 static const struct uniphier_board_data uniphier_ld20_data
= {
222 .base
= 0x100000000UL
,
226 .flags
= UNIPHIER_BD_BOARD_LD20_GLOBAL
,
229 static const struct uniphier_board_data uniphier_ld21_data
= {
242 .flags
= UNIPHIER_BD_BOARD_LD21_GLOBAL
,
246 struct uniphier_board_id
{
247 const char *compatible
;
248 const struct uniphier_board_data
*param
;
251 static const struct uniphier_board_id uniphier_boards
[] = {
252 #if defined(CONFIG_ARCH_UNIPHIER_SLD3)
253 { "socionext,uniphier-sld3", &uniphier_sld3_data
, },
255 #if defined(CONFIG_ARCH_UNIPHIER_LD4)
256 { "socionext,uniphier-ld4", &uniphier_ld4_data
, },
258 #if defined(CONFIG_ARCH_UNIPHIER_PRO4)
259 { "socionext,uniphier-pro4-ace", &uniphier_pro4_2g_data
, },
260 { "socionext,uniphier-pro4-sanji", &uniphier_pro4_2g_data
, },
261 { "socionext,uniphier-pro4", &uniphier_pro4_data
, },
263 #if defined(CONFIG_ARCH_UNIPHIER_SLD8)
264 { "socionext,uniphier-sld8", &uniphier_sld8_data
, },
266 #if defined(CONFIG_ARCH_UNIPHIER_PRO5)
267 { "socionext,uniphier-pro5", &uniphier_pro5_data
, },
269 #if defined(CONFIG_ARCH_UNIPHIER_PXS2)
270 { "socionext,uniphier-pxs2", &uniphier_pxs2_data
, },
272 #if defined(CONFIG_ARCH_UNIPHIER_LD6B)
273 { "socionext,uniphier-ld6b", &uniphier_ld6b_data
, },
275 #if defined(CONFIG_ARCH_UNIPHIER_LD11)
276 { "socionext,uniphier-ld11", &uniphier_ld11_data
, },
278 #if defined(CONFIG_ARCH_UNIPHIER_LD20)
279 { "socionext,uniphier-ld21", &uniphier_ld21_data
, },
280 { "socionext,uniphier-ld20-ref", &uniphier_ld20_ref_data
, },
281 { "socionext,uniphier-ld20", &uniphier_ld20_data
, },
285 const struct uniphier_board_data
*uniphier_get_board_param(void)
289 for (i
= 0; i
< ARRAY_SIZE(uniphier_boards
); i
++) {
290 if (!fdt_node_check_compatible(gd
->fdt_blob
, 0,
291 uniphier_boards
[i
].compatible
))
292 return uniphier_boards
[i
].param
;