Lines Matching refs:mos_parport

242 static inline int mos7715_change_mode(struct mos7715_parport *mos_parport,  in mos7715_change_mode()  argument
245 mos_parport->shadowECR = mode; in mos7715_change_mode()
246 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR, in mos7715_change_mode()
247 mos_parport->shadowECR); in mos7715_change_mode()
253 struct mos7715_parport *mos_parport = in destroy_mos_parport() local
256 kfree(mos_parport); in destroy_mos_parport()
273 struct mos7715_parport *mos_parport; in parport_prologue() local
276 mos_parport = pp->private_data; in parport_prologue()
277 if (unlikely(mos_parport == NULL)) { in parport_prologue()
282 mos_parport->msg_pending = true; /* synch usb call pending */ in parport_prologue()
283 reinit_completion(&mos_parport->syncmsg_compl); in parport_prologue()
287 if (work_pending(&mos_parport->work)) in parport_prologue()
288 flush_work(&mos_parport->work); in parport_prologue()
290 mutex_lock(&mos_parport->serial->disc_mutex); in parport_prologue()
291 if (mos_parport->serial->disconnected) { in parport_prologue()
293 mutex_unlock(&mos_parport->serial->disc_mutex); in parport_prologue()
294 mos_parport->msg_pending = false; in parport_prologue()
295 complete(&mos_parport->syncmsg_compl); in parport_prologue()
308 struct mos7715_parport *mos_parport = pp->private_data; in parport_epilogue() local
309 mutex_unlock(&mos_parport->serial->disc_mutex); in parport_epilogue()
310 mos_parport->msg_pending = false; in parport_epilogue()
311 complete(&mos_parport->syncmsg_compl); in parport_epilogue()
316 struct mos7715_parport *mos_parport; in deferred_restore_writes() local
318 mos_parport = container_of(work, struct mos7715_parport, work); in deferred_restore_writes()
320 mutex_lock(&mos_parport->serial->disc_mutex); in deferred_restore_writes()
323 if (mos_parport->serial->disconnected) in deferred_restore_writes()
326 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in deferred_restore_writes()
327 mos_parport->shadowDCR); in deferred_restore_writes()
328 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR, in deferred_restore_writes()
329 mos_parport->shadowECR); in deferred_restore_writes()
331 mutex_unlock(&mos_parport->serial->disc_mutex); in deferred_restore_writes()
336 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_data() local
340 mos7715_change_mode(mos_parport, SPP); in parport_mos7715_write_data()
341 write_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, (__u8)d); in parport_mos7715_write_data()
347 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_read_data() local
352 read_mos_reg(mos_parport->serial, dummy, MOS7720_DPR, &d); in parport_mos7715_read_data()
359 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_control() local
364 data = ((__u8)d & 0x0f) | (mos_parport->shadowDCR & 0xf0); in parport_mos7715_write_control()
365 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, data); in parport_mos7715_write_control()
366 mos_parport->shadowDCR = data; in parport_mos7715_write_control()
372 struct mos7715_parport *mos_parport; in parport_mos7715_read_control() local
376 mos_parport = pp->private_data; in parport_mos7715_read_control()
377 if (unlikely(mos_parport == NULL)) { in parport_mos7715_read_control()
381 dcr = mos_parport->shadowDCR & 0x0f; in parport_mos7715_read_control()
390 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_frob_control() local
397 mos_parport->shadowDCR = (mos_parport->shadowDCR & (~mask)) ^ val; in parport_mos7715_frob_control()
398 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in parport_mos7715_frob_control()
399 mos_parport->shadowDCR); in parport_mos7715_frob_control()
400 dcr = mos_parport->shadowDCR & 0x0f; in parport_mos7715_frob_control()
408 struct mos7715_parport *mos_parport; in parport_mos7715_read_status() local
411 mos_parport = pp->private_data; in parport_mos7715_read_status()
412 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_read_status()
416 status = atomic_read(&mos_parport->shadowDSR) & 0xf8; in parport_mos7715_read_status()
431 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_data_forward() local
435 mos7715_change_mode(mos_parport, PS2); in parport_mos7715_data_forward()
436 mos_parport->shadowDCR &= ~0x20; in parport_mos7715_data_forward()
437 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in parport_mos7715_data_forward()
438 mos_parport->shadowDCR); in parport_mos7715_data_forward()
444 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_data_reverse() local
448 mos7715_change_mode(mos_parport, PS2); in parport_mos7715_data_reverse()
449 mos_parport->shadowDCR |= 0x20; in parport_mos7715_data_reverse()
450 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in parport_mos7715_data_reverse()
451 mos_parport->shadowDCR); in parport_mos7715_data_reverse()
466 struct mos7715_parport *mos_parport; in parport_mos7715_save_state() local
469 mos_parport = pp->private_data; in parport_mos7715_save_state()
470 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_save_state()
474 s->u.pc.ctr = mos_parport->shadowDCR; in parport_mos7715_save_state()
475 s->u.pc.ecr = mos_parport->shadowECR; in parport_mos7715_save_state()
483 struct mos7715_parport *mos_parport; in parport_mos7715_restore_state() local
486 mos_parport = pp->private_data; in parport_mos7715_restore_state()
487 if (unlikely(mos_parport == NULL)) { /* release called */ in parport_mos7715_restore_state()
491 mos_parport->shadowDCR = s->u.pc.ctr; in parport_mos7715_restore_state()
492 mos_parport->shadowECR = s->u.pc.ecr; in parport_mos7715_restore_state()
494 schedule_work(&mos_parport->work); in parport_mos7715_restore_state()
503 struct mos7715_parport *mos_parport = pp->private_data; in parport_mos7715_write_compat() local
508 mos7715_change_mode(mos_parport, PPF); in parport_mos7715_write_compat()
509 retval = usb_bulk_msg(mos_parport->serial->dev, in parport_mos7715_write_compat()
510 usb_sndbulkpipe(mos_parport->serial->dev, 2), in parport_mos7715_write_compat()
515 dev_err(&mos_parport->serial->dev->dev, in parport_mos7715_write_compat()
555 struct mos7715_parport *mos_parport; in mos7715_parport_init() local
558 mos_parport = kzalloc(sizeof(struct mos7715_parport), GFP_KERNEL); in mos7715_parport_init()
559 if (!mos_parport) in mos7715_parport_init()
562 mos_parport->msg_pending = false; in mos7715_parport_init()
563 kref_init(&mos_parport->ref_count); in mos7715_parport_init()
564 usb_set_serial_data(serial, mos_parport); /* hijack private pointer */ in mos7715_parport_init()
565 mos_parport->serial = serial; in mos7715_parport_init()
566 INIT_WORK(&mos_parport->work, deferred_restore_writes); in mos7715_parport_init()
567 init_completion(&mos_parport->syncmsg_compl); in mos7715_parport_init()
570 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x80); in mos7715_parport_init()
571 write_mos_reg(mos_parport->serial, dummy, MOS7720_PP_REG, (__u8)0x00); in mos7715_parport_init()
574 mos_parport->shadowDCR = DCR_INIT_VAL; in mos7715_parport_init()
575 write_mos_reg(mos_parport->serial, dummy, MOS7720_DCR, in mos7715_parport_init()
576 mos_parport->shadowDCR); in mos7715_parport_init()
577 mos_parport->shadowECR = ECR_INIT_VAL; in mos7715_parport_init()
578 write_mos_reg(mos_parport->serial, dummy, MOS7720_ECR, in mos7715_parport_init()
579 mos_parport->shadowECR); in mos7715_parport_init()
582 mos_parport->pp = parport_register_port(0, PARPORT_IRQ_NONE, in mos7715_parport_init()
585 if (mos_parport->pp == NULL) { in mos7715_parport_init()
588 kref_put(&mos_parport->ref_count, destroy_mos_parport); in mos7715_parport_init()
591 mos_parport->pp->private_data = mos_parport; in mos7715_parport_init()
592 mos_parport->pp->modes = PARPORT_MODE_COMPAT | PARPORT_MODE_PCSPP; in mos7715_parport_init()
593 mos_parport->pp->dev = &serial->interface->dev; in mos7715_parport_init()
594 parport_announce_port(mos_parport->pp); in mos7715_parport_init()
747 struct mos7715_parport *mos_parport = port->serial->private; in mos7715_interrupt_callback() local
748 if (unlikely(mos_parport == NULL)) in mos7715_interrupt_callback()
750 atomic_set(&mos_parport->shadowDSR, data[2]); in mos7715_interrupt_callback()
1672 struct mos7715_parport *mos_parport = in mos7720_release() local
1677 mos_parport->pp->private_data = NULL; in mos7720_release()
1681 if (mos_parport->msg_pending) in mos7720_release()
1682 wait_for_completion_timeout(&mos_parport->syncmsg_compl, in mos7720_release()
1689 cancel_work_sync(&mos_parport->work); in mos7720_release()
1691 parport_remove_port(mos_parport->pp); in mos7720_release()
1693 mos_parport->serial = NULL; in mos7720_release()
1695 parport_del_port(mos_parport->pp); in mos7720_release()
1697 kref_put(&mos_parport->ref_count, destroy_mos_parport); in mos7720_release()