Lines Matching refs:mos_parport

88 	struct mos7715_parport  *mos_parport;  member
251 static inline int mos7715_change_mode(struct mos7715_parport *mos_parport, in mos7715_change_mode() argument
254 mos_parport->shadowECR = mode; in mos7715_change_mode()
255 write_mos_reg(mos_parport->serial, dummy, ECR, mos_parport->shadowECR); in mos7715_change_mode()
261 struct mos7715_parport *mos_parport = in destroy_mos_parport() local
264 kfree(mos_parport); in destroy_mos_parport()
271 struct mos7715_parport *mos_parport = urbtrack->mos_parport; in destroy_urbtracker() local
276 kref_put(&mos_parport->ref_count, destroy_mos_parport); in destroy_urbtracker()
288 struct mos7715_parport *mos_parport = (void *)_mos_parport; in send_deferred_urbs() local
294 if (unlikely(mos_parport->serial == NULL)) in send_deferred_urbs()
297 dev = &mos_parport->serial->dev->dev; in send_deferred_urbs()
300 if (!mutex_trylock(&mos_parport->serial->disc_mutex)) { in send_deferred_urbs()
302 tasklet_schedule(&mos_parport->urb_tasklet); in send_deferred_urbs()
307 if (unlikely(mos_parport->serial->disconnected)) { in send_deferred_urbs()
308 mutex_unlock(&mos_parport->serial->disc_mutex); in send_deferred_urbs()
312 spin_lock_irqsave(&mos_parport->listlock, flags); in send_deferred_urbs()
313 if (list_empty(&mos_parport->deferred_urbs)) { in send_deferred_urbs()
314 spin_unlock_irqrestore(&mos_parport->listlock, flags); in send_deferred_urbs()
315 mutex_unlock(&mos_parport->serial->disc_mutex); in send_deferred_urbs()
321 list_for_each_safe(cursor, next, &mos_parport->deferred_urbs) in send_deferred_urbs()
322 list_move_tail(cursor, &mos_parport->active_urbs); in send_deferred_urbs()
323 list_for_each_entry_safe(urbtrack, tmp, &mos_parport->active_urbs, in send_deferred_urbs()
333 spin_unlock_irqrestore(&mos_parport->listlock, flags); in send_deferred_urbs()
334 mutex_unlock(&mos_parport->serial->disc_mutex); in send_deferred_urbs()
347 spin_lock(&urbtrack->mos_parport->listlock); in async_complete()
349 spin_unlock(&urbtrack->mos_parport->listlock); in async_complete()
353 static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport, in write_parport_reg_nonblock() argument
359 struct usb_serial *serial = mos_parport->serial; in write_parport_reg_nonblock()
367 kref_get(&mos_parport->ref_count); in write_parport_reg_nonblock()
368 urbtrack->mos_parport = mos_parport; in write_parport_reg_nonblock()
397 spin_lock_irqsave(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
399 &mos_parport->deferred_urbs); in write_parport_reg_nonblock()
400 spin_unlock_irqrestore(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
401 tasklet_schedule(&mos_parport->urb_tasklet); in write_parport_reg_nonblock()
414 spin_lock_irqsave(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
415 list_add_tail(&urbtrack->urblist_entry, &mos_parport->active_urbs); in write_parport_reg_nonblock()
416 spin_unlock_irqrestore(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
422 spin_lock_irqsave(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
424 spin_unlock_irqrestore(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
445 struct mos7715_parport *mos_parport; in parport_prologue() local
448 mos_parport = pp->private_data; in parport_prologue()
449 if (unlikely(mos_parport == NULL)) { in parport_prologue()
454 mos_parport->msg_pending = true; /* synch usb call pending */ in parport_prologue()
455 reinit_completion(&mos_parport->syncmsg_compl); in parport_prologue()
458 mutex_lock(&mos_parport->serial->disc_mutex); in parport_prologue()
459 if (mos_parport->serial->disconnected) { in parport_prologue()
461 mutex_unlock(&mos_parport->serial->disc_mutex); in parport_prologue()
462 mos_parport->msg_pending = false; in parport_prologue()
463 complete(&mos_parport->syncmsg_compl); in parport_prologue()
476 struct mos7715_parport *mos_parport = pp->private_data; in parport_epilogue() local
477 mutex_unlock(&mos_parport->serial->disc_mutex); in parport_epilogue()
478 mos_parport->msg_pending = false; in parport_epilogue()
479 complete(&mos_parport->syncmsg_compl); in parport_epilogue()
484 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_data() local
488 mos7715_change_mode(mos_parport, SPP); in parport_mos7715_write_data()
489 write_mos_reg(mos_parport->serial, dummy, DPR, (__u8)d); in parport_mos7715_write_data()
495 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_read_data() local
500 read_mos_reg(mos_parport->serial, dummy, DPR, &d); in parport_mos7715_read_data()
507 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_control() local
512 data = ((__u8)d & 0x0f) | (mos_parport->shadowDCR & 0xf0); in parport_mos7715_write_control()
513 write_mos_reg(mos_parport->serial, dummy, DCR, data); in parport_mos7715_write_control()
514 mos_parport->shadowDCR = data; in parport_mos7715_write_control()
520 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_read_control() local
524 mos_parport = pp->private_data; in parport_mos7715_read_control()
525 if (unlikely(mos_parport == NULL)) { in parport_mos7715_read_control()
529 dcr = mos_parport->shadowDCR & 0x0f; in parport_mos7715_read_control()
538 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_frob_control() local
545 mos_parport->shadowDCR = (mos_parport->shadowDCR & (~mask)) ^ val; in parport_mos7715_frob_control()
546 write_mos_reg(mos_parport->serial, dummy, DCR, mos_parport->shadowDCR); in parport_mos7715_frob_control()
547 dcr = mos_parport->shadowDCR & 0x0f; in parport_mos7715_frob_control()
555 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_read_status() local
558 mos_parport = pp->private_data; in parport_mos7715_read_status()
559 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_read_status()
563 status = atomic_read(&mos_parport->shadowDSR) & 0xf8; in parport_mos7715_read_status()
578 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_data_forward() local
582 mos7715_change_mode(mos_parport, PS2); in parport_mos7715_data_forward()
583 mos_parport->shadowDCR &= ~0x20; in parport_mos7715_data_forward()
584 write_mos_reg(mos_parport->serial, dummy, DCR, mos_parport->shadowDCR); in parport_mos7715_data_forward()
590 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_data_reverse() local
594 mos7715_change_mode(mos_parport, PS2); in parport_mos7715_data_reverse()
595 mos_parport->shadowDCR |= 0x20; in parport_mos7715_data_reverse()
596 write_mos_reg(mos_parport->serial, dummy, DCR, mos_parport->shadowDCR); in parport_mos7715_data_reverse()
611 struct mos7715_parport *mos_parport; in parport_mos7715_save_state() local
614 mos_parport = pp->private_data; in parport_mos7715_save_state()
615 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_save_state()
619 s->u.pc.ctr = mos_parport->shadowDCR; in parport_mos7715_save_state()
620 s->u.pc.ecr = mos_parport->shadowECR; in parport_mos7715_save_state()
628 struct mos7715_parport *mos_parport; in parport_mos7715_restore_state() local
631 mos_parport = pp->private_data; in parport_mos7715_restore_state()
632 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_restore_state()
636 write_parport_reg_nonblock(mos_parport, DCR, mos_parport->shadowDCR); in parport_mos7715_restore_state()
637 write_parport_reg_nonblock(mos_parport, ECR, mos_parport->shadowECR); in parport_mos7715_restore_state()
646 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_compat() local
651 mos7715_change_mode(mos_parport, PPF); in parport_mos7715_write_compat()
652 retval = usb_bulk_msg(mos_parport->serial->dev, in parport_mos7715_write_compat()
653 usb_sndbulkpipe(mos_parport->serial->dev, 2), in parport_mos7715_write_compat()
658 dev_err(&mos_parport->serial->dev->dev, in parport_mos7715_write_compat()
698 struct mos7715_parport *mos_parport; in mos7715_parport_init() local
701 mos_parport = kzalloc(sizeof(struct mos7715_parport), GFP_KERNEL); in mos7715_parport_init()
702 if (!mos_parport) in mos7715_parport_init()
705 mos_parport->msg_pending = false; in mos7715_parport_init()
706 kref_init(&mos_parport->ref_count); in mos7715_parport_init()
707 spin_lock_init(&mos_parport->listlock); in mos7715_parport_init()
708 INIT_LIST_HEAD(&mos_parport->active_urbs); in mos7715_parport_init()
709 INIT_LIST_HEAD(&mos_parport->deferred_urbs); in mos7715_parport_init()
710 usb_set_serial_data(serial, mos_parport); /* hijack private pointer */ in mos7715_parport_init()
711 mos_parport->serial = serial; in mos7715_parport_init()
712 tasklet_init(&mos_parport->urb_tasklet, send_deferred_urbs, in mos7715_parport_init()
713 (unsigned long) mos_parport); in mos7715_parport_init()
714 init_completion(&mos_parport->syncmsg_compl); in mos7715_parport_init()
717 write_mos_reg(mos_parport->serial, dummy, PP_REG, (__u8)0x80); in mos7715_parport_init()
718 write_mos_reg(mos_parport->serial, dummy, PP_REG, (__u8)0x00); in mos7715_parport_init()
721 mos_parport->shadowDCR = DCR_INIT_VAL; in mos7715_parport_init()
722 write_mos_reg(mos_parport->serial, dummy, DCR, mos_parport->shadowDCR); in mos7715_parport_init()
723 mos_parport->shadowECR = ECR_INIT_VAL; in mos7715_parport_init()
724 write_mos_reg(mos_parport->serial, dummy, ECR, mos_parport->shadowECR); in mos7715_parport_init()
727 mos_parport->pp = parport_register_port(0, PARPORT_IRQ_NONE, in mos7715_parport_init()
730 if (mos_parport->pp == NULL) { in mos7715_parport_init()
733 kref_put(&mos_parport->ref_count, destroy_mos_parport); in mos7715_parport_init()
736 mos_parport->pp->private_data = mos_parport; in mos7715_parport_init()
737 mos_parport->pp->modes = PARPORT_MODE_COMPAT | PARPORT_MODE_PCSPP; in mos7715_parport_init()
738 mos_parport->pp->dev = &serial->interface->dev; in mos7715_parport_init()
739 parport_announce_port(mos_parport->pp); in mos7715_parport_init()
892 struct mos7715_parport *mos_parport = port->serial->private; in mos7715_interrupt_callback() local
893 if (unlikely(mos_parport == NULL)) in mos7715_interrupt_callback()
895 atomic_set(&mos_parport->shadowDSR, data[2]); in mos7715_interrupt_callback()
1960 struct mos7715_parport *mos_parport = in mos7720_release() local
1965 mos_parport->pp->private_data = NULL; in mos7720_release()
1969 if (mos_parport->msg_pending) in mos7720_release()
1970 wait_for_completion_timeout(&mos_parport->syncmsg_compl, in mos7720_release()
1973 parport_remove_port(mos_parport->pp); in mos7720_release()
1975 mos_parport->serial = NULL; in mos7720_release()
1978 tasklet_kill(&mos_parport->urb_tasklet); in mos7720_release()
1981 spin_lock_irqsave(&mos_parport->listlock, flags); in mos7720_release()
1983 &mos_parport->active_urbs, in mos7720_release()
1986 spin_unlock_irqrestore(&mos_parport->listlock, flags); in mos7720_release()
1988 kref_put(&mos_parport->ref_count, destroy_mos_parport); in mos7720_release()