summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mvme2307/include/bsp.h
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mvme2307/include/bsp.h')
-rw-r--r--c/src/lib/libbsp/powerpc/mvme2307/include/bsp.h338
1 files changed, 338 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/powerpc/mvme2307/include/bsp.h b/c/src/lib/libbsp/powerpc/mvme2307/include/bsp.h
new file mode 100644
index 0000000000..1bf34c5bfa
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/mvme2307/include/bsp.h
@@ -0,0 +1,338 @@
+/* bsp.h
+ *
+ * This include file contains all board IO definitions.
+ *
+ * XXX : put yours in here
+ *
+ * COPYRIGHT (c) 1989-1998.
+ * On-Line Applications Research Corporation (OAR).
+ * Copyright assigned to U.S. Government, 1994.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.OARcorp.com/rtems/license.html.
+ *
+ * $Id$
+ */
+
+#ifndef __MVME2307_BSP_h
+#define __MVME2307_BSP_h
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <rtems.h>
+#include <console.h>
+#include <clockdrv.h>
+
+/*
+ * Network driver configuration
+ */
+
+struct rtems_bsdnet_ifconfig;
+extern int rtems_dec21140_driver_attach (struct rtems_bsdnet_ifconfig *config);
+
+#define RTEMS_BSP_NETWORK_DRIVER_NAME "dc1"
+#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_dec21140_driver_attach
+
+
+/*
+ * Define the time limits for RTEMS Test Suite test durations.
+ * Long test and short test duration limits are provided. These
+ * values are in seconds and need to be converted to ticks for the
+ * application.
+ *
+ */
+
+#define MAX_LONG_TEST_DURATION 300 /* 5 minutes = 300 seconds */
+#define MAX_SHORT_TEST_DURATION 3 /* 3 seconds */
+
+/*
+ * Stuff for Time Test 27
+ */
+
+#define MUST_WAIT_FOR_INTERRUPT 1
+
+#define Install_tm27_vector( handler ) \
+ set_vector( (handler), PPC_IRQ_DECREMENTER, 1 )
+
+#define Cause_tm27_intr() \
+ { \
+ unsigned32 _clicks = 1; \
+ asm volatile( "mtdec %0" : : "r" ((_clicks)) ); \
+ }
+
+
+#define Clear_tm27_intr() \
+ { \
+ unsigned32 _clicks = 0xffffffff; \
+ asm volatile( "mtdec %0" : : "r" ((_clicks)) ); \
+ }
+
+
+#define Lower_tm27_intr() \
+ { \
+ unsigned32 _msr = 0; \
+ _ISR_Set_level( 0 ); \
+ asm volatile( "mfmsr %0 ;" : "=r" (_msr) :); \
+ _msr |= 0x8002; \
+ asm volatile( "mtmsr %0 ;" : : "r" (_msr) ); \
+ }
+
+
+
+/* miscellaneous stuff assumed to exist */
+
+extern rtems_configuration_table BSP_Configuration;
+
+/*
+ * Device Driver Table Entries
+ */
+
+/*
+ * NOTE: Use the standard Console driver entry
+ */
+
+/*
+ * NOTE: Use the standard Clock driver entry
+ */
+
+/*
+ * Falcon memory controller registers
+ */
+
+typedef struct {
+ unsigned32 SystemId :8;
+# define SYSID_MVME2300 0xFD
+
+ unsigned32 SystemClock :4;
+# define SYSCLK_50_MHZ 0xD
+# define SYSCLK_60_MHZ 0xE
+# define SYSCLK_67_MHZ 0xF
+
+ unsigned32 ExternalCacheSize :4;
+# define NO_EXT_CACHE 0xF
+
+ unsigned32 ProcessorInfo1 :4;
+ unsigned32 ProcessorInfo2 :4;
+# define PROC_WITH_1M_CACHE 0x4
+# define PROC_WITH_512K_CACHE 0x5
+# define PROC_WITH_256K_CACHE 0x6
+# define PROC_WITH_NO_CACHE 0x7
+
+ unsigned32 _ :8;
+
+} FalconSystemConfReg_t;
+
+#define Falcon_SYSCR (*(FalconSystemConfReg_t *) 0xFEF80400)
+
+typedef struct {
+ unsigned32 MemSize :2;
+# define RAM_16_MB 0x0
+# define RAM_32_MB 0x1
+# define RAM_64_MB 0x2
+# define RAM_128_MB 0x3
+
+ unsigned32 _ :1;
+ unsigned32 MemFastRefresh :1;
+# define DRAM_NORMAL_REFRESH 0x0
+# define DRAM_FAST_REFRESH 0x1
+
+ unsigned32 __ :2;
+ unsigned32 MemSpeed :2;
+# define DRAM_70_NSEC 0x0
+# define DRAM_60_NSEC 0x1
+# define DRAM_50_NSEC 0x3
+
+ unsigned32 ___ :1;
+ unsigned32 RomAType :3;
+ unsigned32 ____ :1;
+ unsigned32 RomBType :3;
+# define INTEL_FLASH 0x6;
+# define UNKNOWN_FLASH 0x7;
+
+ unsigned32 L2Type :4;
+# define LATE_WRITE_SYNC 0x0
+# define PIPELINED_SYNC_BURST 0x1
+
+ unsigned32 L2FreqDivider :4;
+# define PLL_DISABLED 0x0
+# define PLL_DIV_BY_1 0x1
+# define PLL_DIV_BY_1_5 0x2
+# define PLL_DIV_BY_2 0x3
+# define PLL_DIV_BY_2_5 0x4
+# define PLL_DIV_BY_3 0x5
+
+ unsigned32 _____ :2;
+ unsigned32 RomASize :3;
+# define ROM_A_1_MB 0x0
+# define ROM_A_2_MB 0x1
+# define ROM_A_4_MB 0x2
+# define ROM_A_8_MB 0x3
+# define ROM_A_16_MB 0x4
+# define ROM_A_32_MB 0x5
+# define ROM_A_64_MB 0x6
+# define ROM_A_0_MB 0x7
+
+ unsigned32 ______ :3;
+} FalconMemConfReg_t;
+
+#define Falcon_MEMCR (*(FalconMemConfReg_t *) 0xFEF80404)
+
+extern int end; /* last address in the program */
+
+/*
+ * PCI bus functions
+ */
+
+/*
+ * address space conversions
+ *
+ * address spaces:
+ * LOCAL - memory space of the PowerPC
+ * PCI - memory space on the PCI bus
+ * IO - I/O space on the PCI bus
+ * VME - memory space on the VME bus
+ */
+#define IO_TO_LOCAL(address) ((unsigned int)(address) + 0x80000000)
+#define PCI_TO_LOCAL(address) ((unsigned int)(address) + 0xC0000000)
+#define LOCAL_TO_PCI(address) ((unsigned int)(address) + 0x80000000)
+#define INVERSE_LOCAL_TO_PCI(address) ((unsigned int)(address) - 0x80000000)
+
+#define PCI_NOT_FOUND (-1)
+
+#define RAVEN_VENDOR_ID 0x1057
+#define RAVEN_DEVICE_ID 0x4801
+#define UNIVERSE_VENDOR_ID 0x10E3
+#define UNIVERSE_DEVICE_ID 0x0000
+#define DEC21140_VENDOR_ID 0x1011
+#define DEC21140_DEVICE_ID 0x0009
+
+#define PCI_BASE_ADDRESS_0 0x10
+#define PCI_BASE_ADDRESS_1 0x14
+#define PCI_INTERRUPT_LINE 60
+
+int pci_make_devsig(int bus, int device, int function); /* returns sig */
+int pci_find_by_devid(int vendorId, int devId, int idx); /* returns sig */
+int pci_conf_read8(int sig, int off);
+int pci_conf_read16(int sig, int off);
+int pci_conf_read32(int sig, int off);
+void pci_conf_write8(int sig, int off, unsigned int data);
+void pci_conf_write16(int sig, int off, unsigned int data);
+void pci_conf_write32(int sig, int off, unsigned int data);
+
+static inline void synchronize_io(void) {
+ asm volatile ("eieio" : :);
+}
+
+/*
+ * functions for accessing little-endian data
+ */
+static inline void st_le32(volatile int *addr, int data) {
+ asm volatile ("stwbrx %0,0,%1" : : "r" (data), "r" (addr));
+}
+
+static inline void st_le16(volatile short *addr, short data) {
+ asm volatile ("sthbrx %0,0,%1" : : "r" (data), "r" (addr));
+}
+
+static inline int ld_le32(volatile int *addr) {
+ int data;
+ asm volatile ("lwbrx %0,0,%1" : "=r" (data) : "r" (addr));
+ return data;
+}
+
+static inline int ld_le16(volatile short *addr) {
+ int data;
+ asm volatile ("lhbrx %0,0,%1" : "=r" (data) : "r" (addr));
+ return data;
+}
+
+/*
+ * interrupt and timer handling
+ */
+ /* ISA interrupts - vectors 0-15 */
+#define IRQ_ISA_TIMER 0
+#define IRQ_UART 4
+#define IRQ_ISA_LM_SIG 5
+#define IRQ_ABORT_SWITCH 8
+#define IRQ_ISA_ETHERNET 10
+#define IRQ_ISA_UNIVERSE 11
+#define IRQ_ISA_PMC_PCIX 15
+ /* Raven interrupts */
+#define IRQ_PIC_CASCADE 16
+#define IRQ_FALCON_ECC 17
+#define IRQ_ETHERNET 18
+#define IRQ_VME_LINT0 19
+#define IRQ_VME_LINT1 20
+#define IRQ_VME_LINT2 21
+#define IRQ_VME_LINT3 22
+#define IRQ_PMC1A_PMC2B 23
+#define IRQ_PMC1B_PMC2C 24
+#define IRQ_PMC1C_PMC2D 25
+#define IRQ_PMC1D_PMC2A 26
+#define IRQ_LM_SIG_0 27
+#define IRQ_LM_SIG_1 28
+ /* Raven timers */
+#define IRQ_TIMER_0 29
+#define IRQ_TIMER_1 30
+#define IRQ_TIMER_2 31
+#define IRQ_TIMER_3 32
+ /* Raven interprocessor interrupts */
+#define IRQ_IPI_0 33
+#define IRQ_IPI_1 34
+#define IRQ_IPI_2 35
+#define IRQ_IPI_3 36
+ /* other */
+#define IRQ_SPURIOUS 37
+#define IRQ_RAVEN_ERROR 38
+
+ /* Raven priority that ISA interrupts use */
+#define PRIORITY_ISA_INT 8
+
+rtems_status_code interrupt_controller_init(void);
+rtems_status_code bsp_interrupt_catch(rtems_isr_entry new_isr_handler,
+ rtems_vector_number vector,
+ rtems_isr_entry *old_isr_handler);
+rtems_status_code bsp_interrupt_enable(rtems_vector_number vector,
+ int priority);
+rtems_status_code bsp_interrupt_disable(rtems_vector_number vector);
+rtems_status_code bsp_start_timer(int timer, int period_usec);
+rtems_status_code bsp_stop_timer(int timer);
+rtems_status_code bsp_read_timer(int timer, int *value);
+rtems_status_code generate_interprocessor_interrupt(int interrupt);
+rtems_status_code set_interrupt_task_priority(int priority);
+
+
+/* functions */
+
+void bsp_cleanup( void );
+
+rtems_isr_entry set_vector( /* returns old vector */
+ rtems_isr_entry handler, /* isr routine */
+ rtems_vector_number vector, /* vector number */
+ int type /* RTEMS or RAW intr */
+);
+
+int read_nvram(char *buff, int offset, int len);
+
+void printk( char *fmt, ... );
+
+void BSP_fatal_return( void );
+
+void bsp_spurious_initialize( void );
+
+extern rtems_configuration_table BSP_Configuration; /* owned by BSP */
+
+extern rtems_cpu_table Cpu_table; /* owned by BSP */
+
+extern rtems_unsigned32 bsp_isr_level;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+/* end of include file */