diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/vmk80xx.c')
-rw-r--r-- | drivers/staging/comedi/drivers/vmk80xx.c | 135 |
1 files changed, 64 insertions, 71 deletions
diff --git a/drivers/staging/comedi/drivers/vmk80xx.c b/drivers/staging/comedi/drivers/vmk80xx.c index 9de43b5310d..c335040778f 100644 --- a/drivers/staging/comedi/drivers/vmk80xx.c +++ b/drivers/staging/comedi/drivers/vmk80xx.c @@ -76,19 +76,19 @@ enum { }; static struct usb_device_id vmk80xx_id_table[] = { - { USB_DEVICE(0x10cf, 0x5500), .driver_info = DEVICE_VMK8055 }, - { USB_DEVICE(0x10cf, 0x5501), .driver_info = DEVICE_VMK8055 }, - { USB_DEVICE(0x10cf, 0x5502), .driver_info = DEVICE_VMK8055 }, - { USB_DEVICE(0x10cf, 0x5503), .driver_info = DEVICE_VMK8055 }, - { USB_DEVICE(0x10cf, 0x8061), .driver_info = DEVICE_VMK8061 }, - { USB_DEVICE(0x10cf, 0x8062), .driver_info = DEVICE_VMK8061 }, - { USB_DEVICE(0x10cf, 0x8063), .driver_info = DEVICE_VMK8061 }, - { USB_DEVICE(0x10cf, 0x8064), .driver_info = DEVICE_VMK8061 }, - { USB_DEVICE(0x10cf, 0x8065), .driver_info = DEVICE_VMK8061 }, - { USB_DEVICE(0x10cf, 0x8066), .driver_info = DEVICE_VMK8061 }, - { USB_DEVICE(0x10cf, 0x8067), .driver_info = DEVICE_VMK8061 }, - { USB_DEVICE(0x10cf, 0x8068), .driver_info = DEVICE_VMK8061 }, - { } /* terminating entry */ + {USB_DEVICE(0x10cf, 0x5500),.driver_info = DEVICE_VMK8055}, + {USB_DEVICE(0x10cf, 0x5501),.driver_info = DEVICE_VMK8055}, + {USB_DEVICE(0x10cf, 0x5502),.driver_info = DEVICE_VMK8055}, + {USB_DEVICE(0x10cf, 0x5503),.driver_info = DEVICE_VMK8055}, + {USB_DEVICE(0x10cf, 0x8061),.driver_info = DEVICE_VMK8061}, + {USB_DEVICE(0x10cf, 0x8062),.driver_info = DEVICE_VMK8061}, + {USB_DEVICE(0x10cf, 0x8063),.driver_info = DEVICE_VMK8061}, + {USB_DEVICE(0x10cf, 0x8064),.driver_info = DEVICE_VMK8061}, + {USB_DEVICE(0x10cf, 0x8065),.driver_info = DEVICE_VMK8061}, + {USB_DEVICE(0x10cf, 0x8066),.driver_info = DEVICE_VMK8061}, + {USB_DEVICE(0x10cf, 0x8067),.driver_info = DEVICE_VMK8061}, + {USB_DEVICE(0x10cf, 0x8068),.driver_info = DEVICE_VMK8061}, + {} /* terminating entry */ }; MODULE_DEVICE_TABLE(usb, vmk80xx_id_table); @@ -120,19 +120,19 @@ MODULE_DEVICE_TABLE(usb, vmk80xx_id_table); #define VMK8055_CMD_WRT_AD 0x05 #define VMK8061_CMD_RD_AI 0x00 -#define VMK8061_CMR_RD_ALL_AI 0x01 /* !non-active! */ +#define VMK8061_CMR_RD_ALL_AI 0x01 /* !non-active! */ #define VMK8061_CMD_SET_AO 0x02 -#define VMK8061_CMD_SET_ALL_AO 0x03 /* !non-active! */ +#define VMK8061_CMD_SET_ALL_AO 0x03 /* !non-active! */ #define VMK8061_CMD_OUT_PWM 0x04 #define VMK8061_CMD_RD_DI 0x05 -#define VMK8061_CMD_DO 0x06 /* !non-active! */ +#define VMK8061_CMD_DO 0x06 /* !non-active! */ #define VMK8061_CMD_CLR_DO 0x07 #define VMK8061_CMD_SET_DO 0x08 -#define VMK8061_CMD_RD_CNT 0x09 /* TODO: completely pointless? */ -#define VMK8061_CMD_RST_CNT 0x0a /* TODO: completely pointless? */ -#define VMK8061_CMD_RD_VERSION 0x0b /* internal usage */ -#define VMK8061_CMD_RD_JMP_STAT 0x0c /* TODO: not implemented yet */ -#define VMK8061_CMD_RD_PWR_STAT 0x0d /* internal usage */ +#define VMK8061_CMD_RD_CNT 0x09 /* TODO: completely pointless? */ +#define VMK8061_CMD_RST_CNT 0x0a /* TODO: completely pointless? */ +#define VMK8061_CMD_RD_VERSION 0x0b /* internal usage */ +#define VMK8061_CMD_RD_JMP_STAT 0x0c /* TODO: not implemented yet */ +#define VMK8061_CMD_RD_PWR_STAT 0x0d /* internal usage */ #define VMK8061_CMD_RD_DO 0x0e #define VMK8061_CMD_RD_AO 0x0f #define VMK8061_CMD_RD_PWM 0x10 @@ -153,15 +153,15 @@ MODULE_DEVICE_TABLE(usb, vmk80xx_id_table); #undef CONFIG_VMK80XX_DEBUG #ifdef CONFIG_VMK80XX_DEBUG - static int dbgvm = 1; +static int dbgvm = 1; #else - static int dbgvm; +static int dbgvm; #endif #ifdef CONFIG_COMEDI_DEBUG - static int dbgcm = 1; +static int dbgcm = 1; #else - static int dbgcm; +static int dbgcm; #endif #define dbgvm(fmt, arg...) \ @@ -182,33 +182,33 @@ enum vmk80xx_model { }; struct firmware_version { - unsigned char ic3_vers[32]; /* USB-Controller */ - unsigned char ic6_vers[32]; /* CPU */ + unsigned char ic3_vers[32]; /* USB-Controller */ + unsigned char ic6_vers[32]; /* CPU */ }; static const struct comedi_lrange vmk8055_range = { - 1, { UNI_RANGE(5) } + 1, {UNI_RANGE(5)} }; static const struct comedi_lrange vmk8061_range = { - 2, { UNI_RANGE(5), UNI_RANGE(10) } + 2, {UNI_RANGE(5), UNI_RANGE(10)} }; struct vmk80xx_board { const char *name; enum vmk80xx_model model; const struct comedi_lrange *range; - __u8 ai_chans; + __u8 ai_chans; __le16 ai_bits; - __u8 ao_chans; + __u8 ao_chans; __le16 ao_bits; - __u8 di_chans; + __u8 di_chans; __le16 di_bits; - __u8 do_chans; + __u8 do_chans; __le16 do_bits; - __u8 cnt_chans; + __u8 cnt_chans; __le16 cnt_bits; - __u8 pwm_chans; + __u8 pwm_chans; __le16 pwm_bits; }; @@ -253,8 +253,7 @@ static void vmk80xx_tx_callback(struct urb *urb) dbgvm("vmk80xx: %s\n", __func__); if (stat && !(stat == -ENOENT - || stat == -ECONNRESET - || stat == -ESHUTDOWN)) + || stat == -ECONNRESET || stat == -ESHUTDOWN)) dbgcm("comedi#: vmk80xx: %s - nonzero urb status (%d)\n", __func__, stat); @@ -319,10 +318,8 @@ static int vmk80xx_check_data_link(struct vmk80xx_usb *dev) /* Check that IC6 (PIC16F871) is powered and * running and the data link between IC3 and * IC6 is working properly */ - usb_bulk_msg(dev->udev, tx_pipe, tx, 1, NULL, - dev->ep_tx->bInterval); - usb_bulk_msg(dev->udev, rx_pipe, rx, 2, NULL, - HZ * 10); + usb_bulk_msg(dev->udev, tx_pipe, tx, 1, NULL, dev->ep_tx->bInterval); + usb_bulk_msg(dev->udev, rx_pipe, rx, 2, NULL, HZ * 10); return (int)rx[1]; } @@ -342,16 +339,14 @@ static void vmk80xx_read_eeprom(struct vmk80xx_usb *dev, int flag) /* Read the firmware version info of IC3 and * IC6 from the internal EEPROM of the IC */ - usb_bulk_msg(dev->udev, tx_pipe, tx, 1, NULL, - dev->ep_tx->bInterval); - usb_bulk_msg(dev->udev, rx_pipe, rx, 64, &cnt, - HZ * 10); + usb_bulk_msg(dev->udev, tx_pipe, tx, 1, NULL, dev->ep_tx->bInterval); + usb_bulk_msg(dev->udev, rx_pipe, rx, 64, &cnt, HZ * 10); rx[cnt] = '\0'; if (flag & IC3_VERSION) - strncpy(dev->fw.ic3_vers, rx + 1, 24); - else /* IC6_VERSION */ + strncpy(dev->fw.ic3_vers, rx + 1, 24); + else /* IC6_VERSION */ strncpy(dev->fw.ic6_vers, rx + 25, 24); } @@ -397,7 +392,7 @@ static void vmk80xx_build_int_urb(struct urb *urb, int flag) unsigned int pipe; unsigned char *buf; size_t size; - void (*callback)(struct urb *); + void (*callback) (struct urb *); int ival; dbgvm("vmk80xx: %s\n", __func__); @@ -409,7 +404,7 @@ static void vmk80xx_build_int_urb(struct urb *urb, int flag) size = le16_to_cpu(dev->ep_rx->wMaxPacketSize); callback = vmk80xx_rx_callback; ival = dev->ep_rx->bInterval; - } else { /* URB_SND_FLAG */ + } else { /* URB_SND_FLAG */ tx_addr = dev->ep_tx->bEndpointAddress; pipe = usb_sndintpipe(dev->udev, tx_addr); buf = dev->usb_tx_buf; @@ -418,8 +413,7 @@ static void vmk80xx_build_int_urb(struct urb *urb, int flag) ival = dev->ep_tx->bInterval; } - usb_fill_int_urb(urb, dev->udev, pipe, buf, - size, callback, dev, ival); + usb_fill_int_urb(urb, dev->udev, pipe, buf, size, callback, dev, ival); } static void vmk80xx_do_bulk_msg(struct vmk80xx_usb *dev) @@ -444,8 +438,7 @@ static void vmk80xx_do_bulk_msg(struct vmk80xx_usb *dev) usb_bulk_msg(dev->udev, tx_pipe, dev->usb_tx_buf, size, NULL, dev->ep_tx->bInterval); - usb_bulk_msg(dev->udev, rx_pipe, dev->usb_rx_buf, - size, NULL, HZ * 10); + usb_bulk_msg(dev->udev, rx_pipe, dev->usb_rx_buf, size, NULL, HZ * 10); clear_bit(TRANS_OUT_BUSY, &dev->flags); clear_bit(TRANS_IN_BUSY, &dev->flags); @@ -464,7 +457,8 @@ static int vmk80xx_read_packet(struct vmk80xx_usb *dev) /* Only useful for interrupt transfers */ if (test_bit(TRANS_IN_BUSY, &dev->flags)) if (wait_event_interruptible(dev->read_wait, - !test_bit(TRANS_IN_BUSY, &dev->flags))) + !test_bit(TRANS_IN_BUSY, + &dev->flags))) return -ERESTART; if (dev->board.model == VMK8061_MODEL) { @@ -510,7 +504,8 @@ static int vmk80xx_write_packet(struct vmk80xx_usb *dev, int cmd) if (test_bit(TRANS_OUT_BUSY, &dev->flags)) if (wait_event_interruptible(dev->write_wait, - !test_bit(TRANS_OUT_BUSY, &dev->flags))) + !test_bit(TRANS_OUT_BUSY, + &dev->flags))) return -ERESTART; if (dev->board.model == VMK8061_MODEL) { @@ -607,7 +602,7 @@ static int vmk80xx_ai_rinsn(struct comedi_device *cdev, /* VMK8061_MODEL */ data[n] = dev->usb_rx_buf[reg[0]] + 256 * - dev->usb_rx_buf[reg[1]]; + dev->usb_rx_buf[reg[1]]; } up(&dev->limit_sem); @@ -638,7 +633,7 @@ static int vmk80xx_ao_winsn(struct comedi_device *cdev, else reg = VMK8055_AO2_REG; break; - default: /* NOTE: avoid compiler warnings */ + default: /* NOTE: avoid compiler warnings */ cmd = VMK8061_CMD_SET_AO; reg = VMK8061_AO_REG; dev->usb_tx_buf[VMK8061_CH_REG] = chan; @@ -680,7 +675,7 @@ static int vmk80xx_ao_rinsn(struct comedi_device *cdev, if (vmk80xx_read_packet(dev)) break; - data[n] = dev->usb_rx_buf[reg+chan]; + data[n] = dev->usb_rx_buf[reg + chan]; } up(&dev->limit_sem); @@ -855,8 +850,8 @@ static int vmk80xx_cnt_rinsn(struct comedi_device *cdev, } /* VMK8061_MODEL */ - data[n] = dev->usb_rx_buf[reg[0]*(chan+1)+1] - + 256 * dev->usb_rx_buf[reg[1]*2+2]; + data[n] = dev->usb_rx_buf[reg[0] * (chan + 1) + 1] + + 256 * dev->usb_rx_buf[reg[1] * 2 + 2]; } up(&dev->limit_sem); @@ -941,7 +936,7 @@ static int vmk80xx_cnt_winsn(struct comedi_device *cdev, if (((val + 1) * val) < debtime * 1000 / 115) val += 1; - dev->usb_tx_buf[6+chan] = val; + dev->usb_tx_buf[6 + chan] = val; if (vmk80xx_write_packet(dev, cmd)) break; @@ -975,8 +970,7 @@ static int vmk80xx_pwm_rinsn(struct comedi_device *cdev, if (vmk80xx_read_packet(dev)) break; - data[n] = dev->usb_rx_buf[reg[0]] + 4 * - dev->usb_rx_buf[reg[1]]; + data[n] = dev->usb_rx_buf[reg[0]] + 4 * dev->usb_rx_buf[reg[1]]; } up(&dev->limit_sem); @@ -1309,8 +1303,7 @@ vmk80xx_probe(struct usb_interface *intf, const struct usb_device_id *id) if (dev->board.model == VMK8061_MODEL) { vmk80xx_read_eeprom(dev, IC3_VERSION); - printk(KERN_INFO "comedi#: vmk80xx: %s\n", - dev->fw.ic3_vers); + printk(KERN_INFO "comedi#: vmk80xx: %s\n", dev->fw.ic3_vers); if (vmk80xx_check_data_link(dev)) { vmk80xx_read_eeprom(dev, IC6_VERSION); @@ -1368,17 +1361,17 @@ static void vmk80xx_disconnect(struct usb_interface *intf) /* TODO: Add support for suspend, resume, pre_reset, * post_reset and flush */ static struct usb_driver vmk80xx_driver = { - .name = "vmk80xx", - .probe = vmk80xx_probe, + .name = "vmk80xx", + .probe = vmk80xx_probe, .disconnect = vmk80xx_disconnect, - .id_table = vmk80xx_id_table + .id_table = vmk80xx_id_table }; static struct comedi_driver driver_vmk80xx = { - .module = THIS_MODULE, + .module = THIS_MODULE, .driver_name = "vmk80xx", - .attach = vmk80xx_attach, - .detach = vmk80xx_detach + .attach = vmk80xx_attach, + .detach = vmk80xx_detach }; static int __init vmk80xx_init(void) |