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 = {
32 .flags = UNIPHIER_BD_DRAM_SPARSE,
36 #if defined(CONFIG_ARCH_UNIPHIER_LD4)
37 static const struct uniphier_board_data uniphier_ld4_data = {
48 .flags = UNIPHIER_BD_DDR3PLUS,
52 #if defined(CONFIG_ARCH_UNIPHIER_PRO4)
54 static const struct uniphier_board_data uniphier_pro4_data = {
68 static const struct uniphier_board_data uniphier_pro4_2g_data = {
82 #if defined(CONFIG_ARCH_UNIPHIER_SLD8)
83 static const struct uniphier_board_data uniphier_sld8_data = {
94 .flags = UNIPHIER_BD_DDR3PLUS,
98 #if defined(CONFIG_ARCH_UNIPHIER_PRO5)
99 static const struct uniphier_board_data uniphier_pro5_data = {
113 #if defined(CONFIG_ARCH_UNIPHIER_PXS2)
114 static const struct uniphier_board_data uniphier_pxs2_data = {
132 #if defined(CONFIG_ARCH_UNIPHIER_LD6B)
133 static const struct uniphier_board_data uniphier_ld6b_data = {
151 #if defined(CONFIG_ARCH_UNIPHIER_LD11)
152 static const struct uniphier_board_data uniphier_ld11_data = {
166 #if defined(CONFIG_ARCH_UNIPHIER_LD20)
167 static const struct uniphier_board_data uniphier_ld20_ref_data = {
182 .flags = UNIPHIER_BD_BOARD_LD20_REF,
185 static const struct uniphier_board_data uniphier_ld20_data = {
200 .flags = UNIPHIER_BD_BOARD_LD20_GLOBAL,
203 static const struct uniphier_board_data uniphier_ld21_data = {
214 .flags = UNIPHIER_BD_BOARD_LD21_GLOBAL,
218 struct uniphier_board_id {
219 const char *compatible;
220 const struct uniphier_board_data *param;
223 static const struct uniphier_board_id uniphier_boards[] = {
224 #if defined(CONFIG_ARCH_UNIPHIER_SLD3)
225 { "socionext,uniphier-sld3", &uniphier_sld3_data, },
227 #if defined(CONFIG_ARCH_UNIPHIER_LD4)
228 { "socionext,uniphier-ld4", &uniphier_ld4_data, },
230 #if defined(CONFIG_ARCH_UNIPHIER_PRO4)
231 { "socionext,uniphier-pro4-ace", &uniphier_pro4_2g_data, },
232 { "socionext,uniphier-pro4-sanji", &uniphier_pro4_2g_data, },
233 { "socionext,uniphier-pro4", &uniphier_pro4_data, },
235 #if defined(CONFIG_ARCH_UNIPHIER_SLD8)
236 { "socionext,uniphier-sld8", &uniphier_sld8_data, },
238 #if defined(CONFIG_ARCH_UNIPHIER_PRO5)
239 { "socionext,uniphier-pro5", &uniphier_pro5_data, },
241 #if defined(CONFIG_ARCH_UNIPHIER_PXS2)
242 { "socionext,uniphier-pxs2", &uniphier_pxs2_data, },
244 #if defined(CONFIG_ARCH_UNIPHIER_LD6B)
245 { "socionext,uniphier-ld6b", &uniphier_ld6b_data, },
247 #if defined(CONFIG_ARCH_UNIPHIER_LD11)
248 { "socionext,uniphier-ld11", &uniphier_ld11_data, },
250 #if defined(CONFIG_ARCH_UNIPHIER_LD20)
251 { "socionext,uniphier-ld21", &uniphier_ld21_data, },
252 { "socionext,uniphier-ld20-ref", &uniphier_ld20_ref_data, },
253 { "socionext,uniphier-ld20", &uniphier_ld20_data, },
257 const struct uniphier_board_data *uniphier_get_board_param(void)
261 for (i = 0; i < ARRAY_SIZE(uniphier_boards); i++) {
262 if (!fdt_node_check_compatible(gd->fdt_blob, 0,
263 uniphier_boards[i].compatible))
264 return uniphier_boards[i].param;