From 8f12ee32b647fa6b26c20ba1b6ba7133e5349cea Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 25 Apr 2018 10:22:37 +0200 Subject: bsp/mvme5500: Move source files to bsps This patch is a part of the BSP source reorganization. Update #3285. --- .../libbsp/powerpc/mvme5500/GT64260/GT64260TWSI.c | 214 -------------------- .../libbsp/powerpc/mvme5500/GT64260/MVME5500I2C.c | 107 ---------- c/src/lib/libbsp/powerpc/mvme5500/Makefile.am | 6 +- .../powerpc/mvme5500/vectors/exceptionhandler.c | 221 --------------------- 4 files changed, 3 insertions(+), 545 deletions(-) delete mode 100644 c/src/lib/libbsp/powerpc/mvme5500/GT64260/GT64260TWSI.c delete mode 100644 c/src/lib/libbsp/powerpc/mvme5500/GT64260/MVME5500I2C.c delete mode 100644 c/src/lib/libbsp/powerpc/mvme5500/vectors/exceptionhandler.c (limited to 'c/src/lib/libbsp/powerpc') diff --git a/c/src/lib/libbsp/powerpc/mvme5500/GT64260/GT64260TWSI.c b/c/src/lib/libbsp/powerpc/mvme5500/GT64260/GT64260TWSI.c deleted file mode 100644 index 6b5b46e511..0000000000 --- a/c/src/lib/libbsp/powerpc/mvme5500/GT64260/GT64260TWSI.c +++ /dev/null @@ -1,214 +0,0 @@ -/* - * Two-Wire Serial Interface (TWSI) support for the GT64260 - */ - -/* - * Copyright (c) 2004, Brookhaven National Laboratory and - * Shuchen Kate Feng - * All rights reserved. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution. - * - * See section 24:TWSI interface of "the GT-64260B System Controller - * for powerPc Processors Data Sheet". - * - * For full TWSI protocol description look in Philips Semiconductor - * TWSI spec. - * - * We need it to read out I2C devices used for the MVME5500 - * (eg. the memory SPD and VPD). - */ - -#include /*registers.h included here for rtems_bsp_delay()*/ -#include -#include - -#include "bsp/gtreg.h" -#include "bsp/GT64260TWSI.h" - -#define MAX_LOOP 100 - -#define TWSI_DEBUG 0 - -static int TWSI_initFlg = 0; /* TWSI Initialization Flag */ - -void GT64260TWSIinit(void) -{ - if ( !TWSI_initFlg ) { -#if TWSI_DEBUG - printk("GT64260TWSIinit("); -#endif - outl( 0, TWSI_SFT_RST); /* soft reset */ - rtems_bsp_delay(1000); - - /* See 24.2.5 : Assume bus speed is 133MHZ - * Try to be close to the default frequency : 62.5KHZ - * value 0x2c: 69.27 KHz TWSI bus clock - */ - outl(0x2c, TWSI_BAUDE_RATE); - rtems_bsp_delay(1000); - - /* Set Acknowledge and enable TWSI in the Control register */ - outl(0x44, TWSI_CTRL); - rtems_bsp_delay(4000); - TWSI_initFlg = 1; -#if TWSI_DEBUG - printk(")\n"); -#endif - } -} - -/* return the interrupt flag */ -static int GT64260TWSIintFlag(void) -{ - unsigned int loop; - - for (loop = 0; loop < MAX_LOOP; loop++ ) { - /* Return 1 if the interrupt flag is set */ - if (inl(TWSI_CTRL) & TWSI_INTFLG) - return(1); - rtems_bsp_delay(1000); - } - return(0); -} - -int GT64260TWSIstop(void) -{ - -#if TWSI_DEBUG - printk("GT64260TWSIstop("); -#endif - - outl((inl(TWSI_CTRL) | TWSI_STOP), TWSI_CTRL); - rtems_bsp_delay(1000); - - /* Check if interrupt flag bit is set*/ - if (GT64260TWSIintFlag()) { - outl((inl( TWSI_CTRL) & ~TWSI_INTFLG), TWSI_CTRL); - rtems_bsp_delay(1000); -#if TWSI_DEBUG - printk(")\n"); -#endif - return(0); - } -#if TWSI_DEBUG - printk("NoIntFlag\n"); -#endif - return(-1); -} - -int GT64260TWSIstart(void) -{ - unsigned int loop; - unsigned int status; - -#if TWSI_DEBUG - printk("GT64260TWSIstart("); -#endif - /* Initialize the TWSI interface */ - GT64260TWSIinit(); - - /* set the start bit */ - outl((TWSI_START | TWSI_TWSIEN), TWSI_CTRL); - rtems_bsp_delay(1000); - - if (GT64260TWSIintFlag()) { - /* Check for completion of START sequence */ - for (loop = 0; loop - * All rights reserved. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution. - */ - -#include -#include /* printk */ -#include /* uint32_t */ -#include "bsp/GT64260TWSI.h" - -/* #define I2C_DEBUG*/ - -static unsigned char I2cAddrPack(unsigned char busAddr,uint32_t offset) -{ - return(busAddr | ((offset & 0x700) >> 7)); -} - -static unsigned char I2cDevByteAddr(uint32_t devA2A1A0, unsigned char byteNum) -{ - return(( devA2A1A0 >>(byteNum*8)) & 0xff); -} -/**************************************************************************** -* I2Cread_eeprom - read EEPROM VPD from the I2C -*/ -int I2Cread_eeprom( - unsigned char I2cBusAddr, - uint32_t devA2A1A0, - uint32_t AddrBytes, - unsigned char *pBuff, - uint32_t numBytes -) -{ - int status=0, lastByte=0; - - switch (AddrBytes) { - case 1: - if ((status=GT64260TWSIstart()) != -1) { - if ((status=GT64260TWSIwrite(I2cAddrPack(I2cBusAddr,devA2A1A0)))!= -1){ - if ((status=GT64260TWSIwrite(devA2A1A0))!=-1){ - if ((status=GT64260TWSIstart())!=-1) - status=GT64260TWSIwrite(I2cAddrPack((I2cBusAddr|0x01),devA2A1A0)); - } - } - } - break; - case 2: - if ((status=GT64260TWSIstart())!=-1) { - if ((status=GT64260TWSIwrite(I2cBusAddr))!= -1) { - if ((status=GT64260TWSIwrite(I2cDevByteAddr(devA2A1A0,1)))!=-1) { - if ((status=GT64260TWSIwrite(I2cDevByteAddr(devA2A1A0,0)))!= -1){ - if ((status=GT64260TWSIstart()) != -1) { - status = GT64260TWSIwrite((I2cBusAddr | 0x01)); - } - } - } - } - } - break; - case 3: - if ((status = GT64260TWSIstart())!= -1) { - if ((status = GT64260TWSIwrite(I2cBusAddr))!= -1) { - if ((status=GT64260TWSIwrite(I2cDevByteAddr(devA2A1A0,2)))!= -1){ - if ((status=GT64260TWSIwrite(I2cDevByteAddr(devA2A1A0,1)))!= -1){ - if ((status=GT64260TWSIwrite(I2cDevByteAddr(devA2A1A0,0)))!= -1){ - if ((status=GT64260TWSIstart())!= -1) { - status = GT64260TWSIwrite(I2cBusAddr | 0x01); - } - } - } - } - } - } - break; - default: - status=-1; - break; - } - if (status !=-1) { -#ifdef I2C_DEBUG - printk("\n"); -#endif - /* read data from device */ - for ( ; numBytes > 0; numBytes-- ) { - if ( numBytes == 1) lastByte=1; - if (GT64260TWSIread(pBuff,lastByte) == -1) return (-1); -#ifdef I2C_DEBUG - printk("%2x ", *pBuff); - if ( (numBytes % 20)==0 ) printk("\n"); -#endif - pBuff++; - } -#ifdef I2C_DEBUG - printk("\n"); -#endif - if (GT64260TWSIstop() == -1) return (-1); - } - return (status); -} - diff --git a/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am b/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am index e2e57d8345..5d8d807613 100644 --- a/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mvme5500/Makefile.am @@ -47,12 +47,12 @@ librtemsbsp_a_SOURCES += ../../../../../../bsps/shared/dev/rtc/rtc-support.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/mvme5500/rtc/todcfg.c # vectors -librtemsbsp_a_SOURCES += vectors/exceptionhandler.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/mvme5500/start/exceptionhandler.c librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/shared/start/vectors_entry.S # GT64260 -librtemsbsp_a_SOURCES += GT64260/GT64260TWSI.c -librtemsbsp_a_SOURCES += GT64260/MVME5500I2C.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/mvme5500/GT64260/GT64260TWSI.c +librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/mvme5500/GT64260/MVME5500I2C.c if HAS_NETWORKING librtemsbsp_a_SOURCES += ../../../../../../bsps/powerpc/mvme5500/net/if_100MHz/GT64260eth.c diff --git a/c/src/lib/libbsp/powerpc/mvme5500/vectors/exceptionhandler.c b/c/src/lib/libbsp/powerpc/mvme5500/vectors/exceptionhandler.c deleted file mode 100644 index be5f78f2d3..0000000000 --- a/c/src/lib/libbsp/powerpc/mvme5500/vectors/exceptionhandler.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Authorship - * ---------- - * This software was created by - * Till Straumann , 5/2002, - * Stanford Linear Accelerator Center, Stanford University. - * - * Acknowledgement of sponsorship - * ------------------------------ - * This software was produced by - * the Stanford Linear Accelerator Center, Stanford University, - * under Contract DE-AC03-76SFO0515 with the Department of Energy. - * - * Government disclaimer of liability - * ---------------------------------- - * Neither the United States nor the United States Department of Energy, - * nor any of their employees, makes any warranty, express or implied, or - * assumes any legal liability or responsibility for the accuracy, - * completeness, or usefulness of any data, apparatus, product, or process - * disclosed, or represents that its use would not infringe privately owned - * rights. - * - * Stanford disclaimer of liability - * -------------------------------- - * Stanford University makes no representations or warranties, express or - * implied, nor assumes any liability for the use of this software. - * - * Stanford disclaimer of copyright - * -------------------------------- - * Stanford University, owner of the copyright, hereby disclaims its - * copyright and all other rights in this software. Hence, anyone may - * freely use it for any purpose without restriction. - * - * Maintenance of notices - * ---------------------- - * In the interest of clarity regarding the origin and status of this - * SLAC software, this and all the preceding Stanford University notices - * are to remain affixed to any copy or derivative of this software made - * or distributed by the recipient and are to be affixed to any copy of - * software made or distributed by the recipient that contains a copy or - * derivative of this software. - * - * ------------------ SLAC Software Notices, Set 4 OTT.002a, 2004 FEB 03 - */ -/* Copyright : - * (C) S. Kate Feng 4/2004 modified it for MVME5500 - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#define SRR1_TEA_EXC (1<<(31-13)) -#define SRR1_MCP_EXC (1<<(31-12)) - -static thread_local volatile BSP_ExceptionExtension BSP_exceptionExtension = 0; - -BSP_ExceptionExtension -BSP_exceptionHandlerInstall(BSP_ExceptionExtension e) -{ -volatile BSP_ExceptionExtension test; - test = BSP_exceptionExtension; - BSP_exceptionExtension = e; - return test; -} - -void -BSP_exceptionHandler(BSP_Exception_frame* excPtr) -{ -BSP_ExceptionExtension ext=0; -rtems_id id=0; -int recoverable = 0; -char *fmt="Uhuuuh, Exception %d in unknown task???\n"; -int quiet=0; - - if (!quiet) printk("In BSP_exceptionHandler()\n"); - /* If we are in interrupt context, we are in trouble - skip the user - * hook and panic - */ - if (rtems_interrupt_is_in_progress()) { - fmt="Aieeh, Exception %d in interrupt handler\n"; - } else if ( !_Thread_Executing) { - fmt="Aieeh, Exception %d in initialization code\n"; - } else { - /* retrieve the notepad which possibly holds an extention pointer */ - if (RTEMS_SUCCESSFUL==rtems_task_ident(RTEMS_SELF,RTEMS_LOCAL,&id)) { - ext = BSP_exceptionExtension; - if (ext) - quiet=ext->quiet; - if (!quiet) { - printk("Task (Id 0x%08" PRIx32 ") got ",id); - } - fmt="exception %d\n"; - } - } - - if (ext && ext->lowlevelHook && ext->lowlevelHook(excPtr,ext,0)) { - /* they did all the work and want us to do nothing! */ - printk("they did all the work and want us to do nothing!\n"); - return; - } - - if (!quiet) { - /* message about exception */ - printk(fmt, excPtr->_EXC_number); - /* register dump */ - printk("\t Next PC or Address of fault = %" PRIxPTR ", ", excPtr->EXC_SRR0); - printk("Mvme5500 Saved MSR = %" PRIxPTR "\n", excPtr->EXC_SRR1); - printk("\t R0 = %08" PRIxPTR, excPtr->GPR0); - printk(" R1 = %08" PRIxPTR, excPtr->GPR1); - printk(" R2 = %08" PRIxPTR, excPtr->GPR2); - printk(" R3 = %08" PRIxPTR "\n", excPtr->GPR3); - printk("\t R4 = %08" PRIxPTR, excPtr->GPR4); - printk(" R5 = %08" PRIxPTR, excPtr->GPR5); - printk(" R6 = %08" PRIxPTR, excPtr->GPR6); - printk(" R7 = %08" PRIxPTR "\n", excPtr->GPR7); - printk("\t R8 = %08" PRIxPTR, excPtr->GPR8); - printk(" R9 = %08" PRIxPTR, excPtr->GPR9); - printk(" R10 = %08" PRIxPTR, excPtr->GPR10); - printk(" R11 = %08" PRIxPTR "\n", excPtr->GPR11); - printk("\t R12 = %08" PRIxPTR, excPtr->GPR12); - printk(" R13 = %08" PRIxPTR, excPtr->GPR13); - printk(" R14 = %08" PRIxPTR, excPtr->GPR14); - printk(" R15 = %08" PRIxPTR "\n", excPtr->GPR15); - printk("\t R16 = %08" PRIxPTR, excPtr->GPR16); - printk(" R17 = %08" PRIxPTR, excPtr->GPR17); - printk(" R18 = %08" PRIxPTR, excPtr->GPR18); - printk(" R19 = %08" PRIxPTR "\n", excPtr->GPR19); - printk("\t R20 = %08" PRIxPTR, excPtr->GPR20); - printk(" R21 = %08" PRIxPTR, excPtr->GPR21); - printk(" R22 = %08" PRIxPTR, excPtr->GPR22); - printk(" R23 = %08" PRIxPTR "\n", excPtr->GPR23); - printk("\t R24 = %08" PRIxPTR, excPtr->GPR24); - printk(" R25 = %08" PRIxPTR, excPtr->GPR25); - printk(" R26 = %08" PRIxPTR, excPtr->GPR26); - printk(" R27 = %08" PRIxPTR "\n", excPtr->GPR27); - printk("\t R28 = %08" PRIxPTR, excPtr->GPR28); - printk(" R29 = %08" PRIxPTR, excPtr->GPR29); - printk(" R30 = %08" PRIxPTR, excPtr->GPR30); - printk(" R31 = %08" PRIxPTR "\n", excPtr->GPR31); - printk("\t CR = %08" PRIx32 "\n", excPtr->EXC_CR); - printk("\t CTR = %08" PRIxPTR "\n", excPtr->EXC_CTR); - printk("\t XER = %08" PRIx32 "\n", excPtr->EXC_XER); - printk("\t LR = %08" PRIxPTR "\n", excPtr->EXC_LR); - - BSP_printStackTrace(excPtr); - } - - if (ASM_MACH_VECTOR == excPtr->_EXC_number) { - /* ollah , we got a machine check - this could either - * be a TEA, MCP or internal; let's see and provide more info - */ - if (!quiet) - printk("Machine check; reason:"); - if ( ! (excPtr->EXC_SRR1 & (SRR1_TEA_EXC | SRR1_MCP_EXC)) ) { - if (!quiet) - printk("SRR1\n"); - } else { - if (excPtr->EXC_SRR1 & (SRR1_TEA_EXC)) { - if (!quiet) - printk(" TEA"); - } - if (excPtr->EXC_SRR1 & (SRR1_MCP_EXC)) { - unsigned long gerr; - - if (!quiet) printk(" MCP\n"); - - /* it's MCP; gather info from the host bridge */ - gerr=_BSP_clear_hostbridge_errors(0,0); - if (gerr&0x80000000) printk("GT64260 Parity error\n"); - if (gerr&0x40000000) printk("GT64260 SysErr\n"); - if ((!quiet) && (!gerr)) printk("GT64260 host bridge seems OK\n"); - } - } - } else if (ASM_DEC_VECTOR == excPtr->_EXC_number) { - recoverable = 1; - } else if (ASM_SYS_VECTOR == excPtr->_EXC_number) { -#ifdef TEST_RAW_EXCEPTION_CODE - recoverable = 1; -#else - recoverable = 0; -#endif - } - - /* call them for a second time giving a chance to intercept - * the task_suspend - */ - if (ext && ext->lowlevelHook && ext->lowlevelHook(excPtr, ext, 1)) - return; - - if (!recoverable) { - if (id) { - /* if there's a highlevel hook, install it */ - if (ext && ext->highlevelHook) { - excPtr->EXC_SRR0 = (uint32_t)ext->highlevelHook; - excPtr->GPR3 = (uint32_t)ext; - return; - } - if (excPtr->EXC_SRR1 & MSR_FP) { - /* thread dispatching is _not_ disabled at this point; hence - * we must make sure we have the FPU enabled... - */ - _write_MSR( _read_MSR() | MSR_FP ); - __asm__ __volatile__("isync"); - } - printk("unrecoverable exception!!! task %08" PRIx32 " suspended\n",id); - rtems_task_suspend(id); - } else { - printk("PANIC, rebooting...\n"); - bsp_reset(); - } - } -} -- cgit v1.2.3