60#define ASIX_MII_SWOP_CMD 0x06
61#define ASIX_MII_READ_CMD 0x07
62#define ASIX_MII_WRITE_CMD 0x08
63#define ASIX_MII_HWOP_CMD 0x0a
64#define ASIX_RXCTL_CMD 0x10
65#define ASIX_IPG1_CMD 0x12
66#define ASIX_IPG2_CMD 0x13
67#define ASIX_IPG3_CMD 0x14
68#define ASIX_MAC_ADDR_CMD 0x17
69#define ASIX_PHYID_CMD 0x19
70#define ASIX_MED_WRITE_CMD 0x1b
71#define ASIX_GPIO_WRITE_CMD 0x1f
75#define USBETH_TRACE( x, y ... ) xprintf( x, ##y )
77#define USBETH_TRACE( x, y ... )
82#define USB_MALLOC_VALUE 32
95static void hexdump(
unsigned char *src,
int srclen,
int rowlen,
int rows )
97 unsigned char *rowptr;
98 unsigned char *srcstp;
99 unsigned char *byteptr;
101 srcstp = src + srclen;
103 for( rowptr = src; rowptr < src + rowlen * rows; rowptr += rowlen ) {
104 for( byteptr = rowptr; byteptr < rowptr + rowlen && byteptr < srcstp; byteptr++ ) {
112#define hexdump(src,srclen,rowlen,rows) ((void)0)
121static char *VENDOR_NAMES[] = {
122 "?",
"Hawking",
"Netgear",
"Yikes!"
125static const int ID_TBL[] = {
148static int asix_send_eth_frame(
void *ctx,
hsaddr_t buf,
int len );
149static int asix_get_eth_frame(
void *ctx,
hsaddr_t buf );
150static int asix_data_rx(
void *ctx );
151static int asix_get_dev_addr(
void *ctx,
hsaddr_t mac_addr );
164 cmd,
val, index, buf, len );
170 cmd,
val, index, buf, len );
182 const int *
ptr=ID_TBL;
188 xprintf(
"USB device: vendor id %04x, device id %04x\n",
189 vendor_id, device_id );
191 while( *
ptr != -1 ) {
192 if( (vendor_id ==
ptr[0]) && (device_id ==
ptr[1]) ) {
200 xprintf(
"Unrecognized USB-Ethernet device\n" );
208 xprintf(
"%s USB-Ethernet Adapter (%a)\n",
214static int asix_get_dev_addr(
void *ctx,
hsaddr_t mac_addr )
218 hs_memcpy_to_hs( mac_addr, softc->
mac_addr, 6 );
230static int asix_data_rx(
void *ctx )
238static int asix_get_eth_frame(
void *ctx,
hsaddr_t buf )
245 hs_memcpy_to_hs( buf, softc->
rxbuf, len );
247 asix_queue_rx( softc );
250 xprintf(
"Bulk data is not available yet!\n" );
255static int asix_send_eth_frame(
void *ctx,
hsaddr_t buf,
int len )
260 unsigned char *txbuf;
263 hs_memcpy_from_hs( txbuf, buf, txlen );
304 asix_queue_rx( softc );
348 if( softc ==
NULL ) {
349 xprintf(
"Failed to allocate softc memory.\n" );
357 if (ifdscr ==
NULL) {
358 xprintf(
"USBETH: ERROR...no interace descriptor\n");
362 for (idx = 0; idx < 3; idx++) {
372 if (!indscr || !outdscr) {
377 xprintf(
"USBETH: ERROR...bulk endpoint descriptor(s) missing\n");
385 if (asix_init_device(softc) < 0)
396 asix_open_device( softc );
416static int asix_detach(
usbdev_t *dev)
422 asix_close_device( softc );
const cfe_driver_t usbasix_driver
usb_driver_t usbeth_driver
#define ASIX_MII_SWOP_CMD
#define ASIX_MII_HWOP_CMD
#define hexdump(src, srclen, rowlen, rows)
#define ASIX_MII_WRITE_CMD
#define ASIX_MAC_ADDR_CMD
struct asix_softc_s asix_softc_t
#define ASIX_MED_WRITE_CMD
#define ASIX_GPIO_WRITE_CMD
#define KMALLOC(size, align)
uint8_t bConfigurationValue
usb_config_descr_t * ud_cfgdescr
#define USBREQ_TYPE_VENDOR
#define USB_ENDPOINT_DESCRIPTOR_TYPE
#define USB_ENDPOINT_DIR_OUT(addr)
#define USB_ENDPOINT_TYPE_MASK
#define USB_INTERFACE_DESCRIPTOR_TYPE
#define USB_ENDPOINT_TYPE_BULK
void * usb_find_cfg_descr(usbdev_t *dev, int dtype, int idx)
int usb_std_request(usbdev_t *dev, uint8_t bmRequestType, uint8_t bRequest, uint16_t wValue, uint16_t wIndex, uint8_t *buffer, int length)
int usb_sync_request(usbreq_t *ur)
usbreq_t * usb_make_request(usbdev_t *dev, int epaddr, uint8_t *buf, int length, int flags)
void usb_free_request(usbreq_t *ur)
void usb_poll(usbbus_t *bus)
int usb_queue_request(usbreq_t *ur)
int usb_get_device_descriptor(usbdev_t *dev, usb_device_descr_t *dscr, int smallflg)
int usb_set_configuration(usbdev_t *dev, int config)
int usb_open_pipe(usbdev_t *dev, usb_endpoint_descr_t *epdesc)
int usbeth_register(usbeth_disp_t *disp, void *softc)
void usbeth_unregister(void *softc)