source: rtems/c/src/lib/libbsp/sparc/leon3/include/bsp.h @ 456eab7d

4.115
Last change on this file since 456eab7d was 47cf1add, checked in by Daniel Hellstrom <daniel@…>, on 06/04/14 at 12:22:00

LEON3: devfs free nodes must be sized

.. according to the maximum number of termios ports which is

  1. Since LEON3 uses PnP to find how many UARTs there are

present we must make sure worst case work.

The current maximum of 4 free nodes caused for example the
GR712RC with its 6 UARTs to fail during devfs02 test.

  • Property mode set to 100644
File size: 5.7 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup sparc_leon3
5 *
6 * @brief Global BSP Definitions.
7 */
8
9/*  bsp.h
10 *
11 *  This include file contains all SPARC simulator definitions.
12 *
13 *  COPYRIGHT (c) 1989-1998.
14 *  On-Line Applications Research Corporation (OAR).
15 *
16 *  The license and distribution terms for this file may be
17 *  found in the file LICENSE in this distribution or at
18 *  http://www.rtems.org/license/LICENSE.
19 *
20 *  Ported to ERC32 implementation of the SPARC by On-Line Applications
21 *  Research Corporation (OAR) under contract to the European Space
22 *  Agency (ESA).
23 *
24 *  ERC32 modifications of respective RTEMS file: COPYRIGHT (c) 1995.
25 *  European Space Agency.
26 */
27
28#ifndef _BSP_H
29#define _BSP_H
30
31#ifdef __cplusplus
32extern "C" {
33#endif
34
35#include <bspopts.h>
36#include <bsp/default-initial-extension.h>
37
38#include <rtems.h>
39#include <leon.h>
40#include <rtems/clockdrv.h>
41#include <rtems/console.h>
42#include <rtems/irq-extension.h>
43
44/**
45 *  @defgroup sparc_leon3 LEON3 Support
46 *
47 *  @ingroup bsp_sparc
48 *
49 *  @brief LEON3 support package
50 *
51 */
52
53/* SPARC CPU variant: LEON3 */
54#define LEON3 1
55
56/*
57 *  BSP provides its own Idle thread body
58 */
59void *bsp_idle_thread( uintptr_t ignored );
60#define BSP_IDLE_TASK_BODY bsp_idle_thread
61
62/* Maximum supported APBUARTs by BSP */
63#define BSP_NUMBER_OF_TERMIOS_PORTS 8
64
65/* Make sure maximum number of consoles fit in filesystem */
66#define BSP_MAXIMUM_DEVICES 8
67
68/*
69 * Network driver configuration
70 */
71struct rtems_bsdnet_ifconfig;
72extern int rtems_leon_open_eth_driver_attach(
73  struct rtems_bsdnet_ifconfig *config,
74  int attach
75);
76extern int rtems_smc91111_driver_attach_leon3(
77  struct rtems_bsdnet_ifconfig *config,
78  int attach
79);
80extern int rtems_leon_greth_driver_attach(
81  struct rtems_bsdnet_ifconfig *config,
82  int attach
83);
84
85#define RTEMS_BSP_NETWORK_DRIVER_NAME_OPENETH "open_eth1"
86#define RTEMS_BSP_NETWORK_DRIVER_ATTACH_OPENETH   \
87    rtems_leon_open_eth_driver_attach
88#define RTEMS_BSP_NETWORK_DRIVER_NAME_SMC91111 "smc_eth1"
89#define RTEMS_BSP_NETWORK_DRIVER_ATTACH_SMC91111 \
90    rtems_smc91111_driver_attach_leon3
91#define RTEMS_BSP_NETWORK_DRIVER_NAME_GRETH "gr_eth1"
92#define RTEMS_BSP_NETWORK_DRIVER_ATTACH_GRETH \
93    rtems_leon_greth_driver_attach
94
95#ifndef RTEMS_BSP_NETWORK_DRIVER_NAME
96#define RTEMS_BSP_NETWORK_DRIVER_NAME   RTEMS_BSP_NETWORK_DRIVER_NAME_GRETH
97#define RTEMS_BSP_NETWORK_DRIVER_ATTACH RTEMS_BSP_NETWORK_DRIVER_ATTACH_GRETH
98#endif
99
100#define HAS_SMC91111
101
102/* Configure GRETH driver */
103#define GRETH_SUPPORTED
104#define GRETH_MEM_LOAD(addr) leon_r32_no_cache(addr)
105
106extern int   CPU_SPARC_HAS_SNOOPING;
107
108/* Constants */
109
110/*
111 *  Information placed in the linkcmds file.
112 */
113
114extern int   RAM_START;
115extern int   RAM_END;
116extern int   RAM_SIZE;
117
118extern int   PROM_START;
119extern int   PROM_END;
120extern int   PROM_SIZE;
121
122extern int   CLOCK_SPEED;
123
124extern int   end;        /* last address in the program */
125
126/* miscellaneous stuff assumed to exist */
127
128rtems_isr_entry set_vector(                     /* returns old vector */
129    rtems_isr_entry     handler,                /* isr routine        */
130    rtems_vector_number vector,                 /* vector number      */
131    int                 type                    /* RTEMS or RAW intr  */
132);
133
134void BSP_fatal_return( void );
135
136void bsp_spurious_initialize( void );
137
138/* Allocate 8-byte aligned non-freeable pre-malloc() memory. The function
139 * can be called at any time. The work-area will shrink when called before
140 * bsp_work_area_initialize(). malloc() is called to get memory when this
141 * function is called after bsp_work_area_initialize().
142 */
143void *bsp_early_malloc(int size);
144
145/* Interrupt Service Routine (ISR) pointer */
146typedef void (*bsp_shared_isr)(void *arg);
147
148/* Initializes the Shared System Interrupt service */
149extern void BSP_shared_interrupt_init(void);
150
151/* Registers a shared IRQ handler, and enable it at IRQ controller. Multiple
152 * interrupt handlers may use the same IRQ number, all ISRs will be called
153 * when an interrupt on that line is fired.
154 *
155 * Arguments
156 *  irq       System IRQ number
157 *  info      Optional Name of IRQ source
158 *  isr       Function pointer to the ISR
159 *  arg       Second argument to function isr
160 */
161static __inline__ int BSP_shared_interrupt_register
162       (
163       int irq,
164       const char *info,
165       bsp_shared_isr isr,
166       void *arg
167       )
168{
169       return rtems_interrupt_handler_install(irq, info,
170                                       RTEMS_INTERRUPT_SHARED, isr, arg);
171}
172
173/* Unregister previously registered shared IRQ handler.
174 *
175 * Arguments
176 *  irq       System IRQ number
177 *  isr       Function pointer to the ISR
178 *  arg       Second argument to function isr
179 */
180static __inline__ int BSP_shared_interrupt_unregister
181       (
182       int irq,
183       bsp_shared_isr isr,
184       void *arg
185       )
186{
187       return rtems_interrupt_handler_remove(irq, isr, arg);
188}
189
190/* Clear interrupt pending on IRQ controller, this is typically done on a
191 * level triggered interrupt source such as PCI to avoid taking double IRQs.
192 * In such a case the interrupt source must be cleared first on LEON, before
193 * acknowledging the IRQ with this function.
194 *
195 * Arguments
196 *  irq       System IRQ number
197 */
198extern void BSP_shared_interrupt_clear(int irq);
199
200/* Enable Interrupt. This function will unmask the IRQ at the interrupt
201 * controller. This is normally done by _register(). Note that this will
202 * affect all ISRs on this IRQ.
203 *
204 * Arguments
205 *  irq       System IRQ number
206 */
207extern void BSP_shared_interrupt_unmask(int irq);
208
209/* Disable Interrupt. This function will mask one IRQ at the interrupt
210 * controller. This is normally done by _unregister().  Note that this will
211 * affect all ISRs on this IRQ.
212 *
213 * Arguments
214 *  irq         System IRQ number
215 */
216extern void BSP_shared_interrupt_mask(int irq);
217
218#ifdef __cplusplus
219}
220#endif
221
222#endif
223
224
Note: See TracBrowser for help on using the repository browser.