summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2016-09-13 16:06:10 (GMT)
committerMasahiro Yamada <yamada.masahiro@socionext.com>2016-09-16 16:29:44 (GMT)
commitf6bbec3d5c12457e2ce207f662e65e7da70254ce (patch)
tree674e72034147ad69e92804357a1974b9ce3b899b /arch
parentef70eb54aab8466b3989e83623b5ca4db78b7b2a (diff)
downloadu-boot-f6bbec3d5c12457e2ce207f662e65e7da70254ce.tar.xz
ARM: uniphier: introduce flags to adjust DRAM timing for LD20/LD21
Unfortunately, this SoC needs per-board adjustment between clock and address/command lines. This flag will be passed to the DRAM init function and used for compensating the difference of DRAM timing parameters. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-uniphier/boards.c25
-rw-r--r--arch/arm/mach-uniphier/init.h11
2 files changed, 32 insertions, 4 deletions
diff --git a/arch/arm/mach-uniphier/boards.c b/arch/arm/mach-uniphier/boards.c
index e063555..79b1d20 100644
--- a/arch/arm/mach-uniphier/boards.c
+++ b/arch/arm/mach-uniphier/boards.c
@@ -184,6 +184,27 @@ static const struct uniphier_board_data uniphier_ld11_data = {
#endif
#if defined(CONFIG_ARCH_UNIPHIER_LD20)
+static const struct uniphier_board_data uniphier_ld20_ref_data = {
+ .dram_freq = 1866,
+ .dram_nr_ch = 3,
+ .dram_ch[0] = {
+ .base = 0x80000000,
+ .size = 0x40000000,
+ .width = 32,
+ },
+ .dram_ch[1] = {
+ .base = 0xc0000000,
+ .size = 0x40000000,
+ .width = 32,
+ },
+ .dram_ch[2] = {
+ .base = 0x100000000UL,
+ .size = 0x40000000,
+ .width = 32,
+ },
+ .flags = UNIPHIER_BD_BOARD_LD20_REF,
+};
+
static const struct uniphier_board_data uniphier_ld20_data = {
.dram_freq = 1866,
.dram_nr_ch = 3,
@@ -202,6 +223,7 @@ static const struct uniphier_board_data uniphier_ld20_data = {
.size = 0x40000000,
.width = 32,
},
+ .flags = UNIPHIER_BD_BOARD_LD20_GLOBAL,
};
static const struct uniphier_board_data uniphier_ld21_data = {
@@ -217,7 +239,7 @@ static const struct uniphier_board_data uniphier_ld21_data = {
.size = 0x40000000,
.width = 32,
},
- .flags = UNIPHIER_BD_PACKAGE_LD21,
+ .flags = UNIPHIER_BD_BOARD_LD21_GLOBAL,
};
#endif
@@ -255,6 +277,7 @@ static const struct uniphier_board_id uniphier_boards[] = {
#endif
#if defined(CONFIG_ARCH_UNIPHIER_LD20)
{ "socionext,ph1-ld21", &uniphier_ld21_data, },
+ { "socionext,ph1-ld20-ref", &uniphier_ld20_ref_data, },
{ "socionext,ph1-ld20", &uniphier_ld20_data, },
#endif
};
diff --git a/arch/arm/mach-uniphier/init.h b/arch/arm/mach-uniphier/init.h
index a2fedbc..406d5d0 100644
--- a/arch/arm/mach-uniphier/init.h
+++ b/arch/arm/mach-uniphier/init.h
@@ -23,9 +23,14 @@ struct uniphier_board_data {
unsigned int dram_nr_ch;
struct uniphier_dram_ch dram_ch[UNIPHIER_MAX_NR_DRAM_CH];
unsigned int flags;
-#define UNIPHIER_BD_DDR3PLUS BIT(2)
-#define UNIPHIER_BD_PACKAGE_LD21 1
-#define UNIPHIER_BD_PACKAGE_TYPE(f) ((f) & 0x3)
+
+#define UNIPHIER_BD_DDR3PLUS BIT(2)
+
+#define UNIPHIER_BD_BOARD_GET_TYPE(f) ((f) & 0x3)
+#define UNIPHIER_BD_BOARD_LD20_REF 0 /* LD20 reference */
+#define UNIPHIER_BD_BOARD_LD20_GLOBAL 1 /* LD20 TV Set */
+#define UNIPHIER_BD_BOARD_LD21_REF 2 /* LD21 reference */
+#define UNIPHIER_BD_BOARD_LD21_GLOBAL 3 /* LD21 TV Set */
};
const struct uniphier_board_data *uniphier_get_board_param(void);