[coreboot-gerrit] New patch to review for coreboot: dbdf883 ryu: Add 4 LPDDR3 SDRAM BCTs

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Mar 24 22:57:31 CET 2015


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/8976

-gerrit

commit dbdf883a41b0c223b83ca7a8aaf471dd2c6300c0
Author: Tom Warren <twarren at nvidia.com>
Date:   Tue Sep 2 13:41:54 2014 -0700

    ryu: Add 4 LPDDR3 SDRAM BCTs
    
    These are used by the LPDDR3 code in sdram.c.
    
    Based on the schematic and email, I've filled in 4 slots
    in sdram_configs.c. My A44 returns RAMCODE 0 (using only bits
    1:0) for Samsung SDRAM. I haven't tested the other 2 types of
    RAM (Hynix and Micron). The 4th slot is a fallback slow Micron
    config.
    
    BUG=chrome-os-partner:29921
    BUG=chrome-os-partner:31031
    BRANCH=None
    TEST=Built for rush and rush_ryu.
    
    Change-Id: I55a737db269fe5fac1565d58bd8f8afcbc5beecb
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: a45e7788dd78697ac5f48b6cc64108ca0e4912dd
    Original-Change-Id: Ib7e8b814eb6dadb9b366536721876a3eeba0d2c0
    Original-Signed-off-by: Tom Warren <twarren at nvidia.com>
    Original-Reviewed-on: https://chromium-review.googlesource.com/216000
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
---
 src/mainboard/google/rush_ryu/Makefile.inc         |   1 +
 .../google/rush_ryu/bct/sdram-hynix-4GB-924.inc    | 311 +++++++++++++++++++++
 .../google/rush_ryu/bct/sdram-micron-4GB-528.inc   | 311 +++++++++++++++++++++
 .../google/rush_ryu/bct/sdram-micron-4GB-924.inc   | 311 +++++++++++++++++++++
 .../google/rush_ryu/bct/sdram-samsung-4GB-924.inc  | 311 +++++++++++++++++++++
 src/mainboard/google/rush_ryu/sdram_configs.c      |  49 ++++
 6 files changed, 1294 insertions(+)

diff --git a/src/mainboard/google/rush_ryu/Makefile.inc b/src/mainboard/google/rush_ryu/Makefile.inc
index 14b9427..9faba25 100644
--- a/src/mainboard/google/rush_ryu/Makefile.inc
+++ b/src/mainboard/google/rush_ryu/Makefile.inc
@@ -33,6 +33,7 @@ bootblock-y += reset.c
 
 romstage-y += reset.c
 romstage-y += romstage.c
+romstage-y += sdram_configs.c
 
 ramstage-y += boardid.c
 ramstage-y += mainboard.c
diff --git a/src/mainboard/google/rush_ryu/bct/sdram-hynix-4GB-924.inc b/src/mainboard/google/rush_ryu/bct/sdram-hynix-4GB-924.inc
new file mode 100644
index 0000000..bf40ef5
--- /dev/null
+++ b/src/mainboard/google/rush_ryu/bct/sdram-hynix-4GB-924.inc
@@ -0,0 +1,311 @@
+{ /* generated from sdram-hynix-4GB-924.cfg; do not edit. This is Hynix LPDDR3 */
+  .MemoryType                               = NvBootMemoryType_LpDdr2,
+  .PllMInputDivider                         = 0x00000001,
+  .PllMFeedbackDivider                      = 0x0000004d,
+  .PllMStableTime                           = 0x0000012c,
+  .PllMSetupControl                         = 0x00000000,
+  .PllMSelectDiv2                           = 0x00000000,
+  .PllMPDLshiftPh45                         = 0x00000001,
+  .PllMPDLshiftPh90                         = 0x00000001,
+  .PllMPDLshiftPh135                        = 0x00000001,
+  .PllMKCP                                  = 0x00000000,
+  .PllMKVCO                                 = 0x00000000,
+  .EmcBctSpare0                             = 0x00000000,
+  .EmcBctSpare1                             = 0x00000000,
+  .EmcBctSpare2                             = 0x00000000,
+  .EmcBctSpare3                             = 0x00000000,
+  .EmcBctSpare4                             = 0x00000000,
+  .EmcBctSpare5                             = 0x00000000,
+  .EmcBctSpare6                             = 0x00000000,
+  .EmcBctSpare7                             = 0x00000000,
+  .EmcBctSpare8                             = 0x00000000,
+  .EmcBctSpare9                             = 0x00000000,
+  .EmcBctSpare10                            = 0x00000000,
+  .EmcBctSpare11                            = 0x00000000,
+  .EmcClockSource                           = 0x80000000,
+  .EmcAutoCalInterval                       = 0x001fffff,
+  .EmcAutoCalConfig                         = 0xa1430000,
+  .EmcAutoCalConfig2                        = 0x00000000,
+  .EmcAutoCalConfig3                        = 0x00000000,
+  .EmcAutoCalWait                           = 0x00000190,
+  .EmcAdrCfg                                = 0x00000001,
+  .EmcPinProgramWait                        = 0x00000000,
+  .EmcPinExtraWait                          = 0x00000000,
+  .EmcTimingControlWait                     = 0x00000000,
+  .EmcRc                                    = 0x00000037,
+  .EmcRfc                                   = 0x00000078,
+  .EmcRfcSlr                                = 0x00000000,
+  .EmcRas                                   = 0x00000026,
+  .EmcRp                                    = 0x00000010,
+  .EmcR2r                                   = 0x00000000,
+  .EmcW2w                                   = 0x00000000,
+  .EmcR2w                                   = 0x00000010,
+  .EmcW2r                                   = 0x00000010,
+  .EmcR2p                                   = 0x00000006,
+  .EmcW2p                                   = 0x00000017,
+  .EmcRdRcd                                 = 0x00000010,
+  .EmcWrRcd                                 = 0x00000010,
+  .EmcRrd                                   = 0x00000009,
+  .EmcRext                                  = 0x00000005,
+  .EmcWext                                  = 0x00000000,
+  .EmcWdv                                   = 0x00000007,
+  .EmcWdvMask                               = 0x00000007,
+  .EmcQUse                                  = 0x00000011,
+  .EmcQuseWidth                             = 0x00000004,
+  .EmcIbdly                                 = 0x00000000,
+  .EmcEInput                                = 0x00000006,
+  .EmcEInputDuration                        = 0x00000011,
+  .EmcPutermExtra                           = 0x000e0000,
+  .EmcPutermWidth                           = 0x00000006,
+  .EmcPutermAdj                             = 0x00000000,
+  .EmcCdbCntl1                              = 0x00000000,
+  .EmcCdbCntl2                              = 0x00000000,
+  .EmcCdbCntl3                              = 0x00000000,
+  .EmcQRst                                  = 0x00000005,
+  .EmcQSafe                                 = 0x00000018,
+  .EmcRdv                                   = 0x00000020,
+  .EmcRdvMask                               = 0x00000022,
+  .EmcQpop                                  = 0x00000017,
+  .EmcCtt                                   = 0x00000000,
+  .EmcCttDuration                           = 0x00000006,
+  .EmcRefresh                               = 0x00000dd4,
+  .EmcBurstRefreshNum                       = 0x00000000,
+  .EmcPreRefreshReqCnt                      = 0x00000375,
+  .EmcPdEx2Wr                               = 0x00000006,
+  .EmcPdEx2Rd                               = 0x00000006,
+  .EmcPChg2Pden                             = 0x00000010,
+  .EmcAct2Pden                              = 0x00000000,
+  .EmcAr2Pden                               = 0x00000001,
+  .EmcRw2Pden                               = 0x0000001b,
+  .EmcTxsr                                  = 0x00000082,
+  .EmcTxsrDll                               = 0x00000082,
+  .EmcTcke                                  = 0x00000007,
+  .EmcTckesr                                = 0x0000000e,
+  .EmcTpd                                   = 0x00000007,
+  .EmcTfaw                                  = 0x0000002d,
+  .EmcTrpab                                 = 0x00000014,
+  .EmcTClkStable                            = 0x00000003,
+  .EmcTClkStop                              = 0x00000003,
+  .EmcTRefBw                                = 0x00000f04,
+  .EmcFbioCfg5                              = 0x1363a896,
+  .EmcFbioCfg6                              = 0x00000000,
+  .EmcFbioSpare                             = 0x00000000,
+  .EmcCfgRsv                                = 0xff00ff00,
+  .EmcMrs                                   = 0x00000000,
+  .EmcEmrs                                  = 0x00000000,
+  .EmcEmrs2                                 = 0x00000000,
+  .EmcEmrs3                                 = 0x00000000,
+  .EmcMrw1                                  = 0x00010083,
+  .EmcMrw2                                  = 0x0002001c,
+  .EmcMrw3                                  = 0x00030001,
+  .EmcMrw4                                  = 0x800b0000,
+  .EmcMrwExtra                              = 0x00010083,
+  .EmcWarmBootMrwExtra                      = 0x0002001c,
+  .EmcWarmBootExtraModeRegWriteEnable       = 0x00000000,
+  .EmcExtraModeRegWriteEnable               = 0x00000000,
+  .EmcMrwResetCommand                       = 0x003f00fc,
+  .EmcMrwResetNInitWait                     = 0x0000000a,
+  .EmcMrsWaitCnt                            = 0x039c0019,
+  .EmcMrsWaitCnt2                           = 0x039c0019,
+  .EmcCfg                                   = 0xd3300000,
+  .EmcCfg2                                  = 0x0000089f,
+  .EmcCfgPipe                               = 0x00004080,
+  .EmcDbg                                   = 0x01000c00,
+  .EmcCmdQ                                  = 0x10004408,
+  .EmcMc2EmcQ                               = 0x06000404,
+  .EmcDynSelfRefControl                     = 0x80001c77,
+  .AhbArbitrationXbarCtrlMemInitDone        = 0x00000001,
+  .EmcCfgDigDll                             = 0xe00400b9,
+  .EmcCfgDigDllPeriod                       = 0x00008000,
+  .EmcDevSelect                             = 0x00000000,
+  .EmcSelDpdCtrl                            = 0x0004001c,
+  .EmcDllXformDqs0                          = 0x0000000a,
+  .EmcDllXformDqs1                          = 0x0000000a,
+  .EmcDllXformDqs2                          = 0x0000000c,
+  .EmcDllXformDqs3                          = 0x0000000a,
+  .EmcDllXformDqs4                          = 0x00000008,
+  .EmcDllXformDqs5                          = 0x00004008,
+  .EmcDllXformDqs6                          = 0x0000000a,
+  .EmcDllXformDqs7                          = 0x00000008,
+  .EmcDllXformDqs8                          = 0x0000000a,
+  .EmcDllXformDqs9                          = 0x0000000a,
+  .EmcDllXformDqs10                         = 0x0000000a,
+  .EmcDllXformDqs11                         = 0x0000000a,
+  .EmcDllXformDqs12                         = 0x0000000a,
+  .EmcDllXformDqs13                         = 0x0000000a,
+  .EmcDllXformDqs14                         = 0x0000000a,
+  .EmcDllXformDqs15                         = 0x0000000a,
+  .EmcDllXformQUse0                         = 0x00000000,
+  .EmcDllXformQUse1                         = 0x00000000,
+  .EmcDllXformQUse2                         = 0x00000000,
+  .EmcDllXformQUse3                         = 0x00000000,
+  .EmcDllXformQUse4                         = 0x00000000,
+  .EmcDllXformQUse5                         = 0x00000000,
+  .EmcDllXformQUse6                         = 0x00000000,
+  .EmcDllXformQUse7                         = 0x00000000,
+  .EmcDllXformAddr0                         = 0x00024002,
+  .EmcDllXformAddr1                         = 0x00024002,
+  .EmcDllXformAddr2                         = 0x00000008,
+  .EmcDllXformAddr3                         = 0x00024002,
+  .EmcDllXformAddr4                         = 0x00024002,
+  .EmcDllXformAddr5                         = 0x00000008,
+  .EmcDllXformQUse8                         = 0x00000000,
+  .EmcDllXformQUse9                         = 0x00000000,
+  .EmcDllXformQUse10                        = 0x00000000,
+  .EmcDllXformQUse11                        = 0x00000000,
+  .EmcDllXformQUse12                        = 0x00000000,
+  .EmcDllXformQUse13                        = 0x00000000,
+  .EmcDllXformQUse14                        = 0x00000000,
+  .EmcDllXformQUse15                        = 0x00000000,
+  .EmcDliTrimTxDqs0                         = 0x00000008,
+  .EmcDliTrimTxDqs1                         = 0x00000008,
+  .EmcDliTrimTxDqs2                         = 0x00000008,
+  .EmcDliTrimTxDqs3                         = 0x00000008,
+  .EmcDliTrimTxDqs4                         = 0x00000008,
+  .EmcDliTrimTxDqs5                         = 0x00000008,
+  .EmcDliTrimTxDqs6                         = 0x00000008,
+  .EmcDliTrimTxDqs7                         = 0x00000008,
+  .EmcDliTrimTxDqs8                         = 0x00000008,
+  .EmcDliTrimTxDqs9                         = 0x00000008,
+  .EmcDliTrimTxDqs10                        = 0x00000008,
+  .EmcDliTrimTxDqs11                        = 0x00000008,
+  .EmcDliTrimTxDqs12                        = 0x00000008,
+  .EmcDliTrimTxDqs13                        = 0x00000008,
+  .EmcDliTrimTxDqs14                        = 0x00000008,
+  .EmcDliTrimTxDqs15                        = 0x00000008,
+  .EmcDllXformDq0                           = 0x0000000e,
+  .EmcDllXformDq1                           = 0x0000000e,
+  .EmcDllXformDq2                           = 0x0000000e,
+  .EmcDllXformDq3                           = 0x0000000e,
+  .EmcDllXformDq4                           = 0x0000000e,
+  .EmcDllXformDq5                           = 0x0000000e,
+  .EmcDllXformDq6                           = 0x0000000e,
+  .EmcDllXformDq7                           = 0x0000000e,
+  .WarmBootWait                             = 0x00000001,
+  .EmcCttTermCtrl                           = 0x00000802,
+  .EmcOdtWrite                              = 0x00000000,
+  .EmcOdtRead                               = 0x00000000,
+  .EmcZcalInterval                          = 0x00064000,
+  .EmcZcalWaitCnt                           = 0x00000058,
+  .EmcZcalMrwCmd                            = 0x000a0056,
+  .EmcMrsResetDll                           = 0x00000000,
+  .EmcZcalInitDev0                          = 0x840a00ff,
+  .EmcZcalInitDev1                          = 0x440a00ff,
+  .EmcZcalInitWait                          = 0x00000001,
+  .EmcZcalWarmColdBootEnables               = 0x00000003,
+  .EmcMrwLpddr2ZcalWarmBoot                 = 0x040a00ab,
+  .EmcZqCalDdr3WarmBoot                     = 0x00000000,
+  .EmcZcalWarmBootWait                      = 0x00000001,
+  .EmcMrsWarmBootEnable                     = 0x00000001,
+  .EmcMrsResetDllWait                       = 0x00000000,
+  .EmcMrsExtra                              = 0x00000000,
+  .EmcWarmBootMrsExtra                      = 0x00000000,
+  .EmcEmrsDdr2DllEnable                     = 0x00000000,
+  .EmcMrsDdr2DllReset                       = 0x00000000,
+  .EmcEmrsDdr2OcdCalib                      = 0x00000000,
+  .EmcDdr2Wait                              = 0x00000000,
+  .EmcClkenOverride                         = 0x00000000,
+  .McDisExtraSnapLevels                     = 0x00000000,
+  .EmcExtraRefreshNum                       = 0x00000002,
+  .EmcClkenOverrideAllWarmBoot              = 0x00000000,
+  .McClkenOverrideAllWarmBoot               = 0x00000000,
+  .EmcCfgDigDllPeriodWarmBoot               = 0x00000003,
+  .PmcVddpSel                               = 0x00000001,
+  .PmcVddpSelWait                           = 0x00000002,
+  .PmcDdrPwr                                = 0x00000003,
+  .PmcDdrCfg                                = 0x00001000,
+  .PmcIoDpd3Req                             = 0x4ffefef7,
+  .PmcIoDpd3ReqWait                         = 0x00000000,
+  .PmcRegShort                              = 0x0000330f,
+  .PmcNoIoPower                             = 0x00000000,
+  .PmcPorDpdCtrlWait                        = 0x00000001,
+  .EmcXm2CmdPadCtrl                         = 0x00000220,
+  .EmcXm2CmdPadCtrl2                        = 0x770c0000,
+  .EmcXm2CmdPadCtrl3                        = 0x050c0000,
+  .EmcXm2CmdPadCtrl4                        = 0x00000000,
+  .EmcXm2CmdPadCtrl5                        = 0x00100100,
+  .EmcXm2DqsPadCtrl                         = 0x770c1414,
+  .EmcXm2DqsPadCtrl2                        = 0x0120103d,
+  .EmcXm2DqsPadCtrl3                        = 0x55555520,
+  .EmcXm2DqsPadCtrl4                        = 0x00492492,
+  .EmcXm2DqsPadCtrl5                        = 0x00492492,
+  .EmcXm2DqsPadCtrl6                        = 0x55555500,
+  .EmcXm2DqPadCtrl                          = 0x770c2990,
+  .EmcXm2DqPadCtrl2                         = 0x00000000,
+  .EmcXm2DqPadCtrl3                         = 0x00000000,
+  .EmcXm2ClkPadCtrl                         = 0x77ffc004,
+  .EmcXm2ClkPadCtrl2                        = 0x00000000,
+  .EmcXm2CompPadCtrl                        = 0x81f1f008,
+  .EmcXm2VttGenPadCtrl                      = 0x07070000,
+  .EmcXm2VttGenPadCtrl2                     = 0x00000000,
+  .EmcXm2VttGenPadCtrl3                     = 0x015ddddd,
+  .EmcAcpdControl                           = 0x00000000,
+  .EmcSwizzleRank0ByteCfg                   = 0x00001032,
+  .EmcSwizzleRank0Byte0                     = 0x53067142,
+  .EmcSwizzleRank0Byte1                     = 0x73025146,
+  .EmcSwizzleRank0Byte2                     = 0x20136475,
+  .EmcSwizzleRank0Byte3                     = 0x46273150,
+  .EmcSwizzleRank1ByteCfg                   = 0x00003210,
+  .EmcSwizzleRank1Byte0                     = 0x73451026,
+  .EmcSwizzleRank1Byte1                     = 0x73025146,
+  .EmcSwizzleRank1Byte2                     = 0x20641735,
+  .EmcSwizzleRank1Byte3                     = 0x42136075,
+  .EmcDsrVttgenDrv                          = 0x0000003f,
+  .EmcTxdsrvttgen                           = 0x00000000,
+  .EmcBgbiasCtl0                            = 0x00000000,
+  .McEmemAdrCfg                             = 0x00000001,
+  .McEmemAdrCfgDev0                         = 0x00080304,
+  .McEmemAdrCfgDev1                         = 0x00080304,
+  .McEmemAdrCfgBankMask0                    = 0x00001248,
+  .McEmemAdrCfgBankMask1                    = 0x00002490,
+  .McEmemAdrCfgBankMask2                    = 0x00000920,
+  .McEmemAdrCfgBankSwizzle3                 = 0x00000001,
+  .McEmemCfg                                = 0x00001000,
+  .McEmemArbCfg                             = 0x0e00000d,
+  .McEmemArbOutstandingReq                  = 0x80000040,
+  .McEmemArbTimingRcd                       = 0x00000007,
+  .McEmemArbTimingRp                        = 0x00000008,
+  .McEmemArbTimingRc                        = 0x0000001b,
+  .McEmemArbTimingRas                       = 0x00000012,
+  .McEmemArbTimingFaw                       = 0x00000017,
+  .McEmemArbTimingRrd                       = 0x00000004,
+  .McEmemArbTimingRap2Pre                   = 0x00000004,
+  .McEmemArbTimingWap2Pre                   = 0x0000000e,
+  .McEmemArbTimingR2R                       = 0x00000004,
+  .McEmemArbTimingW2W                       = 0x00000001,
+  .McEmemArbTimingR2W                       = 0x00000009,
+  .McEmemArbTimingW2R                       = 0x00000009,
+  .McEmemArbDaTurns                         = 0x09090104,
+  .McEmemArbDaCovers                        = 0x001e141b,
+  .McEmemArbMisc0                           = 0x71ae2a1c,
+  .McEmemArbMisc1                           = 0x70000f02,
+  .McEmemArbRing1Throttle                   = 0x001f0000,
+  .McEmemArbOverride                        = 0x10000000,
+  .McEmemArbOverride1                       = 0x00000000,
+  .McEmemArbRsv                             = 0xff00ff00,
+  .McClkenOverride                          = 0x00000000,
+  .McStatControl                            = 0x00000000,
+  .McDisplaySnapRing                        = 0x00000003,
+  .McVideoProtectBom                        = 0xfff00000,
+  .McVideoProtectBomAdrHi                   = 0x00000000,
+  .McVideoProtectSizeMb                     = 0x00000000,
+  .McVideoProtectVprOverride                = 0xe4bac743,
+  .McVideoProtectVprOverride1               = 0x00000013,
+  .McVideoProtectGpuOverride0               = 0x00000000,
+  .McVideoProtectGpuOverride1               = 0x00000000,
+  .McSecCarveoutBom                         = 0xfff00000,
+  .McSecCarveoutAdrHi                       = 0x00000000,
+  .McSecCarveoutSizeMb                      = 0x00000000,
+  .McVideoProtectWriteAccess                = 0x00000000,
+  .McSecCarveoutProtectWriteAccess          = 0x00000000,
+  .EmcCaTrainingEnable                      = 0x00000001,
+  .EmcCaTrainingTimingCntl1                 = 0x09257359,
+  .EmcCaTrainingTimingCntl2                 = 0x00000017,
+  .SwizzleRankByteEncode                    = 0x00000008,
+  .BootRomPatchControl                      = 0x00000000,
+  .BootRomPatchData                         = 0x00000000,
+  .McMtsCarveoutBom                         = 0x78000000,
+  .McMtsCarveoutAdrHi                       = 0x00000001,
+  .McMtsCarveoutSizeMb                      = 0x00000080,
+  .McMtsCarveoutRegCtrl                     = 0x00000001,
+},
diff --git a/src/mainboard/google/rush_ryu/bct/sdram-micron-4GB-528.inc b/src/mainboard/google/rush_ryu/bct/sdram-micron-4GB-528.inc
new file mode 100644
index 0000000..52180cc
--- /dev/null
+++ b/src/mainboard/google/rush_ryu/bct/sdram-micron-4GB-528.inc
@@ -0,0 +1,311 @@
+{ /* generated from sdram-micron-4GB-528.cfg; do not edit. */
+  .MemoryType                               = NvBootMemoryType_LpDdr2,
+  .PllMInputDivider                         = 0x00000001,
+  .PllMFeedbackDivider                      = 0x0000002c,
+  .PllMStableTime                           = 0x0000012c,
+  .PllMSetupControl                         = 0x00000000,
+  .PllMSelectDiv2                           = 0x00000000,
+  .PllMPDLshiftPh45                         = 0x00000001,
+  .PllMPDLshiftPh90                         = 0x00000001,
+  .PllMPDLshiftPh135                        = 0x00000001,
+  .PllMKCP                                  = 0x00000000,
+  .PllMKVCO                                 = 0x00000000,
+  .EmcBctSpare0                             = 0x00000000,
+  .EmcBctSpare1                             = 0x00000000,
+  .EmcBctSpare2                             = 0x00000000,
+  .EmcBctSpare3                             = 0x00000000,
+  .EmcBctSpare4                             = 0x00000000,
+  .EmcBctSpare5                             = 0x00000000,
+  .EmcBctSpare6                             = 0x00000000,
+  .EmcBctSpare7                             = 0x00000000,
+  .EmcBctSpare8                             = 0x00000000,
+  .EmcBctSpare9                             = 0x00000000,
+  .EmcBctSpare10                            = 0x00000000,
+  .EmcBctSpare11                            = 0x00000000,
+  .EmcClockSource                           = 0x80000000,
+  .EmcAutoCalInterval                       = 0x001fffff,
+  .EmcAutoCalConfig                         = 0xa1430000,
+  .EmcAutoCalConfig2                        = 0x00000000,
+  .EmcAutoCalConfig3                        = 0x00000000,
+  .EmcAutoCalWait                           = 0x00000190,
+  .EmcAdrCfg                                = 0x00000001,
+  .EmcPinProgramWait                        = 0x00000000,
+  .EmcPinExtraWait                          = 0x00000000,
+  .EmcTimingControlWait                     = 0x00000000,
+  .EmcRc                                    = 0x0000001f,
+  .EmcRfc                                   = 0x00000044,
+  .EmcRfcSlr                                = 0x00000000,
+  .EmcRas                                   = 0x00000016,
+  .EmcRp                                    = 0x00000009,
+  .EmcR2r                                   = 0x00000000,
+  .EmcW2w                                   = 0x00000000,
+  .EmcR2w                                   = 0x0000000a,
+  .EmcW2r                                   = 0x00000009,
+  .EmcR2p                                   = 0x00000003,
+  .EmcW2p                                   = 0x0000000d,
+  .EmcRdRcd                                 = 0x00000009,
+  .EmcWrRcd                                 = 0x00000009,
+  .EmcRrd                                   = 0x00000005,
+  .EmcRext                                  = 0x00000004,
+  .EmcWext                                  = 0x00000000,
+  .EmcWdv                                   = 0x00000002,
+  .EmcWdvMask                               = 0x00000002,
+  .EmcQUse                                  = 0x00000008,
+  .EmcQuseWidth                             = 0x00000003,
+  .EmcIbdly                                 = 0x00000000,
+  .EmcEInput                                = 0x00000003,
+  .EmcEInputDuration                        = 0x0000000a,
+  .EmcPutermExtra                           = 0x00050000,
+  .EmcPutermWidth                           = 0x00000004,
+  .EmcPutermAdj                             = 0x00000000,
+  .EmcCdbCntl1                              = 0x00000000,
+  .EmcCdbCntl2                              = 0x00000000,
+  .EmcCdbCntl3                              = 0x00000000,
+  .EmcQRst                                  = 0x00000002,
+  .EmcQSafe                                 = 0x00000011,
+  .EmcRdv                                   = 0x00000015,
+  .EmcRdvMask                               = 0x00000017,
+  .EmcQpop                                  = 0x0000000d,
+  .EmcCtt                                   = 0x00000000,
+  .EmcCttDuration                           = 0x00000004,
+  .EmcRefresh                               = 0x000007cd,
+  .EmcBurstRefreshNum                       = 0x00000000,
+  .EmcPreRefreshReqCnt                      = 0x000001f3,
+  .EmcPdEx2Wr                               = 0x00000003,
+  .EmcPdEx2Rd                               = 0x00000003,
+  .EmcPChg2Pden                             = 0x00000009,
+  .EmcAct2Pden                              = 0x00000000,
+  .EmcAr2Pden                               = 0x00000001,
+  .EmcRw2Pden                               = 0x00000011,
+  .EmcTxsr                                  = 0x0000004a,
+  .EmcTxsrDll                               = 0x0000004a,
+  .EmcTcke                                  = 0x00000004,
+  .EmcTckesr                                = 0x00000008,
+  .EmcTpd                                   = 0x00000004,
+  .EmcTfaw                                  = 0x00000019,
+  .EmcTrpab                                 = 0x0000000c,
+  .EmcTClkStable                            = 0x00000003,
+  .EmcTClkStop                              = 0x00000003,
+  .EmcTRefBw                                = 0x00000895,
+  .EmcFbioCfg5                              = 0x1363a096,
+  .EmcFbioCfg6                              = 0x00000000,
+  .EmcFbioSpare                             = 0x00000000,
+  .EmcCfgRsv                                = 0xff00ff00,
+  .EmcMrs                                   = 0x00000000,
+  .EmcEmrs                                  = 0x00000000,
+  .EmcEmrs2                                 = 0x00000000,
+  .EmcEmrs3                                 = 0x00000000,
+  .EmcMrw1                                  = 0x000100c3,
+  .EmcMrw2                                  = 0x00020006,
+  .EmcMrw3                                  = 0x00030001,
+  .EmcMrw4                                  = 0x800b0000,
+  .EmcMrwExtra                              = 0x000100c3,
+  .EmcWarmBootMrwExtra                      = 0x00020006,
+  .EmcWarmBootExtraModeRegWriteEnable       = 0x00000000,
+  .EmcExtraModeRegWriteEnable               = 0x00000000,
+  .EmcMrwResetCommand                       = 0x003f00fc,
+  .EmcMrwResetNInitWait                     = 0x0000000a,
+  .EmcMrsWaitCnt                            = 0x02100013,
+  .EmcMrsWaitCnt2                           = 0x02100013,
+  .EmcCfg                                   = 0xf3300000,
+  .EmcCfg2                                  = 0x0000089f,
+  .EmcCfgPipe                               = 0x000042a0,
+  .EmcDbg                                   = 0x01000c00,
+  .EmcCmdQ                                  = 0x10004408,
+  .EmcMc2EmcQ                               = 0x06000404,
+  .EmcDynSelfRefControl                     = 0x800010b3,
+  .AhbArbitrationXbarCtrlMemInitDone        = 0x00000001,
+  .EmcCfgDigDll                             = 0xe01200b9,
+  .EmcCfgDigDllPeriod                       = 0x00008000,
+  .EmcDevSelect                             = 0x00000000,
+  .EmcSelDpdCtrl                            = 0x0004001c,
+  .EmcDllXformDqs0                          = 0x007f400a,
+  .EmcDllXformDqs1                          = 0x007f400a,
+  .EmcDllXformDqs2                          = 0x007f400a,
+  .EmcDllXformDqs3                          = 0x007f400a,
+  .EmcDllXformDqs4                          = 0x007f400a,
+  .EmcDllXformDqs5                          = 0x007f400a,
+  .EmcDllXformDqs6                          = 0x007f400a,
+  .EmcDllXformDqs7                          = 0x007f400a,
+  .EmcDllXformDqs8                          = 0x007f400a,
+  .EmcDllXformDqs9                          = 0x007f400a,
+  .EmcDllXformDqs10                         = 0x007f400a,
+  .EmcDllXformDqs11                         = 0x007f400a,
+  .EmcDllXformDqs12                         = 0x007f400a,
+  .EmcDllXformDqs13                         = 0x007f400a,
+  .EmcDllXformDqs14                         = 0x007f400a,
+  .EmcDllXformDqs15                         = 0x007f400a,
+  .EmcDllXformQUse0                         = 0x00000000,
+  .EmcDllXformQUse1                         = 0x00000000,
+  .EmcDllXformQUse2                         = 0x00000000,
+  .EmcDllXformQUse3                         = 0x00000000,
+  .EmcDllXformQUse4                         = 0x00000000,
+  .EmcDllXformQUse5                         = 0x00000000,
+  .EmcDllXformQUse6                         = 0x00000000,
+  .EmcDllXformQUse7                         = 0x00000000,
+  .EmcDllXformAddr0                         = 0x00024000,
+  .EmcDllXformAddr1                         = 0x00024000,
+  .EmcDllXformAddr2                         = 0x00000006,
+  .EmcDllXformAddr3                         = 0x00024000,
+  .EmcDllXformAddr4                         = 0x00024000,
+  .EmcDllXformAddr5                         = 0x00000006,
+  .EmcDllXformQUse8                         = 0x00000000,
+  .EmcDllXformQUse9                         = 0x00000000,
+  .EmcDllXformQUse10                        = 0x00000000,
+  .EmcDllXformQUse11                        = 0x00000000,
+  .EmcDllXformQUse12                        = 0x00000000,
+  .EmcDllXformQUse13                        = 0x00000000,
+  .EmcDllXformQUse14                        = 0x00000000,
+  .EmcDllXformQUse15                        = 0x00000000,
+  .EmcDliTrimTxDqs0                         = 0x0000000b,
+  .EmcDliTrimTxDqs1                         = 0x0000000b,
+  .EmcDliTrimTxDqs2                         = 0x00000008,
+  .EmcDliTrimTxDqs3                         = 0x0000000b,
+  .EmcDliTrimTxDqs4                         = 0x0000000b,
+  .EmcDliTrimTxDqs5                         = 0x00000008,
+  .EmcDliTrimTxDqs6                         = 0x0000000b,
+  .EmcDliTrimTxDqs7                         = 0x0000000b,
+  .EmcDliTrimTxDqs8                         = 0x0000000b,
+  .EmcDliTrimTxDqs9                         = 0x0000000b,
+  .EmcDliTrimTxDqs10                        = 0x00000008,
+  .EmcDliTrimTxDqs11                        = 0x0000000b,
+  .EmcDliTrimTxDqs12                        = 0x0000000b,
+  .EmcDliTrimTxDqs13                        = 0x00000008,
+  .EmcDliTrimTxDqs14                        = 0x0000000b,
+  .EmcDliTrimTxDqs15                        = 0x0000000b,
+  .EmcDllXformDq0                           = 0x0000000c,
+  .EmcDllXformDq1                           = 0x0000000c,
+  .EmcDllXformDq2                           = 0x0000000c,
+  .EmcDllXformDq3                           = 0x0000000c,
+  .EmcDllXformDq4                           = 0x0000000c,
+  .EmcDllXformDq5                           = 0x0000000c,
+  .EmcDllXformDq6                           = 0x0000000c,
+  .EmcDllXformDq7                           = 0x0000000c,
+  .WarmBootWait                             = 0x00000001,
+  .EmcCttTermCtrl                           = 0x00000802,
+  .EmcOdtWrite                              = 0x00000000,
+  .EmcOdtRead                               = 0x00000000,
+  .EmcZcalInterval                          = 0x00064000,
+  .EmcZcalWaitCnt                           = 0x00000034,
+  .EmcZcalMrwCmd                            = 0x000a0056,
+  .EmcMrsResetDll                           = 0x00000000,
+  .EmcZcalInitDev0                          = 0x840a00ff,
+  .EmcZcalInitDev1                          = 0x440a00ff,
+  .EmcZcalInitWait                          = 0x00000001,
+  .EmcZcalWarmColdBootEnables               = 0x00000003,
+  .EmcMrwLpddr2ZcalWarmBoot                 = 0x040a00ab,
+  .EmcZqCalDdr3WarmBoot                     = 0x00000000,
+  .EmcZcalWarmBootWait                      = 0x00000001,
+  .EmcMrsWarmBootEnable                     = 0x00000001,
+  .EmcMrsResetDllWait                       = 0x00000000,
+  .EmcMrsExtra                              = 0x00000000,
+  .EmcWarmBootMrsExtra                      = 0x00000000,
+  .EmcEmrsDdr2DllEnable                     = 0x00000000,
+  .EmcMrsDdr2DllReset                       = 0x00000000,
+  .EmcEmrsDdr2OcdCalib                      = 0x00000000,
+  .EmcDdr2Wait                              = 0x00000000,
+  .EmcClkenOverride                         = 0x00000000,
+  .McDisExtraSnapLevels                     = 0x00000000,
+  .EmcExtraRefreshNum                       = 0x00000002,
+  .EmcClkenOverrideAllWarmBoot              = 0x00000000,
+  .McClkenOverrideAllWarmBoot               = 0x00000000,
+  .EmcCfgDigDllPeriodWarmBoot               = 0x00000003,
+  .PmcVddpSel                               = 0x00000001,
+  .PmcVddpSelWait                           = 0x00000002,
+  .PmcDdrPwr                                = 0x00000003,
+  .PmcDdrCfg                                = 0x00001000,
+  .PmcIoDpd3Req                             = 0x4ffefef7,
+  .PmcIoDpd3ReqWait                         = 0x00000000,
+  .PmcRegShort                              = 0x0000330f,
+  .PmcNoIoPower                             = 0x00000000,
+  .PmcPorDpdCtrlWait                        = 0x00000001,
+  .EmcXm2CmdPadCtrl                         = 0x00000220,
+  .EmcXm2CmdPadCtrl2                        = 0x770c0000,
+  .EmcXm2CmdPadCtrl3                        = 0x050c0000,
+  .EmcXm2CmdPadCtrl4                        = 0x00000000,
+  .EmcXm2CmdPadCtrl5                        = 0x00100100,
+  .EmcXm2DqsPadCtrl                         = 0x770c1414,
+  .EmcXm2DqsPadCtrl2                        = 0x0123123d,
+  .EmcXm2DqsPadCtrl3                        = 0x51451420,
+  .EmcXm2DqsPadCtrl4                        = 0x00514514,
+  .EmcXm2DqsPadCtrl5                        = 0x00514514,
+  .EmcXm2DqsPadCtrl6                        = 0x51451400,
+  .EmcXm2DqPadCtrl                          = 0x770c2990,
+  .EmcXm2DqPadCtrl2                         = 0x00000000,
+  .EmcXm2DqPadCtrl3                         = 0x00000000,
+  .EmcXm2ClkPadCtrl                         = 0x77ffc004,
+  .EmcXm2ClkPadCtrl2                        = 0x00000000,
+  .EmcXm2CompPadCtrl                        = 0x81f1f008,
+  .EmcXm2VttGenPadCtrl                      = 0x07070000,
+  .EmcXm2VttGenPadCtrl2                     = 0x0000003f,
+  .EmcXm2VttGenPadCtrl3                     = 0x015ddddd,
+  .EmcAcpdControl                           = 0x00000000,
+  .EmcSwizzleRank0ByteCfg                   = 0x00001032,
+  .EmcSwizzleRank0Byte0                     = 0x53067142,
+  .EmcSwizzleRank0Byte1                     = 0x73025146,
+  .EmcSwizzleRank0Byte2                     = 0x20136475,
+  .EmcSwizzleRank0Byte3                     = 0x46273150,
+  .EmcSwizzleRank1ByteCfg                   = 0x00003210,
+  .EmcSwizzleRank1Byte0                     = 0x73451026,
+  .EmcSwizzleRank1Byte1                     = 0x73025146,
+  .EmcSwizzleRank1Byte2                     = 0x20641735,
+  .EmcSwizzleRank1Byte3                     = 0x42136075,
+  .EmcDsrVttgenDrv                          = 0x0000003f,
+  .EmcTxdsrvttgen                           = 0x00000000,
+  .EmcBgbiasCtl0                            = 0x00000000,
+  .McEmemAdrCfg                             = 0x00000001,
+  .McEmemAdrCfgDev0                         = 0x00080304,
+  .McEmemAdrCfgDev1                         = 0x00080304,
+  .McEmemAdrCfgBankMask0                    = 0x00001248,
+  .McEmemAdrCfgBankMask1                    = 0x00002490,
+  .McEmemAdrCfgBankMask2                    = 0x00000920,
+  .McEmemAdrCfgBankSwizzle3                 = 0x00000001,
+  .McEmemCfg                                = 0x00001000,
+  .McEmemArbCfg                             = 0x0f000007,
+  .McEmemArbOutstandingReq                  = 0x80000040,
+  .McEmemArbTimingRcd                       = 0x00000003,
+  .McEmemArbTimingRp                        = 0x00000004,
+  .McEmemArbTimingRc                        = 0x00000010,
+  .McEmemArbTimingRas                       = 0x0000000a,
+  .McEmemArbTimingFaw                       = 0x0000000d,
+  .McEmemArbTimingRrd                       = 0x00000002,
+  .McEmemArbTimingRap2Pre                   = 0x00000002,
+  .McEmemArbTimingWap2Pre                   = 0x00000009,
+  .McEmemArbTimingR2R                       = 0x00000003,
+  .McEmemArbTimingW2W                       = 0x00000001,
+  .McEmemArbTimingR2W                       = 0x00000006,
+  .McEmemArbTimingW2R                       = 0x00000006,
+  .McEmemArbDaTurns                         = 0x06060103,
+  .McEmemArbDaCovers                        = 0x00120b10,
+  .McEmemArbMisc0                           = 0x71c81811,
+  .McEmemArbMisc1                           = 0x70000f03,
+  .McEmemArbRing1Throttle                   = 0x001f0000,
+  .McEmemArbOverride                        = 0x10000000,
+  .McEmemArbOverride1                       = 0x00000000,
+  .McEmemArbRsv                             = 0xff00ff00,
+  .McClkenOverride                          = 0x00000000,
+  .McStatControl                            = 0x00000000,
+  .McDisplaySnapRing                        = 0x00000003,
+  .McVideoProtectBom                        = 0xfff00000,
+  .McVideoProtectBomAdrHi                   = 0x00000000,
+  .McVideoProtectSizeMb                     = 0x00000000,
+  .McVideoProtectVprOverride                = 0xe4bac743,
+  .McVideoProtectVprOverride1               = 0x00000013,
+  .McVideoProtectGpuOverride0               = 0x00000000,
+  .McVideoProtectGpuOverride1               = 0x00000000,
+  .McSecCarveoutBom                         = 0xfff00000,
+  .McSecCarveoutAdrHi                       = 0x00000000,
+  .McSecCarveoutSizeMb                      = 0x00000000,
+  .McVideoProtectWriteAccess                = 0x00000000,
+  .McSecCarveoutProtectWriteAccess          = 0x00000000,
+  .EmcCaTrainingEnable                      = 0x00000001,
+  .EmcCaTrainingTimingCntl1                 = 0x09257359,
+  .EmcCaTrainingTimingCntl2                 = 0x00000017,
+  .SwizzleRankByteEncode                    = 0x00000008,
+  .BootRomPatchControl                      = 0x00000000,
+  .BootRomPatchData                         = 0x00000000,
+  .McMtsCarveoutBom                         = 0x78000000,
+  .McMtsCarveoutAdrHi                       = 0x00000001,
+  .McMtsCarveoutSizeMb                      = 0x00000080,
+  .McMtsCarveoutRegCtrl                     = 0x00000001,
+},
diff --git a/src/mainboard/google/rush_ryu/bct/sdram-micron-4GB-924.inc b/src/mainboard/google/rush_ryu/bct/sdram-micron-4GB-924.inc
new file mode 100644
index 0000000..5f2594b
--- /dev/null
+++ b/src/mainboard/google/rush_ryu/bct/sdram-micron-4GB-924.inc
@@ -0,0 +1,311 @@
+{ /* generated from sdram-micron-4GB-924.cfg; do not edit. This is Micron LPDDR3 */
+  .MemoryType                               = NvBootMemoryType_LpDdr2,
+  .PllMInputDivider                         = 0x00000001,
+  .PllMFeedbackDivider                      = 0x0000004d,
+  .PllMStableTime                           = 0x0000012c,
+  .PllMSetupControl                         = 0x00000000,
+  .PllMSelectDiv2                           = 0x00000000,
+  .PllMPDLshiftPh45                         = 0x00000001,
+  .PllMPDLshiftPh90                         = 0x00000001,
+  .PllMPDLshiftPh135                        = 0x00000001,
+  .PllMKCP                                  = 0x00000000,
+  .PllMKVCO                                 = 0x00000000,
+  .EmcBctSpare0                             = 0x00000000,
+  .EmcBctSpare1                             = 0x00000000,
+  .EmcBctSpare2                             = 0x00000000,
+  .EmcBctSpare3                             = 0x00000000,
+  .EmcBctSpare4                             = 0x00000000,
+  .EmcBctSpare5                             = 0x00000000,
+  .EmcBctSpare6                             = 0x00000000,
+  .EmcBctSpare7                             = 0x00000000,
+  .EmcBctSpare8                             = 0x00000000,
+  .EmcBctSpare9                             = 0x00000000,
+  .EmcBctSpare10                            = 0x00000000,
+  .EmcBctSpare11                            = 0x00000000,
+  .EmcClockSource                           = 0x80000000,
+  .EmcAutoCalInterval                       = 0x001fffff,
+  .EmcAutoCalConfig                         = 0xa1430000,
+  .EmcAutoCalConfig2                        = 0x00000000,
+  .EmcAutoCalConfig3                        = 0x00000000,
+  .EmcAutoCalWait                           = 0x00000190,
+  .EmcAdrCfg                                = 0x00000001,
+  .EmcPinProgramWait                        = 0x00000000,
+  .EmcPinExtraWait                          = 0x00000000,
+  .EmcTimingControlWait                     = 0x00000000,
+  .EmcRc                                    = 0x00000037,
+  .EmcRfc                                   = 0x00000078,
+  .EmcRfcSlr                                = 0x00000000,
+  .EmcRas                                   = 0x00000026,
+  .EmcRp                                    = 0x00000010,
+  .EmcR2r                                   = 0x00000000,
+  .EmcW2w                                   = 0x00000000,
+  .EmcR2w                                   = 0x00000010,
+  .EmcW2r                                   = 0x00000010,
+  .EmcR2p                                   = 0x00000006,
+  .EmcW2p                                   = 0x00000017,
+  .EmcRdRcd                                 = 0x00000010,
+  .EmcWrRcd                                 = 0x00000010,
+  .EmcRrd                                   = 0x00000009,
+  .EmcRext                                  = 0x00000005,
+  .EmcWext                                  = 0x00000000,
+  .EmcWdv                                   = 0x00000007,
+  .EmcWdvMask                               = 0x00000007,
+  .EmcQUse                                  = 0x00000011,
+  .EmcQuseWidth                             = 0x00000004,
+  .EmcIbdly                                 = 0x00000000,
+  .EmcEInput                                = 0x00000006,
+  .EmcEInputDuration                        = 0x00000011,
+  .EmcPutermExtra                           = 0x000e0000,
+  .EmcPutermWidth                           = 0x00000006,
+  .EmcPutermAdj                             = 0x00000000,
+  .EmcCdbCntl1                              = 0x00000000,
+  .EmcCdbCntl2                              = 0x00000000,
+  .EmcCdbCntl3                              = 0x00000000,
+  .EmcQRst                                  = 0x00000005,
+  .EmcQSafe                                 = 0x00000018,
+  .EmcRdv                                   = 0x00000020,
+  .EmcRdvMask                               = 0x00000022,
+  .EmcQpop                                  = 0x00000017,
+  .EmcCtt                                   = 0x00000000,
+  .EmcCttDuration                           = 0x00000006,
+  .EmcRefresh                               = 0x00000dd4,
+  .EmcBurstRefreshNum                       = 0x00000000,
+  .EmcPreRefreshReqCnt                      = 0x00000375,
+  .EmcPdEx2Wr                               = 0x00000006,
+  .EmcPdEx2Rd                               = 0x00000006,
+  .EmcPChg2Pden                             = 0x00000010,
+  .EmcAct2Pden                              = 0x00000000,
+  .EmcAr2Pden                               = 0x00000001,
+  .EmcRw2Pden                               = 0x0000001b,
+  .EmcTxsr                                  = 0x00000082,
+  .EmcTxsrDll                               = 0x00000082,
+  .EmcTcke                                  = 0x00000007,
+  .EmcTckesr                                = 0x0000000e,
+  .EmcTpd                                   = 0x00000007,
+  .EmcTfaw                                  = 0x0000002d,
+  .EmcTrpab                                 = 0x00000014,
+  .EmcTClkStable                            = 0x00000003,
+  .EmcTClkStop                              = 0x00000003,
+  .EmcTRefBw                                = 0x00000f04,
+  .EmcFbioCfg5                              = 0x1363a896,
+  .EmcFbioCfg6                              = 0x00000000,
+  .EmcFbioSpare                             = 0x00000000,
+  .EmcCfgRsv                                = 0xff00ff00,
+  .EmcMrs                                   = 0x00000000,
+  .EmcEmrs                                  = 0x00000000,
+  .EmcEmrs2                                 = 0x00000000,
+  .EmcEmrs3                                 = 0x00000000,
+  .EmcMrw1                                  = 0x00010083,
+  .EmcMrw2                                  = 0x0002001c,
+  .EmcMrw3                                  = 0x00030001,
+  .EmcMrw4                                  = 0x800b0000,
+  .EmcMrwExtra                              = 0x00010083,
+  .EmcWarmBootMrwExtra                      = 0x0002001c,
+  .EmcWarmBootExtraModeRegWriteEnable       = 0x00000000,
+  .EmcExtraModeRegWriteEnable               = 0x00000000,
+  .EmcMrwResetCommand                       = 0x003f00fc,
+  .EmcMrwResetNInitWait                     = 0x0000000a,
+  .EmcMrsWaitCnt                            = 0x039c0019,
+  .EmcMrsWaitCnt2                           = 0x039c0019,
+  .EmcCfg                                   = 0xf3300000,
+  .EmcCfg2                                  = 0x0000089f,
+  .EmcCfgPipe                               = 0x00004080,
+  .EmcDbg                                   = 0x01000c00,
+  .EmcCmdQ                                  = 0x10004408,
+  .EmcMc2EmcQ                               = 0x06000404,
+  .EmcDynSelfRefControl                     = 0x80001c77,
+  .AhbArbitrationXbarCtrlMemInitDone        = 0x00000001,
+  .EmcCfgDigDll                             = 0xe00400b9,
+  .EmcCfgDigDllPeriod                       = 0x00008000,
+  .EmcDevSelect                             = 0x00000000,
+  .EmcSelDpdCtrl                            = 0x0004001c,
+  .EmcDllXformDqs0                          = 0x00004006,
+  .EmcDllXformDqs1                          = 0x007f800c,
+  .EmcDllXformDqs2                          = 0x007fc008,
+  .EmcDllXformDqs3                          = 0x007f400c,
+  .EmcDllXformDqs4                          = 0x007fc006,
+  .EmcDllXformDqs5                          = 0x00000006,
+  .EmcDllXformDqs6                          = 0x007f800a,
+  .EmcDllXformDqs7                          = 0x007f800c,
+  .EmcDllXformDqs8                          = 0x007f400a,
+  .EmcDllXformDqs9                          = 0x007f400a,
+  .EmcDllXformDqs10                         = 0x007f400a,
+  .EmcDllXformDqs11                         = 0x007f400a,
+  .EmcDllXformDqs12                         = 0x007f400a,
+  .EmcDllXformDqs13                         = 0x007f400a,
+  .EmcDllXformDqs14                         = 0x007f400a,
+  .EmcDllXformDqs15                         = 0x007f400a,
+  .EmcDllXformQUse0                         = 0x00000000,
+  .EmcDllXformQUse1                         = 0x00000000,
+  .EmcDllXformQUse2                         = 0x00000000,
+  .EmcDllXformQUse3                         = 0x00000000,
+  .EmcDllXformQUse4                         = 0x00000000,
+  .EmcDllXformQUse5                         = 0x00000000,
+  .EmcDllXformQUse6                         = 0x00000000,
+  .EmcDllXformQUse7                         = 0x00000000,
+  .EmcDllXformAddr0                         = 0x00018004,
+  .EmcDllXformAddr1                         = 0x00018004,
+  .EmcDllXformAddr2                         = 0x00000008,
+  .EmcDllXformAddr3                         = 0x00014004,
+  .EmcDllXformAddr4                         = 0x0001c002,
+  .EmcDllXformAddr5                         = 0x00000008,
+  .EmcDllXformQUse8                         = 0x00000000,
+  .EmcDllXformQUse9                         = 0x00000000,
+  .EmcDllXformQUse10                        = 0x00000000,
+  .EmcDllXformQUse11                        = 0x00000000,
+  .EmcDllXformQUse12                        = 0x00000000,
+  .EmcDllXformQUse13                        = 0x00000000,
+  .EmcDllXformQUse14                        = 0x00000000,
+  .EmcDllXformQUse15                        = 0x00000000,
+  .EmcDliTrimTxDqs0                         = 0x00000008,
+  .EmcDliTrimTxDqs1                         = 0x00000008,
+  .EmcDliTrimTxDqs2                         = 0x00000008,
+  .EmcDliTrimTxDqs3                         = 0x00000008,
+  .EmcDliTrimTxDqs4                         = 0x00000008,
+  .EmcDliTrimTxDqs5                         = 0x00000008,
+  .EmcDliTrimTxDqs6                         = 0x00000008,
+  .EmcDliTrimTxDqs7                         = 0x00000008,
+  .EmcDliTrimTxDqs8                         = 0x00000008,
+  .EmcDliTrimTxDqs9                         = 0x00000008,
+  .EmcDliTrimTxDqs10                        = 0x00000008,
+  .EmcDliTrimTxDqs11                        = 0x00000008,
+  .EmcDliTrimTxDqs12                        = 0x00000008,
+  .EmcDliTrimTxDqs13                        = 0x00000008,
+  .EmcDliTrimTxDqs14                        = 0x00000008,
+  .EmcDliTrimTxDqs15                        = 0x00000008,
+  .EmcDllXformDq0                           = 0x0000000a,
+  .EmcDllXformDq1                           = 0x0000000a,
+  .EmcDllXformDq2                           = 0x0000000a,
+  .EmcDllXformDq3                           = 0x0000000a,
+  .EmcDllXformDq4                           = 0x0000000a,
+  .EmcDllXformDq5                           = 0x0000000a,
+  .EmcDllXformDq6                           = 0x0000000a,
+  .EmcDllXformDq7                           = 0x0000000a,
+  .WarmBootWait                             = 0x00000001,
+  .EmcCttTermCtrl                           = 0x00000802,
+  .EmcOdtWrite                              = 0x00000000,
+  .EmcOdtRead                               = 0x00000000,
+  .EmcZcalInterval                          = 0x00064000,
+  .EmcZcalWaitCnt                           = 0x00000058,
+  .EmcZcalMrwCmd                            = 0x000a0056,
+  .EmcMrsResetDll                           = 0x00000000,
+  .EmcZcalInitDev0                          = 0x840a00ff,
+  .EmcZcalInitDev1                          = 0x440a00ff,
+  .EmcZcalInitWait                          = 0x00000001,
+  .EmcZcalWarmColdBootEnables               = 0x00000003,
+  .EmcMrwLpddr2ZcalWarmBoot                 = 0x040a00ab,
+  .EmcZqCalDdr3WarmBoot                     = 0x00000000,
+  .EmcZcalWarmBootWait                      = 0x00000001,
+  .EmcMrsWarmBootEnable                     = 0x00000001,
+  .EmcMrsResetDllWait                       = 0x00000000,
+  .EmcMrsExtra                              = 0x00000000,
+  .EmcWarmBootMrsExtra                      = 0x00000000,
+  .EmcEmrsDdr2DllEnable                     = 0x00000000,
+  .EmcMrsDdr2DllReset                       = 0x00000000,
+  .EmcEmrsDdr2OcdCalib                      = 0x00000000,
+  .EmcDdr2Wait                              = 0x00000000,
+  .EmcClkenOverride                         = 0x00000000,
+  .McDisExtraSnapLevels                     = 0x00000000,
+  .EmcExtraRefreshNum                       = 0x00000002,
+  .EmcClkenOverrideAllWarmBoot              = 0x00000000,
+  .McClkenOverrideAllWarmBoot               = 0x00000000,
+  .EmcCfgDigDllPeriodWarmBoot               = 0x00000003,
+  .PmcVddpSel                               = 0x00000001,
+  .PmcVddpSelWait                           = 0x00000002,
+  .PmcDdrPwr                                = 0x00000003,
+  .PmcDdrCfg                                = 0x00001000,
+  .PmcIoDpd3Req                             = 0x4ffefef7,
+  .PmcIoDpd3ReqWait                         = 0x00000000,
+  .PmcRegShort                              = 0x0000330f,
+  .PmcNoIoPower                             = 0x00000000,
+  .PmcPorDpdCtrlWait                        = 0x00000001,
+  .EmcXm2CmdPadCtrl                         = 0x00000220,
+  .EmcXm2CmdPadCtrl2                        = 0x770c0000,
+  .EmcXm2CmdPadCtrl3                        = 0x050c0000,
+  .EmcXm2CmdPadCtrl4                        = 0x00000000,
+  .EmcXm2CmdPadCtrl5                        = 0x00100100,
+  .EmcXm2DqsPadCtrl                         = 0x770c1414,
+  .EmcXm2DqsPadCtrl2                        = 0x0120103d,
+  .EmcXm2DqsPadCtrl3                        = 0x65965920,
+  .EmcXm2DqsPadCtrl4                        = 0x00596596,
+  .EmcXm2DqsPadCtrl5                        = 0x00596596,
+  .EmcXm2DqsPadCtrl6                        = 0x65965900,
+  .EmcXm2DqPadCtrl                          = 0x770c2990,
+  .EmcXm2DqPadCtrl2                         = 0x00000000,
+  .EmcXm2DqPadCtrl3                         = 0x00000000,
+  .EmcXm2ClkPadCtrl                         = 0x77ffc004,
+  .EmcXm2ClkPadCtrl2                        = 0x00000000,
+  .EmcXm2CompPadCtrl                        = 0x81f1f008,
+  .EmcXm2VttGenPadCtrl                      = 0x07070000,
+  .EmcXm2VttGenPadCtrl2                     = 0x00000000,
+  .EmcXm2VttGenPadCtrl3                     = 0x015ddddd,
+  .EmcAcpdControl                           = 0x00000000,
+  .EmcSwizzleRank0ByteCfg                   = 0x00001032,
+  .EmcSwizzleRank0Byte0                     = 0x53067142,
+  .EmcSwizzleRank0Byte1                     = 0x73025146,
+  .EmcSwizzleRank0Byte2                     = 0x20136475,
+  .EmcSwizzleRank0Byte3                     = 0x46273150,
+  .EmcSwizzleRank1ByteCfg                   = 0x00003210,
+  .EmcSwizzleRank1Byte0                     = 0x73451026,
+  .EmcSwizzleRank1Byte1                     = 0x73025146,
+  .EmcSwizzleRank1Byte2                     = 0x20641735,
+  .EmcSwizzleRank1Byte3                     = 0x42136075,
+  .EmcDsrVttgenDrv                          = 0x0000003f,
+  .EmcTxdsrvttgen                           = 0x00000000,
+  .EmcBgbiasCtl0                            = 0x00000000,
+  .McEmemAdrCfg                             = 0x00000001,
+  .McEmemAdrCfgDev0                         = 0x00080304,
+  .McEmemAdrCfgDev1                         = 0x00080304,
+  .McEmemAdrCfgBankMask0                    = 0x00001248,
+  .McEmemAdrCfgBankMask1                    = 0x00002490,
+  .McEmemAdrCfgBankMask2                    = 0x00000920,
+  .McEmemAdrCfgBankSwizzle3                 = 0x00000001,
+  .McEmemCfg                                = 0x00001000,
+  .McEmemArbCfg                             = 0x0e00000d,
+  .McEmemArbOutstandingReq                  = 0x80000040,
+  .McEmemArbTimingRcd                       = 0x00000007,
+  .McEmemArbTimingRp                        = 0x00000008,
+  .McEmemArbTimingRc                        = 0x0000001b,
+  .McEmemArbTimingRas                       = 0x00000012,
+  .McEmemArbTimingFaw                       = 0x00000017,
+  .McEmemArbTimingRrd                       = 0x00000004,
+  .McEmemArbTimingRap2Pre                   = 0x00000004,
+  .McEmemArbTimingWap2Pre                   = 0x0000000e,
+  .McEmemArbTimingR2R                       = 0x00000004,
+  .McEmemArbTimingW2W                       = 0x00000001,
+  .McEmemArbTimingR2W                       = 0x00000009,
+  .McEmemArbTimingW2R                       = 0x00000009,
+  .McEmemArbDaTurns                         = 0x09090104,
+  .McEmemArbDaCovers                        = 0x001e141b,
+  .McEmemArbMisc0                           = 0x71ae2a1c,
+  .McEmemArbMisc1                           = 0x70000f02,
+  .McEmemArbRing1Throttle                   = 0x001f0000,
+  .McEmemArbOverride                        = 0x10000000,
+  .McEmemArbOverride1                       = 0x00000000,
+  .McEmemArbRsv                             = 0xff00ff00,
+  .McClkenOverride                          = 0x00000000,
+  .McStatControl                            = 0x00000000,
+  .McDisplaySnapRing                        = 0x00000003,
+  .McVideoProtectBom                        = 0xfff00000,
+  .McVideoProtectBomAdrHi                   = 0x00000000,
+  .McVideoProtectSizeMb                     = 0x00000000,
+  .McVideoProtectVprOverride                = 0xe4bac743,
+  .McVideoProtectVprOverride1               = 0x00000013,
+  .McVideoProtectGpuOverride0               = 0x00000000,
+  .McVideoProtectGpuOverride1               = 0x00000000,
+  .McSecCarveoutBom                         = 0xfff00000,
+  .McSecCarveoutAdrHi                       = 0x00000000,
+  .McSecCarveoutSizeMb                      = 0x00000000,
+  .McVideoProtectWriteAccess                = 0x00000000,
+  .McSecCarveoutProtectWriteAccess          = 0x00000000,
+  .EmcCaTrainingEnable                      = 0x00000001,
+  .EmcCaTrainingTimingCntl1                 = 0x09257359,
+  .EmcCaTrainingTimingCntl2                 = 0x00000017,
+  .SwizzleRankByteEncode                    = 0x00000008,
+  .BootRomPatchControl                      = 0x00000000,
+  .BootRomPatchData                         = 0x00000000,
+  .McMtsCarveoutBom                         = 0x78000000,
+  .McMtsCarveoutAdrHi                       = 0x00000001,
+  .McMtsCarveoutSizeMb                      = 0x00000080,
+  .McMtsCarveoutRegCtrl                     = 0x00000001,
+},
diff --git a/src/mainboard/google/rush_ryu/bct/sdram-samsung-4GB-924.inc b/src/mainboard/google/rush_ryu/bct/sdram-samsung-4GB-924.inc
new file mode 100644
index 0000000..8f19db2
--- /dev/null
+++ b/src/mainboard/google/rush_ryu/bct/sdram-samsung-4GB-924.inc
@@ -0,0 +1,311 @@
+{ /* generated from sdram-4GB-924.cfg; do not edit. This is SAMSUNG LPDDR3 */
+  .MemoryType                               = NvBootMemoryType_LpDdr2,
+  .PllMInputDivider                         = 0x00000001,
+  .PllMFeedbackDivider                      = 0x0000004d,
+  .PllMStableTime                           = 0x0000012c,
+  .PllMSetupControl                         = 0x00000000,
+  .PllMSelectDiv2                           = 0x00000000,
+  .PllMPDLshiftPh45                         = 0x00000001,
+  .PllMPDLshiftPh90                         = 0x00000001,
+  .PllMPDLshiftPh135                        = 0x00000001,
+  .PllMKCP                                  = 0x00000000,
+  .PllMKVCO                                 = 0x00000000,
+  .EmcBctSpare0                             = 0x00000000,
+  .EmcBctSpare1                             = 0x00000000,
+  .EmcBctSpare2                             = 0x00000000,
+  .EmcBctSpare3                             = 0x00000000,
+  .EmcBctSpare4                             = 0x00000000,
+  .EmcBctSpare5                             = 0x00000000,
+  .EmcBctSpare6                             = 0x00000000,
+  .EmcBctSpare7                             = 0x00000000,
+  .EmcBctSpare8                             = 0x00000000,
+  .EmcBctSpare9                             = 0x00000000,
+  .EmcBctSpare10                            = 0x00000000,
+  .EmcBctSpare11                            = 0x00000000,
+  .EmcClockSource                           = 0x80000000,
+  .EmcAutoCalInterval                       = 0x001fffff,
+  .EmcAutoCalConfig                         = 0xa1430000,
+  .EmcAutoCalConfig2                        = 0x00000000,
+  .EmcAutoCalConfig3                        = 0x00000000,
+  .EmcAutoCalWait                           = 0x00000190,
+  .EmcAdrCfg                                = 0x00000001,
+  .EmcPinProgramWait                        = 0x00000000,
+  .EmcPinExtraWait                          = 0x00000000,
+  .EmcTimingControlWait                     = 0x00000000,
+  .EmcRc                                    = 0x00000037,
+  .EmcRfc                                   = 0x00000078,
+  .EmcRfcSlr                                = 0x00000000,
+  .EmcRas                                   = 0x00000026,
+  .EmcRp                                    = 0x00000010,
+  .EmcR2r                                   = 0x00000000,
+  .EmcW2w                                   = 0x00000000,
+  .EmcR2w                                   = 0x00000010,
+  .EmcW2r                                   = 0x00000010,
+  .EmcR2p                                   = 0x00000006,
+  .EmcW2p                                   = 0x00000017,
+  .EmcRdRcd                                 = 0x00000010,
+  .EmcWrRcd                                 = 0x00000010,
+  .EmcRrd                                   = 0x00000009,
+  .EmcRext                                  = 0x00000005,
+  .EmcWext                                  = 0x00000000,
+  .EmcWdv                                   = 0x00000007,
+  .EmcWdvMask                               = 0x00000007,
+  .EmcQUse                                  = 0x00000011,
+  .EmcQuseWidth                             = 0x00000004,
+  .EmcIbdly                                 = 0x00000000,
+  .EmcEInput                                = 0x00000006,
+  .EmcEInputDuration                        = 0x00000011,
+  .EmcPutermExtra                           = 0x000e0000,
+  .EmcPutermWidth                           = 0x00000006,
+  .EmcPutermAdj                             = 0x00000000,
+  .EmcCdbCntl1                              = 0x00000000,
+  .EmcCdbCntl2                              = 0x00000000,
+  .EmcCdbCntl3                              = 0x00000000,
+  .EmcQRst                                  = 0x00000005,
+  .EmcQSafe                                 = 0x00000018,
+  .EmcRdv                                   = 0x00000020,
+  .EmcRdvMask                               = 0x00000022,
+  .EmcQpop                                  = 0x00000017,
+  .EmcCtt                                   = 0x00000000,
+  .EmcCttDuration                           = 0x00000006,
+  .EmcRefresh                               = 0x00000dd4,
+  .EmcBurstRefreshNum                       = 0x00000000,
+  .EmcPreRefreshReqCnt                      = 0x00000375,
+  .EmcPdEx2Wr                               = 0x00000006,
+  .EmcPdEx2Rd                               = 0x00000006,
+  .EmcPChg2Pden                             = 0x00000010,
+  .EmcAct2Pden                              = 0x00000000,
+  .EmcAr2Pden                               = 0x00000001,
+  .EmcRw2Pden                               = 0x0000001b,
+  .EmcTxsr                                  = 0x00000082,
+  .EmcTxsrDll                               = 0x00000082,
+  .EmcTcke                                  = 0x00000007,
+  .EmcTckesr                                = 0x0000000e,
+  .EmcTpd                                   = 0x00000007,
+  .EmcTfaw                                  = 0x0000002d,
+  .EmcTrpab                                 = 0x00000014,
+  .EmcTClkStable                            = 0x00000003,
+  .EmcTClkStop                              = 0x00000003,
+  .EmcTRefBw                                = 0x00000f04,
+  .EmcFbioCfg5                              = 0x1363a896,
+  .EmcFbioCfg6                              = 0x00000000,
+  .EmcFbioSpare                             = 0x00000000,
+  .EmcCfgRsv                                = 0xff00ff00,
+  .EmcMrs                                   = 0x00000000,
+  .EmcEmrs                                  = 0x00000000,
+  .EmcEmrs2                                 = 0x00000000,
+  .EmcEmrs3                                 = 0x00000000,
+  .EmcMrw1                                  = 0x00010083,
+  .EmcMrw2                                  = 0x0002001c,
+  .EmcMrw3                                  = 0x00030001,
+  .EmcMrw4                                  = 0x800b0000,
+  .EmcMrwExtra                              = 0x00010083,
+  .EmcWarmBootMrwExtra                      = 0x0002001c,
+  .EmcWarmBootExtraModeRegWriteEnable       = 0x00000000,
+  .EmcExtraModeRegWriteEnable               = 0x00000000,
+  .EmcMrwResetCommand                       = 0x003f00fc,
+  .EmcMrwResetNInitWait                     = 0x0000000a,
+  .EmcMrsWaitCnt                            = 0x039c0019,
+  .EmcMrsWaitCnt2                           = 0x039c0019,
+  .EmcCfg                                   = 0xf3300000,
+  .EmcCfg2                                  = 0x0000089f,
+  .EmcCfgPipe                               = 0x00004080,
+  .EmcDbg                                   = 0x01000c00,
+  .EmcCmdQ                                  = 0x10004408,
+  .EmcMc2EmcQ                               = 0x06000404,
+  .EmcDynSelfRefControl                     = 0x80001c77,
+  .AhbArbitrationXbarCtrlMemInitDone        = 0x00000001,
+  .EmcCfgDigDll                             = 0xe00400b9,
+  .EmcCfgDigDllPeriod                       = 0x00008000,
+  .EmcDevSelect                             = 0x00000000,
+  .EmcSelDpdCtrl                            = 0x0004001c,
+  .EmcDllXformDqs0                          = 0x007fc00a,
+  .EmcDllXformDqs1                          = 0x007fc00a,
+  .EmcDllXformDqs2                          = 0x007fc00a,
+  .EmcDllXformDqs3                          = 0x007fc00a,
+  .EmcDllXformDqs4                          = 0x007f800c,
+  .EmcDllXformDqs5                          = 0x00000008,
+  .EmcDllXformDqs6                          = 0x007f800a,
+  .EmcDllXformDqs7                          = 0x007fc00a,
+  .EmcDllXformDqs8                          = 0x007f400a,
+  .EmcDllXformDqs9                          = 0x007f400a,
+  .EmcDllXformDqs10                         = 0x007f400a,
+  .EmcDllXformDqs11                         = 0x007f400a,
+  .EmcDllXformDqs12                         = 0x007f400a,
+  .EmcDllXformDqs13                         = 0x007f400a,
+  .EmcDllXformDqs14                         = 0x007f400a,
+  .EmcDllXformDqs15                         = 0x007f400a,
+  .EmcDllXformQUse0                         = 0x00000000,
+  .EmcDllXformQUse1                         = 0x00000000,
+  .EmcDllXformQUse2                         = 0x00000000,
+  .EmcDllXformQUse3                         = 0x00000000,
+  .EmcDllXformQUse4                         = 0x00000000,
+  .EmcDllXformQUse5                         = 0x00000000,
+  .EmcDllXformQUse6                         = 0x00000000,
+  .EmcDllXformQUse7                         = 0x00000000,
+  .EmcDllXformAddr0                         = 0x00018002,
+  .EmcDllXformAddr1                         = 0x00018002,
+  .EmcDllXformAddr2                         = 0x00000008,
+  .EmcDllXformAddr3                         = 0x00018002,
+  .EmcDllXformAddr4                         = 0x00018002,
+  .EmcDllXformAddr5                         = 0x00000008,
+  .EmcDllXformQUse8                         = 0x00000000,
+  .EmcDllXformQUse9                         = 0x00000000,
+  .EmcDllXformQUse10                        = 0x00000000,
+  .EmcDllXformQUse11                        = 0x00000000,
+  .EmcDllXformQUse12                        = 0x00000000,
+  .EmcDllXformQUse13                        = 0x00000000,
+  .EmcDllXformQUse14                        = 0x00000000,
+  .EmcDllXformQUse15                        = 0x00000000,
+  .EmcDliTrimTxDqs0                         = 0x00000008,
+  .EmcDliTrimTxDqs1                         = 0x00000008,
+  .EmcDliTrimTxDqs2                         = 0x00000008,
+  .EmcDliTrimTxDqs3                         = 0x00000008,
+  .EmcDliTrimTxDqs4                         = 0x00000008,
+  .EmcDliTrimTxDqs5                         = 0x00000008,
+  .EmcDliTrimTxDqs6                         = 0x00000008,
+  .EmcDliTrimTxDqs7                         = 0x00000008,
+  .EmcDliTrimTxDqs8                         = 0x00000008,
+  .EmcDliTrimTxDqs9                         = 0x00000008,
+  .EmcDliTrimTxDqs10                        = 0x00000008,
+  .EmcDliTrimTxDqs11                        = 0x00000008,
+  .EmcDliTrimTxDqs12                        = 0x00000008,
+  .EmcDliTrimTxDqs13                        = 0x00000008,
+  .EmcDliTrimTxDqs14                        = 0x00000008,
+  .EmcDliTrimTxDqs15                        = 0x00000008,
+  .EmcDllXformDq0                           = 0x0000000c,
+  .EmcDllXformDq1                           = 0x0000000c,
+  .EmcDllXformDq2                           = 0x0000000c,
+  .EmcDllXformDq3                           = 0x0000000c,
+  .EmcDllXformDq4                           = 0x0000000c,
+  .EmcDllXformDq5                           = 0x0000000c,
+  .EmcDllXformDq6                           = 0x0000000c,
+  .EmcDllXformDq7                           = 0x0000000c,
+  .WarmBootWait                             = 0x00000001,
+  .EmcCttTermCtrl                           = 0x00000802,
+  .EmcOdtWrite                              = 0x00000000,
+  .EmcOdtRead                               = 0x00000000,
+  .EmcZcalInterval                          = 0x00064000,
+  .EmcZcalWaitCnt                           = 0x00000058,
+  .EmcZcalMrwCmd                            = 0x000a0056,
+  .EmcMrsResetDll                           = 0x00000000,
+  .EmcZcalInitDev0                          = 0x840a00ff,
+  .EmcZcalInitDev1                          = 0x440a00ff,
+  .EmcZcalInitWait                          = 0x00000001,
+  .EmcZcalWarmColdBootEnables               = 0x00000003,
+  .EmcMrwLpddr2ZcalWarmBoot                 = 0x040a00ab,
+  .EmcZqCalDdr3WarmBoot                     = 0x00000000,
+  .EmcZcalWarmBootWait                      = 0x00000001,
+  .EmcMrsWarmBootEnable                     = 0x00000001,
+  .EmcMrsResetDllWait                       = 0x00000000,
+  .EmcMrsExtra                              = 0x00000000,
+  .EmcWarmBootMrsExtra                      = 0x00000000,
+  .EmcEmrsDdr2DllEnable                     = 0x00000000,
+  .EmcMrsDdr2DllReset                       = 0x00000000,
+  .EmcEmrsDdr2OcdCalib                      = 0x00000000,
+  .EmcDdr2Wait                              = 0x00000000,
+  .EmcClkenOverride                         = 0x00000000,
+  .McDisExtraSnapLevels                     = 0x00000000,
+  .EmcExtraRefreshNum                       = 0x00000002,
+  .EmcClkenOverrideAllWarmBoot              = 0x00000000,
+  .McClkenOverrideAllWarmBoot               = 0x00000000,
+  .EmcCfgDigDllPeriodWarmBoot               = 0x00000003,
+  .PmcVddpSel                               = 0x00000001,
+  .PmcVddpSelWait                           = 0x00000002,
+  .PmcDdrPwr                                = 0x00000003,
+  .PmcDdrCfg                                = 0x00001000,
+  .PmcIoDpd3Req                             = 0x4ffefef7,
+  .PmcIoDpd3ReqWait                         = 0x00000000,
+  .PmcRegShort                              = 0x0000330f,
+  .PmcNoIoPower                             = 0x00000000,
+  .PmcPorDpdCtrlWait                        = 0x00000001,
+  .EmcXm2CmdPadCtrl                         = 0x00000220,
+  .EmcXm2CmdPadCtrl2                        = 0x770c0000,
+  .EmcXm2CmdPadCtrl3                        = 0x050c0000,
+  .EmcXm2CmdPadCtrl4                        = 0x00000000,
+  .EmcXm2CmdPadCtrl5                        = 0x00100100,
+  .EmcXm2DqsPadCtrl                         = 0x770c1414,
+  .EmcXm2DqsPadCtrl2                        = 0x0120103d,
+  .EmcXm2DqsPadCtrl3                        = 0x55555520,
+  .EmcXm2DqsPadCtrl4                        = 0x00596596,
+  .EmcXm2DqsPadCtrl5                        = 0x00596596,
+  .EmcXm2DqsPadCtrl6                        = 0x55555500,
+  .EmcXm2DqPadCtrl                          = 0x770c2990,
+  .EmcXm2DqPadCtrl2                         = 0x00000000,
+  .EmcXm2DqPadCtrl3                         = 0x00000000,
+  .EmcXm2ClkPadCtrl                         = 0x77ffc004,
+  .EmcXm2ClkPadCtrl2                        = 0x00000000,
+  .EmcXm2CompPadCtrl                        = 0x81f1f008,
+  .EmcXm2VttGenPadCtrl                      = 0x07070000,
+  .EmcXm2VttGenPadCtrl2                     = 0x00000000,
+  .EmcXm2VttGenPadCtrl3                     = 0x015ddddd,
+  .EmcAcpdControl                           = 0x00000000,
+  .EmcSwizzleRank0ByteCfg                   = 0x00001032,
+  .EmcSwizzleRank0Byte0                     = 0x53067142,
+  .EmcSwizzleRank0Byte1                     = 0x73025146,
+  .EmcSwizzleRank0Byte2                     = 0x20136475,
+  .EmcSwizzleRank0Byte3                     = 0x46273150,
+  .EmcSwizzleRank1ByteCfg                   = 0x00003210,
+  .EmcSwizzleRank1Byte0                     = 0x73451026,
+  .EmcSwizzleRank1Byte1                     = 0x73025146,
+  .EmcSwizzleRank1Byte2                     = 0x20641735,
+  .EmcSwizzleRank1Byte3                     = 0x42136075,
+  .EmcDsrVttgenDrv                          = 0x0000003f,
+  .EmcTxdsrvttgen                           = 0x00000000,
+  .EmcBgbiasCtl0                            = 0x00000000,
+  .McEmemAdrCfg                             = 0x00000001,
+  .McEmemAdrCfgDev0                         = 0x00080304,
+  .McEmemAdrCfgDev1                         = 0x00080304,
+  .McEmemAdrCfgBankMask0                    = 0x00001248,
+  .McEmemAdrCfgBankMask1                    = 0x00002490,
+  .McEmemAdrCfgBankMask2                    = 0x00000920,
+  .McEmemAdrCfgBankSwizzle3                 = 0x00000001,
+  .McEmemCfg                                = 0x00001000,
+  .McEmemArbCfg                             = 0x0e00000d,
+  .McEmemArbOutstandingReq                  = 0x80000040,
+  .McEmemArbTimingRcd                       = 0x00000007,
+  .McEmemArbTimingRp                        = 0x00000008,
+  .McEmemArbTimingRc                        = 0x0000001b,
+  .McEmemArbTimingRas                       = 0x00000012,
+  .McEmemArbTimingFaw                       = 0x00000017,
+  .McEmemArbTimingRrd                       = 0x00000004,
+  .McEmemArbTimingRap2Pre                   = 0x00000004,
+  .McEmemArbTimingWap2Pre                   = 0x0000000e,
+  .McEmemArbTimingR2R                       = 0x00000004,
+  .McEmemArbTimingW2W                       = 0x00000001,
+  .McEmemArbTimingR2W                       = 0x00000009,
+  .McEmemArbTimingW2R                       = 0x00000009,
+  .McEmemArbDaTurns                         = 0x09090104,
+  .McEmemArbDaCovers                        = 0x001e141b,
+  .McEmemArbMisc0                           = 0x71ae2a1c,
+  .McEmemArbMisc1                           = 0x70000f02,
+  .McEmemArbRing1Throttle                   = 0x001f0000,
+  .McEmemArbOverride                        = 0x10000000,
+  .McEmemArbOverride1                       = 0x00000000,
+  .McEmemArbRsv                             = 0xff00ff00,
+  .McClkenOverride                          = 0x00000000,
+  .McStatControl                            = 0x00000000,
+  .McDisplaySnapRing                        = 0x00000003,
+  .McVideoProtectBom                        = 0xfff00000,
+  .McVideoProtectBomAdrHi                   = 0x00000000,
+  .McVideoProtectSizeMb                     = 0x00000000,
+  .McVideoProtectVprOverride                = 0xe4bac743,
+  .McVideoProtectVprOverride1               = 0x00000013,
+  .McVideoProtectGpuOverride0               = 0x00000000,
+  .McVideoProtectGpuOverride1               = 0x00000000,
+  .McSecCarveoutBom                         = 0xfff00000,
+  .McSecCarveoutAdrHi                       = 0x00000000,
+  .McSecCarveoutSizeMb                      = 0x00000000,
+  .McVideoProtectWriteAccess                = 0x00000000,
+  .McSecCarveoutProtectWriteAccess          = 0x00000000,
+  .EmcCaTrainingEnable                      = 0x00000001,
+  .EmcCaTrainingTimingCntl1                 = 0x09257359,
+  .EmcCaTrainingTimingCntl2                 = 0x00000017,
+  .SwizzleRankByteEncode                    = 0x00000008,
+  .BootRomPatchControl                      = 0x00000000,
+  .BootRomPatchData                         = 0x00000000,
+  .McMtsCarveoutBom                         = 0x78000000,
+  .McMtsCarveoutAdrHi                       = 0x00000001,
+  .McMtsCarveoutSizeMb                      = 0x00000080,
+  .McMtsCarveoutRegCtrl                     = 0x00000001,
+},
diff --git a/src/mainboard/google/rush_ryu/sdram_configs.c b/src/mainboard/google/rush_ryu/sdram_configs.c
new file mode 100644
index 0000000..66978d3
--- /dev/null
+++ b/src/mainboard/google/rush_ryu/sdram_configs.c
@@ -0,0 +1,49 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2014 Google Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <console/console.h>
+#include <soc/sdram_configs.h>
+#include <stdlib.h>
+
+static const struct sdram_params sdram_configs[] = {
+#include "bct/sdram-samsung-4GB-924.inc"		/* ram_code = 00 */
+#include "bct/sdram-hynix-4GB-924.inc"			/* ram_code = 01 */
+#include "bct/sdram-micron-4GB-924.inc"			/* ram_code = 10 */
+#include "bct/sdram-micron-4GB-528.inc"			/* ram_code = 11 */
+};
+
+const struct sdram_params *get_sdram_config()
+{
+	uint32_t ramcode = sdram_get_ram_code();
+
+	/*
+	 * If we need to apply some special hacks to RAMCODE mapping (ex, by
+	 * board_id), do that now.
+	 */
+
+	ramcode &= 0x3;		/* Only bits 1:0 used on Ryu */
+	printk(BIOS_SPEW, "%s: RAMCODE=%d\n", __func__, ramcode);
+
+	if (ramcode >= ARRAY_SIZE(sdram_configs) ||
+	    sdram_configs[ramcode].MemoryType == NvBootMemoryType_Unused) {
+		die("Invalid RAMCODE.");
+	}
+
+	return &sdram_configs[ramcode];
+}



More information about the coreboot-gerrit mailing list