189973f8aSBen Warren /*
289973f8aSBen Warren * (C) Copyright 2008
389973f8aSBen Warren * Benjamin Warren, biggerbadderben@gmail.com
489973f8aSBen Warren *
51a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+
689973f8aSBen Warren */
789973f8aSBen Warren
889973f8aSBen Warren /*
989973f8aSBen Warren * netdev.h - definitions an prototypes for network devices
1089973f8aSBen Warren */
1189973f8aSBen Warren
1289973f8aSBen Warren #ifndef _NETDEV_H_
1389973f8aSBen Warren #define _NETDEV_H_
14*1e8d5d80SPatrick Delaunay #include <phy_interface.h>
1589973f8aSBen Warren
1689973f8aSBen Warren /*
1789973f8aSBen Warren * Board and CPU-specific initialization functions
1889973f8aSBen Warren * board_eth_init() has highest priority. cpu_eth_init() only
1989973f8aSBen Warren * gets called if board_eth_init() isn't instantiated or fails.
2089973f8aSBen Warren * Return values:
2189973f8aSBen Warren * 0: success
2289973f8aSBen Warren * -1: failure
2389973f8aSBen Warren */
2489973f8aSBen Warren
2589973f8aSBen Warren int board_eth_init(bd_t *bis);
26*1e8d5d80SPatrick Delaunay int board_interface_eth_init(struct udevice *dev,
27*1e8d5d80SPatrick Delaunay phy_interface_t interface_type);
2889973f8aSBen Warren int cpu_eth_init(bd_t *bis);
2989973f8aSBen Warren
3089973f8aSBen Warren /* Driver initialization prototypes */
31c041e9d2SJens Scharsig int at91emac_register(bd_t *bis, unsigned long iobase);
32bd6ce9d1SWolfgang Denk int au1x00_enet_initialize(bd_t*);
33bd6ce9d1SWolfgang Denk int ax88180_initialize(bd_t *bis);
34799e125cSJiandong Zheng int bcm_sf2_eth_register(bd_t *bis, u8 dev_num);
3589973f8aSBen Warren int bfin_EMAC_initialize(bd_t *bis);
36efdd7319SRob Herring int calxedaxgmac_initialize(u32 id, ulong base_addr);
37b1c0eaacSBen Warren int cs8900_initialize(u8 dev_num, int base_addr);
388453587eSBen Warren int davinci_emac_initialize(void);
39bd6ce9d1SWolfgang Denk int dc21x4x_initialize(bd_t *bis);
4092a190aaSAlexey Brodkin int designware_initialize(ulong base_addr, u32 interface);
41bd6ce9d1SWolfgang Denk int dm9000_initialize(bd_t *bis);
4262cbc408SIlya Yanok int dnet_eth_initialize(int id, void *regs, unsigned int phy_addr);
43ad3381cfSBen Warren int e1000_initialize(bd_t *bis);
4410efa024SBen Warren int eepro100_initialize(bd_t *bis);
45a61a8196SReinhard Meyer int enc28j60_initialize(unsigned int bus, unsigned int cs,
46a61a8196SReinhard Meyer unsigned int max_hz, unsigned int mode);
47594d57d0SMatthias Kaehlcke int ep93xx_eth_initialize(u8 dev_num, int base_addr);
48164846eeSBen Warren int eth_3com_initialize (bd_t * bis);
49bd6ce9d1SWolfgang Denk int ethoc_initialize(u8 dev_num, int base_addr);
503456a148SBen Warren int fec_initialize (bd_t *bis);
510b23fb36SIlya Yanok int fecmxc_initialize(bd_t *bis);
529e27e9dcSMarek Vasut int fecmxc_initialize_multi(bd_t *bis, int dev_id, int phy_id, uint32_t addr);
53b3dbf4a5SMacpaul Lin int ftgmac100_initialize(bd_t *bits);
54750326e5SPo-Yu Chuang int ftmac100_initialize(bd_t *bits);
55c4775476SKuo-Jung Su int ftmac110_initialize(bd_t *bits);
566aca145eSBen Warren void gt6426x_eth_initialize(bd_t *bis);
5745a1693aSRoberto Cerati int ks8851_mll_initialize(u8 dev_num, int base_addr);
58b7ad4109SNishanth Menon int lan91c96_initialize(u8 dev_num, int base_addr);
59ac2916a2SAlbert ARIBAUD \(3ADEV\) int lpc32xx_eth_initialize(bd_t *bis);
6089973f8aSBen Warren int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
6189973f8aSBen Warren int mcdmafec_initialize(bd_t *bis);
6289973f8aSBen Warren int mcffec_initialize(bd_t *bis);
63d44265adSAlbert Aribaud int mvgbe_initialize(bd_t *bis);
6419fc2eaeSStefan Roese int mvneta_initialize(bd_t *bis, int base_addr, int devnum, int phy_addr);
65b902b8ddSBen Warren int natsemi_initialize(bd_t *bis);
66d0201692SBernhard Kaindl int ne2k_register(void);
67cc94074eSBen Warren int npe_initialize(bd_t *bis);
6819403633SBen Warren int ns8382x_initialize(bd_t *bis);
69e3090534SBen Warren int pcnet_initialize(bd_t *bis);
7025a85906SBen Warren int ppc_4xx_eth_initialize (bd_t *bis);
710b252f50SBen Warren int rtl8139_initialize(bd_t *bis);
7202d69891SBen Warren int rtl8169_initialize(bd_t *bis);
739eb79bd8SBen Warren int scc_initialize(bd_t *bis);
74bd6ce9d1SWolfgang Denk int sh_eth_initialize(bd_t *bis);
7589973f8aSBen Warren int skge_initialize(bd_t *bis);
767194ab80SBen Warren int smc91111_initialize(u8 dev_num, int base_addr);
77bd6ce9d1SWolfgang Denk int smc911x_initialize(u8 dev_num, int base_addr);
78ccdd12f8SBen Warren int tsi108_eth_initialize(bd_t *bis);
792b5243fcSWolfgang Denk int uec_standard_init(bd_t *bis);
8089973f8aSBen Warren int uli526x_initialize(bd_t *bis);
8179788bb1SAjay Bhargav int armada100_fec_register(unsigned long base_addr);
82df482650SStephan Linz int xilinx_ll_temac_eth_init(bd_t *bis, unsigned long base_addr, int flags,
83df482650SStephan Linz unsigned long ctrl_addr);
84df482650SStephan Linz /*
85df482650SStephan Linz * As long as the Xilinx xps_ll_temac ethernet driver has not its own interface
86df482650SStephan Linz * exported by a public hader file, we need a global definition at this point.
87df482650SStephan Linz */
88df482650SStephan Linz #if defined(CONFIG_XILINX_LL_TEMAC)
89df482650SStephan Linz #define XILINX_LL_TEMAC_M_FIFO 0 /* use FIFO Ctrl */
90df482650SStephan Linz #define XILINX_LL_TEMAC_M_SDMA_PLB (1 << 0)/* use SDMA Ctrl via PLB */
91df482650SStephan Linz #define XILINX_LL_TEMAC_M_SDMA_DCR (1 << 1)/* use SDMA Ctrl via DCR */
92df482650SStephan Linz #endif
9389973f8aSBen Warren
9489973f8aSBen Warren /* Boards with PCI network controllers can call this from their board_eth_init()
9589973f8aSBen Warren * function to initialize whatever's on board.
9689973f8aSBen Warren * Return value is total # of devices found */
9789973f8aSBen Warren
pci_eth_init(bd_t * bis)9889973f8aSBen Warren static inline int pci_eth_init(bd_t *bis)
9989973f8aSBen Warren {
10089973f8aSBen Warren int num = 0;
101e3090534SBen Warren
10210efa024SBen Warren #ifdef CONFIG_PCI
10310efa024SBen Warren
10410efa024SBen Warren #ifdef CONFIG_EEPRO100
10510efa024SBen Warren num += eepro100_initialize(bis);
10610efa024SBen Warren #endif
1078ca0b3f9SBen Warren #ifdef CONFIG_TULIP
1088ca0b3f9SBen Warren num += dc21x4x_initialize(bis);
1098ca0b3f9SBen Warren #endif
110ad3381cfSBen Warren #ifdef CONFIG_E1000
111ad3381cfSBen Warren num += e1000_initialize(bis);
112ad3381cfSBen Warren #endif
113e3090534SBen Warren #ifdef CONFIG_PCNET
114e3090534SBen Warren num += pcnet_initialize(bis);
115e3090534SBen Warren #endif
116b902b8ddSBen Warren #ifdef CONFIG_NATSEMI
117b902b8ddSBen Warren num += natsemi_initialize(bis);
118b902b8ddSBen Warren #endif
11919403633SBen Warren #ifdef CONFIG_NS8382X
12019403633SBen Warren num += ns8382x_initialize(bis);
12119403633SBen Warren #endif
1220b252f50SBen Warren #if defined(CONFIG_RTL8139)
1230b252f50SBen Warren num += rtl8139_initialize(bis);
1240b252f50SBen Warren #endif
12502d69891SBen Warren #if defined(CONFIG_RTL8169)
12602d69891SBen Warren num += rtl8169_initialize(bis);
12702d69891SBen Warren #endif
128b11f664fSTimur Tabi #if defined(CONFIG_ULI526X)
12989973f8aSBen Warren num += uli526x_initialize(bis);
13089973f8aSBen Warren #endif
13110efa024SBen Warren
13210efa024SBen Warren #endif /* CONFIG_PCI */
13389973f8aSBen Warren return num;
13489973f8aSBen Warren }
13589973f8aSBen Warren
136cb5761f7SLothar Waßmann #ifdef CONFIG_DM_ETH
137cb5761f7SLothar Waßmann struct mii_dev *fec_get_miibus(struct udevice *dev, int dev_id);
138cb5761f7SLothar Waßmann #else
139fe428b90STroy Kisky struct mii_dev *fec_get_miibus(uint32_t base_addr, int dev_id);
140cb5761f7SLothar Waßmann #endif
141cb5761f7SLothar Waßmann
142fe428b90STroy Kisky #ifdef CONFIG_PHYLIB
143fe428b90STroy Kisky struct phy_device;
144fe428b90STroy Kisky int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr,
145fe428b90STroy Kisky struct mii_dev *bus, struct phy_device *phydev);
146fe428b90STroy Kisky #else
1472e5f4421SMarek Vasut /*
1482e5f4421SMarek Vasut * Allow FEC to fine-tune MII configuration on boards which require this.
1492e5f4421SMarek Vasut */
1502e5f4421SMarek Vasut int fecmxc_register_mii_postcall(struct eth_device *dev, int (*cb)(int));
151fe428b90STroy Kisky #endif
1522e5f4421SMarek Vasut
15389973f8aSBen Warren #endif /* _NETDEV_H_ */
154