diff options
author | Rene Buergel <rene.buergel@sohard.de> | 2012-09-26 22:20:19 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-26 23:20:28 +0200 |
commit | 70c048a238c780c226eb4b115ebaa908cb3b34ec (patch) | |
tree | 0aef8cbb8b4b9e2172a4444060df5e2a473998af /drivers/usb/serial | |
parent | USB: uas: fix gcc warning (diff) | |
download | linux-70c048a238c780c226eb4b115ebaa908cb3b34ec.tar.xz linux-70c048a238c780c226eb4b115ebaa908cb3b34ec.zip |
USB: ezusb: move ezusb.c from drivers/usb/serial to drivers/usb/misc
This patch
- moves drivers/usb/serial/ezusb.c to drivers/usb/misc/
- renamed CONFIG_USB_EZUSB to CONFIG_USB_EZUSB_FX2 to avoid build errors
- adapts Makefiles and Kconfigs switching from bool to tristate for CONFIG_USB_EZUSB_FX2
Signed-off-by: René Bürgel <rene.buergel@sohard.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/serial')
-rw-r--r-- | drivers/usb/serial/Kconfig | 13 | ||||
-rw-r--r-- | drivers/usb/serial/Makefile | 1 | ||||
-rw-r--r-- | drivers/usb/serial/ezusb.c | 160 |
3 files changed, 4 insertions, 170 deletions
diff --git a/drivers/usb/serial/Kconfig b/drivers/usb/serial/Kconfig index f604f707a058..76f462241738 100644 --- a/drivers/usb/serial/Kconfig +++ b/drivers/usb/serial/Kconfig @@ -42,11 +42,6 @@ config USB_SERIAL_CONSOLE If unsure, say N. -config USB_EZUSB - bool "Functions for loading firmware on EZUSB chips" - help - Say Y here if you need EZUSB device support. - config USB_SERIAL_GENERIC bool "USB Generic Serial Driver" help @@ -94,7 +89,7 @@ config USB_SERIAL_CH341 config USB_SERIAL_WHITEHEAT tristate "USB ConnectTech WhiteHEAT Serial Driver" - select USB_EZUSB + select USB_EZUSB_FX2 help Say Y here if you want to use a ConnectTech WhiteHEAT 4 port USB to serial converter device. @@ -281,7 +276,7 @@ config USB_SERIAL_IUU config USB_SERIAL_KEYSPAN_PDA tristate "USB Keyspan PDA Single Port Serial Driver" - select USB_EZUSB + select USB_EZUSB_FX2 help Say Y here if you want to use a Keyspan PDA single port USB to serial converter device. This driver makes use of firmware @@ -292,7 +287,7 @@ config USB_SERIAL_KEYSPAN_PDA config USB_SERIAL_KEYSPAN tristate "USB Keyspan USA-xxx Serial Driver" - select USB_EZUSB + select USB_EZUSB_FX2 ---help--- Say Y here if you want to use Keyspan USB to serial converter devices. This driver makes use of Keyspan's official firmware @@ -596,7 +591,7 @@ config USB_SERIAL_CYBERJACK config USB_SERIAL_XIRCOM tristate "USB Xircom / Entregra Single Port Serial Driver" - select USB_EZUSB + select USB_EZUSB_FX2 help Say Y here if you want to use a Xircom or Entregra single port USB to serial converter device. This driver makes use of firmware diff --git a/drivers/usb/serial/Makefile b/drivers/usb/serial/Makefile index 45871f9ad1e1..3b3e7308d476 100644 --- a/drivers/usb/serial/Makefile +++ b/drivers/usb/serial/Makefile @@ -9,7 +9,6 @@ obj-$(CONFIG_USB_SERIAL) += usbserial.o usbserial-y := usb-serial.o generic.o bus.o usbserial-$(CONFIG_USB_SERIAL_CONSOLE) += console.o -usbserial-$(CONFIG_USB_EZUSB) += ezusb.o obj-$(CONFIG_USB_SERIAL_AIRCABLE) += aircable.o obj-$(CONFIG_USB_SERIAL_ARK3116) += ark3116.o diff --git a/drivers/usb/serial/ezusb.c b/drivers/usb/serial/ezusb.c deleted file mode 100644 index 4223d761223d..000000000000 --- a/drivers/usb/serial/ezusb.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - * EZ-USB specific functions used by some of the USB to Serial drivers. - * - * Copyright (C) 1999 - 2002 Greg Kroah-Hartman (greg@kroah.com) - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License version - * 2 as published by the Free Software Foundation. - */ - -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/slab.h> -#include <linux/module.h> -#include <linux/usb.h> -#include <linux/firmware.h> -#include <linux/ihex.h> - -struct ezusb_fx_type { - /* EZ-USB Control and Status Register. Bit 0 controls 8051 reset */ - unsigned short cpucs_reg; - unsigned short max_internal_adress; -}; - -struct ezusb_fx_type ezusb_fx1 = { - .cpucs_reg = 0x7F92, - .max_internal_adress = 0x1B3F, -}; - -struct ezusb_fx_type ezusb_fx2 = { - .cpucs_reg = 0xE600, - .max_internal_adress = 0x3FFF, -}; - -/* Commands for writing to memory */ -#define WRITE_INT_RAM 0xA0 -#define WRITE_EXT_RAM 0xA3 - -int ezusb_writememory(struct usb_device *dev, int address, - unsigned char *data, int length, __u8 request) -{ - int result; - unsigned char *transfer_buffer; - - if (!dev) - return -ENODEV; - - transfer_buffer = kmemdup(data, length, GFP_KERNEL); - if (!transfer_buffer) { - dev_err(&dev->dev, "%s - kmalloc(%d) failed.\n", - __func__, length); - return -ENOMEM; - } - result = usb_control_msg(dev, usb_sndctrlpipe(dev, 0), request, - USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE, - address, 0, transfer_buffer, length, 3000); - - kfree(transfer_buffer); - return result; -} -EXPORT_SYMBOL_GPL(ezusb_writememory); - -int ezusb_set_reset(struct usb_device *dev, unsigned short cpucs_reg, - unsigned char reset_bit) -{ - int response = ezusb_writememory(dev, cpucs_reg, &reset_bit, 1, WRITE_INT_RAM); - if (response < 0) - dev_err(&dev->dev, "%s-%d failed: %d\n", - __func__, reset_bit, response); - return response; -} - -int ezusb_fx1_set_reset(struct usb_device *dev, unsigned char reset_bit) -{ - return ezusb_set_reset(dev, ezusb_fx1.cpucs_reg, reset_bit); -} -EXPORT_SYMBOL_GPL(ezusb_fx1_set_reset); - -int ezusb_fx2_set_reset(struct usb_device *dev, unsigned char reset_bit) -{ - return ezusb_set_reset(dev, ezusb_fx2.cpucs_reg, reset_bit); -} -EXPORT_SYMBOL_GPL(ezusb_fx2_set_reset); - -static int ezusb_ihex_firmware_download(struct usb_device *dev, - struct ezusb_fx_type fx, - const char *firmware_path) -{ - int ret = -ENOENT; - const struct firmware *firmware = NULL; - const struct ihex_binrec *record; - - if (request_ihex_firmware(&firmware, firmware_path, - &dev->dev)) { - dev_err(&dev->dev, - "%s - request \"%s\" failed\n", - __func__, firmware_path); - goto out; - } - - ret = ezusb_set_reset(dev, fx.cpucs_reg, 0); - if (ret < 0) - goto out; - - record = (const struct ihex_binrec *)firmware->data; - for (; record; record = ihex_next_binrec(record)) { - if (be32_to_cpu(record->addr) > fx.max_internal_adress) { - ret = ezusb_writememory(dev, be32_to_cpu(record->addr), - (unsigned char *)record->data, - be16_to_cpu(record->len), WRITE_EXT_RAM); - if (ret < 0) { - dev_err(&dev->dev, "%s - ezusb_writememory " - "failed writing internal memory " - "(%d %04X %p %d)\n", __func__, ret, - be32_to_cpu(record->addr), record->data, - be16_to_cpu(record->len)); - goto out; - } - } - } - - ret = ezusb_set_reset(dev, fx.cpucs_reg, 1); - if (ret < 0) - goto out; - record = (const struct ihex_binrec *)firmware->data; - for (; record; record = ihex_next_binrec(record)) { - if (be32_to_cpu(record->addr) <= fx.max_internal_adress) { - ret = ezusb_writememory(dev, be32_to_cpu(record->addr), - (unsigned char *)record->data, - be16_to_cpu(record->len), WRITE_INT_RAM); - if (ret < 0) { - dev_err(&dev->dev, "%s - ezusb_writememory " - "failed writing external memory " - "(%d %04X %p %d)\n", __func__, ret, - be32_to_cpu(record->addr), record->data, - be16_to_cpu(record->len)); - goto out; - } - } - } - ret = ezusb_set_reset(dev, fx.cpucs_reg, 0); -out: - release_firmware(firmware); - return ret; -} - -int ezusb_fx1_ihex_firmware_download(struct usb_device *dev, - const char *firmware_path) -{ - return ezusb_ihex_firmware_download(dev, ezusb_fx1, firmware_path); -} -EXPORT_SYMBOL_GPL(ezusb_fx1_ihex_firmware_download); - -int ezusb_fx2_ihex_firmware_download(struct usb_device *dev, - const char *firmware_path) -{ - return ezusb_ihex_firmware_download(dev, ezusb_fx2, firmware_path); -} -EXPORT_SYMBOL_GPL(ezusb_fx2_ihex_firmware_download); - |