From 84eddaf3aac46e8cb10f8a097549bb642adaaa00 Mon Sep 17 00:00:00 2001 From: Evan Lojewski Date: Sat, 16 Mar 2019 17:47:01 -0600 Subject: Update APE library to use new register definitions and add a releaseAllLocks() api. --- libs/APE/ape.c | 50 +++++++++++++++++++++++++++++++++++++------------- libs/APE/include/APE.h | 2 ++ 2 files changed, 39 insertions(+), 13 deletions(-) (limited to 'libs/APE') 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 */ -- cgit v1.2.1