diff options
author | Evan Lojewski <github@meklort.com> | 2019-03-16 17:47:01 -0600 |
---|---|---|
committer | Evan Lojewski <github@meklort.com> | 2019-03-16 17:47:01 -0600 |
commit | 84eddaf3aac46e8cb10f8a097549bb642adaaa00 (patch) | |
tree | 124ae13b3f43051904e9a53ad18b1b023fa6be4c /libs/APE | |
parent | a4d239b41a99b2206bc60efc763fea1ffe16f489 (diff) | |
download | bcm5719-ortega-84eddaf3aac46e8cb10f8a097549bb642adaaa00.tar.gz bcm5719-ortega-84eddaf3aac46e8cb10f8a097549bb642adaaa00.zip |
Update APE library to use new register definitions and add a releaseAllLocks() api.
Diffstat (limited to 'libs/APE')
-rw-r--r-- | libs/APE/ape.c | 50 | ||||
-rw-r--r-- | libs/APE/include/APE.h | 2 |
2 files changed, 39 insertions, 13 deletions
diff --git a/libs/APE/ape.c b/libs/APE/ape.c index aca7475..f078118 100644 --- a/libs/APE/ape.c +++ b/libs/APE/ape.c @@ -46,40 +46,44 @@ void APE_aquireLock(void) { + RegAPEPerLockRequestPhy0_t lock_req; + lock_req.r32 = 0; + lock_req.bits.Bootcode = 1; + uint8_t function = DEVICE.Status.bits.FunctionNumber; switch(function) { default: case 0: - APE.PerLockRequestPhy0.r32 = 0x10; + APE.PerLockRequestPhy0.r32 = lock_req.r32; do { // spin - } while(0x10 != APE.PerLockGrantPhy0.r32); + } while(lock_req.r32 != APE.PerLockGrantPhy0.r32); return; case 1: - APE.PerLockRequestPhy1.r32 = 0x10; + APE.PerLockRequestPhy1.r32 = lock_req.r32; do { // spin - } while(0x10 != APE.PerLockGrantPhy1.r32); + } while(lock_req.r32 != APE.PerLockGrantPhy1.r32); return; case 2: - APE.PerLockRequestPhy2.r32 = 0x10; + APE.PerLockRequestPhy2.r32 = lock_req.r32; do { // spin - } while(0x10 != APE.PerLockGrantPhy2.r32); + } while(lock_req.r32 != APE.PerLockGrantPhy2.r32); return; case 3: - APE.PerLockRequestPhy3.r32 = 0x10; + APE.PerLockRequestPhy3.r32 = lock_req.r32; do { // spin - } while(0x10 != APE.PerLockGrantPhy3.r32); + } while(lock_req.r32 != APE.PerLockGrantPhy3.r32); return; } @@ -87,20 +91,40 @@ void APE_aquireLock(void) void APE_releaseLock(void) { + RegAPEPerLockRequestPhy0_t lock_req; + lock_req.r32 = 0; + lock_req.bits.Bootcode = 1; + uint8_t function = DEVICE.Status.bits.FunctionNumber; switch(function) { default: case 0: - APE.PerLockGrantPhy0.r32 = 0x10; + APE.PerLockGrantPhy0.r32 = lock_req.r32; case 1: - APE.PerLockGrantPhy1.r32 = 0x10; + APE.PerLockGrantPhy1.r32 = lock_req.r32; case 2: - APE.PerLockGrantPhy2.r32 = 0x10; + APE.PerLockGrantPhy2.r32 = lock_req.r32; case 3: - APE.PerLockGrantPhy3.r32 = 0x10; + APE.PerLockGrantPhy3.r32 = lock_req.r32; } -}
\ No newline at end of file +} + +void APE_releaseAllLocks(void) +{ + RegAPEPerLockRequestPhy0_t lock_req; + lock_req.r32 = 0; + lock_req.bits.Bootcode = 1; + + APE.PerLockGrantPhy0.r32 = lock_req.r32; + APE.PerLockRequestGrc.r32 = lock_req.r32; + APE.PerLockGrantPhy1.r32 = lock_req.r32; + APE.PerLockGrantPhy2.r32 = lock_req.r32; + APE.PerLockRequestMem.r32 = lock_req.r32; + APE.PerLockGrantPhy3.r32 = lock_req.r32; + APE.PerLockRequestPort6.r32 = lock_req.r32; + APE.PerLockRequestGpio.r32 = lock_req.r32; +} diff --git a/libs/APE/include/APE.h b/libs/APE/include/APE.h index a7d1fc3..b9e18b1 100644 --- a/libs/APE/include/APE.h +++ b/libs/APE/include/APE.h @@ -49,4 +49,6 @@ void APE_aquireLock(void); void APE_releaseLock(void); +void APE_releaseAllLocks(void); + #endif /* APE_H */ |