added clock cycles after GRSPW reset to make sure CTRL.START bit
write actually have an effect. Wait until reset is completed.
---
 c/src/lib/libbsp/sparc/shared/spw/grspw.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw.c 
b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
index ebf7fe0..4d66d13 100644
--- a/c/src/lib/libbsp/sparc/shared/spw/grspw.c
+++ b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
@@ -1649,6 +1649,19 @@ static void grspw_hw_reset(GRSPW_DEV *pDev)
        SPW_CTRL_WRITE(pDev, SPW_CTRL_RESET); /*reset core*/
        SPW_STATUS_WRITE(pDev, SPW_STATUS_TO | SPW_STATUS_CE | SPW_STATUS_ER | 
SPW_STATUS_DE | SPW_STATUS_PE | 
                         SPW_STATUS_WE | SPW_STATUS_IA | SPW_STATUS_EE); 
/*clear status*/
+
+       /* Add extra writes to make sure we wait the number of clocks required
+        * after reset
+        */
+       SPW_STATUS_WRITE(pDev, SPW_STATUS_TO | SPW_STATUS_CE | SPW_STATUS_ER | 
SPW_STATUS_DE | SPW_STATUS_PE | 
+               SPW_STATUS_WE | SPW_STATUS_IA | SPW_STATUS_EE); /*clear status*/
+       SPW_STATUS_WRITE(pDev, SPW_STATUS_TO | SPW_STATUS_CE | SPW_STATUS_ER | 
SPW_STATUS_DE | SPW_STATUS_PE | 
+               SPW_STATUS_WE | SPW_STATUS_IA | SPW_STATUS_EE); /*clear status*/
+       SPW_STATUS_WRITE(pDev, SPW_STATUS_TO | SPW_STATUS_CE | SPW_STATUS_ER | 
SPW_STATUS_DE | SPW_STATUS_PE | 
+               SPW_STATUS_WE | SPW_STATUS_IA | SPW_STATUS_EE); /*clear status*/
+       SPW_STATUS_WRITE(pDev, SPW_STATUS_TO | SPW_STATUS_CE | SPW_STATUS_ER | 
SPW_STATUS_DE | SPW_STATUS_PE | 
+               SPW_STATUS_WE | SPW_STATUS_IA | SPW_STATUS_EE); /*clear status*/
+
        SPW_CTRL_WRITE(pDev, SPW_CTRL_LINKSTART); /*start link core*/
 }
 
-- 
1.7.0.4

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to