Lines Matching refs:usb_pcwd

167 	struct usb_pcwd_private *usb_pcwd =  in usb_pcwd_intr_done()  local
169 unsigned char *data = usb_pcwd->intr_buffer; in usb_pcwd_intr_done()
170 struct device *dev = &usb_pcwd->interface->dev; in usb_pcwd_intr_done()
193 usb_pcwd->cmd_command = data[0]; in usb_pcwd_intr_done()
194 usb_pcwd->cmd_data_msb = data[1]; in usb_pcwd_intr_done()
195 usb_pcwd->cmd_data_lsb = data[2]; in usb_pcwd_intr_done()
198 atomic_set(&usb_pcwd->cmd_received, 1); in usb_pcwd_intr_done()
207 static int usb_pcwd_send_command(struct usb_pcwd_private *usb_pcwd, in usb_pcwd_send_command() argument
215 if ((!usb_pcwd) || (!usb_pcwd->exists)) in usb_pcwd_send_command()
229 dev_dbg(&usb_pcwd->interface->dev, in usb_pcwd_send_command()
233 atomic_set(&usb_pcwd->cmd_received, 0); in usb_pcwd_send_command()
235 if (usb_control_msg(usb_pcwd->udev, usb_sndctrlpipe(usb_pcwd->udev, 0), in usb_pcwd_send_command()
237 0x0200, usb_pcwd->interface_number, buf, 6, in usb_pcwd_send_command()
239 dev_dbg(&usb_pcwd->interface->dev, in usb_pcwd_send_command()
249 if (atomic_read(&usb_pcwd->cmd_received)) in usb_pcwd_send_command()
253 if ((got_response) && (cmd == usb_pcwd->cmd_command)) { in usb_pcwd_send_command()
255 *msb = usb_pcwd->cmd_data_msb; in usb_pcwd_send_command()
256 *lsb = usb_pcwd->cmd_data_lsb; in usb_pcwd_send_command()
264 static int usb_pcwd_start(struct usb_pcwd_private *usb_pcwd) in usb_pcwd_start() argument
271 retval = usb_pcwd_send_command(usb_pcwd, CMD_ENABLE_WATCHDOG, in usb_pcwd_start()
282 static int usb_pcwd_stop(struct usb_pcwd_private *usb_pcwd) in usb_pcwd_stop() argument
289 retval = usb_pcwd_send_command(usb_pcwd, CMD_DISABLE_WATCHDOG, in usb_pcwd_stop()
300 static int usb_pcwd_keepalive(struct usb_pcwd_private *usb_pcwd) in usb_pcwd_keepalive() argument
305 usb_pcwd_send_command(usb_pcwd, CMD_TRIGGER, &dummy, &dummy); in usb_pcwd_keepalive()
310 static int usb_pcwd_set_heartbeat(struct usb_pcwd_private *usb_pcwd, int t) in usb_pcwd_set_heartbeat() argument
319 usb_pcwd_send_command(usb_pcwd, CMD_WRITE_WATCHDOG_TIMEOUT, &msb, &lsb); in usb_pcwd_set_heartbeat()
325 static int usb_pcwd_get_temperature(struct usb_pcwd_private *usb_pcwd, in usb_pcwd_get_temperature() argument
331 usb_pcwd_send_command(usb_pcwd, CMD_READ_TEMP, &msb, &lsb); in usb_pcwd_get_temperature()
342 static int usb_pcwd_get_timeleft(struct usb_pcwd_private *usb_pcwd, in usb_pcwd_get_timeleft() argument
350 usb_pcwd_send_command(usb_pcwd, CMD_READ_WATCHDOG_TIMEOUT, &msb, &lsb); in usb_pcwd_get_timeleft()
587 static inline void usb_pcwd_delete(struct usb_pcwd_private *usb_pcwd) in usb_pcwd_delete() argument
589 usb_free_urb(usb_pcwd->intr_urb); in usb_pcwd_delete()
590 usb_free_coherent(usb_pcwd->udev, usb_pcwd->intr_size, in usb_pcwd_delete()
591 usb_pcwd->intr_buffer, usb_pcwd->intr_dma); in usb_pcwd_delete()
592 kfree(usb_pcwd); in usb_pcwd_delete()
607 struct usb_pcwd_private *usb_pcwd = NULL; in usb_pcwd_probe() local
646 usb_pcwd = kzalloc(sizeof(struct usb_pcwd_private), GFP_KERNEL); in usb_pcwd_probe()
647 if (usb_pcwd == NULL) in usb_pcwd_probe()
650 usb_pcwd_device = usb_pcwd; in usb_pcwd_probe()
652 mutex_init(&usb_pcwd->mtx); in usb_pcwd_probe()
653 usb_pcwd->udev = udev; in usb_pcwd_probe()
654 usb_pcwd->interface = interface; in usb_pcwd_probe()
655 usb_pcwd->interface_number = iface_desc->desc.bInterfaceNumber; in usb_pcwd_probe()
656 usb_pcwd->intr_size = (le16_to_cpu(endpoint->wMaxPacketSize) > 8 ? in usb_pcwd_probe()
660 usb_pcwd->intr_buffer = usb_alloc_coherent(udev, usb_pcwd->intr_size, in usb_pcwd_probe()
661 GFP_KERNEL, &usb_pcwd->intr_dma); in usb_pcwd_probe()
662 if (!usb_pcwd->intr_buffer) { in usb_pcwd_probe()
668 usb_pcwd->intr_urb = usb_alloc_urb(0, GFP_KERNEL); in usb_pcwd_probe()
669 if (!usb_pcwd->intr_urb) in usb_pcwd_probe()
673 usb_fill_int_urb(usb_pcwd->intr_urb, udev, pipe, in usb_pcwd_probe()
674 usb_pcwd->intr_buffer, usb_pcwd->intr_size, in usb_pcwd_probe()
675 usb_pcwd_intr_done, usb_pcwd, endpoint->bInterval); in usb_pcwd_probe()
676 usb_pcwd->intr_urb->transfer_dma = usb_pcwd->intr_dma; in usb_pcwd_probe()
677 usb_pcwd->intr_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in usb_pcwd_probe()
680 if (usb_submit_urb(usb_pcwd->intr_urb, GFP_KERNEL)) { in usb_pcwd_probe()
687 usb_pcwd->exists = 1; in usb_pcwd_probe()
690 usb_pcwd_stop(usb_pcwd); in usb_pcwd_probe()
693 got_fw_rev = usb_pcwd_send_command(usb_pcwd, CMD_GET_FIRMWARE_VERSION, in usb_pcwd_probe()
703 usb_pcwd_send_command(usb_pcwd, CMD_GET_DIP_SWITCH_SETTINGS, &dummy, in usb_pcwd_probe()
717 if (usb_pcwd_set_heartbeat(usb_pcwd, heartbeat)) { in usb_pcwd_probe()
718 usb_pcwd_set_heartbeat(usb_pcwd, WATCHDOG_HEARTBEAT); in usb_pcwd_probe()
744 usb_set_intfdata(interface, usb_pcwd); in usb_pcwd_probe()
756 if (usb_pcwd) in usb_pcwd_probe()
757 usb_pcwd_delete(usb_pcwd); in usb_pcwd_probe()
773 struct usb_pcwd_private *usb_pcwd; in usb_pcwd_disconnect() local
778 usb_pcwd = usb_get_intfdata(interface); in usb_pcwd_disconnect()
781 mutex_lock(&usb_pcwd->mtx); in usb_pcwd_disconnect()
785 usb_pcwd_stop(usb_pcwd); in usb_pcwd_disconnect()
788 usb_pcwd->exists = 0; in usb_pcwd_disconnect()
795 mutex_unlock(&usb_pcwd->mtx); in usb_pcwd_disconnect()
798 usb_pcwd_delete(usb_pcwd); in usb_pcwd_disconnect()