summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJennifer Averett <Jennifer.Averett@OARcorp.com>2005-04-28 19:27:05 +0000
committerJennifer Averett <Jennifer.Averett@OARcorp.com>2005-04-28 19:27:05 +0000
commitf48f64ab8a7ac3e588d51b3bcb2dc6ee47baccb4 (patch)
tree3f5729fb0750ca7c856c05ea9b57a51fae55225d /c/src
parentMove ChangeLog entry (diff)
downloadrtems-f48f64ab8a7ac3e588d51b3bcb2dc6ee47baccb4.tar.bz2
2005-04-28 Jennifer Averett <jennifer.averett@oarcorp.com>
* Add/remove files for the Update to new exception model. * pci/no_host_bridge.c, vme/vmeconfig.c: New files. * clock/clock.c: Removed.
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libbsp/powerpc/score603e/ChangeLog6
-rw-r--r--c/src/lib/libbsp/powerpc/score603e/clock/clock.c224
-rw-r--r--c/src/lib/libbsp/powerpc/score603e/pci/no_host_bridge.c23
-rw-r--r--c/src/lib/libbsp/powerpc/score603e/vme/vmeconfig.c133
4 files changed, 162 insertions, 224 deletions
diff --git a/c/src/lib/libbsp/powerpc/score603e/ChangeLog b/c/src/lib/libbsp/powerpc/score603e/ChangeLog
index 54687977b0..0735b0ad90 100644
--- a/c/src/lib/libbsp/powerpc/score603e/ChangeLog
+++ b/c/src/lib/libbsp/powerpc/score603e/ChangeLog
@@ -1,4 +1,10 @@
2005-04-28 Jennifer Averett <jennifer.averett@oarcorp.com>
+
+ * Add/remove files for the Update to new exception model.
+ * pci/no_host_bridge.c, vme/vmeconfig.c: New files.
+ * clock/clock.c: Removed.
+
+2005-04-28 Jennifer Averett <jennifer.averett@oarcorp.com>
* Add/move files for the Update to new exception model.
NOTE: These modifications have not been tested on hardware.
diff --git a/c/src/lib/libbsp/powerpc/score603e/clock/clock.c b/c/src/lib/libbsp/powerpc/score603e/clock/clock.c
deleted file mode 100644
index 4656634e38..0000000000
--- a/c/src/lib/libbsp/powerpc/score603e/clock/clock.c
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Clock Tick Device Driver
- *
- * This routine utilizes the Decrementer Register common to the PPC family.
- *
- * The tick frequency is directly programmed to the configured number of
- * microseconds per tick.
- *
- * COPYRIGHT (c) 1989-1997.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may in
- * the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#include <stdlib.h>
-
-#include <bsp.h>
-#include <rtems/libio.h>
-#include <assert.h>
-
-/*
- * The Real Time Clock Counter Timer uses this trap type.
- */
-
-#define CLOCK_VECTOR PPC_IRQ_DECREMENTER
-
-/*
- * Clock ticks since initialization
- */
-
-volatile uint32_t Clock_driver_ticks;
-
-/*
- * This is the value programmed into the count down timer.
- */
-
-uint32_t Clock_Decrementer_value;
-
-rtems_isr_entry Old_ticker;
-
-void Clock_exit( void );
-
-/*
- * These are set by clock driver during its init
- */
-
-rtems_device_major_number rtems_clock_major = ~0;
-rtems_device_minor_number rtems_clock_minor;
-
-/*
- * Clock_isr
- *
- * This is the clock tick interrupt handler.
- *
- * Input parameters:
- * vector - vector number
- *
- * Output parameters: NONE
- *
- * Return values: NONE
- *
- */
-rtems_isr Clock_isr(
- rtems_vector_number vector,
- CPU_Interrupt_frame *frame
-)
-{
- /*
- * Set the decrementer.
- */
-
- PPC_Set_decrementer( Clock_Decrementer_value );
-
- /*
- * The driver has seen another tick.
- */
-
- Clock_driver_ticks += 1;
-
- /*
- * Real Time Clock counter/timer is set to automatically reload.
- */
-
- rtems_clock_tick();
-}
-
-/*
- * Install_clock
- *
- * This routine actually performs the hardware initialization for the clock.
- *
- * Input parameters:
- * clock_isr - clock interrupt service routine entry point
- *
- * Output parameters: NONE
- *
- * Return values: NONE
- *
- */
-
-extern int CLOCK_SPEED;
-
-void Install_clock(
- rtems_isr_entry clock_isr
-)
-{
- Clock_driver_ticks = 0;
-
- Old_ticker = (rtems_isr_entry) set_vector( clock_isr, CLOCK_VECTOR, 1 );
-
- PPC_Set_decrementer( Clock_Decrementer_value );
-
- atexit( Clock_exit );
-}
-
-/*
- * Clock_exit
- *
- * This routine allows the clock driver to exit by masking the interrupt and
- * disabling the clock's counter.
- *
- * Input parameters: NONE
- *
- * Output parameters: NONE
- *
- * Return values: NONE
- *
- */
-
-void Clock_exit( void )
-{
- /* nothing to do */;
-
- /* do not restore old vector */
-}
-
-/*
- * Clock_initialize
- *
- * This routine initializes the clock driver.
- *
- * Input parameters:
- * major - clock device major number
- * minor - clock device minor number
- * parg - pointer to optional device driver arguments
- *
- * Output parameters: NONE
- *
- * Return values:
- * rtems_device_driver status code
- */
-
-rtems_device_driver Clock_initialize(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *pargp
-)
-{
- Clock_Decrementer_value = (int) &CPU_PPC_CLICKS_PER_MS *
- (BSP_Configuration.microseconds_per_tick / 1000);
-
- Install_clock( (rtems_isr_entry) Clock_isr );
-
- /*
- * make major/minor avail to others such as shared memory driver
- */
-
- rtems_clock_major = major;
- rtems_clock_minor = minor;
-
- return RTEMS_SUCCESSFUL;
-}
-
-/*
- * Clock_control
- *
- * This routine is the clock device driver control entry point.
- *
- * Input parameters:
- * major - clock device major number
- * minor - clock device minor number
- * parg - pointer to optional device driver arguments
- *
- * Output parameters: NONE
- *
- * Return values:
- * rtems_device_driver status code
- */
-
-rtems_device_driver Clock_control(
- rtems_device_major_number major,
- rtems_device_minor_number minor,
- void *pargp
-)
-{
- uint32_t isrlevel;
- rtems_libio_ioctl_args_t *args = pargp;
-
- if (args == 0)
- goto done;
-
- /*
- * This is hokey, but until we get a defined interface
- * to do this, it will just be this simple...
- */
-
- if (args->command == rtems_build_name('I', 'S', 'R', ' '))
- {
- Clock_isr( CLOCK_VECTOR, pargp );
- }
- else if (args->command == rtems_build_name('N', 'E', 'W', ' '))
- {
- rtems_interrupt_disable( isrlevel );
- (void) set_vector( args->buffer, CLOCK_VECTOR, 1 );
- rtems_interrupt_enable( isrlevel );
- }
-
-done:
- return RTEMS_SUCCESSFUL;
-}
diff --git a/c/src/lib/libbsp/powerpc/score603e/pci/no_host_bridge.c b/c/src/lib/libbsp/powerpc/score603e/pci/no_host_bridge.c
new file mode 100644
index 0000000000..625e4f7423
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/score603e/pci/no_host_bridge.c
@@ -0,0 +1,23 @@
+/*
+ * detect_host_bridge.c
+ */
+
+#include <libcpu/io.h>
+#include <libcpu/spr.h>
+
+#include <bsp.h>
+#include <bsp/pci.h>
+#include <bsp/consoleIo.h>
+#include <bsp/residual.h>
+#include <bsp/openpic.h>
+
+#include <rtems/bspIo.h>
+
+/*
+ * For the 8240 and the 8245 there is no host bridge the
+ * Open PIC device is built into the processor chip.
+ */
+
+void detect_host_bridge()
+{
+}
diff --git a/c/src/lib/libbsp/powerpc/score603e/vme/vmeconfig.c b/c/src/lib/libbsp/powerpc/score603e/vme/vmeconfig.c
new file mode 100644
index 0000000000..1b4193ab54
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/score603e/vme/vmeconfig.c
@@ -0,0 +1,133 @@
+/* vmeconfig.c,v 1.1.2.2 2003/03/25 16:46:01 joel Exp */
+
+/* Standard VME bridge configuration for VGM type boards */
+
+/* Author: Till Straumann <strauman@slac.stanford.edu>, 3/2002 */
+
+#include <bsp.h>
+#include <bsp/VME.h>
+#include <bsp/irq.h>
+#include <libcpu/bat.h>
+#include <libcpu/spr.h>
+#include <bsp/motorola.h>
+
+/* Use a weak alias for the VME configuration.
+ * This permits individual applications to override
+ * this routine.
+ * They may even create an 'empty'
+ *
+ * void BSP_vme_config(void) {}
+ *
+ * which will avoid linking in the Universe driver
+ * at all :-).
+ */
+
+void BSP_vme_config(void) __attribute__ (( weak, alias("__BSP_default_vme_config") ));
+
+SPR_RO(DBAT0U)
+
+extern unsigned32 VME_Slot1;
+
+void
+__BSP_default_vme_config(void)
+{
+union {
+ struct _BATU bat;
+ unsigned long batbits;
+} dbat0u;
+
+ vmeUniverseInit();
+ vmeUniverseReset();
+
+ /* setup a PCI area to map the VME bus */
+
+ dbat0u.batbits = _read_DBAT0U();
+
+ /* map VME address ranges */
+ vmeUniverseMasterPortCfg(
+ 0,
+ VME_AM_EXT_SUP_DATA,
+ _VME_A32_WIN0_ON_VME,
+ _VME_A32_WIN0_ON_PCI,
+ 0x0F000000);
+ vmeUniverseMasterPortCfg(
+ 1,
+ VME_AM_STD_SUP_DATA,
+ 0x00000000,
+ _VME_A24_ON_PCI,
+ 0x00ff0000);
+ vmeUniverseMasterPortCfg(
+ 2,
+ VME_AM_SUP_SHORT_IO,
+ 0x00000000,
+ _VME_A16_ON_PCI,
+ 0x00010000);
+
+#ifdef _VME_DRAM_OFFSET
+#if 0
+ if (VME_Slot1){
+ /* map our memory to VME */
+printk("vmeUniverseSlavePortCfg length of 0x%x\n", BSP_mem_size);
+ vmeUniverseSlavePortCfg(
+ 0,
+ VME_AM_EXT_SUP_DATA,
+ _VME_DRAM_32_OFFSET1,
+ PCI_DRAM_OFFSET,
+ BSP_mem_size);
+printk("vmeUniverseSlavePortCfg length of 0x%x\n", _VME_A24_SIZE);
+ vmeUniverseSlavePortCfg(
+ 1,
+ VME_AM_STD_SUP_DATA,
+ _VME_DRAM_24_OFFSET1,
+ PCI_DRAM_OFFSET,
+ _VME_A24_SIZE);
+printk("vmeUniverseSlavePortCfg length of 0x%x\n", _VME_A16_SIZE);
+ vmeUniverseSlavePortCfg(
+ 2,
+ VME_AM_SUP_SHORT_IO,
+ _VME_DRAM_16_OFFSET1,
+ PCI_DRAM_OFFSET,
+ _VME_A16_SIZE);
+ }
+ else {
+printk("vmeUniverseSlavePortCfg length of 0x%x\n", BSP_mem_size);
+ vmeUniverseSlavePortCfg(
+ 0,
+ VME_AM_EXT_SUP_DATA,
+ _VME_DRAM_32_OFFSET2,
+ PCI_DRAM_OFFSET,
+ BSP_mem_size);
+printk("vmeUniverseSlavePortCfg length of 0x%x\n", _VME_A24_SIZE);
+ vmeUniverseSlavePortCfg(
+ 1,
+ VME_AM_STD_SUP_DATA,
+ _VME_DRAM_24_OFFSET2,
+ PCI_DRAM_OFFSET,
+ _VME_A24_SIZE);
+printk("vmeUniverseSlavePortCfg length of 0x%x\n", _VME_A16_SIZE);
+ vmeUniverseSlavePortCfg(
+ 2,
+ VME_AM_SUP_SHORT_IO,
+ _VME_DRAM_16_OFFSET2,
+ PCI_DRAM_OFFSET,
+ _VME_A16_SIZE);
+ }
+#endif
+
+ /* make sure the host bridge PCI master is enabled */
+ vmeUniverseWriteReg(
+ vmeUniverseReadReg(UNIV_REGOFF_PCI_CSR) | UNIV_PCI_CSR_BM,
+ UNIV_REGOFF_PCI_CSR);
+#endif
+
+
+ /* stdio is not yet initialized; the driver will revert to printk */
+ vmeUniverseMasterPortsShow(0);
+ vmeUniverseSlavePortsShow(0);
+
+ /* install the VME insterrupt manager */
+ vmeUniverseInstallIrqMgr(0,5,1,6);
+ if (vmeUniverse0PciIrqLine<0)
+ BSP_panic("Unable to get interrupt line info from PCI config");
+ _BSP_vme_bridge_irq=BSP_PCI_IRQ_LOWEST_OFFSET+vmeUniverse0PciIrqLine;
+}