From 231680a692ab78faf7a88fbd78facc3efd502249 Mon Sep 17 00:00:00 2001 From: Till Straumann Date: Thu, 28 Aug 2008 15:38:07 +0000 Subject: 2008-08-28 Till Straumann * vmeUniverse/vmeTsi148.h, vmeUniverse/vmeTsi148.c: added vmeTsi148ResetBusXX(), vmeTsi148ResetBus(). --- c/src/lib/libbsp/shared/ChangeLog | 9 +++++++ c/src/lib/libbsp/shared/vmeUniverse/VME.h | 4 ++++ c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.c | 31 +++++++++++++++++++++++++ c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.h | 12 ++++++++-- 4 files changed, 54 insertions(+), 2 deletions(-) diff --git a/c/src/lib/libbsp/shared/ChangeLog b/c/src/lib/libbsp/shared/ChangeLog index 2db7ddf2f6..5123ad7808 100644 --- a/c/src/lib/libbsp/shared/ChangeLog +++ b/c/src/lib/libbsp/shared/ChangeLog @@ -1,3 +1,12 @@ +2008-08-28 Till Straumann + + * vmeUniverse/vmeTsi148.h, vmeUniverse/vmeTsi148.c: + added vmeTsi148ResetBusXX(), vmeTsi148ResetBus(). + +2008-08-28 Till Straumann + + * vmeUniverse/VME.h: added BSP_VMEResetBus(). + 2008-08-20 Sebastian Huber * src/irq-generic.c: Fixed integer conversion warnings. diff --git a/c/src/lib/libbsp/shared/vmeUniverse/VME.h b/c/src/lib/libbsp/shared/vmeUniverse/VME.h index d2d7adcedc..0d03743f19 100644 --- a/c/src/lib/libbsp/shared/vmeUniverse/VME.h +++ b/c/src/lib/libbsp/shared/vmeUniverse/VME.h @@ -110,4 +110,8 @@ BSP_VMEOutboundPortsShow(FILE *f); void BSP_VMEInboundPortsShow(FILE *f); +/* Assert VME SYSRESET */ +void +BSP_VMEResetBus(void); + #endif diff --git a/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.c b/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.c index e3a5e35af3..cebb29e073 100644 --- a/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.c +++ b/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.c @@ -168,6 +168,18 @@ # define TSI_VMCTRL_VREQL_MSK (3<< 0) # define TSI_VMCTRL_VREQL(x) ((x)&3) +#define TSI_VCTRL_REG 0x238 +#define TSI_VCTRL_DLT_MSK (0xf<<24) +#define TSI_VCTRL_NELBB (1<<20) +#define TSI_VCTRL_SRESET (1<<17) +#define TSI_VCTRL_LRESET (1<<16) +#define TSI_VCTRL_SFAILAI (1<<15) +#define TSI_VCTRL_BID_MSK (0x1f<<8) +#define TSI_VCTRL_ATOEN (1<< 7) +#define TSI_VCTRL_ROBIN (1<< 6) +#define TSI_VCTRL_GTO_MSK (7<< 0) + + #define TSI_VSTAT_REG 0x23c # define TSI_VSTAT_CPURST (1<<15) /* clear power-up reset bit */ # define TSI_VSTAT_BDFAIL (1<<14) @@ -530,6 +542,25 @@ vmeTsi148Reset() vmeTsi148ResetXX(THEBASE); } +void +vmeTsi148ResetBusXX(BERegister *base) +{ +unsigned long flags; +uint32_t v; + + rtems_interrupt_disable(flags); + v = TSI_RD(base, TSI_VCTRL_REG); + TSI_WR(base, TSI_VCTRL_REG, v | TSI_VCTRL_SRESET); + rtems_interrupt_enable(flags); +} + +void +vmeTsi148ResetBus(void) +{ + vmeTsi148ResetBusXX(THEBASE); +} + + /* convert an address space selector to a corresponding * Tsi148 control mode word */ diff --git a/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.h b/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.h index 48133f7734..16c3c16537 100644 --- a/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.h +++ b/c/src/lib/libbsp/shared/vmeUniverse/vmeTsi148.h @@ -108,16 +108,24 @@ vmeTsi148InitInstance(unsigned instance); int vmeTsi148Init(void); -/* setup the tsi148 chip, i.e. disable most of its +/* Setup the tsi148 chip, i.e. disable most of its * mappings, reset interrupts etc. */ void vmeTsi148ResetXX(BERegister *base); -/* setup the tsi148 connected to the first driver slot */ +/* Setup the tsi148 connected to the first driver slot */ void vmeTsi148Reset(); +/* Pull VME SYSRESET line */ +void +vmeTsi148ResetBusXX(BERegister *base); + +/* Pull VME SYSRESET line of the 1st controller */ +void +vmeTsi148ResetBus(void); + /* NOTE: all non-'XX' versions of driver entry points which * have an associated 'XX' entry point operate on the * device connected to the 1st driver slot. -- cgit v1.2.3