Lines Matching defs:pegasus

73 struct pegasus {
91 static int pegasus_control_msg(struct pegasus *pegasus, u8 *data, int len)
106 result = usb_control_msg(pegasus->usbdev,
107 usb_sndctrlpipe(pegasus->usbdev, 0),
117 dev_err(&pegasus->usbdev->dev, "control msg error: %d\n",
125 static int pegasus_set_mode(struct pegasus *pegasus, u8 mode, u8 led)
129 return pegasus_control_msg(pegasus, cmd, sizeof(cmd));
132 static void pegasus_parse_packet(struct pegasus *pegasus)
134 unsigned char *data = pegasus->data;
135 struct input_dev *dev = pegasus->dev;
142 schedule_work(&pegasus->init);
170 dev_warn_once(&pegasus->usbdev->dev,
177 struct pegasus *pegasus = urb->context;
178 struct usb_device *dev = pegasus->usbdev;
183 pegasus_parse_packet(pegasus);
184 usb_mark_last_busy(pegasus->usbdev);
208 struct pegasus *pegasus = container_of(work, struct pegasus, init);
211 error = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE);
213 dev_err(&pegasus->usbdev->dev, "pegasus_set_mode error: %d\n",
219 struct pegasus *pegasus = input_get_drvdata(dev);
222 error = usb_autopm_get_interface(pegasus->intf);
226 mutex_lock(&pegasus->pm_mutex);
227 pegasus->irq->dev = pegasus->usbdev;
228 if (usb_submit_urb(pegasus->irq, GFP_KERNEL)) {
233 error = pegasus_set_mode(pegasus, PEN_MODE_XY, NOTETAKER_LED_MOUSE);
237 pegasus->is_open = true;
238 mutex_unlock(&pegasus->pm_mutex);
242 usb_kill_urb(pegasus->irq);
243 cancel_work_sync(&pegasus->init);
245 mutex_unlock(&pegasus->pm_mutex);
246 usb_autopm_put_interface(pegasus->intf);
252 struct pegasus *pegasus = input_get_drvdata(dev);
254 mutex_lock(&pegasus->pm_mutex);
255 usb_kill_urb(pegasus->irq);
256 cancel_work_sync(&pegasus->init);
257 pegasus->is_open = false;
258 mutex_unlock(&pegasus->pm_mutex);
260 usb_autopm_put_interface(pegasus->intf);
268 struct pegasus *pegasus;
285 pegasus = kzalloc(sizeof(*pegasus), GFP_KERNEL);
287 if (!pegasus || !input_dev) {
292 mutex_init(&pegasus->pm_mutex);
294 pegasus->usbdev = dev;
295 pegasus->dev = input_dev;
296 pegasus->intf = intf;
299 pegasus->data_len = usb_maxpacket(dev, pipe, usb_pipeout(pipe));
301 pegasus->data = usb_alloc_coherent(dev, pegasus->data_len, GFP_KERNEL,
302 &pegasus->data_dma);
303 if (!pegasus->data) {
308 pegasus->irq = usb_alloc_urb(0, GFP_KERNEL);
309 if (!pegasus->irq) {
314 usb_fill_int_urb(pegasus->irq, dev, pipe,
315 pegasus->data, pegasus->data_len,
316 pegasus_irq, pegasus, endpoint->bInterval);
318 pegasus->irq->transfer_dma = pegasus->data_dma;
319 pegasus->irq->transfer_flags |= URB_NO_TRANSFER_DMA_MAP;
322 strlcpy(pegasus->name, dev->manufacturer,
323 sizeof(pegasus->name));
327 strlcat(pegasus->name, " ", sizeof(pegasus->name));
328 strlcat(pegasus->name, dev->product, sizeof(pegasus->name));
331 if (!strlen(pegasus->name))
332 snprintf(pegasus->name, sizeof(pegasus->name),
337 usb_make_path(dev, pegasus->phys, sizeof(pegasus->phys));
338 strlcat(pegasus->phys, "/input0", sizeof(pegasus->phys));
340 INIT_WORK(&pegasus->init, pegasus_init);
342 usb_set_intfdata(intf, pegasus);
344 input_dev->name = pegasus->name;
345 input_dev->phys = pegasus->phys;
349 input_set_drvdata(input_dev, pegasus);
370 error = input_register_device(pegasus->dev);
377 usb_free_urb(pegasus->irq);
379 usb_free_coherent(dev, pegasus->data_len,
380 pegasus->data, pegasus->data_dma);
383 kfree(pegasus);
391 struct pegasus *pegasus = usb_get_intfdata(intf);
393 input_unregister_device(pegasus->dev);
395 usb_free_urb(pegasus->irq);
397 pegasus->data_len, pegasus->data,
398 pegasus->data_dma);
400 kfree(pegasus);
406 struct pegasus *pegasus = usb_get_intfdata(intf);
408 mutex_lock(&pegasus->pm_mutex);
409 usb_kill_urb(pegasus->irq);
410 cancel_work_sync(&pegasus->init);
411 mutex_unlock(&pegasus->pm_mutex);
418 struct pegasus *pegasus = usb_get_intfdata(intf);
421 mutex_lock(&pegasus->pm_mutex);
422 if (pegasus->is_open && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0)
424 mutex_unlock(&pegasus->pm_mutex);
431 struct pegasus *pegasus = usb_get_intfdata(intf);
434 mutex_lock(&pegasus->pm_mutex);
435 if (pegasus->is_open) {
436 retval = pegasus_set_mode(pegasus, PEN_MODE_XY,
438 if (!retval && usb_submit_urb(pegasus->irq, GFP_NOIO) < 0)
441 mutex_unlock(&pegasus->pm_mutex);