aboutsummaryrefslogtreecommitdiff
path: root/vnet503-i3863.c
diff options
context:
space:
mode:
Diffstat (limited to 'vnet503-i3863.c')
-rw-r--r--vnet503-i3863.c254
1 files changed, 0 insertions, 254 deletions
diff --git a/vnet503-i3863.c b/vnet503-i3863.c
deleted file mode 100644
index 61a05a2..0000000
--- a/vnet503-i3863.c
+++ /dev/null
@@ -1,254 +0,0 @@
-/* -*- linux-c -*- */
-/*
- * vnet503-i3863.c:
- *
- * Driver for at76c503-based devices based on the Atmel "Fast-Vnet" reference
- * design using the Intersil 3863 radio chip
- *
- * Copyright (c) 2002 - 2003 Oliver Kurth <oku@masqmail.cx>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- *
- * This driver is derived from usb-skeleton.c
- *
- * This driver contains code specific to Atmel AT76C503 (USB wireless 802.11)
- * devices which use the Intersil 3863 radio chip. Almost all of the actual
- * driver is handled by the generic at76c503.c module, this file mostly just
- * deals with the initial probes and downloading the correct firmware to the
- * device before handing it off to at76c503.
- *
- * History:
- *
- * 2003_02_15 0.1: (alex)
- * - created 3863-specific driver file
- *
- */
-
-#include <linux/config.h>
-#include <linux/module.h>
-#include <linux/usb.h>
-
-#include "at76c503.h"
-#include "usbdfu.h"
-
-/* Include firmware data definition */
-
-#include "fw-i3863.h"
-
-/* Version Information */
-
-#define DRIVER_NAME "vnet503-i3863"
-#define DRIVER_AUTHOR "Oliver Kurth <oku@masqmail.cx>"
-#define DRIVER_DESC "Atmel at76c503 (Intersil 3863) Wireless LAN Driver"
-
-/* USB Device IDs supported by this driver */
-
-#define VENDOR_ID_ATMEL 0x03eb
-#define PRODUCT_ID_ATMEL_503_I3863 0x7604 /* Generic AT76C503/3863 device */
-
-#define VENDOR_ID_SAMSUNG 0x055d
-#define PRODUCT_ID_SAMSUNG_SWL2100U 0xa000 /* Samsung SWL-2100U */
-
-static struct usb_device_id vnet_table[] = {
- { USB_DEVICE(VENDOR_ID_ATMEL, PRODUCT_ID_ATMEL_503_I3863 ) },
- { USB_DEVICE(VENDOR_ID_SAMSUNG, PRODUCT_ID_SAMSUNG_SWL2100U) },
- { }
-};
-
-MODULE_DEVICE_TABLE (usb, vnet_table);
-
-/* firmware / config variables */
-
-static unsigned char fw_internal[] = FW_I3863_INTERNAL;
-static unsigned char fw_external[] = FW_I3863_EXTERNAL;
-
-static int board_type = BOARDTYPE_INTERSIL;
-
-/*---------------------------------------------------------------------------*/
-
-/* Module paramaters */
-
-#ifdef CONFIG_USB_DEBUG
-static int debug = 1;
-#else
-static int debug = 0;
-#endif
-MODULE_PARM(debug, "i");
-MODULE_PARM_DESC(debug, "Level of debugging messages");
-
-static char eth_name[IFNAMSIZ+1] = "eth%d";
-MODULE_PARM(eth_name, "c" __MODULE_STRING(IFNAMSIZ));
-MODULE_PARM_DESC(eth_name,
- "network device name (default is eth%d)");
-
-/* local function prototypes */
-
-static void * vnet_probe(struct usb_device *dev, unsigned int ifnum,
- const struct usb_device_id *id);
-static void vnet_disconnect(struct usb_device *dev, void *ptr);
-static int vnet_usbdfu_post(struct usb_device *udev);
-
-/* structure for registering this driver with the usb subsystem */
-
-static struct usb_driver vnet_driver = {
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,20)
- owner: THIS_MODULE,
-#endif
- name: DRIVER_NAME,
- probe: vnet_probe,
- disconnect: vnet_disconnect,
- id_table: vnet_table,
-};
-
-/* structure for registering this firmware with the usbdfu subsystem */
-
-static struct usbdfu_info vnet_usbdfu = {
- name: DRIVER_NAME,
- id_table: vnet_table,
- fw_buf: fw_internal,
- fw_buf_len: sizeof(fw_internal),
- post_download_hook: vnet_usbdfu_post,
-};
-
-/* debug stuff */
-
-#undef dbg
-#define dbg(format, arg...) do { if (debug) printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg); } while (0)
-
-/**
- * vnet_usbdfu_post
- *
- * Called by usbdfu after the firmware has been downloaded to the device,
- * before the final reset.
- * (this is called in a usb probe (khubd) context)
- */
-static int vnet_usbdfu_post(struct usb_device *udev)
-{
- int result;
-
- dbg("Sending remap command...");
- result = at76c503_remap(udev, 1);
- if (result < 0) {
- err("Remap command failed (%d)", result);
- return result;
- }
- return 0;
-}
-
-/**
- * vnet_probe
- *
- * Called by the usb core when a compatible device is plugged into the
- * system.
- */
-static void *vnet_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id)
-{
- int ret;
- struct at76c503 *dev;
-
- if (usbdfu_in_use(udev, ifnum)) {
- /* the device is in DFU mode and usbdfu.c is handling it */
- return NULL;
- }
-
- usb_inc_dev_use(udev);
-
- if ((ret = usb_get_configuration(udev)) != 0) {
- err("get configuration failed: %d", ret);
- goto error;
- }
-
- if ((ret = usb_set_configuration(udev, 1)) != 0) {
- err("set configuration to 1 failed: %d", ret);
- goto error;
- }
-
- ret = at76c503_download_external_fw(udev, fw_external,
- sizeof(fw_external));
- if (ret < 0) {
- err("Downloading external firmware failed: %d", ret);
- goto error;
- }
-
- dev = at76c503_new_device(udev, board_type, eth_name);
- if (!dev) {
- dbg("at76c503_new_device returned NULL");
- goto error;
- }
-
- SET_MODULE_OWNER(dev->netdev);
- ret = register_netdev(dev->netdev);
- if (ret) {
- err("Unable to register netdevice %s (status %d)!",
- dev->netdev->name, ret);
- at76c503_delete_device(dev);
- goto error;
- }
-
- return dev;
-
- error:
- usb_dec_dev_use(udev);
- return NULL;
-}
-
-/**
- * vnet_disconnect
- *
- * Called by the usb core when the device is removed from the system.
- */
-static void vnet_disconnect(struct usb_device *udev, void *ptr)
-{
- struct at76c503 *dev = (struct at76c503 *)ptr;
-
- dbg("udev=%p, ptr=%p", udev, ptr);
-
- info("%s disconnected", dev->netdev->name);
-
- unregister_netdev(dev->netdev);
- at76c503_delete_device(dev);
- usb_dec_dev_use(udev);
-}
-
-static int __init vnet_init(void)
-{
- int result;
-
- info(DRIVER_DESC " " DRIVER_VERSION);
-
- /* register with usbdfu so that the firmware will be automatically
- * downloaded to the device on detection */
- result = usbdfu_register(&vnet_usbdfu);
- if (result < 0) {
- err("usbdfu_register failed (status %d)", result);
- return -1;
- }
-
- /* register this driver with the USB subsystem */
- result = usb_register(&vnet_driver);
- if (result < 0) {
- err("usb_register failed (status %d)", result);
- return -1;
- }
-
- return 0;
-}
-
-static void __exit vnet_exit(void)
-{
- info(DRIVER_DESC " " DRIVER_VERSION " unloading");
- /* deregister this driver with the USB subsystem */
- usbdfu_deregister(&vnet_usbdfu);
- usb_deregister(&vnet_driver);
-}
-
-module_init (vnet_init);
-module_exit (vnet_exit);
-
-MODULE_AUTHOR(DRIVER_AUTHOR);
-MODULE_DESCRIPTION(DRIVER_DESC);
-MODULE_LICENSE("GPL");