source: rtems/c/src/lib/libbsp/m68k/mvme147/include/bsp.h @ 46dde0fc

4.115
Last change on this file since 46dde0fc was 46dde0fc, checked in by Sebastian Huber <sebastian.huber@…>, on 10/23/14 at 08:05:17

bsps: Move extern "C" to not cover includes

Some includes may use C++ and this conflicts if surrounded extern "C".

  • Property mode set to 100644
File size: 4.0 KB
Line 
1/*  bsp.h
2 *
3 *  This include file contains all MVME147 board IO definitions.
4 *
5 *  COPYRIGHT (c) 1989-1999.
6 *  On-Line Applications Research Corporation (OAR).
7 *
8 *  The license and distribution terms for this file may be
9 *  found in the file LICENSE in this distribution or at
10 *  http://www.rtems.org/license/LICENSE.
11 *
12 *  MVME147 port for TNI - Telecom Bretagne
13 *  by Dominique LE CAMPION (Dominique.LECAMPION@enst-bretagne.fr)
14 *  May 1996
15 */
16
17#ifndef _BSP_H
18#define _BSP_H
19
20#include <bspopts.h>
21#include <bsp/default-initial-extension.h>
22
23#include <rtems.h>
24#include <rtems/clockdrv.h>
25#include <rtems/console.h>
26#include <rtems/iosupp.h>
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32/* Constants */
33
34#define RAM_START 0x00005000
35#define RAM_END   0x00400000
36
37  /* MVME 147 Peripheral controller chip
38     see MVME147/D1, 3.4 */
39
40struct pcc_map {
41  /* 32 bit registers */
42  uint32_t         dma_table_address;            /* 0xfffe1000 */
43  uint32_t         dma_data_address;             /* 0xfffe1004 */
44  uint32_t         dma_bytecount;                /* 0xfffe1008 */
45  uint32_t         dma_data_holding;             /* 0xfffe100c */
46
47  /* 16 bit registers */
48  uint16_t         timer1_preload;               /* 0xfffe1010 */
49  uint16_t         timer1_count;                 /* 0xfffe1012 */
50  uint16_t         timer2_preload;               /* 0xfffe1014 */
51  uint16_t         timer2_count;                 /* 0xfffe1016 */
52
53  /* 8 bit registers */
54  uint8_t         timer1_int_control;            /* 0xfffe1018 */
55  uint8_t         timer1_control;                /* 0xfffe1019 */
56  uint8_t         timer2_int_control;            /* 0xfffe101a */
57  uint8_t         timer2_control;                /* 0xfffe101b */
58
59  uint8_t         acfail_int_control;            /* 0xfffe101c */
60  uint8_t         watchdog_control;              /* 0xfffe101d */
61
62  uint8_t         printer_int_control;           /* 0xfffe101e */
63  uint8_t         printer_control;               /* 0xfffe102f */
64
65  uint8_t         dma_int_control;               /* 0xfffe1020 */
66  uint8_t         dma_control;                   /* 0xfffe1021 */
67  uint8_t         bus_error_int_control;         /* 0xfffe1022 */
68  uint8_t         dma_status;                    /* 0xfffe1023 */
69  uint8_t         abort_int_control;             /* 0xfffe1024 */
70  uint8_t         table_address_function_code;   /* 0xfffe1025 */
71  uint8_t         serial_port_int_control;       /* 0xfffe1026 */
72  uint8_t         general_purpose_control;       /* 0xfffe1027 */
73  uint8_t         lan_int_control;               /* 0xfffe1028 */
74  uint8_t         general_purpose_status;        /* 0xfffe1029 */
75  uint8_t         scsi_port_int_control;         /* 0xfffe102a */
76  uint8_t         slave_base_address;            /* 0xfffe102b */
77  uint8_t         software_int_1_control;        /* 0xfffe102c */
78  uint8_t         int_base_vector;               /* 0xfffe102d */
79  uint8_t         software_int_2_control;        /* 0xfffe102e */
80  uint8_t         revision_level;                /* 0xfffe102f */
81};
82
83#define pcc      ((volatile struct pcc_map * const) 0xfffe1000)
84
85#define z8530 0xfffe3001
86
87/* interrupt vectors - see MVME146/D1 4.14 */
88#define PCC_BASE_VECTOR        0x40 /* First user int */
89#define SCC_VECTOR             PCC_BASE_VECTOR+3
90#define TIMER_1_VECTOR         PCC_BASE_VECTOR+8
91#define TIMER_2_VECTOR         PCC_BASE_VECTOR+9
92#define SOFT_1_VECTOR          PCC_BASE_VECTOR+10
93#define SOFT_2_VECTOR          PCC_BASE_VECTOR+11
94
95#define USE_CHANNEL_A   1                /* 1 = use channel A for console */
96#define USE_CHANNEL_B   0                /* 1 = use channel B for console */
97
98#if (USE_CHANNEL_A == 1)
99#define CONSOLE_CONTROL  0xfffe3002
100#define CONSOLE_DATA     0xfffe3003
101#elif (USE_CHANNEL_B == 1)
102#define CONSOLE_CONTROL  0xfffe3000
103#define CONSOLE_DATA     0xfffe3001
104#endif
105
106extern rtems_isr_entry M68Kvec[];   /* vector table address */
107
108/* functions */
109
110rtems_isr_entry set_vector(
111  rtems_isr_entry     handler,
112  rtems_vector_number vector,
113  int                 type
114);
115
116#ifdef __cplusplus
117}
118#endif
119
120#endif
Note: See TracBrowser for help on using the repository browser.