summaryrefslogtreecommitdiffstats
path: root/libs/APE
diff options
context:
space:
mode:
authorEvan Lojewski <github@meklort.com>2019-03-16 17:47:01 -0600
committerEvan Lojewski <github@meklort.com>2019-03-16 17:47:01 -0600
commit84eddaf3aac46e8cb10f8a097549bb642adaaa00 (patch)
tree124ae13b3f43051904e9a53ad18b1b023fa6be4c /libs/APE
parenta4d239b41a99b2206bc60efc763fea1ffe16f489 (diff)
downloadbcm5719-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.c50
-rw-r--r--libs/APE/include/APE.h2
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 */
OpenPOWER on IntegriCloud