Add DDR configuration for spacecast.

- Give USB the highest priority to access the memory.
- Reallocate the quota for CPU, USB and SATA ports.

Change-Id: I2cf17fe04baef183e6e9ef50ab11c75fc1acd4e0
diff --git a/arch/arm/boards/optimus/ddr.c b/arch/arm/boards/optimus/ddr.c
index 10044cd..ec86ce4 100644
--- a/arch/arm/boards/optimus/ddr.c
+++ b/arch/arm/boards/optimus/ddr.c
@@ -6,8 +6,6 @@
 #include <mach/gpio.h>
 #include <board_id.h>
 
-/* This array is called optimus_ddrc_cfg for historic reasons. */
-/* It applies to both Optimus and SpaceCast. */
 static struct ddr_reg_val optimus_ddrc_cfg[] = {
 	{DDRC_CTL_00_REG, 0x20410600LL},
 	{DDRC_CTL_02_REG, 0x00000006LL},
@@ -79,6 +77,77 @@
 	{0, 0}
 };
 
+static struct ddr_reg_val spacecast_ddrc_cfg[] = {
+	{DDRC_CTL_00_REG, 0x20410600LL},
+	{DDRC_CTL_02_REG, 0x00000006LL},
+	{DDRC_CTL_03_REG, 0x0001A07CLL},
+	{DDRC_CTL_04_REG, 0x00041127LL},
+	{DDRC_CTL_05_REG, 0x04061200LL},
+	{DDRC_CTL_06_REG, 0x141B0404LL},
+	{DDRC_CTL_07_REG, 0x08040804LL},
+	{DDRC_CTL_08_REG, 0x0092190CLL},
+	{DDRC_CTL_09_REG, 0x00000504LL},
+	{DDRC_CTL_10_REG, 0x08080101LL},
+	{DDRC_CTL_11_REG, 0x00020010LL},
+	{DDRC_CTL_12_REG, 0x00011803LL},
+	{DDRC_CTL_13_REG, 0x00000009LL},
+	{DDRC_CTL_14_REG, 0x00BB0100LL},
+	{DDRC_CTL_15_REG, 0x00001034LL},
+	{DDRC_CTL_16_REG, 0x000D0004LL},
+	{DDRC_CTL_17_REG, 0x00060002LL},
+	{DDRC_CTL_18_REG, 0x00C00200LL},
+	{DDRC_CTL_19_REG, 0x00000000LL},
+	{DDRC_CTL_20_REG, 0x00060600LL},
+	{DDRC_CTL_21_REG, 0x00000000LL},
+	{DDRC_CTL_22_REG, 0x00000000LL},
+	{DDRC_CTL_23_REG, 0x00000000LL},
+	{DDRC_CTL_24_REG, 0x00000000LL},
+	{DDRC_CTL_25_REG, 0x00000000LL},
+	{DDRC_CTL_26_REG, 0x00000000LL},
+	{DDRC_CTL_27_REG, 0x00085000LL},
+	{DDRC_CTL_28_REG, 0x00080006LL},
+	{DDRC_CTL_29_REG, 0x00000000LL},
+	{DDRC_CTL_30_REG, 0x00060850LL},
+	{DDRC_CTL_31_REG, 0x00000008LL},
+	{DDRC_CTL_32_REG, 0x00020000LL},
+	{DDRC_CTL_33_REG, 0x00000000LL},
+	{DDRC_CTL_43_REG, 0x01400200LL},
+	{DDRC_CTL_44_REG, 0x02000040LL},
+	{DDRC_CTL_45_REG, 0x01010080LL},
+	{DDRC_CTL_46_REG, 0xFF0A0101LL},
+	{DDRC_CTL_47_REG, 0x010101FFLL},
+	{DDRC_CTL_48_REG, 0x00010001LL},
+	{DDRC_CTL_49_REG, 0x000C0100LL},
+	{DDRC_CTL_50_REG, 0x00010002LL},
+	{DDRC_CTL_52_REG, 0x00000000LL},
+	{DDRC_CTL_53_REG, 0x007FFFFFLL},
+	{DDRC_CTL_59_REG, 0x01000000LL},
+	{DDRC_CTL_60_REG, 0x00020100LL},
+	{DDRC_CTL_61_REG, 0x02010202LL},
+	{DDRC_CTL_62_REG, 0x02000100LL},
+	{DDRC_CTL_63_REG, 0x00000000LL},
+	{DDRC_CTL_91_REG, 0xFFFF0000LL},
+	{DDRC_CTL_92_REG, 0x00000202LL},
+	{DDRC_CTL_93_REG, 0x0303FFFFLL},
+	{DDRC_CTL_94_REG, 0x03FFFF00LL},
+	{DDRC_CTL_95_REG, 0xFFFF0003LL},
+	{DDRC_CTL_96_REG, 0x00000101LL},
+	{DDRC_CTL_97_REG, 0x01000400LL},
+	{DDRC_CTL_98_REG, 0x00012100LL},
+	{DDRC_CTL_99_REG, 0x0500011aLL},
+	{DDRC_CTL_100_REG, 0x00000001LL},
+	{DDRC_CTL_102_REG, 0x00000800LL},
+	{DDRC_CTL_103_REG, 0x00103300LL},
+	{DDRC_CTL_104_REG, 0x02000200LL},
+	{DDRC_CTL_105_REG, 0x02000200LL},
+	{DDRC_CTL_106_REG, 0x00001033LL},
+	{DDRC_CTL_107_REG, 0x000050FFLL},
+	{DDRC_CTL_108_REG, 0x00020610LL},
+	{DDRC_CTL_109_REG, 0x00000003LL},
+	{DDRC_CTL_126_REG, 0x00000000LL},
+	{0, 0}
+};
+
 /* This array is called optimus_ddr_phy_cfg for historic reasons. */
 /* It applies to both Optimus and SpaceCast. */
 static struct ddr_reg_val optimus_ddr_phy_cfg[] = {
@@ -182,7 +251,7 @@
 	{optimus_ddr_phy_cfg, optimus_ddrc_cfg, SZ_1G, "Optimus"},
 	/* Nanya NT5CB128M16FP-DI, 533MHz, 32bit, NoECC */
 	{sideswipe_ddr_phy_cfg, sideswipe_ddrc_cfg, SZ_512M, "Sideswipe"},
-	{optimus_ddr_phy_cfg, optimus_ddrc_cfg, SZ_1G, "SpaceCast"},
+	{optimus_ddr_phy_cfg, spacecast_ddrc_cfg, SZ_1G, "SpaceCast"},
 };
 
 static struct ddr_config bad_board_id_ddr_config = {0, 0, 0, "Unknown"};