Lines Matching refs:lp_table
143 static struct lp_struct lp_table[LP_NO]; variable
160 #define r_dtr(x) (parport_read_data(lp_table[(x)].dev->port))
161 #define r_str(x) (parport_read_status(lp_table[(x)].dev->port))
162 #define w_ctr(x,y) do { parport_write_control(lp_table[(x)].dev->port, (y)); } while (0)
163 #define w_dtr(x,y) do { parport_write_data(lp_table[(x)].dev->port, (y)); } while (0)
208 lp_claim_parport_or_block (&lp_table[minor]); in lp_reset()
213 lp_release_parport (&lp_table[minor]); in lp_reset()
225 polling = lp_table[minor].dev->port->irq == PARPORT_IRQ_NONE; in lp_error()
226 if (polling) lp_release_parport (&lp_table[minor]); in lp_error()
227 prepare_to_wait(&lp_table[minor].waitq, &wait, TASK_INTERRUPTIBLE); in lp_error()
229 finish_wait(&lp_table[minor].waitq, &wait); in lp_error()
230 if (polling) lp_claim_parport_or_block (&lp_table[minor]); in lp_error()
231 else parport_yield_blocking (lp_table[minor].dev); in lp_error()
237 unsigned int last = lp_table[minor].last_error; in lp_check_status()
265 lp_table[minor].last_error = last; in lp_check_status()
278 if (lp_table[minor].current_mode != IEEE1284_MODE_COMPAT) { in lp_wait_ready()
298 struct parport *port = lp_table[minor].dev->port; in lp_write()
299 char *kbuf = lp_table[minor].lp_buffer; in lp_write()
307 if (time_after(jiffies, lp_table[minor].lastcall + LP_TIME(minor))) in lp_write()
308 lp_table[minor].runchars = 0; in lp_write()
310 lp_table[minor].lastcall = jiffies; in lp_write()
317 if (mutex_lock_interruptible(&lp_table[minor].port_mutex)) in lp_write()
327 lp_claim_parport_or_block (&lp_table[minor]); in lp_write()
329 lp_table[minor].current_mode = lp_negotiate (port, in lp_write()
330 lp_table[minor].best_mode); in lp_write()
332 parport_set_timeout (lp_table[minor].dev, in lp_write()
334 : lp_table[minor].timeout)); in lp_write()
358 parport_negotiate (lp_table[minor].dev->port, in lp_write()
360 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT; in lp_write()
374 parport_yield_blocking (lp_table[minor].dev); in lp_write()
375 lp_table[minor].current_mode in lp_write()
377 lp_table[minor].best_mode); in lp_write()
396 &lp_table[minor].bits)) { in lp_write()
398 parport_negotiate (lp_table[minor].dev->port, in lp_write()
400 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT; in lp_write()
401 lp_release_parport (&lp_table[minor]); in lp_write()
404 mutex_unlock(&lp_table[minor].port_mutex); in lp_write()
417 struct parport *port = lp_table[minor].dev->port; in lp_read()
419 char *kbuf = lp_table[minor].lp_buffer; in lp_read()
426 if (mutex_lock_interruptible(&lp_table[minor].port_mutex)) in lp_read()
429 lp_claim_parport_or_block (&lp_table[minor]); in lp_read()
431 parport_set_timeout (lp_table[minor].dev, in lp_read()
433 : lp_table[minor].timeout)); in lp_read()
435 parport_negotiate (lp_table[minor].dev->port, IEEE1284_MODE_COMPAT); in lp_read()
436 if (parport_negotiate (lp_table[minor].dev->port, in lp_read()
455 if (lp_table[minor].dev->port->irq == PARPORT_IRQ_NONE) { in lp_read()
456 parport_negotiate (lp_table[minor].dev->port, in lp_read()
459 if (parport_negotiate (lp_table[minor].dev->port, in lp_read()
465 prepare_to_wait(&lp_table[minor].waitq, &wait, TASK_INTERRUPTIBLE); in lp_read()
467 finish_wait(&lp_table[minor].waitq, &wait); in lp_read()
477 parport_negotiate (lp_table[minor].dev->port, IEEE1284_MODE_COMPAT); in lp_read()
479 lp_release_parport (&lp_table[minor]); in lp_read()
484 mutex_unlock(&lp_table[minor].port_mutex); in lp_read()
516 lp_claim_parport_or_block (&lp_table[minor]); in lp_open()
518 lp_release_parport (&lp_table[minor]); in lp_open()
536 lp_table[minor].lp_buffer = kmalloc(LP_BUFFER_SIZE, GFP_KERNEL); in lp_open()
537 if (!lp_table[minor].lp_buffer) { in lp_open()
543 lp_claim_parport_or_block (&lp_table[minor]); in lp_open()
544 if ( (lp_table[minor].dev->port->modes & PARPORT_MODE_ECP) && in lp_open()
545 !parport_negotiate (lp_table[minor].dev->port, in lp_open()
548 lp_table[minor].best_mode = IEEE1284_MODE_ECP; in lp_open()
550 lp_table[minor].best_mode = IEEE1284_MODE_COMPAT; in lp_open()
553 parport_negotiate (lp_table[minor].dev->port, IEEE1284_MODE_COMPAT); in lp_open()
554 lp_release_parport (&lp_table[minor]); in lp_open()
555 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT; in lp_open()
565 lp_claim_parport_or_block (&lp_table[minor]); in lp_release()
566 parport_negotiate (lp_table[minor].dev->port, IEEE1284_MODE_COMPAT); in lp_release()
567 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT; in lp_release()
568 lp_release_parport (&lp_table[minor]); in lp_release()
569 kfree(lp_table[minor].lp_buffer); in lp_release()
570 lp_table[minor].lp_buffer = NULL; in lp_release()
627 if (mutex_lock_interruptible(&lp_table[minor].port_mutex)) in lp_do_ioctl()
629 lp_claim_parport_or_block (&lp_table[minor]); in lp_do_ioctl()
631 lp_release_parport (&lp_table[minor]); in lp_do_ioctl()
632 mutex_unlock(&lp_table[minor].port_mutex); in lp_do_ioctl()
676 lp_table[minor].timeout = to_jiffies; in lp_set_timeout()
772 struct pardevice *dev = lp_table[CONSOLE_LP].dev; in lp_console_write()
872 lp_table[nr].dev = parport_register_device(port, "lp", in lp_register()
874 (void *) &lp_table[nr]); in lp_register()
875 if (lp_table[nr].dev == NULL) in lp_register()
877 lp_table[nr].flags |= LP_EXIST; in lp_register()
958 lp_table[i].dev = NULL; in lp_init()
959 lp_table[i].flags = 0; in lp_init()
960 lp_table[i].chars = LP_INIT_CHAR; in lp_init()
961 lp_table[i].time = LP_INIT_TIME; in lp_init()
962 lp_table[i].wait = LP_INIT_WAIT; in lp_init()
963 lp_table[i].lp_buffer = NULL; in lp_init()
965 lp_table[i].lastcall = 0; in lp_init()
966 lp_table[i].runchars = 0; in lp_init()
967 memset (&lp_table[i].stats, 0, sizeof (struct lp_stats)); in lp_init()
969 lp_table[i].last_error = 0; in lp_init()
970 init_waitqueue_head (&lp_table[i].waitq); in lp_init()
971 init_waitqueue_head (&lp_table[i].dataq); in lp_init()
972 mutex_init(&lp_table[i].port_mutex); in lp_init()
973 lp_table[i].timeout = 10 * HZ; in lp_init()
1050 if (lp_table[offset].dev == NULL) in lp_cleanup_module()
1052 parport_unregister_device(lp_table[offset].dev); in lp_cleanup_module()