Lines 34-40
Link Here
|
34 |
static int ni_usb_parse_status_block(const uint8_t *buffer, struct ni_usb_status_block *status); |
34 |
static int ni_usb_parse_status_block(const uint8_t *buffer, struct ni_usb_status_block *status); |
35 |
static int ni_usb_set_interrupt_monitor(gpib_board_t *board, unsigned int monitored_bits); |
35 |
static int ni_usb_set_interrupt_monitor(gpib_board_t *board, unsigned int monitored_bits); |
36 |
|
36 |
|
37 |
static DECLARE_MUTEX(ni_usb_hotplug_lock); |
37 |
static DEFINE_SEMAPHORE(ni_usb_hotplug_lock); |
38 |
|
38 |
|
39 |
//calculates a reasonable timeout in that can be passed to usb functions |
39 |
//calculates a reasonable timeout in that can be passed to usb functions |
40 |
static inline unsigned long ni_usb_timeout_msecs(unsigned int usec) |
40 |
static inline unsigned long ni_usb_timeout_msecs(unsigned int usec) |
Lines 118-124
Link Here
|
118 |
} |
118 |
} |
119 |
usb_dev = interface_to_usbdev(ni_priv->bus_interface); |
119 |
usb_dev = interface_to_usbdev(ni_priv->bus_interface); |
120 |
out_pipe = usb_sndbulkpipe(usb_dev, ni_priv->bulk_out_endpoint); |
120 |
out_pipe = usb_sndbulkpipe(usb_dev, ni_priv->bulk_out_endpoint); |
121 |
init_MUTEX_LOCKED(&context.complete); |
121 |
sema_init(&context.complete,0); |
122 |
context.timed_out = 0; |
122 |
context.timed_out = 0; |
123 |
usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, out_pipe, data, data_length, |
123 |
usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, out_pipe, data, data_length, |
124 |
&ni_usb_bulk_complete, &context); |
124 |
&ni_usb_bulk_complete, &context); |
Lines 218-224
Link Here
|
218 |
} |
218 |
} |
219 |
usb_dev = interface_to_usbdev(ni_priv->bus_interface); |
219 |
usb_dev = interface_to_usbdev(ni_priv->bus_interface); |
220 |
in_pipe = usb_rcvbulkpipe(usb_dev, ni_priv->bulk_in_endpoint); |
220 |
in_pipe = usb_rcvbulkpipe(usb_dev, ni_priv->bulk_in_endpoint); |
221 |
init_MUTEX_LOCKED(&context.complete); |
221 |
sema_init(&context.complete,0); |
222 |
context.timed_out = 0; |
222 |
context.timed_out = 0; |
223 |
usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, in_pipe, data, data_length, |
223 |
usb_fill_bulk_urb(ni_priv->bulk_urb, usb_dev, in_pipe, data, data_length, |
224 |
&ni_usb_bulk_complete, &context); |
224 |
&ni_usb_bulk_complete, &context); |
Lines 1516-1524
Link Here
|
1516 |
return -ENOMEM; |
1516 |
return -ENOMEM; |
1517 |
ni_priv = board->private_data; |
1517 |
ni_priv = board->private_data; |
1518 |
memset(ni_priv, 0, sizeof(ni_usb_private_t)); |
1518 |
memset(ni_priv, 0, sizeof(ni_usb_private_t)); |
1519 |
init_MUTEX(&ni_priv->bulk_transfer_lock); |
1519 |
sema_init(&ni_priv->bulk_transfer_lock,1); |
1520 |
init_MUTEX(&ni_priv->control_transfer_lock); |
1520 |
sema_init(&ni_priv->control_transfer_lock,1); |
1521 |
init_MUTEX(&ni_priv->interrupt_transfer_lock); |
1521 |
sema_init(&ni_priv->interrupt_transfer_lock,1); |
1522 |
return 0; |
1522 |
return 0; |
1523 |
} |
1523 |
} |
1524 |
|
1524 |
|