Lines Matching defs:mos_parport
83 struct mos7715_parport *mos_parport;
253 static inline int mos7715_change_mode(struct mos7715_parport *mos_parport,
256 mos_parport->shadowECR = mode;
257 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR,
258 mos_parport->shadowECR);
264 struct mos7715_parport *mos_parport =
267 kfree(mos_parport);
274 struct mos7715_parport *mos_parport = urbtrack->mos_parport;
279 kref_put(&mos_parport->ref_count, destroy_mos_parport);
291 struct mos7715_parport *mos_parport = from_tasklet(mos_parport, t,
298 if (unlikely(mos_parport->serial == NULL))
301 dev = &mos_parport->serial->dev->dev;
304 if (!mutex_trylock(&mos_parport->serial->disc_mutex)) {
306 tasklet_schedule(&mos_parport->urb_tasklet);
311 if (unlikely(mos_parport->serial->disconnected)) {
312 mutex_unlock(&mos_parport->serial->disc_mutex);
316 spin_lock_irqsave(&mos_parport->listlock, flags);
317 if (list_empty(&mos_parport->deferred_urbs)) {
318 spin_unlock_irqrestore(&mos_parport->listlock, flags);
319 mutex_unlock(&mos_parport->serial->disc_mutex);
325 list_for_each_safe(cursor, next, &mos_parport->deferred_urbs)
326 list_move_tail(cursor, &mos_parport->active_urbs);
327 list_for_each_entry_safe(urbtrack, tmp, &mos_parport->active_urbs,
337 spin_unlock_irqrestore(&mos_parport->listlock, flags);
338 mutex_unlock(&mos_parport->serial->disc_mutex);
352 spin_lock_irqsave(&urbtrack->mos_parport->listlock, flags);
354 spin_unlock_irqrestore(&urbtrack->mos_parport->listlock, flags);
358 static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport,
364 struct usb_serial *serial = mos_parport->serial;
392 kref_get(&mos_parport->ref_count);
393 urbtrack->mos_parport = mos_parport;
402 spin_lock_irqsave(&mos_parport->listlock, flags);
404 &mos_parport->deferred_urbs);
405 spin_unlock_irqrestore(&mos_parport->listlock, flags);
406 tasklet_schedule(&mos_parport->urb_tasklet);
419 spin_lock_irqsave(&mos_parport->listlock, flags);
420 list_add_tail(&urbtrack->urblist_entry, &mos_parport->active_urbs);
421 spin_unlock_irqrestore(&mos_parport->listlock, flags);
427 spin_lock_irqsave(&mos_parport->listlock, flags);
429 spin_unlock_irqrestore(&mos_parport->listlock, flags);
450 struct mos7715_parport *mos_parport;
453 mos_parport = pp->private_data;
454 if (unlikely(mos_parport == NULL)) {
459 mos_parport->msg_pending = true; /* synch usb call pending */
460 reinit_completion(&mos_parport->syncmsg_compl);
463 mutex_lock(&mos_parport->serial->disc_mutex);
464 if (mos_parport->serial->disconnected) {
466 mutex_unlock(&mos_parport->serial->disc_mutex);
467 mos_parport->msg_pending = false;
468 complete(&mos_parport->syncmsg_compl);
481 struct mos7715_parport *mos_parport = pp->private_data;
482 mutex_unlock(&mos_parport->serial->disc_mutex);
483 mos_parport->msg_pending = false;
484 complete(&mos_parport->syncmsg_compl);
489 struct mos7715_parport *mos_parport = pp->private_data;
493 mos7715_change_mode(mos_parport, SPP);
494 write_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, (__u8)d);
500 struct mos7715_parport *mos_parport = pp->private_data;
505 read_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, &d);
512 struct mos7715_parport *mos_parport = pp->private_data;
517 data = ((__u8)d & 0x0f) | (mos_parport->shadowDCR & 0xf0);
518 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, data);
519 mos_parport->shadowDCR = data;
525 struct mos7715_parport *mos_parport;
529 mos_parport = pp->private_data;
530 if (unlikely(mos_parport == NULL)) {
534 dcr = mos_parport->shadowDCR & 0x0f;
543 struct mos7715_parport *mos_parport = pp->private_data;
550 mos_parport->shadowDCR = (mos_parport->shadowDCR & (~mask)) ^ val;
551 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
552 mos_parport->shadowDCR);
553 dcr = mos_parport->shadowDCR & 0x0f;
561 struct mos7715_parport *mos_parport;
564 mos_parport = pp->private_data;
565 if (unlikely(mos_parport == NULL)) { /* release called */
569 status = atomic_read(&mos_parport->shadowDSR) & 0xf8;
584 struct mos7715_parport *mos_parport = pp->private_data;
588 mos7715_change_mode(mos_parport, PS2);
589 mos_parport->shadowDCR &= ~0x20;
590 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
591 mos_parport->shadowDCR);
597 struct mos7715_parport *mos_parport = pp->private_data;
601 mos7715_change_mode(mos_parport, PS2);
602 mos_parport->shadowDCR |= 0x20;
603 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
604 mos_parport->shadowDCR);
619 struct mos7715_parport *mos_parport;
622 mos_parport = pp->private_data;
623 if (unlikely(mos_parport == NULL)) { /* release called */
627 s->u.pc.ctr = mos_parport->shadowDCR;
628 s->u.pc.ecr = mos_parport->shadowECR;
636 struct mos7715_parport *mos_parport;
639 mos_parport = pp->private_data;
640 if (unlikely(mos_parport == NULL)) { /* release called */
644 mos_parport->shadowDCR = s->u.pc.ctr;
645 mos_parport->shadowECR = s->u.pc.ecr;
646 write_parport_reg_nonblock(mos_parport, MOS7720_DCR,
647 mos_parport->shadowDCR);
648 write_parport_reg_nonblock(mos_parport, MOS7720_ECR,
649 mos_parport->shadowECR);
658 struct mos7715_parport *mos_parport = pp->private_data;
663 mos7715_change_mode(mos_parport, PPF);
664 retval = usb_bulk_msg(mos_parport->serial->dev,
665 usb_sndbulkpipe(mos_parport->serial->dev, 2),
670 dev_err(&mos_parport->serial->dev->dev,
710 struct mos7715_parport *mos_parport;
713 mos_parport = kzalloc(sizeof(struct mos7715_parport), GFP_KERNEL);
714 if (!mos_parport)
717 mos_parport->msg_pending = false;
718 kref_init(&mos_parport->ref_count);
719 spin_lock_init(&mos_parport->listlock);
720 INIT_LIST_HEAD(&mos_parport->active_urbs);
721 INIT_LIST_HEAD(&mos_parport->deferred_urbs);
722 usb_set_serial_data(serial, mos_parport); /* hijack private pointer */
723 mos_parport->serial = serial;
724 tasklet_setup(&mos_parport->urb_tasklet, send_deferred_urbs);
725 init_completion(&mos_parport->syncmsg_compl);
728 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x80);
729 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x00);
732 mos_parport->shadowDCR = DCR_INIT_VAL;
733 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR,
734 mos_parport->shadowDCR);
735 mos_parport->shadowECR = ECR_INIT_VAL;
736 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR,
737 mos_parport->shadowECR);
740 mos_parport->pp = parport_register_port(0, PARPORT_IRQ_NONE,
743 if (mos_parport->pp == NULL) {
746 kref_put(&mos_parport->ref_count, destroy_mos_parport);
749 mos_parport->pp->private_data = mos_parport;
750 mos_parport->pp->modes = PARPORT_MODE_COMPAT | PARPORT_MODE_PCSPP;
751 mos_parport->pp->dev = &serial->interface->dev;
752 parport_announce_port(mos_parport->pp);
905 struct mos7715_parport *mos_parport = port->serial->private;
906 if (unlikely(mos_parport == NULL))
908 atomic_set(&mos_parport->shadowDSR, data[2]);
1878 struct mos7715_parport *mos_parport =
1883 mos_parport->pp->private_data = NULL;
1887 if (mos_parport->msg_pending)
1888 wait_for_completion_timeout(&mos_parport->syncmsg_compl,
1891 parport_remove_port(mos_parport->pp);
1893 mos_parport->serial = NULL;
1896 tasklet_kill(&mos_parport->urb_tasklet);
1899 spin_lock_irqsave(&mos_parport->listlock, flags);
1901 &mos_parport->active_urbs,
1904 spin_unlock_irqrestore(&mos_parport->listlock, flags);
1905 parport_del_port(mos_parport->pp);
1907 kref_put(&mos_parport->ref_count, destroy_mos_parport);