"Das U-Boot" Source Tree
1/* SPDX-License-Identifier: GPL-2.0+ */
2/*
3 * (C) Copyright 2008
4 * Benjamin Warren, biggerbadderben@gmail.com
5 */
6
7/*
8 * netdev.h - definitions an prototypes for network devices
9 */
10
11#ifndef _NETDEV_H_
12#define _NETDEV_H_
13
14#include <linux/types.h>
15#include <phy_interface.h>
16
17struct udevice;
18struct bd_info;
19
20/*
21 * Board and CPU-specific initialization functions
22 * board_eth_init() has highest priority. cpu_eth_init() only
23 * gets called if board_eth_init() isn't instantiated or fails.
24 * Return values:
25 * 0: success
26 * -1: failure
27 */
28
29int board_eth_init(struct bd_info *bis);
30int board_interface_eth_init(struct udevice *dev,
31 phy_interface_t interface_type);
32int cpu_eth_init(struct bd_info *bis);
33
34/* Driver initialization prototypes */
35int ax88180_initialize(struct bd_info *bis);
36int bcm_sf2_eth_register(struct bd_info *bis, u8 dev_num);
37int bfin_EMAC_initialize(struct bd_info *bis);
38int cs8900_initialize(u8 dev_num, int base_addr);
39int dc21x4x_initialize(struct bd_info *bis);
40int designware_initialize(ulong base_addr, u32 interface);
41int dm9000_initialize(struct bd_info *bis);
42int dnet_eth_initialize(int id, void *regs, unsigned int phy_addr);
43int e1000_initialize(struct bd_info *bis);
44int eepro100_initialize(struct bd_info *bis);
45int ep93xx_eth_initialize(u8 dev_num, int base_addr);
46int eth_3com_initialize (struct bd_info * bis);
47int ethoc_initialize(u8 dev_num, int base_addr);
48int fecmxc_initialize(struct bd_info *bis);
49int fecmxc_initialize_multi(struct bd_info *bis, int dev_id, int phy_id,
50 uint32_t addr);
51int ftmac100_initialize(struct bd_info *bits);
52int ftmac110_initialize(struct bd_info *bits);
53void gt6426x_eth_initialize(struct bd_info *bis);
54int ks8851_mll_initialize(u8 dev_num, int base_addr);
55int lan91c96_initialize(u8 dev_num, int base_addr);
56int lpc32xx_eth_initialize(struct bd_info *bis);
57int macb_eth_initialize(int id, void *regs, unsigned int phy_addr);
58int mcdmafec_initialize(struct bd_info *bis);
59int mcffec_initialize(struct bd_info *bis);
60int mvgbe_initialize(struct bd_info *bis);
61int mvneta_initialize(struct bd_info *bis, int base_addr, int devnum,
62 int phy_addr);
63int natsemi_initialize(struct bd_info *bis);
64int ne2k_register(void);
65int npe_initialize(struct bd_info *bis);
66int ns8382x_initialize(struct bd_info *bis);
67int pcnet_initialize(struct bd_info *bis);
68int ppc_4xx_eth_initialize (struct bd_info *bis);
69int rtl8139_initialize(struct bd_info *bis);
70int rtl8169_initialize(struct bd_info *bis);
71int scc_initialize(struct bd_info *bis);
72int sh_eth_initialize(struct bd_info *bis);
73int skge_initialize(struct bd_info *bis);
74int smc91111_initialize(u8 dev_num, phys_addr_t base_addr);
75int smc911x_initialize(u8 dev_num, phys_addr_t base_addr);
76int uli526x_initialize(struct bd_info *bis);
77
78/* Boards with PCI network controllers can call this from their board_eth_init()
79 * function to initialize whatever's on board.
80 * Return value is total # of devices found */
81
82static inline int pci_eth_init(struct bd_info *bis)
83{
84 int num = 0;
85
86#ifdef CONFIG_PCI
87
88#ifdef CONFIG_EEPRO100
89 num += eepro100_initialize(bis);
90#endif
91#ifdef CONFIG_TULIP
92 num += dc21x4x_initialize(bis);
93#endif
94#ifdef CONFIG_E1000
95 num += e1000_initialize(bis);
96#endif
97#ifdef CONFIG_PCNET
98 num += pcnet_initialize(bis);
99#endif
100#ifdef CONFIG_NATSEMI
101 num += natsemi_initialize(bis);
102#endif
103#ifdef CONFIG_NS8382X
104 num += ns8382x_initialize(bis);
105#endif
106#if defined(CONFIG_RTL8139)
107 num += rtl8139_initialize(bis);
108#endif
109#if defined(CONFIG_RTL8169)
110 num += rtl8169_initialize(bis);
111#endif
112#if defined(CONFIG_ULI526X)
113 num += uli526x_initialize(bis);
114#endif
115
116#endif /* CONFIG_PCI */
117 return num;
118}
119
120struct mii_dev *fec_get_miibus(struct udevice *dev, ulong base_addr, int dev_id);
121
122#ifdef CONFIG_PHYLIB
123struct phy_device;
124int fec_probe(struct bd_info *bd, int dev_id, uint32_t base_addr,
125 struct mii_dev *bus, struct phy_device *phydev);
126#else
127/*
128 * Allow FEC to fine-tune MII configuration on boards which require this.
129 */
130struct eth_device;
131int fecmxc_register_mii_postcall(struct eth_device *dev, int (*cb)(int));
132#endif
133
134#endif /* _NETDEV_H_ */