[PATCH 061/111] B1553BRM: change the init of the RT legalization registers

Daniel Hellstrom daniel at gaisler.com
Thu Feb 26 16:39:03 UTC 2015


---
 c/src/lib/libbsp/sparc/shared/1553/b1553brm.c    |   23 ++++++++++++++++++++-
 c/src/lib/libbsp/sparc/shared/include/b1553brm.h |    8 +++++++
 2 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c b/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c
index 19ad36c..6ec5d64 100644
--- a/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c
+++ b/c/src/lib/libbsp/sparc/shared/1553/b1553brm.c
@@ -596,6 +596,25 @@ static void clr_int_logs(struct irq_log_list *logs){
 	}
 }
 
+unsigned short b1553brm_rt_cmd_legalize[16] = {
+	0,
+	0,
+	0,
+	0,
+	0,
+	0,
+	0xffff,
+	0xffff,
+	0xffff,
+	0xfffd,
+	0xfe01,
+	0xfff2,
+	0xffff,
+	0xfffd,
+	0xfe05,
+	0xffff,
+};
+
 static rtems_device_driver rt_init(brm_priv *brm) {
 	unsigned int i;
 
@@ -633,9 +652,9 @@ static rtems_device_driver rt_init(brm_priv *brm) {
 		
 	clr_int_logs(brm->irq_log);
 
-	/* Legalize all commands */
+	/* Initialize the Legalize register with standard values */
 	for (i = 0; i < 16; i++) {
-		brm->regs->rt_cmd_leg[i] = 0;
+		brm->regs->rt_cmd_leg[i] = b1553brm_rt_cmd_legalize[i];
 	}
 
 	/* Init descriptor table 
diff --git a/c/src/lib/libbsp/sparc/shared/include/b1553brm.h b/c/src/lib/libbsp/sparc/shared/include/b1553brm.h
index 1c3b38b..49b2a21 100644
--- a/c/src/lib/libbsp/sparc/shared/include/b1553brm.h
+++ b/c/src/lib/libbsp/sparc/shared/include/b1553brm.h
@@ -154,6 +154,14 @@ struct bc_msg {
 
 void b1553brm_register_drv(void);
 
+/* Default initialization of the RT legalization registers. The values in this
+ * array are written to the registers on boot driver initialization and when
+ * the user set the mode to RT-mode by calling ioctl(BRM_SET_MODE). Thus,
+ * update the array first then call ioctl(BRM_SET_MODE) for the changes to have
+ * an affect. Note that this affects all B1553BRM RTs in the system.
+ */
+extern unsigned short b1553brm_rt_cmd_legalize[16];
+
 #ifdef __cplusplus
 }
 #endif
-- 
1.7.0.4




More information about the devel mailing list