189d48367SSimon Glass /* 289d48367SSimon Glass * Copyright (c) 2011 The Chromium OS Authors. 389d48367SSimon Glass * 4*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 589d48367SSimon Glass */ 689d48367SSimon Glass 789d48367SSimon Glass #ifndef __USB_ETHER_H__ 889d48367SSimon Glass #define __USB_ETHER_H__ 989d48367SSimon Glass 1089d48367SSimon Glass #include <net.h> 1189d48367SSimon Glass 1289d48367SSimon Glass /* 1389d48367SSimon Glass * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble 1489d48367SSimon Glass * and FCS/CRC (frame check sequence). 1589d48367SSimon Glass */ 1689d48367SSimon Glass #define ETH_ALEN 6 /* Octets in one ethernet addr */ 1789d48367SSimon Glass #define ETH_HLEN 14 /* Total octets in header. */ 1889d48367SSimon Glass #define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ 1989d48367SSimon Glass #define ETH_DATA_LEN 1500 /* Max. octets in payload */ 2089d48367SSimon Glass #define ETH_FRAME_LEN PKTSIZE_ALIGN /* Max. octets in frame sans FCS */ 2189d48367SSimon Glass #define ETH_FCS_LEN 4 /* Octets in the FCS */ 2289d48367SSimon Glass 2389d48367SSimon Glass struct ueth_data { 2489d48367SSimon Glass /* eth info */ 2589d48367SSimon Glass struct eth_device eth_dev; /* used with eth_register */ 2689d48367SSimon Glass int phy_id; /* mii phy id */ 2789d48367SSimon Glass 2889d48367SSimon Glass /* usb info */ 2989d48367SSimon Glass struct usb_device *pusb_dev; /* this usb_device */ 3089d48367SSimon Glass unsigned char ifnum; /* interface number */ 3189d48367SSimon Glass unsigned char ep_in; /* in endpoint */ 3289d48367SSimon Glass unsigned char ep_out; /* out ....... */ 3389d48367SSimon Glass unsigned char ep_int; /* interrupt . */ 3489d48367SSimon Glass unsigned char subclass; /* as in overview */ 3589d48367SSimon Glass unsigned char protocol; /* .............. */ 3689d48367SSimon Glass unsigned char irqinterval; /* Intervall for IRQ Pipe */ 3789d48367SSimon Glass 38e1dbdf91SLucas Stach /* driver private */ 39e1dbdf91SLucas Stach void *dev_priv; 4089d48367SSimon Glass }; 4189d48367SSimon Glass 4289d48367SSimon Glass /* 4389d48367SSimon Glass * Function definitions for each USB ethernet driver go here, bracketed by 4489d48367SSimon Glass * #ifdef CONFIG_USB_ETHER_xxx...#endif 4589d48367SSimon Glass */ 469b70e007SSimon Glass #ifdef CONFIG_USB_ETHER_ASIX 479b70e007SSimon Glass void asix_eth_before_probe(void); 489b70e007SSimon Glass int asix_eth_probe(struct usb_device *dev, unsigned int ifnum, 499b70e007SSimon Glass struct ueth_data *ss); 509b70e007SSimon Glass int asix_eth_get_info(struct usb_device *dev, struct ueth_data *ss, 519b70e007SSimon Glass struct eth_device *eth); 529b70e007SSimon Glass #endif 5389d48367SSimon Glass 54291391beSSimon Glass #ifdef CONFIG_USB_ETHER_SMSC95XX 55291391beSSimon Glass void smsc95xx_eth_before_probe(void); 56291391beSSimon Glass int smsc95xx_eth_probe(struct usb_device *dev, unsigned int ifnum, 57291391beSSimon Glass struct ueth_data *ss); 58291391beSSimon Glass int smsc95xx_eth_get_info(struct usb_device *dev, struct ueth_data *ss, 59291391beSSimon Glass struct eth_device *eth); 60291391beSSimon Glass #endif 61291391beSSimon Glass 6289d48367SSimon Glass #endif /* __USB_ETHER_H__ */ 63