1 | /* |
2 | * Header for Bestcomm FEC tasks driver |
3 | * |
4 | * |
5 | * Copyright (C) 2006-2007 Sylvain Munaut <tnt@246tNt.com> |
6 | * Copyright (C) 2003-2004 MontaVista, Software, Inc. |
7 | * ( by Dale Farnsworth <dfarnsworth@mvista.com> ) |
8 | * |
9 | * This file is licensed under the terms of the GNU General Public License |
10 | * version 2. This program is licensed "as is" without any warranty of any |
11 | * kind, whether express or implied. |
12 | */ |
13 | |
14 | #ifndef __BESTCOMM_FEC_H__ |
15 | #define __BESTCOMM_FEC_H__ |
16 | |
17 | |
18 | struct bcom_fec_bd { |
19 | u32 status; |
20 | u32 skb_pa; |
21 | }; |
22 | |
23 | #define BCOM_FEC_TX_BD_TFD 0x08000000ul /* transmit frame done */ |
24 | #define BCOM_FEC_TX_BD_TC 0x04000000ul /* transmit CRC */ |
25 | #define BCOM_FEC_TX_BD_ABC 0x02000000ul /* append bad CRC */ |
26 | |
27 | #define BCOM_FEC_RX_BD_L 0x08000000ul /* buffer is last in frame */ |
28 | #define BCOM_FEC_RX_BD_BC 0x00800000ul /* DA is broadcast */ |
29 | #define BCOM_FEC_RX_BD_MC 0x00400000ul /* DA is multicast and not broadcast */ |
30 | #define BCOM_FEC_RX_BD_LG 0x00200000ul /* Rx frame length violation */ |
31 | #define BCOM_FEC_RX_BD_NO 0x00100000ul /* Rx non-octet aligned frame */ |
32 | #define BCOM_FEC_RX_BD_CR 0x00040000ul /* Rx CRC error */ |
33 | #define BCOM_FEC_RX_BD_OV 0x00020000ul /* overrun */ |
34 | #define BCOM_FEC_RX_BD_TR 0x00010000ul /* Rx frame truncated */ |
35 | #define BCOM_FEC_RX_BD_LEN_MASK 0x000007fful /* mask for length of received frame */ |
36 | #define BCOM_FEC_RX_BD_ERRORS (BCOM_FEC_RX_BD_LG | BCOM_FEC_RX_BD_NO | \ |
37 | BCOM_FEC_RX_BD_CR | BCOM_FEC_RX_BD_OV | BCOM_FEC_RX_BD_TR) |
38 | |
39 | |
40 | extern struct bcom_task * |
41 | bcom_fec_rx_init(int queue_len, phys_addr_t fifo, int maxbufsize); |
42 | |
43 | extern int |
44 | bcom_fec_rx_reset(struct bcom_task *tsk); |
45 | |
46 | extern void |
47 | bcom_fec_rx_release(struct bcom_task *tsk); |
48 | |
49 | |
50 | extern struct bcom_task * |
51 | bcom_fec_tx_init(int queue_len, phys_addr_t fifo); |
52 | |
53 | extern int |
54 | bcom_fec_tx_reset(struct bcom_task *tsk); |
55 | |
56 | extern void |
57 | bcom_fec_tx_release(struct bcom_task *tsk); |
58 | |
59 | |
60 | #endif /* __BESTCOMM_FEC_H__ */ |
61 | |
62 | |