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