Lines Matching refs:pegasus

73 struct pegasus {  struct
91 static int pegasus_control_msg(struct pegasus *pegasus, u8 *data, int len) in pegasus_control_msg() argument
106 result = usb_control_msg(pegasus->usbdev, in pegasus_control_msg()
107 usb_sndctrlpipe(pegasus->usbdev, 0), in pegasus_control_msg()
117 dev_err(&pegasus->usbdev->dev, "control msg error: %d\n", in pegasus_control_msg()
125 static int pegasus_set_mode(struct pegasus *pegasus, u8 mode, u8 led) in pegasus_set_mode() argument
129 return pegasus_control_msg(pegasus, cmd, sizeof(cmd)); in pegasus_set_mode()
132 static void pegasus_parse_packet(struct pegasus *pegasus) in pegasus_parse_packet() argument
134 unsigned char *data = pegasus->data; in pegasus_parse_packet()
135 struct input_dev *dev = pegasus->dev; in pegasus_parse_packet()
142 schedule_work(&pegasus->init); in pegasus_parse_packet()
170 dev_warn_once(&pegasus->usbdev->dev, in pegasus_parse_packet()
177 struct pegasus *pegasus = urb->context; in pegasus_irq() local
178 struct usb_device *dev = pegasus->usbdev; in pegasus_irq()
183 pegasus_parse_packet(pegasus); in pegasus_irq()
184 usb_mark_last_busy(pegasus->usbdev); in pegasus_irq()
208 struct pegasus *pegasus = container_of(work, struct pegasus, init); in pegasus_init() local
211 error = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE); in pegasus_init()
213 dev_err(&pegasus->usbdev->dev, "pegasus_set_mode error: %d\n", in pegasus_init()
219 struct pegasus *pegasus = input_get_drvdata(dev); in pegasus_open() local
222 error = usb_autopm_get_interface(pegasus->intf); in pegasus_open()
226 mutex_lock(&pegasus->pm_mutex); in pegasus_open()
227 pegasus->irq->dev = pegasus->usbdev; in pegasus_open()
228 if (usb_submit_urb(pegasus->irq, GFP_KERNEL)) { in pegasus_open()
233 error = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE); in pegasus_open()
237 pegasus->is_open = true; in pegasus_open()
238 mutex_unlock(&pegasus->pm_mutex); in pegasus_open()
242 usb_kill_urb(pegasus->irq); in pegasus_open()
243 cancel_work_sync(&pegasus->init); in pegasus_open()
245 mutex_unlock(&pegasus->pm_mutex); in pegasus_open()
246 usb_autopm_put_interface(pegasus->intf); in pegasus_open()
252 struct pegasus *pegasus = input_get_drvdata(dev); in pegasus_close() local
254 mutex_lock(&pegasus->pm_mutex); in pegasus_close()
255 usb_kill_urb(pegasus->irq); in pegasus_close()
256 cancel_work_sync(&pegasus->init); in pegasus_close()
257 pegasus->is_open = false; in pegasus_close()
258 mutex_unlock(&pegasus->pm_mutex); in pegasus_close()
260 usb_autopm_put_interface(pegasus->intf); in pegasus_close()
268 struct pegasus *pegasus; in pegasus_probe() local
285 pegasus = kzalloc(sizeof(*pegasus), GFP_KERNEL); in pegasus_probe()
287 if (!pegasus || !input_dev) { in pegasus_probe()
292 mutex_init(&pegasus->pm_mutex); in pegasus_probe()
294 pegasus->usbdev = dev; in pegasus_probe()
295 pegasus->dev = input_dev; in pegasus_probe()
296 pegasus->intf = intf; in pegasus_probe()
305 pegasus->data_len = usb_maxpacket(dev, pipe); in pegasus_probe()
307 pegasus->data = usb_alloc_coherent(dev, pegasus->data_len, GFP_KERNEL, in pegasus_probe()
308 &pegasus->data_dma); in pegasus_probe()
309 if (!pegasus->data) { in pegasus_probe()
314 pegasus->irq = usb_alloc_urb(0, GFP_KERNEL); in pegasus_probe()
315 if (!pegasus->irq) { in pegasus_probe()
320 usb_fill_int_urb(pegasus->irq, dev, pipe, in pegasus_probe()
321 pegasus->data, pegasus->data_len, in pegasus_probe()
322 pegasus_irq, pegasus, endpoint->bInterval); in pegasus_probe()
324 pegasus->irq->transfer_dma = pegasus->data_dma; in pegasus_probe()
325 pegasus->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; in pegasus_probe()
328 strscpy(pegasus->name, dev->manufacturer, in pegasus_probe()
329 sizeof(pegasus->name)); in pegasus_probe()
333 strlcat(pegasus->name, " ", sizeof(pegasus->name)); in pegasus_probe()
334 strlcat(pegasus->name, dev->product, sizeof(pegasus->name)); in pegasus_probe()
337 if (!strlen(pegasus->name)) in pegasus_probe()
338 snprintf(pegasus->name, sizeof(pegasus->name), in pegasus_probe()
343 usb_make_path(dev, pegasus->phys, sizeof(pegasus->phys)); in pegasus_probe()
344 strlcat(pegasus->phys, "/input0", sizeof(pegasus->phys)); in pegasus_probe()
346 INIT_WORK(&pegasus->init, pegasus_init); in pegasus_probe()
348 usb_set_intfdata(intf, pegasus); in pegasus_probe()
350 input_dev->name = pegasus->name; in pegasus_probe()
351 input_dev->phys = pegasus->phys; in pegasus_probe()
355 input_set_drvdata(input_dev, pegasus); in pegasus_probe()
376 error = input_register_device(pegasus->dev); in pegasus_probe()
383 usb_free_urb(pegasus->irq); in pegasus_probe()
385 usb_free_coherent(dev, pegasus->data_len, in pegasus_probe()
386 pegasus->data, pegasus->data_dma); in pegasus_probe()
389 kfree(pegasus); in pegasus_probe()
397 struct pegasus *pegasus = usb_get_intfdata(intf); in pegasus_disconnect() local
399 input_unregister_device(pegasus->dev); in pegasus_disconnect()
401 usb_free_urb(pegasus->irq); in pegasus_disconnect()
403 pegasus->data_len, pegasus->data, in pegasus_disconnect()
404 pegasus->data_dma); in pegasus_disconnect()
406 kfree(pegasus); in pegasus_disconnect()
412 struct pegasus *pegasus = usb_get_intfdata(intf); in pegasus_suspend() local
414 mutex_lock(&pegasus->pm_mutex); in pegasus_suspend()
415 usb_kill_urb(pegasus->irq); in pegasus_suspend()
416 cancel_work_sync(&pegasus->init); in pegasus_suspend()
417 mutex_unlock(&pegasus->pm_mutex); in pegasus_suspend()
424 struct pegasus *pegasus = usb_get_intfdata(intf); in pegasus_resume() local
427 mutex_lock(&pegasus->pm_mutex); in pegasus_resume()
428 if (pegasus->is_open && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0) in pegasus_resume()
430 mutex_unlock(&pegasus->pm_mutex); in pegasus_resume()
437 struct pegasus *pegasus = usb_get_intfdata(intf); in pegasus_reset_resume() local
440 mutex_lock(&pegasus->pm_mutex); in pegasus_reset_resume()
441 if (pegasus->is_open) { in pegasus_reset_resume()
442 retval = pegasus_set_mode(pegasus, PEN_MODE_XY, in pegasus_reset_resume()
444 if (!retval && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0) in pegasus_reset_resume()
447 mutex_unlock(&pegasus->pm_mutex); in pegasus_reset_resume()