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, MOS7720_ECR, in mos7715_change_mode()
256 mos_parport->shadowECR); in mos7715_change_mode()
262 struct mos7715_parport *mos_parport = in destroy_mos_parport() local
265 kfree(mos_parport); in destroy_mos_parport()
272 struct mos7715_parport *mos_parport = urbtrack->mos_parport; in destroy_urbtracker() local
277 kref_put(&mos_parport->ref_count, destroy_mos_parport); in destroy_urbtracker()
289 struct mos7715_parport *mos_parport = (void *)_mos_parport; in send_deferred_urbs() local
295 if (unlikely(mos_parport->serial == NULL)) in send_deferred_urbs()
298 dev = &mos_parport->serial->dev->dev; in send_deferred_urbs()
301 if (!mutex_trylock(&mos_parport->serial->disc_mutex)) { in send_deferred_urbs()
303 tasklet_schedule(&mos_parport->urb_tasklet); in send_deferred_urbs()
308 if (unlikely(mos_parport->serial->disconnected)) { in send_deferred_urbs()
309 mutex_unlock(&mos_parport->serial->disc_mutex); in send_deferred_urbs()
313 spin_lock_irqsave(&mos_parport->listlock, flags); in send_deferred_urbs()
314 if (list_empty(&mos_parport->deferred_urbs)) { in send_deferred_urbs()
315 spin_unlock_irqrestore(&mos_parport->listlock, flags); in send_deferred_urbs()
316 mutex_unlock(&mos_parport->serial->disc_mutex); in send_deferred_urbs()
322 list_for_each_safe(cursor, next, &mos_parport->deferred_urbs) in send_deferred_urbs()
323 list_move_tail(cursor, &mos_parport->active_urbs); in send_deferred_urbs()
324 list_for_each_entry_safe(urbtrack, tmp, &mos_parport->active_urbs, in send_deferred_urbs()
334 spin_unlock_irqrestore(&mos_parport->listlock, flags); in send_deferred_urbs()
335 mutex_unlock(&mos_parport->serial->disc_mutex); in send_deferred_urbs()
348 spin_lock(&urbtrack->mos_parport->listlock); in async_complete()
350 spin_unlock(&urbtrack->mos_parport->listlock); in async_complete()
354 static int write_parport_reg_nonblock(struct mos7715_parport *mos_parport, in write_parport_reg_nonblock() argument
360 struct usb_serial *serial = mos_parport->serial; in write_parport_reg_nonblock()
368 kref_get(&mos_parport->ref_count); in write_parport_reg_nonblock()
369 urbtrack->mos_parport = mos_parport; in write_parport_reg_nonblock()
398 spin_lock_irqsave(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
400 &mos_parport->deferred_urbs); in write_parport_reg_nonblock()
401 spin_unlock_irqrestore(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
402 tasklet_schedule(&mos_parport->urb_tasklet); in write_parport_reg_nonblock()
415 spin_lock_irqsave(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
416 list_add_tail(&urbtrack->urblist_entry, &mos_parport->active_urbs); in write_parport_reg_nonblock()
417 spin_unlock_irqrestore(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
423 spin_lock_irqsave(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
425 spin_unlock_irqrestore(&mos_parport->listlock, flags); in write_parport_reg_nonblock()
446 struct mos7715_parport *mos_parport; in parport_prologue() local
449 mos_parport = pp->private_data; in parport_prologue()
450 if (unlikely(mos_parport == NULL)) { in parport_prologue()
455 mos_parport->msg_pending = true; /* synch usb call pending */ in parport_prologue()
456 reinit_completion(&mos_parport->syncmsg_compl); in parport_prologue()
459 mutex_lock(&mos_parport->serial->disc_mutex); in parport_prologue()
460 if (mos_parport->serial->disconnected) { in parport_prologue()
462 mutex_unlock(&mos_parport->serial->disc_mutex); in parport_prologue()
463 mos_parport->msg_pending = false; in parport_prologue()
464 complete(&mos_parport->syncmsg_compl); in parport_prologue()
477 struct mos7715_parport *mos_parport = pp->private_data; in parport_epilogue() local
478 mutex_unlock(&mos_parport->serial->disc_mutex); in parport_epilogue()
479 mos_parport->msg_pending = false; in parport_epilogue()
480 complete(&mos_parport->syncmsg_compl); in parport_epilogue()
485 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_data() local
489 mos7715_change_mode(mos_parport, SPP); in parport_mos7715_write_data()
490 write_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, (__u8)d); in parport_mos7715_write_data()
496 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_read_data() local
501 read_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, &d); in parport_mos7715_read_data()
508 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_control() local
513 data = ((__u8)d & 0x0f) | (mos_parport->shadowDCR & 0xf0); in parport_mos7715_write_control()
514 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, data); in parport_mos7715_write_control()
515 mos_parport->shadowDCR = data; in parport_mos7715_write_control()
521 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_read_control() local
525 mos_parport = pp->private_data; in parport_mos7715_read_control()
526 if (unlikely(mos_parport == NULL)) { in parport_mos7715_read_control()
530 dcr = mos_parport->shadowDCR & 0x0f; in parport_mos7715_read_control()
539 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_frob_control() local
546 mos_parport->shadowDCR = (mos_parport->shadowDCR & (~mask)) ^ val; in parport_mos7715_frob_control()
547 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in parport_mos7715_frob_control()
548 mos_parport->shadowDCR); in parport_mos7715_frob_control()
549 dcr = mos_parport->shadowDCR & 0x0f; in parport_mos7715_frob_control()
557 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_read_status() local
560 mos_parport = pp->private_data; in parport_mos7715_read_status()
561 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_read_status()
565 status = atomic_read(&mos_parport->shadowDSR) & 0xf8; in parport_mos7715_read_status()
580 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_data_forward() local
584 mos7715_change_mode(mos_parport, PS2); in parport_mos7715_data_forward()
585 mos_parport->shadowDCR &= ~0x20; in parport_mos7715_data_forward()
586 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in parport_mos7715_data_forward()
587 mos_parport->shadowDCR); in parport_mos7715_data_forward()
593 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_data_reverse() local
597 mos7715_change_mode(mos_parport, PS2); in parport_mos7715_data_reverse()
598 mos_parport->shadowDCR |= 0x20; in parport_mos7715_data_reverse()
599 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in parport_mos7715_data_reverse()
600 mos_parport->shadowDCR); in parport_mos7715_data_reverse()
615 struct mos7715_parport *mos_parport; in parport_mos7715_save_state() local
618 mos_parport = pp->private_data; in parport_mos7715_save_state()
619 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_save_state()
623 s->u.pc.ctr = mos_parport->shadowDCR; in parport_mos7715_save_state()
624 s->u.pc.ecr = mos_parport->shadowECR; in parport_mos7715_save_state()
632 struct mos7715_parport *mos_parport; in parport_mos7715_restore_state() local
635 mos_parport = pp->private_data; in parport_mos7715_restore_state()
636 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_restore_state()
640 write_parport_reg_nonblock(mos_parport, MOS7720_DCR, in parport_mos7715_restore_state()
641 mos_parport->shadowDCR); in parport_mos7715_restore_state()
642 write_parport_reg_nonblock(mos_parport, MOS7720_ECR, in parport_mos7715_restore_state()
643 mos_parport->shadowECR); in parport_mos7715_restore_state()
652 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_compat() local
657 mos7715_change_mode(mos_parport, PPF); in parport_mos7715_write_compat()
658 retval = usb_bulk_msg(mos_parport->serial->dev, in parport_mos7715_write_compat()
659 usb_sndbulkpipe(mos_parport->serial->dev, 2), in parport_mos7715_write_compat()
664 dev_err(&mos_parport->serial->dev->dev, in parport_mos7715_write_compat()
704 struct mos7715_parport *mos_parport; in mos7715_parport_init() local
707 mos_parport = kzalloc(sizeof(struct mos7715_parport), GFP_KERNEL); in mos7715_parport_init()
708 if (!mos_parport) in mos7715_parport_init()
711 mos_parport->msg_pending = false; in mos7715_parport_init()
712 kref_init(&mos_parport->ref_count); in mos7715_parport_init()
713 spin_lock_init(&mos_parport->listlock); in mos7715_parport_init()
714 INIT_LIST_HEAD(&mos_parport->active_urbs); in mos7715_parport_init()
715 INIT_LIST_HEAD(&mos_parport->deferred_urbs); in mos7715_parport_init()
716 usb_set_serial_data(serial, mos_parport); /* hijack private pointer */ in mos7715_parport_init()
717 mos_parport->serial = serial; in mos7715_parport_init()
718 tasklet_init(&mos_parport->urb_tasklet, send_deferred_urbs, in mos7715_parport_init()
719 (unsigned long) mos_parport); in mos7715_parport_init()
720 init_completion(&mos_parport->syncmsg_compl); in mos7715_parport_init()
723 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x80); in mos7715_parport_init()
724 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x00); in mos7715_parport_init()
727 mos_parport->shadowDCR = DCR_INIT_VAL; in mos7715_parport_init()
728 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in mos7715_parport_init()
729 mos_parport->shadowDCR); in mos7715_parport_init()
730 mos_parport->shadowECR = ECR_INIT_VAL; in mos7715_parport_init()
731 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR, in mos7715_parport_init()
732 mos_parport->shadowECR); in mos7715_parport_init()
735 mos_parport->pp = parport_register_port(0, PARPORT_IRQ_NONE, in mos7715_parport_init()
738 if (mos_parport->pp == NULL) { in mos7715_parport_init()
741 kref_put(&mos_parport->ref_count, destroy_mos_parport); in mos7715_parport_init()
744 mos_parport->pp->private_data = mos_parport; in mos7715_parport_init()
745 mos_parport->pp->modes = PARPORT_MODE_COMPAT | PARPORT_MODE_PCSPP; in mos7715_parport_init()
746 mos_parport->pp->dev = &serial->interface->dev; in mos7715_parport_init()
747 parport_announce_port(mos_parport->pp); in mos7715_parport_init()
900 struct mos7715_parport *mos_parport = port->serial->private; in mos7715_interrupt_callback() local
901 if (unlikely(mos_parport == NULL)) in mos7715_interrupt_callback()
903 atomic_set(&mos_parport->shadowDSR, data[2]); in mos7715_interrupt_callback()
1983 struct mos7715_parport *mos_parport = in mos7720_release() local
1988 mos_parport->pp->private_data = NULL; in mos7720_release()
1992 if (mos_parport->msg_pending) in mos7720_release()
1993 wait_for_completion_timeout(&mos_parport->syncmsg_compl, in mos7720_release()
1996 parport_remove_port(mos_parport->pp); in mos7720_release()
1998 mos_parport->serial = NULL; in mos7720_release()
2001 tasklet_kill(&mos_parport->urb_tasklet); in mos7720_release()
2004 spin_lock_irqsave(&mos_parport->listlock, flags); in mos7720_release()
2006 &mos_parport->active_urbs, in mos7720_release()
2009 spin_unlock_irqrestore(&mos_parport->listlock, flags); in mos7720_release()
2011 kref_put(&mos_parport->ref_count, destroy_mos_parport); in mos7720_release()