diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/cpc-usb/cpc-usb_drv.c | 188 |
1 files changed, 75 insertions, 113 deletions
diff --git a/drivers/staging/cpc-usb/cpc-usb_drv.c b/drivers/staging/cpc-usb/cpc-usb_drv.c index b8ef701a2bc..14aca399fc4 100644 --- a/drivers/staging/cpc-usb/cpc-usb_drv.c +++ b/drivers/staging/cpc-usb/cpc-usb_drv.c @@ -30,11 +30,6 @@ #include <linux/version.h> -/* usb_kill_urb has been introduced in kernel version 2.6.8 (RC2) */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,8)) -#define usb_kill_urb usb_unlink_urb -#endif - #ifdef CONFIG_PROC_FS # include <linux/proc_fs.h> #endif @@ -68,11 +63,11 @@ MODULE_LICENSE("GPL v2"); #define CPC_USB_PROC_DIR CPC_PROC_DIR "cpc-usb" -static struct proc_dir_entry *procDir = NULL; -static struct proc_dir_entry *procEntry = NULL; +static struct proc_dir_entry *procDir; +static struct proc_dir_entry *procEntry; /* Module parameters */ -static int debug = 0; +static int debug; module_param(debug, int, S_IRUGO); /* table of devices that work with this driver */ @@ -91,16 +86,16 @@ DECLARE_WAIT_QUEUE_HEAD(rmmodWq); atomic_t useCount; static CPC_USB_T *CPCUSB_Table[CPC_USB_CARD_CNT] = { 0 }; -static unsigned int CPCUsbCnt = 0; +static unsigned int CPCUsbCnt; /* prevent races between open() and disconnect() */ static DECLARE_MUTEX(disconnect_sem); /* local function prototypes */ static ssize_t cpcusb_read(struct file *file, char *buffer, size_t count, - loff_t * ppos); + loff_t *ppos); static ssize_t cpcusb_write(struct file *file, const char *buffer, - size_t count, loff_t * ppos); + size_t count, loff_t *ppos); static unsigned int cpcusb_poll(struct file *file, poll_table * wait); static int cpcusb_open(struct inode *inode, struct file *file); static int cpcusb_release(struct inode *inode, struct file *file); @@ -109,23 +104,11 @@ static int cpcusb_probe(struct usb_interface *interface, const struct usb_device_id *id); static void cpcusb_disconnect(struct usb_interface *interface); -static void cpcusb_read_bulk_callback(struct urb *urb -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) - , struct pt_regs *regs -#endif -); -static void cpcusb_write_bulk_callback(struct urb *urb -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) - , struct pt_regs *regs -#endif -); -static void cpcusb_read_interrupt_callback(struct urb *urb -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) - , struct pt_regs *regs -#endif -); +static void cpcusb_read_bulk_callback(struct urb *urb); +static void cpcusb_write_bulk_callback(struct urb *urb); +static void cpcusb_read_interrupt_callback(struct urb *urb); -static int cpcusb_setup_intrep(CPC_USB_T * card); +static int cpcusb_setup_intrep(CPC_USB_T *card); static struct file_operations cpcusb_fops = { /* @@ -153,19 +136,11 @@ static struct file_operations cpcusb_fops = { static struct usb_class_driver cpcusb_class = { .name = "usb/cpc_usb%d", .fops = &cpcusb_fops, -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,14)) - .mode = - S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | - S_IWOTH, -#endif .minor_base = CPC_USB_BASE_MNR, }; /* usb specific object needed to register this driver with the usb subsystem */ static struct usb_driver cpcusb_driver = { -#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,14)) - .owner = THIS_MODULE, -#endif .name = "cpc-usb", .probe = cpcusb_probe, .disconnect = cpcusb_disconnect, @@ -210,7 +185,7 @@ static int cpcusb_proc_read_info(char *page, char **start, off_t off, /* * Remove CPC-USB and cleanup */ -static inline void cpcusb_delete(CPC_USB_T * card) +static inline void cpcusb_delete(CPC_USB_T *card) { if (card) { if (card->chan) { @@ -231,7 +206,7 @@ static inline void cpcusb_delete(CPC_USB_T * card) /* * setup the interrupt IN endpoint of a specific CPC-USB device */ -static int cpcusb_setup_intrep(CPC_USB_T * card) +static int cpcusb_setup_intrep(CPC_USB_T *card) { int retval = 0; struct usb_endpoint_descriptor *ep; @@ -243,21 +218,21 @@ static int cpcusb_setup_intrep(CPC_USB_T * card) /* setup the urb */ usb_fill_int_urb(card->intr_in_urb, card->udev, - usb_rcvintpipe(card->udev, card->num_intr_in), - card->intr_in_buffer, - sizeof(card->intr_in_buffer), - cpcusb_read_interrupt_callback, - card, - ep->bInterval); + usb_rcvintpipe(card->udev, card->num_intr_in), + card->intr_in_buffer, + sizeof(card->intr_in_buffer), + cpcusb_read_interrupt_callback, + card, + ep->bInterval); card->intr_in_urb->status = 0; /* needed! */ /* submit the urb */ retval = usb_submit_urb(card->intr_in_urb, GFP_KERNEL); - if (retval) { - err("%s - failed submitting intr urb, error %d", __FUNCTION__, retval); - } + if (retval) + err("%s - failed submitting intr urb, error %d", __func__, + retval); return retval; } @@ -277,7 +252,7 @@ static int cpcusb_open(struct inode *inode, struct file *file) interface = usb_find_interface(&cpcusb_driver, subminor); if (!interface) { err("%s - error, can't find device for minor %d", - __FUNCTION__, subminor); + __func__, subminor); retval = CPC_ERR_NO_INTERFACE_PRESENT; goto exit_no_device; } @@ -302,21 +277,21 @@ static int cpcusb_open(struct inode *inode, struct file *file) file->private_data = card; for (j = 0; j < CPC_USB_URB_CNT; j++) { usb_fill_bulk_urb(card->urbs[j].urb, card->udev, - usb_rcvbulkpipe(card->udev, card->num_bulk_in), - card->urbs[j].buffer, card->urbs[j].size, - cpcusb_read_bulk_callback, card); + usb_rcvbulkpipe(card->udev, card->num_bulk_in), + card->urbs[j].buffer, card->urbs[j].size, + cpcusb_read_bulk_callback, card); retval = usb_submit_urb(card->urbs[j].urb, GFP_KERNEL); if (retval) { err("%s - failed submitting read urb, error %d", - __FUNCTION__, retval); + __func__, retval); retval = CPC_ERR_TRANSMISSION_FAILED; goto exit_on_error; } } - info("%s - %d URB's submitted", __FUNCTION__, j); + info("%s - %d URB's submitted", __func__, j); ResetBuffer(card->chan); @@ -341,7 +316,7 @@ static unsigned int cpcusb_poll(struct file *file, poll_table * wait) unsigned int retval = 0; if (!card) { - err("%s - device object lost", __FUNCTION__); + err("%s - device object lost", __func__); return -EIO; } @@ -362,7 +337,7 @@ static int cpcusb_release(struct inode *inode, struct file *file) int j, retval = 0; if (card == NULL) { - dbg("%s - object is NULL", __FUNCTION__); + dbg("%s - object is NULL", __func__); return CPC_ERR_NO_INTERFACE_PRESENT; } @@ -370,7 +345,7 @@ static int cpcusb_release(struct inode *inode, struct file *file) down(&card->sem); if (!card->open) { - dbg("%s - device not opened", __FUNCTION__); + dbg("%s - device not opened", __func__); retval = CPC_ERR_NO_INTERFACE_PRESENT; goto exit_not_opened; } @@ -417,7 +392,7 @@ exit_not_opened: } static ssize_t cpcusb_read(struct file *file, char *buffer, size_t count, - loff_t * ppos) + loff_t *ppos) { CPC_USB_T *card = (CPC_USB_T *) file->private_data; CPC_CHAN_T *chan; @@ -460,7 +435,7 @@ static ssize_t cpcusb_read(struct file *file, char *buffer, size_t count, retval = sizeof(CPC_MSG_T); } } -// spin_unlock_irqrestore(&card->slock, flags); +/* spin_unlock_irqrestore(&card->slock, flags); */ /* unlock the device */ up(&card->sem); @@ -469,9 +444,9 @@ static ssize_t cpcusb_read(struct file *file, char *buffer, size_t count, } #define SHIFT 1 -static void inline cpcusb_align_buffer_alignment(unsigned char *buf) +static inline void cpcusb_align_buffer_alignment(unsigned char *buf) { - // CPC-USB uploads packed bytes. + /* CPC-USB uploads packed bytes. */ CPC_MSG_T *cpc = (CPC_MSG_T *) buf; unsigned int i; @@ -481,9 +456,9 @@ static void inline cpcusb_align_buffer_alignment(unsigned char *buf) } } -static int cpc_get_buffer_count(CPC_CHAN_T * chan) +static int cpc_get_buffer_count(CPC_CHAN_T *chan) { - // check the buffer parameters + /* check the buffer parameters */ if (chan->iidx == chan->oidx) return !chan->WnR ? CPC_MSG_BUF_CNT : 0; else if (chan->iidx >= chan->oidx) @@ -493,7 +468,7 @@ static int cpc_get_buffer_count(CPC_CHAN_T * chan) } static ssize_t cpcusb_write(struct file *file, const char *buffer, - size_t count, loff_t * ppos) + size_t count, loff_t *ppos) { CPC_USB_T *card = (CPC_USB_T *) file->private_data; CPC_USB_WRITE_URB_T *wrUrb = NULL; @@ -507,7 +482,7 @@ static ssize_t cpcusb_write(struct file *file, const char *buffer, CPC_MSG_T *info = NULL; dbg("%s - entered minor %d, count = %d, present = %d", - __FUNCTION__, card->minor, count, card->present); + __func__, card->minor, count, card->present); if (count > sizeof(CPC_MSG_T)) return CPC_ERR_UNKNOWN; @@ -527,7 +502,7 @@ static ssize_t cpcusb_write(struct file *file, const char *buffer, /* verify that we actually have some data to write */ if (count == 0) { - dbg("%s - write request of 0 bytes", __FUNCTION__); + dbg("%s - write request of 0 bytes", __func__); goto exit; } @@ -537,7 +512,7 @@ static ssize_t cpcusb_write(struct file *file, const char *buffer, if (info->type != CPC_CMD_T_CLEAR_CMD_QUEUE || card->free_slots <= 0) { dbg("%s - send buffer full please try again %d", - __FUNCTION__, card->free_slots); + __func__, card->free_slots); retval = CPC_ERR_CAN_NO_TRANSMIT_BUF; goto exit; } @@ -556,7 +531,7 @@ static ssize_t cpcusb_write(struct file *file, const char *buffer, /* don't found write urb say error */ if (!wrUrb) { - dbg("%s - no free send urb available", __FUNCTION__); + dbg("%s - no free send urb available", __func__); retval = CPC_ERR_CAN_NO_TRANSMIT_BUF; goto exit; } @@ -576,7 +551,7 @@ static ssize_t cpcusb_write(struct file *file, const char *buffer, /* check if it is a DRIVER information message, so we can * response to that message and not the USB */ - info = (CPC_MSG_T *) & obuf[4]; + info = (CPC_MSG_T *) &obuf[4]; bytes_written = 11 + info->length; if (bytes_written >= wrUrb->size) { @@ -662,7 +637,7 @@ static ssize_t cpcusb_write(struct file *file, const char *buffer, /* if it is a parameter message convert it from SJA1000 controller * settings to M16C Basic controller settings */ - SJA1000_TO_M16C_BASIC_Params((CPC_MSG_T *) & obuf[4]); + SJA1000_TO_M16C_BASIC_Params((CPC_MSG_T *) &obuf[4]); } /* don't forget the byte alignment */ @@ -681,7 +656,7 @@ static ssize_t cpcusb_write(struct file *file, const char *buffer, if (retval) { atomic_set(&wrUrb->busy, 0); /* release urb */ err("%s - failed submitting write urb, error %d", - __FUNCTION__, retval); + __func__, retval); } else { retval = bytes_written; } @@ -690,7 +665,7 @@ exit: /* unlock the device */ up(&card->sem); - dbg("%s - leaved", __FUNCTION__); + dbg("%s - leaved", __func__); return retval; } @@ -698,11 +673,7 @@ exit: /* * callback for interrupt IN urb */ -static void cpcusb_read_interrupt_callback(struct urb *urb -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) - , struct pt_regs *regs -#endif -) +static void cpcusb_read_interrupt_callback(struct urb *urb) { CPC_USB_T *card = (CPC_USB_T *) urb->context; int retval; @@ -712,7 +683,7 @@ static void cpcusb_read_interrupt_callback(struct urb *urb if (!card->present) { spin_unlock_irqrestore(&card->slock, flags); - info("%s - no such device", __FUNCTION__); + info("%s - no such device", __func__); return; } @@ -725,17 +696,17 @@ static void cpcusb_read_interrupt_callback(struct urb *urb case -ESHUTDOWN: /* urb was killed */ spin_unlock_irqrestore(&card->slock, flags); - dbg("%s - intr urb killed", __FUNCTION__); + dbg("%s - intr urb killed", __func__); return; default: - info("%s - nonzero urb status %d", __FUNCTION__, urb->status); + info("%s - nonzero urb status %d", __func__, urb->status); break; } retval = usb_submit_urb(urb, GFP_ATOMIC); if (retval) { err("%s - failed resubmitting intr urb, error %d", - __FUNCTION__, retval); + __func__, retval); } spin_unlock_irqrestore(&card->slock, flags); @@ -746,18 +717,16 @@ static void cpcusb_read_interrupt_callback(struct urb *urb #define UN_SHIFT 1 #define CPCMSG_HEADER_LEN_FIRMWARE 11 -static int inline cpcusb_unalign_and_copy_buffy(unsigned char *out, - unsigned char *in) +static inline int cpcusb_unalign_and_copy_buffy(unsigned char *out, + unsigned char *in) { unsigned int i, j; - for (i = 0; i < 3; i++) { + for (i = 0; i < 3; i++) out[i] = in[i]; - } - for (j = 0; j < (in[1] + (CPCMSG_HEADER_LEN_FIRMWARE - 3)); j++) { + for (j = 0; j < (in[1] + (CPCMSG_HEADER_LEN_FIRMWARE - 3)); j++) out[j + i + UN_SHIFT] = in[j + i]; - } return i + j; } @@ -765,11 +734,7 @@ static int inline cpcusb_unalign_and_copy_buffy(unsigned char *out, /* * callback for bulk IN urb */ -static void cpcusb_read_bulk_callback(struct urb *urb -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) - , struct pt_regs *regs -#endif -) +static void cpcusb_read_bulk_callback(struct urb *urb) { CPC_USB_T *card = (CPC_USB_T *) urb->context; CPC_CHAN_T *chan; @@ -778,7 +743,7 @@ static void cpcusb_read_bulk_callback(struct urb *urb unsigned long flags; if (!card) { - err("%s - device object lost", __FUNCTION__); + err("%s - device object lost", __func__); return; } @@ -786,7 +751,7 @@ static void cpcusb_read_bulk_callback(struct urb *urb if (!card->present) { spin_unlock_irqrestore(&card->slock, flags); - info("%s - no such device", __FUNCTION__); + info("%s - no such device", __func__); return; } @@ -798,10 +763,10 @@ static void cpcusb_read_bulk_callback(struct urb *urb case -ESHUTDOWN: /* urb was killed */ spin_unlock_irqrestore(&card->slock, flags); - dbg("%s - read urb killed", __FUNCTION__); + dbg("%s - read urb killed", __func__); return; default: - info("%s - nonzero urb status %d", __FUNCTION__, urb->status); + info("%s - nonzero urb status %d", __func__, urb->status); break; } @@ -833,15 +798,15 @@ static void cpcusb_read_bulk_callback(struct urb *urb } usb_fill_bulk_urb(urb, card->udev, - usb_rcvbulkpipe(card->udev, card->num_bulk_in), - urb->transfer_buffer, - urb->transfer_buffer_length, - cpcusb_read_bulk_callback, card); + usb_rcvbulkpipe(card->udev, card->num_bulk_in), + urb->transfer_buffer, + urb->transfer_buffer_length, + cpcusb_read_bulk_callback, card); retval = usb_submit_urb(urb, GFP_ATOMIC); if (retval) { - err("%s - failed resubmitting read urb, error %d", __FUNCTION__, retval); + err("%s - failed resubmitting read urb, error %d", __func__, retval); } spin_unlock_irqrestore(&card->slock, flags); @@ -852,11 +817,7 @@ static void cpcusb_read_bulk_callback(struct urb *urb /* * callback for bulk IN urb */ -static void cpcusb_write_bulk_callback(struct urb *urb -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)) - , struct pt_regs *regs -#endif -) +static void cpcusb_write_bulk_callback(struct urb *urb) { CPC_USB_T *card = (CPC_USB_T *) urb->context; unsigned long flags; @@ -883,10 +844,10 @@ static void cpcusb_write_bulk_callback(struct urb *urb case -ESHUTDOWN: /* urb was killed */ spin_unlock_irqrestore(&card->slock, flags); - dbg("%s - write urb no. %d killed", __FUNCTION__, j); + dbg("%s - write urb no. %d killed", __func__, j); return; default: - info("%s - nonzero urb status %d", __FUNCTION__, urb->status); + info("%s - nonzero urb status %d", __func__, urb->status); break; } @@ -911,7 +872,7 @@ static inline int cpcusb_get_free_slot(void) * probe function for new CPC-USB devices */ static int cpcusb_probe(struct usb_interface *interface, - const struct usb_device_id *id) + const struct usb_device_id *id) { CPC_USB_T *card = NULL; CPC_CHAN_T *chan = NULL; @@ -922,7 +883,8 @@ static int cpcusb_probe(struct usb_interface *interface, int i, j, retval = -ENOMEM, slot; - if ((slot = cpcusb_get_free_slot()) < 0) { + slot = cpcusb_get_free_slot(); + if (slot < 0) { info("No more devices supported"); return -ENOMEM; } @@ -961,7 +923,7 @@ static int cpcusb_probe(struct usb_interface *interface, card->productId = udev->descriptor.idProduct; info("Product %s", card->productId == USB_CPCUSB_LPC2119_PRODUCT_ID ? - "CPC-USB/ARM7" : "CPC-USB/M16C"); + "CPC-USB/ARM7" : "CPC-USB/M16C"); /* set up the endpoint information */ /* check out the endpoints */ @@ -1008,7 +970,7 @@ static int cpcusb_probe(struct usb_interface *interface, } } info("%s - %d reading URB's allocated", - __FUNCTION__, CPC_USB_URB_CNT); + __func__, CPC_USB_URB_CNT); } if (!card->num_bulk_out && @@ -1028,8 +990,8 @@ static int cpcusb_probe(struct usb_interface *interface, goto error; } card->wrUrbs[j].buffer = usb_buffer_alloc(udev, - card->wrUrbs[j].size, GFP_KERNEL, - &card->wrUrbs[j].urb->transfer_dma); + card->wrUrbs[j].size, GFP_KERNEL, + &card->wrUrbs[j].urb->transfer_dma); if (!card->wrUrbs[j].buffer) { err("Couldn't allocate bulk_out_buffer"); @@ -1044,7 +1006,7 @@ static int cpcusb_probe(struct usb_interface *interface, card); } - info("%s - %d writing URB's allocated", __FUNCTION__, CPC_USB_URB_CNT); + info("%s - %d writing URB's allocated", __func__, CPC_USB_URB_CNT); } } |