summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ape/main.c22
-rw-r--r--include/APE_SHM.h26
-rw-r--r--include/bcm5719_SHM.h26
-rw-r--r--ipxact/SHM.xml11
4 files changed, 39 insertions, 46 deletions
diff --git a/ape/main.c b/ape/main.c
index 7f99fd1..58c6b0c 100644
--- a/ape/main.c
+++ b/ape/main.c
@@ -263,12 +263,32 @@ void checkSupply(bool alwaysReport)
}
}
+void initSHM(volatile SHM_t *shm)
+{
+ RegSHMFwStatus_t status;
+ status.r32 = 0;
+ status.bits.Ready = 1;
+
+ RegSHMFwFeatures_t features;
+ features.r32 = 0;
+ features.bits.NCSI = 1;
+
+ shm->FwVersion.r32 = (VERSION_MAJOR << 24) | (VERSION_MINOR << 16) | VERSION_PATCH;
+ shm->FwFeatures.r32 = features.r32;
+ shm->FwStatus.r32 = status.r32;
+
+ shm->SegSig.r32 = 'APE!';
+}
+
void __attribute__((noreturn)) loaderLoop(void)
{
uint32_t host_state = SHM.HostDriverState.bits.State;
// Update SHM.Sig to signal ready.
SHM.SegSig.bits.Sig = SHM_SEG_SIG_SIG_LOADER;
- SHM.FwStatus.bits.Ready = 1;
+ initSHM(&SHM);
+ initSHM(&SHM1);
+ initSHM(&SHM2);
+ initSHM(&SHM3);
for (;;)
{
diff --git a/include/APE_SHM.h b/include/APE_SHM.h
index 718f2a3..46881fb 100644
--- a/include/APE_SHM.h
+++ b/include/APE_SHM.h
@@ -294,14 +294,10 @@ typedef register_container RegSHM4014_t {
} RegSHM4014_t;
#define REG_SHM_FW_VERSION ((volatile APE_SHM_H_uint32_t*)0x60220018) /* */
-#define SHM_FW_VERSION_BUILD_SHIFT 0u
-#define SHM_FW_VERSION_BUILD_MASK 0xffu
-#define GET_SHM_FW_VERSION_BUILD(__reg__) (((__reg__) & 0xff) >> 0u)
-#define SET_SHM_FW_VERSION_BUILD(__val__) (((__val__) << 0u) & 0xffu)
-#define SHM_FW_VERSION_REVISION_SHIFT 8u
-#define SHM_FW_VERSION_REVISION_MASK 0xff00u
-#define GET_SHM_FW_VERSION_REVISION(__reg__) (((__reg__) & 0xff00) >> 8u)
-#define SET_SHM_FW_VERSION_REVISION(__val__) (((__val__) << 8u) & 0xff00u)
+#define SHM_FW_VERSION_PATCH_SHIFT 0u
+#define SHM_FW_VERSION_PATCH_MASK 0xffffu
+#define GET_SHM_FW_VERSION_PATCH(__reg__) (((__reg__) & 0xffff) >> 0u)
+#define SET_SHM_FW_VERSION_PATCH(__val__) (((__val__) << 0u) & 0xffffu)
#define SHM_FW_VERSION_MINOR_SHIFT 16u
#define SHM_FW_VERSION_MINOR_MASK 0xff0000u
#define GET_SHM_FW_VERSION_MINOR(__reg__) (((__reg__) & 0xff0000) >> 16u)
@@ -319,9 +315,7 @@ typedef register_container RegSHMFwVersion_t {
BITFIELD_BEGIN(APE_SHM_H_uint32_t, bits)
#if defined(__LITTLE_ENDIAN__)
/** @brief */
- BITFIELD_MEMBER(APE_SHM_H_uint32_t, Build, 0, 8)
- /** @brief */
- BITFIELD_MEMBER(APE_SHM_H_uint32_t, Revision, 8, 8)
+ BITFIELD_MEMBER(APE_SHM_H_uint32_t, Patch, 0, 16)
/** @brief */
BITFIELD_MEMBER(APE_SHM_H_uint32_t, Minor, 16, 8)
/** @brief */
@@ -332,9 +326,7 @@ typedef register_container RegSHMFwVersion_t {
/** @brief */
BITFIELD_MEMBER(APE_SHM_H_uint32_t, Minor, 16, 8)
/** @brief */
- BITFIELD_MEMBER(APE_SHM_H_uint32_t, Revision, 8, 8)
- /** @brief */
- BITFIELD_MEMBER(APE_SHM_H_uint32_t, Build, 0, 8)
+ BITFIELD_MEMBER(APE_SHM_H_uint32_t, Patch, 0, 16)
#else
#error Unknown Endian
#endif
@@ -350,10 +342,8 @@ typedef register_container RegSHMFwVersion_t {
{
/** @brief constructor for @ref SHM_t.FwVersion. */
r32.setName("FwVersion");
- bits.Build.setBaseRegister(&r32);
- bits.Build.setName("Build");
- bits.Revision.setBaseRegister(&r32);
- bits.Revision.setName("Revision");
+ bits.Patch.setBaseRegister(&r32);
+ bits.Patch.setName("Patch");
bits.Minor.setBaseRegister(&r32);
bits.Minor.setName("Minor");
bits.Major.setBaseRegister(&r32);
diff --git a/include/bcm5719_SHM.h b/include/bcm5719_SHM.h
index 00ea0db..b775fae 100644
--- a/include/bcm5719_SHM.h
+++ b/include/bcm5719_SHM.h
@@ -294,14 +294,10 @@ typedef register_container RegSHM4014_t {
} RegSHM4014_t;
#define REG_SHM_FW_VERSION ((volatile BCM5719_SHM_H_uint32_t*)0xc0014018) /* */
-#define SHM_FW_VERSION_BUILD_SHIFT 0u
-#define SHM_FW_VERSION_BUILD_MASK 0xffu
-#define GET_SHM_FW_VERSION_BUILD(__reg__) (((__reg__) & 0xff) >> 0u)
-#define SET_SHM_FW_VERSION_BUILD(__val__) (((__val__) << 0u) & 0xffu)
-#define SHM_FW_VERSION_REVISION_SHIFT 8u
-#define SHM_FW_VERSION_REVISION_MASK 0xff00u
-#define GET_SHM_FW_VERSION_REVISION(__reg__) (((__reg__) & 0xff00) >> 8u)
-#define SET_SHM_FW_VERSION_REVISION(__val__) (((__val__) << 8u) & 0xff00u)
+#define SHM_FW_VERSION_PATCH_SHIFT 0u
+#define SHM_FW_VERSION_PATCH_MASK 0xffffu
+#define GET_SHM_FW_VERSION_PATCH(__reg__) (((__reg__) & 0xffff) >> 0u)
+#define SET_SHM_FW_VERSION_PATCH(__val__) (((__val__) << 0u) & 0xffffu)
#define SHM_FW_VERSION_MINOR_SHIFT 16u
#define SHM_FW_VERSION_MINOR_MASK 0xff0000u
#define GET_SHM_FW_VERSION_MINOR(__reg__) (((__reg__) & 0xff0000) >> 16u)
@@ -319,9 +315,7 @@ typedef register_container RegSHMFwVersion_t {
BITFIELD_BEGIN(BCM5719_SHM_H_uint32_t, bits)
#if defined(__LITTLE_ENDIAN__)
/** @brief */
- BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Build, 0, 8)
- /** @brief */
- BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Revision, 8, 8)
+ BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Patch, 0, 16)
/** @brief */
BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Minor, 16, 8)
/** @brief */
@@ -332,9 +326,7 @@ typedef register_container RegSHMFwVersion_t {
/** @brief */
BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Minor, 16, 8)
/** @brief */
- BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Revision, 8, 8)
- /** @brief */
- BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Build, 0, 8)
+ BITFIELD_MEMBER(BCM5719_SHM_H_uint32_t, Patch, 0, 16)
#else
#error Unknown Endian
#endif
@@ -350,10 +342,8 @@ typedef register_container RegSHMFwVersion_t {
{
/** @brief constructor for @ref SHM_t.FwVersion. */
r32.setName("FwVersion");
- bits.Build.setBaseRegister(&r32);
- bits.Build.setName("Build");
- bits.Revision.setBaseRegister(&r32);
- bits.Revision.setName("Revision");
+ bits.Patch.setBaseRegister(&r32);
+ bits.Patch.setName("Patch");
bits.Minor.setBaseRegister(&r32);
bits.Minor.setName("Minor");
bits.Major.setBaseRegister(&r32);
diff --git a/ipxact/SHM.xml b/ipxact/SHM.xml
index 4857ef2..f8a7a3c 100644
--- a/ipxact/SHM.xml
+++ b/ipxact/SHM.xml
@@ -103,17 +103,10 @@
<ipxact:size>32</ipxact:size>
<ipxact:volatile>true</ipxact:volatile>
<ipxact:field>
- <ipxact:name>Build</ipxact:name>
+ <ipxact:name>Patch</ipxact:name>
<ipxact:description></ipxact:description>
<ipxact:bitOffset>0</ipxact:bitOffset>
- <ipxact:bitWidth>8</ipxact:bitWidth>
- <ipxact:access>read-write</ipxact:access>
- </ipxact:field>
- <ipxact:field>
- <ipxact:name>Revision</ipxact:name>
- <ipxact:description></ipxact:description>
- <ipxact:bitOffset>8</ipxact:bitOffset>
- <ipxact:bitWidth>8</ipxact:bitWidth>
+ <ipxact:bitWidth>16</ipxact:bitWidth>
<ipxact:access>read-write</ipxact:access>
</ipxact:field>
<ipxact:field>
OpenPOWER on IntegriCloud