source: rtems/c/src/lib/libbsp/i386/pc386/console/conscfg.c @ 7cdabc49

4.11
Last change on this file since 7cdabc49 was 7cdabc49, checked in by Joel Sherrill <joel.sherrill@…>, on Dec 14, 2014 at 10:27:06 PM

pc386: Add Edison base support

The current support for the Edison supports a single polled
UART for input and output plus a simulated clock tick. The
activities forward for supporting the Edison have been posted
on the RTEMS mailing lists and at:

http://rtemsramblings.blogspot.com/2014/12/intel-edison-and-rtems-road-forward.html

  • Property mode set to 100644
File size: 7.9 KB
Line 
1/*
2 *  This file contains the libchip configuration information
3 *  to instantiate the libchip driver for the VGA console
4 *  and serial ports on a PC.
5 */
6
7/*
8 *  COPYRIGHT (c) 1989-2014.
9 *  On-Line Applications Research Corporation (OAR).
10 *
11 *  The license and distribution terms for this file may be
12 *  found in the file LICENSE in this distribution or at
13 *  http://www.rtems.org/license/LICENSE.
14 */
15
16#include <unistd.h> /* write */
17
18#include <bsp.h>
19#include <libchip/serial.h>
20#include <libchip/ns16550.h>
21#if BSP_ENABLE_VGA
22#include "vgacons.h"
23#endif
24#include <bsp/irq.h>
25#include <rtems/pci.h>
26#include <bsp/rtd316.h>
27
28#if BSP_ENABLE_VGA
29#define VGA_CONSOLE_FUNCTIONS  &vgacons_fns
30#endif
31
32#if BSP_ENABLE_COM1_COM4
33  #if 0
34  #define COM_CONSOLE_FUNCTIONS  &ns16550_fns_polled
35  #else
36  #define COM_CONSOLE_FUNCTIONS  &ns16550_fns
37  #endif
38
39  /*
40   * Base IO for UART
41   */
42  #define COM1_BASE_IO  0x3F8
43  #define COM2_BASE_IO  0x3E8
44  #define COM3_BASE_IO  0x2F8
45  #define COM4_BASE_IO  0x2E8
46
47  #define CLOCK_RATE     (115200 * 16)
48
49  static uint8_t com_get_register(uint32_t addr, uint8_t i)
50  {
51    register uint8_t val;
52 
53    inport_byte( (addr + i),val );
54    return val;
55  }
56
57  static void com_set_register(uint32_t addr, uint8_t i, uint8_t val)
58  {
59    outport_byte( (addr + i),val );
60  }
61#endif
62
63#if (BSP_IS_EDISON == 1 )
64  extern const console_fns edison_fns;
65#endif
66
67console_tbl     Console_Configuration_Ports[] = {
68#if (BSP_IS_EDISON == 1)
69  {
70    "/dev/vgacons",                        /* sDeviceName */
71    -1,                                     /* deviceType */
72    &edison_fns,                           /* pDeviceFns */
73    NULL,                                  /* deviceProbe */
74    NULL,                                  /* pDeviceFlow */
75    16,                                    /* ulMargin */
76    8,                                     /* ulHysteresis */
77    (void *) NULL,              /* NULL */ /* pDeviceParams */
78    0x00000000,                            /* ulCtrlPort1 */
79    0x00000000,                            /* ulCtrlPort2 */
80    0x00000000,                            /* ulDataPort */
81    NULL,                                  /* getRegister */
82    NULL,                                  /* setRegister */
83    NULL,/* unused */                      /* getData */
84    NULL,/* unused */                      /* setData */
85    0X0,                                   /* ulClock */
86    0x0                                     /* ulIntVector -- base for port */
87  },
88#endif
89#if BSP_ENABLE_VGA
90  {
91    "/dev/vgacons",                        /* sDeviceName */
92    VGA_CONSOLE,                           /* deviceType */
93    VGA_CONSOLE_FUNCTIONS,                 /* pDeviceFns */
94    vgacons_probe,                         /* deviceProbe */
95    NULL,                                  /* pDeviceFlow */
96    16,                                    /* ulMargin */
97    8,                                     /* ulHysteresis */
98    (void *) NULL,              /* NULL */ /* pDeviceParams */
99    0x00000000,                            /* ulCtrlPort1 */
100    0x00000000,                            /* ulCtrlPort2 */
101    0x00000000,                            /* ulDataPort */
102    NULL,                                  /* getRegister */
103    NULL,                                  /* setRegister */
104    NULL,/* unused */                      /* getData */
105    NULL,/* unused */                      /* setData */
106    0X0,                                   /* ulClock */
107    0x0                                     /* ulIntVector -- base for port */
108  },
109#endif
110#if BSP_ENABLE_COM1_COM4
111  {
112    "/dev/com1",                           /* sDeviceName */
113    SERIAL_NS16550,                        /* deviceType */
114    COM_CONSOLE_FUNCTIONS,                 /* pDeviceFns */
115    NULL,                                  /* deviceProbe, assume it is there */
116    NULL,                                  /* pDeviceFlow */
117    16,                                    /* ulMargin */
118    8,                                     /* ulHysteresis */
119    (void *) 9600,         /* Baud Rate */ /* pDeviceParams */
120    COM1_BASE_IO,                          /* ulCtrlPort1 */
121    0x00000000,                            /* ulCtrlPort2 */
122    COM1_BASE_IO,                          /* ulDataPort */
123    com_get_register,                      /* getRegister */
124    com_set_register,                      /* setRegister */
125    NULL,/* unused */                      /* getData */
126    NULL,/* unused */                      /* setData */
127    CLOCK_RATE,                            /* ulClock */
128    BSP_UART_COM1_IRQ                      /* ulIntVector -- base for port */
129  },
130  {
131    "/dev/com2",                           /* sDeviceName */
132    SERIAL_NS16550,                        /* deviceType */
133    COM_CONSOLE_FUNCTIONS,                 /* pDeviceFns */
134    NULL,                                  /* deviceProbe, assume it is there */
135    NULL,                                  /* pDeviceFlow */
136    16,                                    /* ulMargin */
137    8,                                     /* ulHysteresis */
138    (void *) 9600,         /* Baud Rate */ /* pDeviceParams */
139    COM2_BASE_IO,                          /* ulCtrlPort1 */
140    0x00000000,                            /* ulCtrlPort2 */
141    COM2_BASE_IO,                          /* ulDataPort */
142    com_get_register,                      /* getRegister */
143    com_set_register,                      /* setRegister */
144    NULL,/* unused */                      /* getData */
145    NULL,/* unused */                      /* setData */
146    CLOCK_RATE,                            /* ulClock */
147    BSP_UART_COM2_IRQ                      /* ulIntVector -- base for port */
148  },
149
150  {
151    "/dev/com3",                           /* sDeviceName */
152    SERIAL_NS16550,                        /* deviceType */
153    COM_CONSOLE_FUNCTIONS,                 /* pDeviceFns */
154    NULL,                                  /* deviceProbe, assume it is there */
155    NULL,                                  /* pDeviceFlow */
156    16,                                    /* ulMargin */
157    8,                                     /* ulHysteresis */
158    (void *) 9600,         /* Baud Rate */ /* pDeviceParams */
159    COM3_BASE_IO,                          /* ulCtrlPort1 */
160    0x00000000,                            /* ulCtrlPort2 */
161    COM3_BASE_IO,                          /* ulDataPort */
162    com_get_register,                      /* getRegister */
163    com_set_register,                      /* setRegister */
164    NULL,/* unused */                      /* getData */
165    NULL,/* unused */                      /* setData */
166    CLOCK_RATE,                            /* ulClock */
167    BSP_UART_COM3_IRQ                      /* ulIntVector -- base for port */
168  },
169
170  {
171    "/dev/com4",                           /* sDeviceName */
172    SERIAL_NS16550,                        /* deviceType */
173    COM_CONSOLE_FUNCTIONS,                 /* pDeviceFns */
174    NULL,                                  /* deviceProbe, assume it is there */
175    NULL,                                  /* pDeviceFlow */
176    16,                                    /* ulMargin */
177    8,                                     /* ulHysteresis */
178    (void *) 9600,         /* Baud Rate */ /* pDeviceParams */
179    COM4_BASE_IO,                          /* ulCtrlPort1 */
180    0x00000000,                            /* ulCtrlPort2 */
181    COM4_BASE_IO,                          /* ulDataPort */
182    com_get_register,                      /* getRegister */
183    com_set_register,                      /* setRegister */
184    NULL,/* unused */                      /* getData */
185    NULL,/* unused */                      /* setData */
186    CLOCK_RATE,                            /* ulClock */
187    BSP_UART_COM4_IRQ                      /* ulIntVector -- base for port */
188  },
189#endif
190
191};
192
193/*
194 *  Define a variable that contains the number of statically configured
195 *  console devices.
196 */
197unsigned long  Console_Configuration_Count = \
198    (sizeof(Console_Configuration_Ports)/sizeof(console_tbl));
Note: See TracBrowser for help on using the repository browser.