Blame view

include/netdev.h 6.41 KB
89973f8a8   Ben Warren   Introduce netdev....
1
2
3
4
  /*
   * (C) Copyright 2008
   * Benjamin Warren, biggerbadderben@gmail.com
   *
1a4596601   Wolfgang Denk   Add GPL-2.0+ SPDX...
5
   * SPDX-License-Identifier:	GPL-2.0+
89973f8a8   Ben Warren   Introduce netdev....
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
   */
  
  /*
   * netdev.h - definitions an prototypes for network devices
   */
  
  #ifndef _NETDEV_H_
  #define _NETDEV_H_
  
  /*
   * Board and CPU-specific initialization functions
   * board_eth_init() has highest priority.  cpu_eth_init() only
   * gets called if board_eth_init() isn't instantiated or fails.
   * Return values:
   *      0: success
   *     -1: failure
   */
  
  int board_eth_init(bd_t *bis);
  int cpu_eth_init(bd_t *bis);
  
  /* Driver initialization prototypes */
c960b13ed   Thomas Chou   net: add altera t...
28
  int altera_tse_initialize(u8 dev_num, int mac_base,
b962ac794   Joachim Foerster   altera_tse: Add s...
29
30
  			  int sgdma_rx_base, int sgdma_tx_base,
  			  u32 sgdma_desc_base, u32 sgdma_desc_size);
c041e9d21   Jens Scharsig   new at91_emac net...
31
  int at91emac_register(bd_t *bis, unsigned long iobase);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
32
33
  int au1x00_enet_initialize(bd_t*);
  int ax88180_initialize(bd_t *bis);
89973f8a8   Ben Warren   Introduce netdev....
34
  int bfin_EMAC_initialize(bd_t *bis);
efdd73195   Rob Herring   net: add Calxeda ...
35
  int calxedaxgmac_initialize(u32 id, ulong base_addr);
b1c0eaac1   Ben Warren   Convert CS8900 Et...
36
  int cs8900_initialize(u8 dev_num, int base_addr);
8453587ef   Ben Warren   Switched davinci_...
37
  int davinci_emac_initialize(void);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
38
  int dc21x4x_initialize(bd_t *bis);
92a190aaa   Alexey Brodkin   net/designware - ...
39
  int designware_initialize(ulong base_addr, u32 interface);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
40
  int dm9000_initialize(bd_t *bis);
62cbc408f   Ilya Yanok   dnet: driver for ...
41
  int dnet_eth_initialize(int id, void *regs, unsigned int phy_addr);
ad3381cf4   Ben Warren   Moved initializat...
42
  int e1000_initialize(bd_t *bis);
10efa024b   Ben Warren   Moved initializat...
43
  int eepro100_initialize(bd_t *bis);
a61a81967   Reinhard Meyer   NET: add ENC28J60...
44
45
  int enc28j60_initialize(unsigned int bus, unsigned int cs,
  	unsigned int max_hz, unsigned int mode);
594d57d0c   Matthias Kaehlcke   Add EP93xx ethern...
46
  int ep93xx_eth_initialize(u8 dev_num, int base_addr);
164846eeb   Ben Warren   Moved initializat...
47
  int eth_3com_initialize (bd_t * bis);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
48
  int ethoc_initialize(u8 dev_num, int base_addr);
3456a1482   Ben Warren   Moved initializat...
49
  int fec_initialize (bd_t *bis);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
50
  int fecmxc_initialize(bd_t *bis);
9e27e9dca   Marek Vasut   FEC: Allow multip...
51
  int fecmxc_initialize_multi(bd_t *bis, int dev_id, int phy_id, uint32_t addr);
b3dbf4a51   Macpaul Lin   ftgmac100: suppor...
52
  int ftgmac100_initialize(bd_t *bits);
750326e5d   Po-Yu Chuang   arm: A320: driver...
53
  int ftmac100_initialize(bd_t *bits);
c4775476d   Kuo-Jung Su   net: add Faraday ...
54
  int ftmac110_initialize(bd_t *bits);
89973f8a8   Ben Warren   Introduce netdev....
55
  int greth_initialize(bd_t *bis);
6aca145e0   Ben Warren   Moved initializat...
56
  void gt6426x_eth_initialize(bd_t *bis);
8218bd2aa   Ben Warren   Moved initializat...
57
  int inca_switch_initialize(bd_t *bis);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
58
  int ks8695_eth_initialize(void);
45a1693a3   Roberto Cerati   net: ks8851_mll: ...
59
  int ks8851_mll_initialize(u8 dev_num, int base_addr);
b7ad4109d   Nishanth Menon   NET: LAN91C96 CON...
60
  int lan91c96_initialize(u8 dev_num, int base_addr);
89973f8a8   Ben Warren   Introduce netdev....
61
62
63
  int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
  int mcdmafec_initialize(bd_t *bis);
  int mcffec_initialize(bd_t *bis);
a0aad08f9   Ben Warren   Moved initializat...
64
  int mpc512x_fec_initialize(bd_t *bis);
e1d7480b5   Ben Warren   Moved initializat...
65
  int mpc5xxx_fec_initialize(bd_t *bis);
ba705b5b1   Gary Jennejohn   mgcoge make ether...
66
  int mpc82xx_scc_enet_initialize(bd_t *bis);
d44265ad7   Albert Aribaud   mvgbe: support So...
67
  int mvgbe_initialize(bd_t *bis);
b902b8dda   Ben Warren   Moved initializat...
68
  int natsemi_initialize(bd_t *bis);
d02016929   Bernhard Kaindl   ne2000: Convert t...
69
  int ne2k_register(void);
cc94074ec   Ben Warren   Moved initializat...
70
  int npe_initialize(bd_t *bis);
19403633d   Ben Warren   Moved initializat...
71
  int ns8382x_initialize(bd_t *bis);
e3090534d   Ben Warren   Moved initializat...
72
  int pcnet_initialize(bd_t *bis);
4fce2acea   Ben Warren   Moved initializat...
73
  int plb2800_eth_initialize(bd_t *bis);
25a859066   Ben Warren   Moved initializat...
74
  int ppc_4xx_eth_initialize (bd_t *bis);
0b252f50a   Ben Warren   Moved initializat...
75
  int rtl8139_initialize(bd_t *bis);
02d69891d   Ben Warren   Moved initializat...
76
  int rtl8169_initialize(bd_t *bis);
9eb79bd88   Ben Warren   Moved initializat...
77
  int scc_initialize(bd_t *bis);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
78
  int sh_eth_initialize(bd_t *bis);
89973f8a8   Ben Warren   Introduce netdev....
79
  int skge_initialize(bd_t *bis);
7194ab809   Ben Warren   Convert SMC91111 ...
80
  int smc91111_initialize(u8 dev_num, int base_addr);
bd6ce9d17   Wolfgang Denk   cm4008, cm41xx: f...
81
  int smc911x_initialize(u8 dev_num, int base_addr);
518ce472f   Henrik Nordström   net: Add sunxi (A...
82
  int sunxi_wemac_initialize(bd_t *bis);
ccdd12f83   Ben Warren   Moved initializat...
83
  int tsi108_eth_initialize(bd_t *bis);
2b5243fc2   Wolfgang Denk   8xxx: fix warning...
84
  int uec_standard_init(bd_t *bis);
89973f8a8   Ben Warren   Introduce netdev....
85
  int uli526x_initialize(bd_t *bis);
79788bb19   Ajay Bhargav   net: Adds Fast Et...
86
  int armada100_fec_register(unsigned long base_addr);
4f1ec4c17   Michal Simek   net: axi_ethernet...
87
88
  int xilinx_axiemac_initialize(bd_t *bis, unsigned long base_addr,
  							unsigned long dma_addr);
c1044a1ec   Michal Simek   net: emaclite: Mo...
89
90
  int xilinx_emaclite_initialize(bd_t *bis, unsigned long base_addr,
  							int txpp, int rxpp);
df4826503   Stephan Linz   net: ll_temac: Ad...
91
92
  int xilinx_ll_temac_eth_init(bd_t *bis, unsigned long base_addr, int flags,
  						unsigned long ctrl_addr);
01fbf3104   David Andrey   net: gem: Preserv...
93
  int zynq_gem_initialize(bd_t *bis, int base_addr, int phy_addr, u32 emio);
df4826503   Stephan Linz   net: ll_temac: Ad...
94
95
96
97
98
99
100
101
102
  /*
   * As long as the Xilinx xps_ll_temac ethernet driver has not its own interface
   * exported by a public hader file, we need a global definition at this point.
   */
  #if defined(CONFIG_XILINX_LL_TEMAC)
  #define XILINX_LL_TEMAC_M_FIFO		0	/* use FIFO Ctrl */
  #define XILINX_LL_TEMAC_M_SDMA_PLB	(1 << 0)/* use SDMA Ctrl via PLB */
  #define XILINX_LL_TEMAC_M_SDMA_DCR	(1 << 1)/* use SDMA Ctrl via DCR */
  #endif
89973f8a8   Ben Warren   Introduce netdev....
103
104
105
106
107
108
109
110
  
  /* Boards with PCI network controllers can call this from their board_eth_init()
   * function to initialize whatever's on board.
   * Return value is total # of devices found */
  
  static inline int pci_eth_init(bd_t *bis)
  {
  	int num = 0;
e3090534d   Ben Warren   Moved initializat...
111

10efa024b   Ben Warren   Moved initializat...
112
113
114
115
116
  #ifdef CONFIG_PCI
  
  #ifdef CONFIG_EEPRO100
  	num += eepro100_initialize(bis);
  #endif
8ca0b3f99   Ben Warren   Moved initializat...
117
118
119
  #ifdef CONFIG_TULIP
  	num += dc21x4x_initialize(bis);
  #endif
ad3381cf4   Ben Warren   Moved initializat...
120
121
122
  #ifdef CONFIG_E1000
  	num += e1000_initialize(bis);
  #endif
e3090534d   Ben Warren   Moved initializat...
123
124
125
  #ifdef CONFIG_PCNET
  	num += pcnet_initialize(bis);
  #endif
b902b8dda   Ben Warren   Moved initializat...
126
127
128
  #ifdef CONFIG_NATSEMI
  	num += natsemi_initialize(bis);
  #endif
19403633d   Ben Warren   Moved initializat...
129
130
131
  #ifdef CONFIG_NS8382X
  	num += ns8382x_initialize(bis);
  #endif
0b252f50a   Ben Warren   Moved initializat...
132
133
134
  #if defined(CONFIG_RTL8139)
  	num += rtl8139_initialize(bis);
  #endif
02d69891d   Ben Warren   Moved initializat...
135
136
137
  #if defined(CONFIG_RTL8169)
  	num += rtl8169_initialize(bis);
  #endif
b11f664f5   Timur Tabi   net: fix ULI 526x...
138
  #if defined(CONFIG_ULI526X)
89973f8a8   Ben Warren   Introduce netdev....
139
140
  	num += uli526x_initialize(bis);
  #endif
10efa024b   Ben Warren   Moved initializat...
141
142
  
  #endif  /* CONFIG_PCI */
89973f8a8   Ben Warren   Introduce netdev....
143
144
  	return num;
  }
6f51deb7f   Prafulla Wadaskar   Marvell MV88E61XX...
145
146
147
148
149
150
  /*
   * Boards with mv88e61xx switch can use this by defining
   * CONFIG_MV88E61XX_SWITCH in respective board configheader file
   * the stuct and enums here are used to specify switch configuration params
   */
  #if defined(CONFIG_MV88E61XX_SWITCH)
0a16ea593   Albert ARIBAUD   mv88e61xx: refact...
151
152
153
  
  /* constants for any 88E61xx switch */
  #define MV88E61XX_MAX_PORTS_NUM	6
6f51deb7f   Prafulla Wadaskar   Marvell MV88E61XX...
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
  
  enum mv88e61xx_cfg_mdip {
  	MV88E61XX_MDIP_NOCHANGE,
  	MV88E61XX_MDIP_REVERSE
  };
  
  enum mv88e61xx_cfg_ledinit {
  	MV88E61XX_LED_INIT_DIS,
  	MV88E61XX_LED_INIT_EN
  };
  
  enum mv88e61xx_cfg_rgmiid {
  	MV88E61XX_RGMII_DELAY_DIS,
  	MV88E61XX_RGMII_DELAY_EN
  };
  
  enum mv88e61xx_cfg_prtstt {
  	MV88E61XX_PORTSTT_DISABLED,
  	MV88E61XX_PORTSTT_BLOCKING,
  	MV88E61XX_PORTSTT_LEARNING,
  	MV88E61XX_PORTSTT_FORWARDING
  };
  
  struct mv88e61xx_config {
  	char *name;
0a16ea593   Albert ARIBAUD   mv88e61xx: refact...
179
  	u8 vlancfg[MV88E61XX_MAX_PORTS_NUM];
6f51deb7f   Prafulla Wadaskar   Marvell MV88E61XX...
180
181
182
183
184
185
186
  	enum mv88e61xx_cfg_rgmiid rgmii_delay;
  	enum mv88e61xx_cfg_prtstt portstate;
  	enum mv88e61xx_cfg_ledinit led_init;
  	enum mv88e61xx_cfg_mdip mdip;
  	u32 ports_enabled;
  	u8 cpuport;
  };
0a16ea593   Albert ARIBAUD   mv88e61xx: refact...
187
188
189
190
191
192
193
194
195
196
197
  /*
   * Common mappings for Internal VLANs
   * These mappings consider that all ports are useable; the driver
   * will mask inexistent/unused ports.
   */
  
  /* Switch mode : routes any port to any port */
  #define MV88E61XX_VLANCFG_SWITCH { 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F }
  
  /* Router mode: routes only CPU port 5 to/from non-CPU ports 0-4 */
  #define MV88E61XX_VLANCFG_ROUTER { 0x20, 0x20, 0x20, 0x20, 0x20, 0x1F }
6f51deb7f   Prafulla Wadaskar   Marvell MV88E61XX...
198
199
  int mv88e61xx_switch_initialize(struct mv88e61xx_config *swconfig);
  #endif /* CONFIG_MV88E61XX_SWITCH */
fe428b909   Troy Kisky   net: fec_mxc: get...
200
201
202
203
204
205
  struct mii_dev *fec_get_miibus(uint32_t base_addr, int dev_id);
  #ifdef CONFIG_PHYLIB
  struct phy_device;
  int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr,
  		struct mii_dev *bus, struct phy_device *phydev);
  #else
2e5f44213   Marek Vasut   FEC: Allow regist...
206
207
208
209
  /*
   * Allow FEC to fine-tune MII configuration on boards which require this.
   */
  int fecmxc_register_mii_postcall(struct eth_device *dev, int (*cb)(int));
fe428b909   Troy Kisky   net: fec_mxc: get...
210
  #endif
2e5f44213   Marek Vasut   FEC: Allow regist...
211

89973f8a8   Ben Warren   Introduce netdev....
212
  #endif /* _NETDEV_H_ */