xref: /openbmc/u-boot/include/netdev.h (revision 6f443330)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
289973f8aSBen Warren /*
389973f8aSBen Warren  * (C) Copyright 2008
489973f8aSBen Warren  * Benjamin Warren, biggerbadderben@gmail.com
589973f8aSBen Warren  */
689973f8aSBen Warren 
789973f8aSBen Warren /*
889973f8aSBen Warren  * netdev.h - definitions an prototypes for network devices
989973f8aSBen Warren  */
1089973f8aSBen Warren 
1189973f8aSBen Warren #ifndef _NETDEV_H_
1289973f8aSBen Warren #define _NETDEV_H_
1389973f8aSBen Warren 
1489973f8aSBen Warren /*
1589973f8aSBen Warren  * Board and CPU-specific initialization functions
1689973f8aSBen Warren  * board_eth_init() has highest priority.  cpu_eth_init() only
1789973f8aSBen Warren  * gets called if board_eth_init() isn't instantiated or fails.
1889973f8aSBen Warren  * Return values:
1989973f8aSBen Warren  *      0: success
2089973f8aSBen Warren  *     -1: failure
2189973f8aSBen Warren  */
2289973f8aSBen Warren 
2389973f8aSBen Warren int board_eth_init(bd_t *bis);
2489973f8aSBen Warren int cpu_eth_init(bd_t *bis);
2589973f8aSBen Warren 
2689973f8aSBen Warren /* Driver initialization prototypes */
27c041e9d2SJens Scharsig int at91emac_register(bd_t *bis, unsigned long iobase);
28bd6ce9d1SWolfgang Denk int ax88180_initialize(bd_t *bis);
29799e125cSJiandong Zheng int bcm_sf2_eth_register(bd_t *bis, u8 dev_num);
3089973f8aSBen Warren int bfin_EMAC_initialize(bd_t *bis);
31efdd7319SRob Herring int calxedaxgmac_initialize(u32 id, ulong base_addr);
32b1c0eaacSBen Warren int cs8900_initialize(u8 dev_num, int base_addr);
338453587eSBen Warren int davinci_emac_initialize(void);
34bd6ce9d1SWolfgang Denk int dc21x4x_initialize(bd_t *bis);
3592a190aaSAlexey Brodkin int designware_initialize(ulong base_addr, u32 interface);
36bd6ce9d1SWolfgang Denk int dm9000_initialize(bd_t *bis);
3762cbc408SIlya Yanok int dnet_eth_initialize(int id, void *regs, unsigned int phy_addr);
38ad3381cfSBen Warren int e1000_initialize(bd_t *bis);
3910efa024SBen Warren int eepro100_initialize(bd_t *bis);
40594d57d0SMatthias Kaehlcke int ep93xx_eth_initialize(u8 dev_num, int base_addr);
41164846eeSBen Warren int eth_3com_initialize (bd_t * bis);
42bd6ce9d1SWolfgang Denk int ethoc_initialize(u8 dev_num, int base_addr);
433456a148SBen Warren int fec_initialize (bd_t *bis);
440b23fb36SIlya Yanok int fecmxc_initialize(bd_t *bis);
459e27e9dcSMarek Vasut int fecmxc_initialize_multi(bd_t *bis, int dev_id, int phy_id, uint32_t addr);
46750326e5SPo-Yu Chuang int ftmac100_initialize(bd_t *bits);
47c4775476SKuo-Jung Su int ftmac110_initialize(bd_t *bits);
486aca145eSBen Warren void gt6426x_eth_initialize(bd_t *bis);
4945a1693aSRoberto Cerati int ks8851_mll_initialize(u8 dev_num, int base_addr);
50b7ad4109SNishanth Menon int lan91c96_initialize(u8 dev_num, int base_addr);
51ac2916a2SAlbert ARIBAUD \(3ADEV\) int lpc32xx_eth_initialize(bd_t *bis);
5289973f8aSBen Warren int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
5389973f8aSBen Warren int mcdmafec_initialize(bd_t *bis);
5489973f8aSBen Warren int mcffec_initialize(bd_t *bis);
55d44265adSAlbert Aribaud int mvgbe_initialize(bd_t *bis);
5619fc2eaeSStefan Roese int mvneta_initialize(bd_t *bis, int base_addr, int devnum, int phy_addr);
57b902b8ddSBen Warren int natsemi_initialize(bd_t *bis);
58d0201692SBernhard Kaindl int ne2k_register(void);
59cc94074eSBen Warren int npe_initialize(bd_t *bis);
6019403633SBen Warren int ns8382x_initialize(bd_t *bis);
61e3090534SBen Warren int pcnet_initialize(bd_t *bis);
6225a85906SBen Warren int ppc_4xx_eth_initialize (bd_t *bis);
630b252f50SBen Warren int rtl8139_initialize(bd_t *bis);
6402d69891SBen Warren int rtl8169_initialize(bd_t *bis);
659eb79bd8SBen Warren int scc_initialize(bd_t *bis);
66bd6ce9d1SWolfgang Denk int sh_eth_initialize(bd_t *bis);
6789973f8aSBen Warren int skge_initialize(bd_t *bis);
687194ab80SBen Warren int smc91111_initialize(u8 dev_num, int base_addr);
69bd6ce9d1SWolfgang Denk int smc911x_initialize(u8 dev_num, int base_addr);
702b5243fcSWolfgang Denk int uec_standard_init(bd_t *bis);
7189973f8aSBen Warren int uli526x_initialize(bd_t *bis);
7279788bb1SAjay Bhargav int armada100_fec_register(unsigned long base_addr);
7389973f8aSBen Warren 
7489973f8aSBen Warren /* Boards with PCI network controllers can call this from their board_eth_init()
7589973f8aSBen Warren  * function to initialize whatever's on board.
7689973f8aSBen Warren  * Return value is total # of devices found */
7789973f8aSBen Warren 
pci_eth_init(bd_t * bis)7889973f8aSBen Warren static inline int pci_eth_init(bd_t *bis)
7989973f8aSBen Warren {
8089973f8aSBen Warren 	int num = 0;
81e3090534SBen Warren 
8210efa024SBen Warren #ifdef CONFIG_PCI
8310efa024SBen Warren 
8410efa024SBen Warren #ifdef CONFIG_EEPRO100
8510efa024SBen Warren 	num += eepro100_initialize(bis);
8610efa024SBen Warren #endif
878ca0b3f9SBen Warren #ifdef CONFIG_TULIP
888ca0b3f9SBen Warren 	num += dc21x4x_initialize(bis);
898ca0b3f9SBen Warren #endif
90ad3381cfSBen Warren #ifdef CONFIG_E1000
91ad3381cfSBen Warren 	num += e1000_initialize(bis);
92ad3381cfSBen Warren #endif
93e3090534SBen Warren #ifdef CONFIG_PCNET
94e3090534SBen Warren 	num += pcnet_initialize(bis);
95e3090534SBen Warren #endif
96b902b8ddSBen Warren #ifdef CONFIG_NATSEMI
97b902b8ddSBen Warren 	num += natsemi_initialize(bis);
98b902b8ddSBen Warren #endif
9919403633SBen Warren #ifdef CONFIG_NS8382X
10019403633SBen Warren 	num += ns8382x_initialize(bis);
10119403633SBen Warren #endif
1020b252f50SBen Warren #if defined(CONFIG_RTL8139)
1030b252f50SBen Warren 	num += rtl8139_initialize(bis);
1040b252f50SBen Warren #endif
10502d69891SBen Warren #if defined(CONFIG_RTL8169)
10602d69891SBen Warren 	num += rtl8169_initialize(bis);
10702d69891SBen Warren #endif
108b11f664fSTimur Tabi #if defined(CONFIG_ULI526X)
10989973f8aSBen Warren 	num += uli526x_initialize(bis);
11089973f8aSBen Warren #endif
11110efa024SBen Warren 
11210efa024SBen Warren #endif  /* CONFIG_PCI */
11389973f8aSBen Warren 	return num;
11489973f8aSBen Warren }
11589973f8aSBen Warren 
1161bcabd79SPeng Fan struct mii_dev *fec_get_miibus(ulong base_addr, int dev_id);
117cb5761f7SLothar Waßmann 
118fe428b90STroy Kisky #ifdef CONFIG_PHYLIB
119fe428b90STroy Kisky struct phy_device;
120fe428b90STroy Kisky int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr,
121fe428b90STroy Kisky 		struct mii_dev *bus, struct phy_device *phydev);
122fe428b90STroy Kisky #else
1232e5f4421SMarek Vasut /*
1242e5f4421SMarek Vasut  * Allow FEC to fine-tune MII configuration on boards which require this.
1252e5f4421SMarek Vasut  */
1262e5f4421SMarek Vasut int fecmxc_register_mii_postcall(struct eth_device *dev, int (*cb)(int));
127fe428b90STroy Kisky #endif
1282e5f4421SMarek Vasut 
12989973f8aSBen Warren #endif /* _NETDEV_H_ */
130