diff options
-rw-r--r-- | ape/main.c | 22 | ||||
-rw-r--r-- | include/APE_SHM.h | 26 | ||||
-rw-r--r-- | include/bcm5719_SHM.h | 26 | ||||
-rw-r--r-- | ipxact/SHM.xml | 11 |
4 files changed, 39 insertions, 46 deletions
@@ -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> |