|
2665
|
1 //========================================================================== |
|
|
2 // |
|
|
3 // olpcl2294_misc.c |
|
|
4 // |
|
|
5 // HAL misc board support code for Olimex LPC-L2294-1MB development |
|
|
6 // board |
|
|
7 // |
|
|
8 //========================================================================== |
|
|
9 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
|
10 // ------------------------------------------- |
|
|
11 // This file is part of eCos, the Embedded Configurable Operating System. |
|
|
12 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
|
13 // Copyright (C) 2008 eCosCentric Limited |
|
|
14 // |
|
|
15 // eCos is free software; you can redistribute it and/or modify it under |
|
|
16 // the terms of the GNU General Public License as published by the Free |
|
|
17 // Software Foundation; either version 2 or (at your option) any later version. |
|
|
18 // |
|
|
19 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
|
20 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
|
21 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
|
22 // for more details. |
|
|
23 // |
|
|
24 // You should have received a copy of the GNU General Public License along |
|
|
25 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
|
26 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
|
27 // |
|
|
28 // As a special exception, if other files instantiate templates or use macros |
|
|
29 // or inline functions from this file, or you compile this file and link it |
|
|
30 // with other works to produce a work based on this file, this file does not |
|
|
31 // by itself cause the resulting work to be covered by the GNU General Public |
|
|
32 // License. However the source code for this file must still be made available |
|
|
33 // in accordance with section (3) of the GNU General Public License. |
|
|
34 // |
|
|
35 // This exception does not invalidate any other reasons why a work based on |
|
|
36 // this file might be covered by the GNU General Public License. |
|
|
37 // ------------------------------------------- |
|
|
38 //####ECOSGPLCOPYRIGHTEND#### |
|
|
39 //========================================================================== |
|
|
40 //#####DESCRIPTIONBEGIN#### |
|
|
41 // |
|
|
42 // Author(s): Sergei Gavrikov |
|
|
43 // Contributors: Sergei Gavrikov |
|
|
44 // Date: 2008-08-31 |
|
|
45 // Purpose: HAL board support |
|
|
46 // Description: Implementations of HAL board interfaces |
|
|
47 // |
|
|
48 //####DESCRIPTIONEND#### |
|
|
49 // |
|
|
50 //========================================================================*/ |
|
|
51 |
|
|
52 #include <pkgconf/hal.h> |
|
|
53 #include <cyg/hal/hal_io.h> // IO macros |
|
|
54 #include <cyg/hal/hal_arch.h> // Register state info |
|
|
55 |
|
|
56 #include <cyg/infra/cyg_type.h> // base types |
|
|
57 #include <cyg/hal/var_io.h> |
|
|
58 |
|
|
59 #include <cyg/hal/hal_var_ints.h> |
|
|
60 #include <cyg/hal/drv_api.h> |
|
|
61 |
|
|
62 // Newlib provides support for building the run-time elements of C++ |
|
|
63 // within the toolchain. Modern newlib stuff looks for a _impure_ptr |
|
|
64 // entry. |
|
|
65 void *_impure_ptr; |
|
|
66 |
|
|
67 extern void cyg_hal_plf_serial_init (void); |
|
|
68 |
|
|
69 //-------------------------------------------------------------------------- |
|
|
70 // hal_lpc2xxx_set_leds -- |
|
|
71 // |
|
|
72 // There is one diagnostic LED marked 'STAT' on the board |
|
|
73 // |
|
|
74 void |
|
|
75 hal_lpc2xxx_set_leds (int mask) |
|
|
76 { |
|
|
77 HAL_WRITE_UINT32 (CYGARC_HAL_LPC2XXX_REG_IO_BASE + |
|
|
78 CYGARC_HAL_LPC2XXX_REG_IO1SET, (1 << 23)); |
|
|
79 if (mask & 1) |
|
|
80 HAL_WRITE_UINT32 (CYGARC_HAL_LPC2XXX_REG_IO_BASE + |
|
|
81 CYGARC_HAL_LPC2XXX_REG_IO1CLR, (1 << 23)); |
|
|
82 } |
|
|
83 |
|
|
84 //-------------------------------------------------------------------------- |
|
|
85 // cyg_hal_plf_comms_init -- |
|
|
86 // |
|
|
87 void |
|
|
88 cyg_hal_plf_comms_init (void) |
|
|
89 { |
|
|
90 static int initialized = 0; |
|
|
91 |
|
|
92 if (initialized) |
|
|
93 return; |
|
|
94 initialized = 1; |
|
|
95 |
|
|
96 cyg_hal_plf_serial_init (); |
|
|
97 } |
|
|
98 |
|
|
99 #ifdef HAL_PLF_HARDWARE_INIT |
|
|
100 //-------------------------------------------------------------------------- |
|
|
101 // hal_plf_hardware_init -- |
|
|
102 // |
|
|
103 void |
|
|
104 hal_plf_hardware_init (void) |
|
|
105 { |
|
|
106 // configure IRQ level from CL CS8900A |
|
|
107 cyg_drv_interrupt_configure (CYGNUM_HAL_INTERRUPT_EINT2, 0, 1); |
|
|
108 } |
|
|
109 #endif // HAL_PLF_HARDWARE_INIT |
|
|
110 |
|
|
111 // indent: --indent-level4 -br -nut; vim: expandtab tabstop=4 shiftwidth=4 |
|
|
112 //-------------------------------------------------------------------------- |
|
|
113 // EOF olpcl2294_misc.c |