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