summaryrefslogtreecommitdiffstats
path: root/procedures/p9
diff options
context:
space:
mode:
authorAndrew Geissler <andrewg@us.ibm.com>2017-05-18 15:35:40 -0500
committerAndrew Geissler <andrewg@us.ibm.com>2017-06-01 18:35:52 -0500
commit2548c7a35ab2ac8d8d73b8b8f5145d64f248ebe1 (patch)
treef7e020ee7cbd6d42340d6a130f922c20e5f7c75f /procedures/p9
parent7ce535cb8cb9e98e64eb307d060e9a6ebf428116 (diff)
downloadopenpower-proc-control-2548c7a35ab2ac8d8d73b8b8f5145d64f248ebe1.tar.gz
openpower-proc-control-2548c7a35ab2ac8d8d73b8b8f5145d64f248ebe1.zip
Set SBE seeprom boot side
The default side for the SBE to boot from is side 0, which is indicated by a 0 in bit 17 of cfam 0x2808. When the boot count goes to 1 (the last before giving up), the start_host logic will switch over to side 1 for the SBE to boot from. Resolves openbmc/openbmc#1467 Change-Id: I61aa22939baa4cde38c8716429b6ca55f7c850bd Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
Diffstat (limited to 'procedures/p9')
-rw-r--r--procedures/p9/start_host.cpp21
1 files changed, 20 insertions, 1 deletions
diff --git a/procedures/p9/start_host.cpp b/procedures/p9/start_host.cpp
index 6494086..3049eac 100644
--- a/procedures/p9/start_host.cpp
+++ b/procedures/p9/start_host.cpp
@@ -18,6 +18,7 @@
#include "p9_cfam.hpp"
#include "registration.hpp"
#include "targeting.hpp"
+#include "ext_interface.hpp"
namespace openpower
{
@@ -65,7 +66,25 @@ void startHost()
//Kick off the SBE to start the boot
- //First ensure ISTEP stepping isn't enabled
+ // Choose seeprom side to boot from
+ cfam_data_t sbeSide = 0;
+ if(getBootCount() > 1)
+ {
+ sbeSide = 0;
+ log<level::INFO>("Setting SBE seeprom side to 0",
+ entry("SBE_SIDE_SELECT=%d", 0));
+ }
+ else
+ {
+ sbeSide = 0x00004000;
+ log<level::INFO>("Setting SBE seeprom side to 1",
+ entry("SBE_SIDE_SELECT=%d", 1));
+ }
+ // Bit 17 of the ctrl status reg indicates sbe seeprom boot side
+ // 0 -> Side 0, 1 -> Side 1
+ writeRegWithMask(master, P9_SBE_CTRL_STATUS, sbeSide, 0x00004000);
+
+ //Ensure ISTEP stepping isn't enabled
writeRegWithMask(master, P9_SCRATCH_REGISTER_8, 0x20000000, 0x20000000);
//Start the SBE
OpenPOWER on IntegriCloud