diff options
author | Daniel Hellstrom <daniel@gaisler.com> | 2014-08-08 09:59:36 +0200 |
---|---|---|
committer | Daniel Hellstrom <daniel@gaisler.com> | 2015-04-17 01:10:21 +0200 |
commit | fed905c8c7361855e797e41136699e0fcfcba718 (patch) | |
tree | 7f882d0518adb6a390e1ada4da62c461ef16ca7c /c/src/lib | |
parent | GRSPW: added clock cycles after GRSPW reset (diff) | |
download | rtems-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.c | 23 | ||||
-rw-r--r-- | 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 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 |