189d48367SSimon Glass /* 289d48367SSimon Glass * Copyright (c) 2011 The Chromium OS Authors. 389d48367SSimon Glass * 41a459660SWolfgang 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 /* 43440a5742SGerhard Sittig * Function definitions for each USB ethernet driver go here 44440a5742SGerhard Sittig * (declaration is unconditional, compilation is conditional) 4589d48367SSimon Glass */ 469b70e007SSimon Glass void asix_eth_before_probe(void); 479b70e007SSimon Glass int asix_eth_probe(struct usb_device *dev, unsigned int ifnum, 489b70e007SSimon Glass struct ueth_data *ss); 499b70e007SSimon Glass int asix_eth_get_info(struct usb_device *dev, struct ueth_data *ss, 509b70e007SSimon Glass struct eth_device *eth); 5189d48367SSimon Glass 52*e9954b86SRene Griessl void ax88179_eth_before_probe(void); 53*e9954b86SRene Griessl int ax88179_eth_probe(struct usb_device *dev, unsigned int ifnum, 54*e9954b86SRene Griessl struct ueth_data *ss); 55*e9954b86SRene Griessl int ax88179_eth_get_info(struct usb_device *dev, struct ueth_data *ss, 56*e9954b86SRene Griessl struct eth_device *eth); 57*e9954b86SRene Griessl 58df4fb1c3SGerhard Sittig void mcs7830_eth_before_probe(void); 59df4fb1c3SGerhard Sittig int mcs7830_eth_probe(struct usb_device *dev, unsigned int ifnum, 60df4fb1c3SGerhard Sittig struct ueth_data *ss); 61df4fb1c3SGerhard Sittig int mcs7830_eth_get_info(struct usb_device *dev, struct ueth_data *ss, 62df4fb1c3SGerhard Sittig struct eth_device *eth); 63df4fb1c3SGerhard Sittig 64291391beSSimon Glass void smsc95xx_eth_before_probe(void); 65291391beSSimon Glass int smsc95xx_eth_probe(struct usb_device *dev, unsigned int ifnum, 66291391beSSimon Glass struct ueth_data *ss); 67291391beSSimon Glass int smsc95xx_eth_get_info(struct usb_device *dev, struct ueth_data *ss, 68291391beSSimon Glass struct eth_device *eth); 69291391beSSimon Glass 7089d48367SSimon Glass #endif /* __USB_ETHER_H__ */ 71