]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/devs/serial/arm/aim711/v2_0/include/ser_arm_aim711_s3c4510.inl
Initial revision
[karo-tx-redboot.git] / packages / devs / serial / arm / aim711 / v2_0 / include / ser_arm_aim711_s3c4510.inl
1 // ====================================================================
2 //
3 //      ser_arm_aim711_s3c4510.inl
4 //
5 //      ARM Industrial Module AIM 711 Serial I/O Interface Module 
6 //      (interrupt driven) for use with s3c4510 driver.
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 //
14 // eCos is free software; you can redistribute it and/or modify it under
15 // the terms of the GNU General Public License as published by the Free
16 // Software Foundation; either version 2 or (at your option) any later version.
17 //
18 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
19 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21 // for more details.
22 //
23 // You should have received a copy of the GNU General Public License along
24 // with eCos; if not, write to the Free Software Foundation, Inc.,
25 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
26 //
27 // As a special exception, if other files instantiate templates or use macros
28 // or inline functions from this file, or you compile this file and link it
29 // with other works to produce a work based on this file, this file does not
30 // by itself cause the resulting work to be covered by the GNU General Public
31 // License. However the source code for this file must still be made available
32 // in accordance with section (3) of the GNU General Public License.
33 //
34 // This exception does not invalidate any other reasons why a work based on
35 // this file might be covered by the GNU General Public License.
36 //
37 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
38 // at http://sources.redhat.com/ecos/ecos-license/
39 // -------------------------------------------
40 //####ECOSGPLCOPYRIGHTEND####
41 // ====================================================================
42 //#####DESCRIPTIONBEGIN####
43 //
44 // Author(s):    Lars.Lindqvist@combitechsystems.com
45 // Contributors: jlarmour
46 // Date:         2001-10-19
47 // Purpose:      Internal interfaces for serial I/O drivers
48 // Description:
49 //
50 //####DESCRIPTIONEND####
51 //
52 // ====================================================================
53
54 #include <pkgconf/hal.h>        // Value CYGNUM_HAL_ARM_S3C4510_CLOCK_SPEED needed
55 #include <cyg/hal/hal_intr.h>
56
57 #define CYGNUM_HAL_ARM_S3C4510_CLOCK_SPEED CYGNUM_HAL_CPUCLOCK
58
59 #ifdef CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0
60 static s3c4510_serial_info s3c4510_serial_info0 = {0x07FFd000, 
61                                            CYGNUM_HAL_INTERRUPT_UART0_TX,
62                                            CYGNUM_HAL_INTERRUPT_UART0_RX};
63 #if CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BUFSIZE > 0
64 static unsigned char s3c4510_serial_out_buf0[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BUFSIZE];
65 static unsigned char s3c4510_serial_in_buf0[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BUFSIZE];
66
67 static SERIAL_CHANNEL_USING_INTERRUPTS(s3c4510_serial_channel0,
68                                        s3c4510_serial_funs, 
69                                        s3c4510_serial_info0,
70                                        CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BAUD),
71                                        CYG_SERIAL_STOP_DEFAULT,
72                                        CYG_SERIAL_PARITY_DEFAULT,
73                                        CYG_SERIAL_WORD_LENGTH_DEFAULT,
74                                        CYG_SERIAL_FLAGS_DEFAULT,
75                                        &s3c4510_serial_out_buf0[0], sizeof(s3c4510_serial_out_buf0),
76                                        &s3c4510_serial_in_buf0[0], sizeof(s3c4510_serial_in_buf0)
77     );
78 #else
79 static SERIAL_CHANNEL(s3c4510_serial_channel0,
80                       s3c4510_serial_funs, 
81                       s3c4510_serial_info0,
82                       CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_BAUD),
83                       CYG_SERIAL_STOP_DEFAULT,
84                       CYG_SERIAL_PARITY_DEFAULT,
85                       CYG_SERIAL_WORD_LENGTH_DEFAULT,
86                       CYG_SERIAL_FLAGS_DEFAULT
87     );
88 #endif
89
90 DEVTAB_ENTRY(s3c4510_serial_io0, 
91              CYGDAT_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0_NAME,
92              0,                     // Does not depend on a lower level interface
93              &cyg_io_serial_devio, 
94              s3c4510_serial_init, 
95              s3c4510_serial_lookup,     // Serial driver may need initializing
96              &s3c4510_serial_channel0
97     );
98 #endif //  CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL0
99
100 #ifdef CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1
101 static s3c4510_serial_info s3c4510_serial_info1 = {0x07FFe000,
102                                            CYGNUM_HAL_INTERRUPT_UART1_TX,
103                                            CYGNUM_HAL_INTERRUPT_UART1_RX};
104 #if CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BUFSIZE > 0
105 static unsigned char s3c4510_serial_out_buf1[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BUFSIZE];
106 static unsigned char s3c4510_serial_in_buf1[CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BUFSIZE];
107
108 static SERIAL_CHANNEL_USING_INTERRUPTS(s3c4510_serial_channel1,
109                                        s3c4510_serial_funs, 
110                                        s3c4510_serial_info1,
111                                        CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BAUD),
112                                        CYG_SERIAL_STOP_DEFAULT,
113                                        CYG_SERIAL_PARITY_DEFAULT,
114                                        CYG_SERIAL_WORD_LENGTH_DEFAULT,
115                                        CYG_SERIAL_FLAGS_DEFAULT,
116                                        &s3c4510_serial_out_buf1[0], sizeof(s3c4510_serial_out_buf1),
117                                        &s3c4510_serial_in_buf1[0], sizeof(s3c4510_serial_in_buf1)
118     );
119 #else
120 static SERIAL_CHANNEL(s3c4510_serial_channel1,
121                       s3c4510_serial_funs, 
122                       s3c4510_serial_info1,
123                       CYG_SERIAL_BAUD_RATE(CYGNUM_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_BAUD),
124                       CYG_SERIAL_STOP_DEFAULT,
125                       CYG_SERIAL_PARITY_DEFAULT,
126                       CYG_SERIAL_WORD_LENGTH_DEFAULT,
127                       CYG_SERIAL_FLAGS_DEFAULT
128     );
129 #endif
130
131 DEVTAB_ENTRY(s3c4510_serial_io1, 
132              CYGDAT_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1_NAME,
133              0,                     // Does not depend on a lower level interface
134              &cyg_io_serial_devio, 
135              s3c4510_serial_init, 
136              s3c4510_serial_lookup,     // Serial driver may need initializing
137              &s3c4510_serial_channel1
138     );
139 #endif //  CYGPKG_IO_SERIAL_ARM_AIM711_S3C4510_SERIAL1
140
141 // EOF ser_arm_aim711_s3c4510.inl