]> git.kernelconcepts.de Git - karo-tx-redboot.git/blob - packages/devs/eth/arm/aaed2000/v2_0/include/devs_eth_arm_aaed2000.inl
Initial revision
[karo-tx-redboot.git] / packages / devs / eth / arm / aaed2000 / v2_0 / include / devs_eth_arm_aaed2000.inl
1 //==========================================================================
2 //
3 //      devs_eth_arm_aaed2000.inl
4 //
5 //      AAED2000 ethernet I/O definitions.
6 //
7 //==========================================================================
8 //####ECOSGPLCOPYRIGHTBEGIN####
9 // -------------------------------------------
10 // This file is part of eCos, the Embedded Configurable Operating System.
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
12 //
13 // eCos is free software; you can redistribute it and/or modify it under
14 // the terms of the GNU General Public License as published by the Free
15 // Software Foundation; either version 2 or (at your option) any later version.
16 //
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
20 // for more details.
21 //
22 // You should have received a copy of the GNU General Public License along
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
25 //
26 // As a special exception, if other files instantiate templates or use macros
27 // or inline functions from this file, or you compile this file and link it
28 // with other works to produce a work based on this file, this file does not
29 // by itself cause the resulting work to be covered by the GNU General Public
30 // License. However the source code for this file must still be made available
31 // in accordance with section (3) of the GNU General Public License.
32 //
33 // This exception does not invalidate any other reasons why a work based on
34 // this file might be covered by the GNU General Public License.
35 //
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
37 // at http://sources.redhat.com/ecos/ecos-license/
38 // -------------------------------------------
39 //####ECOSGPLCOPYRIGHTEND####
40 //==========================================================================
41 //#####DESCRIPTIONBEGIN####
42 //
43 // Author(s):   jskov
44 // Contributors:jskov
45 // Date:        2001-11-06
46 // Purpose:     AAED2000 ethernet defintions
47 //
48 //####DESCRIPTIONEND####
49 //==========================================================================
50
51 #include <cyg/hal/hal_intr.h>           // CYGNUM_HAL_INTERRUPT_ETHR
52 #include <cyg/hal/hal_if.h>
53
54 #ifdef CYGPKG_REDBOOT
55 # include <pkgconf/redboot.h>
56 # ifdef CYGSEM_REDBOOT_FLASH_CONFIG
57 #  include <redboot.h>
58 #  include <flash_config.h>
59 # endif
60 #endif
61
62 #ifdef __WANT_DEVS
63
64 #ifdef CYGPKG_DEVS_ETH_ARM_AAED2000_ETH0
65
66 #if defined(CYGPKG_REDBOOT) && defined(CYGSEM_REDBOOT_FLASH_CONFIG)
67 RedBoot_config_option("Set " CYGDAT_DEVS_ETH_ARM_AAED2000_ETH0_NAME " network hardware address [MAC]",
68                       eth0_esa,
69                       ALWAYS_ENABLED, true,
70                       CONFIG_BOOL, false
71     );
72 RedBoot_config_option(CYGDAT_DEVS_ETH_ARM_AAED2000_ETH0_NAME " network hardware address [MAC]",
73                       eth0_esa_data,
74                       "eth0_esa", true,
75                       CONFIG_ESA, 0
76     );
77 #endif // CYGPKG_REDBOOT && CYGSEM_REDBOOT_FLASH_CONFIG
78
79 #ifdef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
80 // Note that this section *is* active in an application, outside RedBoot,
81 // where the above section is not included.
82
83 # include <cyg/hal/hal_if.h>
84
85 # ifndef CONFIG_ESA
86 #  define CONFIG_ESA (6)
87 # endif
88 # ifndef CONFIG_BOOL
89 #  define CONFIG_BOOL (1)
90 # endif
91
92 cyg_bool
93 _aaed2000_provide_eth0_esa(struct cs8900a_priv_data* cpd)
94 {
95     cyg_bool set_esa;
96     int ok;
97     ok = CYGACC_CALL_IF_FLASH_CFG_OP( CYGNUM_CALL_IF_FLASH_CFG_GET,
98                                       "eth0_esa", &set_esa, CONFIG_BOOL);
99     if (ok && set_esa) {
100         ok = CYGACC_CALL_IF_FLASH_CFG_OP( CYGNUM_CALL_IF_FLASH_CFG_GET,
101                                           "eth0_esa_data", cpd->esa, CONFIG_ESA);
102     }
103
104     return ok && set_esa;
105 }
106
107 #endif // CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
108
109 static cs8900a_priv_data_t cs8900a_eth0_priv_data = { 
110     base : (cyg_addrword_t) 0x10000300,
111     interrupt: CYGNUM_HAL_INTERRUPT_ETH,
112 #ifdef CYGSEM_DEVS_ETH_ARM_AAED2000_ETH0_SET_ESA
113     esa : CYGDAT_DEVS_ETH_ARM_AAED2000_ETH0_ESA,
114     hardwired_esa : true,
115 #else
116     hardwired_esa : false,
117 #endif
118 #ifdef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
119     provide_esa : &_aaed2000_provide_eth0_esa,
120 #else
121     provide_esa : NULL,
122 #endif
123 };
124
125 ETH_DRV_SC(cs8900a_sc,
126            &cs8900a_eth0_priv_data, // Driver specific data
127            CYGDAT_DEVS_ETH_ARM_AAED2000_ETH0_NAME,
128            cs8900a_start,
129            cs8900a_stop,
130            cs8900a_control,
131            cs8900a_can_send,
132            cs8900a_send,
133            cs8900a_recv,
134            cs8900a_deliver,     // "pseudoDSR" called from fast net thread
135            cs8900a_poll,        // poll function, encapsulates ISR and DSR
136            cs8900a_int_vector);
137
138 NETDEVTAB_ENTRY(cs8900a_netdev, 
139                 "cs8900a_" CYGDAT_DEVS_ETH_ARM_AAED2000_ETH0_NAME,
140                 cs8900a_init, 
141                 &cs8900a_sc);
142
143 #endif // CYGPKG_DEVS_ETH_ARM_AAED2000_ETH0
144
145 #endif // __WANT_DEVS
146
147 // EOF devs_eth_arm_aaed2000.inl