]> git.ipfire.org Git - people/ms/u-boot.git/blob - arch/arm/cpu/ixp/npe/IxEthAccControlInterface.c
arm: Move cpu/$CPU to arch/arm/cpu/$CPU
[people/ms/u-boot.git] / arch / arm / cpu / ixp / npe / IxEthAccControlInterface.c
1 /**
2 * @file IxEthAccControlInterface.c
3 *
4 * @author Intel Corporation
5 * @date
6 *
7 * @brief IX_ETH_ACC_PUBLIC wrappers for control plane functions
8 *
9 * Design Notes:
10 *
11 * @par
12 * IXP400 SW Release version 2.0
13 *
14 * -- Copyright Notice --
15 *
16 * @par
17 * Copyright 2001-2005, Intel Corporation.
18 * All rights reserved.
19 *
20 * @par
21 * Redistribution and use in source and binary forms, with or without
22 * modification, are permitted provided that the following conditions
23 * are met:
24 * 1. Redistributions of source code must retain the above copyright
25 * notice, this list of conditions and the following disclaimer.
26 * 2. Redistributions in binary form must reproduce the above copyright
27 * notice, this list of conditions and the following disclaimer in the
28 * documentation and/or other materials provided with the distribution.
29 * 3. Neither the name of the Intel Corporation nor the names of its contributors
30 * may be used to endorse or promote products derived from this software
31 * without specific prior written permission.
32 *
33 * @par
34 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
35 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
36 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
37 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
38 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
43 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
44 * SUCH DAMAGE.
45 *
46 * @par
47 * -- End of Copyright Notice --
48 */
49
50 #include "IxOsal.h"
51 #include "IxEthAcc.h"
52 #include "IxEthAcc_p.h"
53
54 PUBLIC IxOsalMutex ixEthAccControlInterfaceMutex;
55
56 IX_ETH_ACC_PUBLIC IxEthAccStatus
57 ixEthAccPortEnable(IxEthAccPortId portId)
58 {
59 IxEthAccStatus result;
60
61 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
62 {
63 printf("EthAcc: (Mac) cannot enable port %d, service not initialized\n", portId);
64 return (IX_ETH_ACC_FAIL);
65 }
66
67 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
68 result = ixEthAccPortEnablePriv(portId);
69 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
70 return result;
71 }
72
73 IX_ETH_ACC_PUBLIC IxEthAccStatus
74 ixEthAccPortDisable(IxEthAccPortId portId)
75 {
76 IxEthAccStatus result;
77
78 /* check the context is iinitialized */
79 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
80 {
81 return (IX_ETH_ACC_FAIL);
82 }
83
84 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
85 result = ixEthAccPortDisablePriv(portId);
86 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
87 return result;
88 }
89
90 IX_ETH_ACC_PUBLIC IxEthAccStatus
91 ixEthAccPortEnabledQuery(IxEthAccPortId portId, BOOL *enabled)
92 {
93 IxEthAccStatus result;
94
95 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
96 {
97 return (IX_ETH_ACC_FAIL);
98 }
99
100 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
101 result = ixEthAccPortEnabledQueryPriv(portId, enabled);
102 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
103 return result;
104 }
105
106 IX_ETH_ACC_PUBLIC IxEthAccStatus
107 ixEthAccPortPromiscuousModeClear(IxEthAccPortId portId)
108 {
109 IxEthAccStatus result;
110
111 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
112 {
113 return (IX_ETH_ACC_FAIL);
114 }
115
116 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
117 result = ixEthAccPortPromiscuousModeClearPriv(portId);
118 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
119 return result;
120 }
121
122 IX_ETH_ACC_PUBLIC IxEthAccStatus
123 ixEthAccPortPromiscuousModeSet(IxEthAccPortId portId)
124 {
125 IxEthAccStatus result;
126
127 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
128 {
129 return (IX_ETH_ACC_FAIL);
130 }
131
132 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
133 result = ixEthAccPortPromiscuousModeSetPriv(portId);
134 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
135 return result;
136 }
137
138 IX_ETH_ACC_PUBLIC IxEthAccStatus
139 ixEthAccPortUnicastMacAddressSet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
140 {
141 IxEthAccStatus result;
142
143 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
144 {
145 return (IX_ETH_ACC_FAIL);
146 }
147
148 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
149 result = ixEthAccPortUnicastMacAddressSetPriv(portId, macAddr);
150 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
151 return result;
152 }
153
154 IX_ETH_ACC_PUBLIC IxEthAccStatus
155 ixEthAccPortUnicastMacAddressGet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
156 {
157 IxEthAccStatus result;
158
159 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
160 {
161 return (IX_ETH_ACC_FAIL);
162 }
163
164 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
165 result = ixEthAccPortUnicastMacAddressGetPriv(portId, macAddr);
166 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
167 return result;
168 }
169
170 IX_ETH_ACC_PUBLIC IxEthAccStatus
171 ixEthAccPortMulticastAddressJoin(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
172 {
173 IxEthAccStatus result;
174
175 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
176 {
177 return (IX_ETH_ACC_FAIL);
178 }
179
180 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
181 result = ixEthAccPortMulticastAddressJoinPriv(portId, macAddr);
182 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
183 return result;
184 }
185
186 IX_ETH_ACC_PUBLIC IxEthAccStatus
187 ixEthAccPortMulticastAddressJoinAll(IxEthAccPortId portId)
188 {
189 IxEthAccStatus result;
190
191 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
192 {
193 return (IX_ETH_ACC_FAIL);
194 }
195
196 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
197 result = ixEthAccPortMulticastAddressJoinAllPriv(portId);
198 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
199 return result;
200 }
201
202 IX_ETH_ACC_PUBLIC IxEthAccStatus
203 ixEthAccPortMulticastAddressLeave(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
204 {
205 IxEthAccStatus result;
206
207 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
208 {
209 return (IX_ETH_ACC_FAIL);
210 }
211
212 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
213 result = ixEthAccPortMulticastAddressLeavePriv(portId, macAddr);
214 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
215 return result;
216 }
217
218 IX_ETH_ACC_PUBLIC IxEthAccStatus
219 ixEthAccPortMulticastAddressLeaveAll(IxEthAccPortId portId)
220 {
221 IxEthAccStatus result;
222
223 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
224 {
225 return (IX_ETH_ACC_FAIL);
226 }
227
228 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
229 result = ixEthAccPortMulticastAddressLeaveAllPriv(portId);
230 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
231 return result;
232 }
233
234 IX_ETH_ACC_PUBLIC IxEthAccStatus
235 ixEthAccPortUnicastAddressShow(IxEthAccPortId portId)
236 {
237 IxEthAccStatus result;
238
239 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
240 {
241 return (IX_ETH_ACC_FAIL);
242 }
243
244 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
245 result = ixEthAccPortUnicastAddressShowPriv(portId);
246 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
247 return result;
248 }
249
250 IX_ETH_ACC_PUBLIC void
251 ixEthAccPortMulticastAddressShow(IxEthAccPortId portId)
252 {
253 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
254 {
255 return;
256 }
257
258 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
259 ixEthAccPortMulticastAddressShowPriv(portId);
260 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
261 }
262
263 IX_ETH_ACC_PUBLIC IxEthAccStatus
264 ixEthAccPortDuplexModeSet(IxEthAccPortId portId, IxEthAccDuplexMode mode)
265 {
266 IxEthAccStatus result;
267
268 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
269 {
270 return (IX_ETH_ACC_FAIL);
271 }
272
273 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
274 result = ixEthAccPortDuplexModeSetPriv(portId, mode);
275 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
276 return result;
277 }
278
279 IX_ETH_ACC_PUBLIC IxEthAccStatus
280 ixEthAccPortDuplexModeGet(IxEthAccPortId portId, IxEthAccDuplexMode *mode)
281 {
282 IxEthAccStatus result;
283
284 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
285 {
286 return (IX_ETH_ACC_FAIL);
287 }
288
289 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
290 result = ixEthAccPortDuplexModeGetPriv(portId, mode);
291 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
292 return result;
293 }
294
295 IX_ETH_ACC_PUBLIC IxEthAccStatus
296 ixEthAccPortTxFrameAppendPaddingEnable(IxEthAccPortId portId)
297 {
298 IxEthAccStatus result;
299
300 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
301 {
302 return (IX_ETH_ACC_FAIL);
303 }
304
305 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
306 result = ixEthAccPortTxFrameAppendPaddingEnablePriv(portId);
307 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
308 return result;
309 }
310
311 IX_ETH_ACC_PUBLIC IxEthAccStatus
312 ixEthAccPortTxFrameAppendPaddingDisable(IxEthAccPortId portId)
313 {
314 IxEthAccStatus result;
315
316 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
317 {
318 return (IX_ETH_ACC_FAIL);
319 }
320
321 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
322 result = ixEthAccPortTxFrameAppendPaddingDisablePriv(portId);
323 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
324 return result;
325 }
326
327 IX_ETH_ACC_PUBLIC IxEthAccStatus
328 ixEthAccPortTxFrameAppendFCSEnable(IxEthAccPortId portId)
329 {
330 IxEthAccStatus result;
331
332 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
333 {
334 return (IX_ETH_ACC_FAIL);
335 }
336
337 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
338 result = ixEthAccPortTxFrameAppendFCSEnablePriv(portId);
339 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
340 return result;
341 }
342
343 IX_ETH_ACC_PUBLIC IxEthAccStatus
344 ixEthAccPortTxFrameAppendFCSDisable(IxEthAccPortId portId)
345 {
346 IxEthAccStatus result;
347
348 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
349 {
350 return (IX_ETH_ACC_FAIL);
351 }
352
353 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
354 result = ixEthAccPortTxFrameAppendFCSDisablePriv(portId);
355 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
356 return result;
357 }
358
359 IX_ETH_ACC_PUBLIC IxEthAccStatus
360 ixEthAccPortRxFrameAppendFCSEnable(IxEthAccPortId portId)
361 {
362 IxEthAccStatus result;
363
364 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
365 {
366 return (IX_ETH_ACC_FAIL);
367 }
368
369 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
370 result = ixEthAccPortRxFrameAppendFCSEnablePriv(portId);
371 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
372 return result;
373 }
374
375 IX_ETH_ACC_PUBLIC IxEthAccStatus
376 ixEthAccPortRxFrameAppendFCSDisable(IxEthAccPortId portId)
377 {
378 IxEthAccStatus result;
379
380 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
381 {
382 return (IX_ETH_ACC_FAIL);
383 }
384
385 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
386 result = ixEthAccPortRxFrameAppendFCSDisablePriv(portId);
387 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
388 return result;
389 }
390
391 IX_ETH_ACC_PUBLIC IxEthAccStatus
392 ixEthAccTxSchedulingDisciplineSet(IxEthAccPortId portId, IxEthAccSchedulerDiscipline sched)
393 {
394 IxEthAccStatus result;
395
396 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
397 {
398 return (IX_ETH_ACC_FAIL);
399 }
400
401 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
402 result = ixEthAccTxSchedulingDisciplineSetPriv(portId, sched);
403 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
404 return result;
405 }
406
407 IX_ETH_ACC_PUBLIC IxEthAccStatus
408 ixEthAccRxSchedulingDisciplineSet(IxEthAccSchedulerDiscipline sched)
409 {
410 IxEthAccStatus result;
411
412 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
413 {
414 return (IX_ETH_ACC_FAIL);
415 }
416
417 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
418 result = ixEthAccRxSchedulingDisciplineSetPriv(sched);
419 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
420 return result;
421 }
422
423 IX_ETH_ACC_PUBLIC IxEthAccStatus
424 ixEthAccPortNpeLoopbackEnable(IxEthAccPortId portId)
425 {
426 IxEthAccStatus result;
427
428 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
429 {
430 return (IX_ETH_ACC_FAIL);
431 }
432
433 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
434 result = ixEthAccNpeLoopbackEnablePriv(portId);
435 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
436 return result;
437 }
438
439 IX_ETH_ACC_PUBLIC IxEthAccStatus
440 ixEthAccPortTxEnable(IxEthAccPortId portId)
441 {
442 IxEthAccStatus result;
443
444 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
445 {
446 return (IX_ETH_ACC_FAIL);
447 }
448
449 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
450 result = ixEthAccPortTxEnablePriv(portId);
451 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
452 return result;
453 }
454
455 IX_ETH_ACC_PUBLIC IxEthAccStatus
456 ixEthAccPortRxEnable(IxEthAccPortId portId)
457 {
458 IxEthAccStatus result;
459
460 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
461 {
462 return (IX_ETH_ACC_FAIL);
463 }
464
465 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
466 result = ixEthAccPortRxEnablePriv(portId);
467 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
468 return result;
469 }
470
471 IX_ETH_ACC_PUBLIC IxEthAccStatus
472 ixEthAccPortNpeLoopbackDisable(IxEthAccPortId portId)
473 {
474 IxEthAccStatus result;
475
476 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
477 {
478 return (IX_ETH_ACC_FAIL);
479 }
480
481 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
482 result = ixEthAccNpeLoopbackDisablePriv(portId);
483 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
484 return result;
485 }
486
487 IX_ETH_ACC_PUBLIC IxEthAccStatus
488 ixEthAccPortTxDisable(IxEthAccPortId portId)
489 {
490 IxEthAccStatus result;
491
492 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
493 {
494 return (IX_ETH_ACC_FAIL);
495 }
496
497 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
498 result = ixEthAccPortTxDisablePriv(portId);
499 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
500 return result;
501 }
502
503 IX_ETH_ACC_PUBLIC IxEthAccStatus
504 ixEthAccPortRxDisable(IxEthAccPortId portId)
505 {
506 IxEthAccStatus result;
507
508 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
509 {
510 return (IX_ETH_ACC_FAIL);
511 }
512
513 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
514 result = ixEthAccPortRxDisablePriv(portId);
515 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
516 return result;
517 }
518
519 IX_ETH_ACC_PUBLIC IxEthAccStatus
520 ixEthAccPortMacReset(IxEthAccPortId portId)
521 {
522 IxEthAccStatus result;
523
524 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
525 {
526 return (IX_ETH_ACC_FAIL);
527 }
528
529 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
530 result = ixEthAccPortMacResetPriv(portId);
531 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
532 return result;
533 }