summaryrefslogtreecommitdiffstats
path: root/c/src/lib
diff options
context:
space:
mode:
authorDaniel Hellstrom <daniel@gaisler.com>2014-08-08 09:59:36 +0200
committerDaniel Hellstrom <daniel@gaisler.com>2015-04-17 01:10:21 +0200
commitfed905c8c7361855e797e41136699e0fcfcba718 (patch)
tree7f882d0518adb6a390e1ada4da62c461ef16ca7c /c/src/lib
parentGRSPW: added clock cycles after GRSPW reset (diff)
downloadrtems-fed905c8c7361855e797e41136699e0fcfcba718.tar.bz2
B1553BRM: change the init of the RT legalization registers
Diffstat (limited to 'c/src/lib')
-rw-r--r--c/src/lib/libbsp/sparc/shared/1553/b1553brm.c23
-rw-r--r--c/src/lib/libbsp/sparc/shared/include/b1553brm.h8
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 19ad36ca5f..6ec5d647bd 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 1c3b38b748..49b2a210dc 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