Lines Matching refs:minor
207 static int lp_reset(int minor)
210 lp_claim_parport_or_block(&lp_table[minor]);
211 w_ctr(minor, LP_PSELECP);
213 w_ctr(minor, LP_PSELECP | LP_PINITP);
214 retval = r_str(minor);
215 lp_release_parport(&lp_table[minor]);
219 static void lp_error(int minor)
224 if (LP_F(minor) & LP_ABORT)
227 polling = lp_table[minor].dev->port->irq == PARPORT_IRQ_NONE;
229 lp_release_parport(&lp_table[minor]);
230 prepare_to_wait(&lp_table[minor].waitq, &wait, TASK_INTERRUPTIBLE);
232 finish_wait(&lp_table[minor].waitq, &wait);
234 lp_claim_parport_or_block(&lp_table[minor]);
236 parport_yield_blocking(lp_table[minor].dev);
239 static int lp_check_status(int minor)
242 unsigned int last = lp_table[minor].last_error;
243 unsigned char status = r_str(minor);
244 if ((status & LP_PERRORP) && !(LP_F(minor) & LP_CAREFUL))
250 printk(KERN_INFO "lp%d out of paper\n", minor);
256 printk(KERN_INFO "lp%d off-line\n", minor);
262 printk(KERN_INFO "lp%d on fire\n", minor);
270 lp_table[minor].last_error = last;
273 lp_error(minor);
278 static int lp_wait_ready(int minor, int nonblock)
283 if (lp_table[minor].current_mode != IEEE1284_MODE_COMPAT) {
288 error = lp_check_status(minor);
289 if (error && (nonblock || (LP_F(minor) & LP_ABORT)))
302 unsigned int minor = iminor(file_inode(file));
303 struct parport *port = lp_table[minor].dev->port;
304 char *kbuf = lp_table[minor].lp_buffer;
309 (LP_F(minor) & LP_ABORT));
312 if (time_after(jiffies, lp_table[minor].lastcall + LP_TIME(minor)))
313 lp_table[minor].runchars = 0;
315 lp_table[minor].lastcall = jiffies;
322 if (mutex_lock_interruptible(&lp_table[minor].port_mutex))
332 lp_claim_parport_or_block(&lp_table[minor]);
334 lp_table[minor].current_mode = lp_negotiate(port,
335 lp_table[minor].best_mode);
337 parport_set_timeout(lp_table[minor].dev,
339 : lp_table[minor].timeout));
341 if ((retv = lp_wait_ready(minor, nonblock)) == 0)
363 parport_negotiate(lp_table[minor].dev->port,
365 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT;
367 error = lp_wait_ready(minor, nonblock);
379 parport_yield_blocking(lp_table[minor].dev);
380 lp_table[minor].current_mode
382 lp_table[minor].best_mode);
401 &lp_table[minor].bits)) {
402 printk(KERN_INFO "lp%d releasing parport\n", minor);
403 parport_negotiate(lp_table[minor].dev->port,
405 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT;
406 lp_release_parport(&lp_table[minor]);
409 mutex_unlock(&lp_table[minor].port_mutex);
421 unsigned int minor=iminor(file_inode(file));
422 struct parport *port = lp_table[minor].dev->port;
424 char *kbuf = lp_table[minor].lp_buffer;
426 (LP_F(minor) & LP_ABORT));
431 if (mutex_lock_interruptible(&lp_table[minor].port_mutex))
434 lp_claim_parport_or_block(&lp_table[minor]);
436 parport_set_timeout(lp_table[minor].dev,
438 : lp_table[minor].timeout));
440 parport_negotiate(lp_table[minor].dev->port, IEEE1284_MODE_COMPAT);
441 if (parport_negotiate(lp_table[minor].dev->port,
460 if (lp_table[minor].dev->port->irq == PARPORT_IRQ_NONE) {
461 parport_negotiate(lp_table[minor].dev->port,
463 lp_error(minor);
464 if (parport_negotiate(lp_table[minor].dev->port,
470 prepare_to_wait(&lp_table[minor].waitq, &wait, TASK_INTERRUPTIBLE);
472 finish_wait(&lp_table[minor].waitq, &wait);
482 parport_negotiate(lp_table[minor].dev->port, IEEE1284_MODE_COMPAT);
484 lp_release_parport(&lp_table[minor]);
489 mutex_unlock(&lp_table[minor].port_mutex);
498 unsigned int minor = iminor(inode);
502 if (minor >= LP_NO) {
506 if ((LP_F(minor) & LP_EXIST) == 0) {
510 if (test_and_set_bit(LP_BUSY_BIT_POS, &LP_F(minor))) {
519 if ((LP_F(minor) & LP_ABORTOPEN) && !(file->f_flags & O_NONBLOCK)) {
521 lp_claim_parport_or_block(&lp_table[minor]);
522 status = r_str(minor);
523 lp_release_parport(&lp_table[minor]);
525 printk(KERN_INFO "lp%d out of paper\n", minor);
526 LP_F(minor) &= ~LP_BUSY;
530 printk(KERN_INFO "lp%d off-line\n", minor);
531 LP_F(minor) &= ~LP_BUSY;
535 printk(KERN_ERR "lp%d printer error\n", minor);
536 LP_F(minor) &= ~LP_BUSY;
541 lp_table[minor].lp_buffer = kmalloc(LP_BUFFER_SIZE, GFP_KERNEL);
542 if (!lp_table[minor].lp_buffer) {
543 LP_F(minor) &= ~LP_BUSY;
548 lp_claim_parport_or_block(&lp_table[minor]);
549 if ( (lp_table[minor].dev->port->modes & PARPORT_MODE_ECP) &&
550 !parport_negotiate(lp_table[minor].dev->port,
552 printk(KERN_INFO "lp%d: ECP mode\n", minor);
553 lp_table[minor].best_mode = IEEE1284_MODE_ECP;
555 lp_table[minor].best_mode = IEEE1284_MODE_COMPAT;
558 parport_negotiate(lp_table[minor].dev->port, IEEE1284_MODE_COMPAT);
559 lp_release_parport(&lp_table[minor]);
560 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT;
568 unsigned int minor = iminor(inode);
570 lp_claim_parport_or_block(&lp_table[minor]);
571 parport_negotiate(lp_table[minor].dev->port, IEEE1284_MODE_COMPAT);
572 lp_table[minor].current_mode = IEEE1284_MODE_COMPAT;
573 lp_release_parport(&lp_table[minor]);
574 kfree(lp_table[minor].lp_buffer);
575 lp_table[minor].lp_buffer = NULL;
576 LP_F(minor) &= ~LP_BUSY;
580 static int lp_do_ioctl(unsigned int minor, unsigned int cmd,
587 printk(KERN_DEBUG "lp%d ioctl, cmd: 0x%x, arg: 0x%lx\n", minor, cmd, arg);
589 if (minor >= LP_NO)
591 if ((LP_F(minor) & LP_EXIST) == 0)
597 LP_TIME(minor) = arg * HZ/100;
600 LP_CHAR(minor) = arg;
604 LP_F(minor) |= LP_ABORT;
606 LP_F(minor) &= ~LP_ABORT;
610 LP_F(minor) |= LP_ABORTOPEN;
612 LP_F(minor) &= ~LP_ABORTOPEN;
616 LP_F(minor) |= LP_CAREFUL;
618 LP_F(minor) &= ~LP_CAREFUL;
621 LP_WAIT(minor) = arg;
627 if (copy_to_user(argp, &LP_IRQ(minor),
632 if (mutex_lock_interruptible(&lp_table[minor].port_mutex))
634 lp_claim_parport_or_block(&lp_table[minor]);
635 status = r_str(minor);
636 lp_release_parport(&lp_table[minor]);
637 mutex_unlock(&lp_table[minor].port_mutex);
643 lp_reset(minor);
647 if (copy_to_user(argp, &LP_STAT(minor),
651 memset(&LP_STAT(minor), 0,
656 status = LP_F(minor);
667 static int lp_set_timeout(unsigned int minor, s64 tv_sec, long tv_usec)
695 lp_table[minor].timeout = to_jiffies;
699 static int lp_set_timeout32(unsigned int minor, void __user *arg)
706 return lp_set_timeout(minor, karg[0], karg[1]);
709 static int lp_set_timeout64(unsigned int minor, void __user *arg)
720 return lp_set_timeout(minor, karg[0], karg[1]);
726 unsigned int minor;
729 minor = iminor(file_inode(file));
734 ret = lp_set_timeout32(minor, (void __user *)arg);
739 ret = lp_set_timeout64(minor, (void __user *)arg);
742 ret = lp_do_ioctl(minor, cmd, arg, (void __user *)arg);
754 unsigned int minor;
757 minor = iminor(file_inode(file));
762 ret = lp_set_timeout32(minor, (void __user *)arg);
767 ret = lp_set_timeout64(minor, (void __user *)arg);
776 ret = lp_do_ioctl(minor, cmd, arg, compat_ptr(arg));