]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_A9_Zynq_ZC702/RTOSDemo/src/lwIP_Demo/lwIP_port/include/netif/xemacpsif.h
Reorganise Zynq project after spitting lwIP example into a separate configuration.
[freertos] / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo / src / lwIP_Demo / lwIP_port / include / netif / xemacpsif.h
1 /*
2  * Copyright (c) 2010-2013 Xilinx, Inc.  All rights reserved.
3  *
4  * Xilinx, Inc.
5  * XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" AS A
6  * COURTESY TO YOU.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION AS
7  * ONE POSSIBLE   IMPLEMENTATION OF THIS FEATURE, APPLICATION OR
8  * STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION
9  * IS FREE FROM ANY CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE
10  * FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION.
11  * XILINX EXPRESSLY DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO
12  * THE ADEQUACY OF THE IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO
13  * ANY WARRANTIES OR REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE
14  * FROM CLAIMS OF INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY
15  * AND FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  */
18
19 #ifndef __NETIF_XEMACPSIF_H__
20 #define __NETIF_XEMACPSIF_H__
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 #include "xlwipconfig.h"
27 #include "lwip/netif.h"
28 #include "netif/etharp.h"
29 #include "netif/xadapter.h"
30
31 #include "xstatus.h"
32 #include "sleep.h"
33 #include "xparameters.h"
34 #include "xparameters_ps.h"     /* defines XPAR values */
35 #include "xil_types.h"
36 #include "xil_assert.h"
37 #include "xil_io.h"
38 #include "xil_exception.h"
39 #include "xpseudo_asm.h"
40 #include "xil_cache.h"
41 #include "xil_printf.h"
42 #include "xuartps.h"
43 #include "xscugic.h"
44 #include "xemacps.h"            /* defines XEmacPs API */
45
46 #include "netif/xpqueue.h"
47 #include "xlwipconfig.h"
48
49 void    xemacpsif_setmac(u32_t index, u8_t *addr);
50 u8_t*   xemacpsif_getmac(u32_t index);
51 err_t   xemacpsif_init(struct netif *netif);
52 int     xemacpsif_input(struct netif *netif);
53 #ifdef NOTNOW_BHILL
54 unsigned get_IEEE_phy_speed(XLlTemac *xlltemacp);
55 #endif
56
57 /* xaxiemacif_hw.c */
58 void    xemacps_error_handler(XEmacPs * Temac);
59
60 /* structure within each netif, encapsulating all information required for
61  * using a particular temac instance
62  */
63 typedef struct {
64         XEmacPs emacps;
65
66         /* queue to store overflow packets */
67         pq_queue_t *recv_q;
68         pq_queue_t *send_q;
69
70         /* pointers to memory holding buffer descriptors (used only with SDMA) */
71         void *rx_bdspace;
72         void *tx_bdspace;
73
74         unsigned int last_rx_frms_cntr;
75
76 } xemacpsif_s;
77
78 extern xemacpsif_s xemacpsif;
79
80 int     is_tx_space_available(xemacpsif_s *emac);
81
82 /* xaxiemacif_dma.c */
83
84 XStatus init_axi_dma(struct xemac_s *xemac);
85 void  process_sent_bds(XEmacPs_BdRing *txring);
86 unsigned Phy_Setup (XEmacPs *xemacpsp);
87 void emacps_send_handler(void *arg);
88 XStatus emacps_sgsend(xemacpsif_s *xemacpsif, struct pbuf *p);
89 void emacps_recv_handler(void *arg);
90 void emacps_error_handler(void *arg,u8 Direction, u32 ErrorWord);
91 void setup_rx_bds(XEmacPs_BdRing *rxring);
92 void HandleTxErrors(struct xemac_s *xemac);
93 void HandleEmacPsError(struct xemac_s *xemac);
94 XEmacPs_Config *xemacps_lookup_config(unsigned mac_base);
95 void init_emacps(xemacpsif_s *xemacps, struct netif *netif);
96 void setup_isr (struct xemac_s *xemac);
97 XStatus init_dma(struct xemac_s *xemac);
98 void start_emacps (xemacpsif_s *xemacps);
99 void FreeTxRxPBufs(void);
100 void FreeOnlyTxPBufs(void);
101 void init_emacps_on_error (xemacpsif_s *xemacps, struct netif *netif);
102 void clean_dma_txdescs(struct xemac_s *xemac);
103 void resetrx_on_no_rxdata(xemacpsif_s *xemacpsif);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif /* __NETIF_XAXIEMACIF_H__ */