share.c (34296B)
1/* 2 * Parallel-port resource manager code. 3 * 4 * Authors: David Campbell <campbell@tirian.che.curtin.edu.au> 5 * Tim Waugh <tim@cyberelk.demon.co.uk> 6 * Jose Renau <renau@acm.org> 7 * Philip Blundell <philb@gnu.org> 8 * Andrea Arcangeli 9 * 10 * based on work by Grant Guenther <grant@torque.net> 11 * and Philip Blundell 12 * 13 * Any part of this program may be used in documents licensed under 14 * the GNU Free Documentation License, Version 1.1 or any later version 15 * published by the Free Software Foundation. 16 */ 17 18#undef PARPORT_DEBUG_SHARING /* undef for production */ 19 20#include <linux/module.h> 21#include <linux/string.h> 22#include <linux/threads.h> 23#include <linux/parport.h> 24#include <linux/delay.h> 25#include <linux/errno.h> 26#include <linux/interrupt.h> 27#include <linux/ioport.h> 28#include <linux/kernel.h> 29#include <linux/slab.h> 30#include <linux/sched/signal.h> 31#include <linux/kmod.h> 32#include <linux/device.h> 33 34#include <linux/spinlock.h> 35#include <linux/mutex.h> 36#include <asm/irq.h> 37 38#undef PARPORT_PARANOID 39 40#define PARPORT_DEFAULT_TIMESLICE (HZ/5) 41 42unsigned long parport_default_timeslice = PARPORT_DEFAULT_TIMESLICE; 43int parport_default_spintime = DEFAULT_SPIN_TIME; 44 45static LIST_HEAD(portlist); 46static DEFINE_SPINLOCK(parportlist_lock); 47 48/* list of all allocated ports, sorted by ->number */ 49static LIST_HEAD(all_ports); 50static DEFINE_SPINLOCK(full_list_lock); 51 52static LIST_HEAD(drivers); 53 54static DEFINE_MUTEX(registration_lock); 55 56/* What you can do to a port that's gone away.. */ 57static void dead_write_lines(struct parport *p, unsigned char b){} 58static unsigned char dead_read_lines(struct parport *p) { return 0; } 59static unsigned char dead_frob_lines(struct parport *p, unsigned char b, 60 unsigned char c) { return 0; } 61static void dead_onearg(struct parport *p){} 62static void dead_initstate(struct pardevice *d, struct parport_state *s) { } 63static void dead_state(struct parport *p, struct parport_state *s) { } 64static size_t dead_write(struct parport *p, const void *b, size_t l, int f) 65{ return 0; } 66static size_t dead_read(struct parport *p, void *b, size_t l, int f) 67{ return 0; } 68static struct parport_operations dead_ops = { 69 .write_data = dead_write_lines, /* data */ 70 .read_data = dead_read_lines, 71 72 .write_control = dead_write_lines, /* control */ 73 .read_control = dead_read_lines, 74 .frob_control = dead_frob_lines, 75 76 .read_status = dead_read_lines, /* status */ 77 78 .enable_irq = dead_onearg, /* enable_irq */ 79 .disable_irq = dead_onearg, /* disable_irq */ 80 81 .data_forward = dead_onearg, /* data_forward */ 82 .data_reverse = dead_onearg, /* data_reverse */ 83 84 .init_state = dead_initstate, /* init_state */ 85 .save_state = dead_state, 86 .restore_state = dead_state, 87 88 .epp_write_data = dead_write, /* epp */ 89 .epp_read_data = dead_read, 90 .epp_write_addr = dead_write, 91 .epp_read_addr = dead_read, 92 93 .ecp_write_data = dead_write, /* ecp */ 94 .ecp_read_data = dead_read, 95 .ecp_write_addr = dead_write, 96 97 .compat_write_data = dead_write, /* compat */ 98 .nibble_read_data = dead_read, /* nibble */ 99 .byte_read_data = dead_read, /* byte */ 100 101 .owner = NULL, 102}; 103 104static struct device_type parport_device_type = { 105 .name = "parport", 106}; 107 108static int is_parport(struct device *dev) 109{ 110 return dev->type == &parport_device_type; 111} 112 113static int parport_probe(struct device *dev) 114{ 115 struct parport_driver *drv; 116 117 if (is_parport(dev)) 118 return -ENODEV; 119 120 drv = to_parport_driver(dev->driver); 121 if (!drv->probe) { 122 /* if driver has not defined a custom probe */ 123 struct pardevice *par_dev = to_pardevice(dev); 124 125 if (strcmp(par_dev->name, drv->name)) 126 return -ENODEV; 127 return 0; 128 } 129 /* if driver defined its own probe */ 130 return drv->probe(to_pardevice(dev)); 131} 132 133static struct bus_type parport_bus_type = { 134 .name = "parport", 135 .probe = parport_probe, 136}; 137 138int parport_bus_init(void) 139{ 140 return bus_register(&parport_bus_type); 141} 142 143void parport_bus_exit(void) 144{ 145 bus_unregister(&parport_bus_type); 146} 147 148/* 149 * iterates through all the drivers registered with the bus and sends the port 150 * details to the match_port callback of the driver, so that the driver can 151 * know about the new port that just registered with the bus and decide if it 152 * wants to use this new port. 153 */ 154static int driver_check(struct device_driver *dev_drv, void *_port) 155{ 156 struct parport *port = _port; 157 struct parport_driver *drv = to_parport_driver(dev_drv); 158 159 if (drv->match_port) 160 drv->match_port(port); 161 return 0; 162} 163 164/* Call attach(port) for each registered driver. */ 165static void attach_driver_chain(struct parport *port) 166{ 167 /* caller has exclusive registration_lock */ 168 struct parport_driver *drv; 169 170 list_for_each_entry(drv, &drivers, list) 171 drv->attach(port); 172 173 /* 174 * call the driver_check function of the drivers registered in 175 * new device model 176 */ 177 178 bus_for_each_drv(&parport_bus_type, NULL, port, driver_check); 179} 180 181static int driver_detach(struct device_driver *_drv, void *_port) 182{ 183 struct parport *port = _port; 184 struct parport_driver *drv = to_parport_driver(_drv); 185 186 if (drv->detach) 187 drv->detach(port); 188 return 0; 189} 190 191/* Call detach(port) for each registered driver. */ 192static void detach_driver_chain(struct parport *port) 193{ 194 struct parport_driver *drv; 195 /* caller has exclusive registration_lock */ 196 list_for_each_entry(drv, &drivers, list) 197 drv->detach(port); 198 199 /* 200 * call the detach function of the drivers registered in 201 * new device model 202 */ 203 204 bus_for_each_drv(&parport_bus_type, NULL, port, driver_detach); 205} 206 207/* Ask kmod for some lowlevel drivers. */ 208static void get_lowlevel_driver(void) 209{ 210 /* 211 * There is no actual module called this: you should set 212 * up an alias for modutils. 213 */ 214 request_module("parport_lowlevel"); 215} 216 217/* 218 * iterates through all the devices connected to the bus and sends the device 219 * details to the match_port callback of the driver, so that the driver can 220 * know what are all the ports that are connected to the bus and choose the 221 * port to which it wants to register its device. 222 */ 223static int port_check(struct device *dev, void *dev_drv) 224{ 225 struct parport_driver *drv = dev_drv; 226 227 /* only send ports, do not send other devices connected to bus */ 228 if (is_parport(dev)) 229 drv->match_port(to_parport_dev(dev)); 230 return 0; 231} 232 233/* 234 * Iterates through all the devices connected to the bus and return 1 235 * if the device is a parallel port. 236 */ 237 238static int port_detect(struct device *dev, void *dev_drv) 239{ 240 if (is_parport(dev)) 241 return 1; 242 return 0; 243} 244 245/** 246 * __parport_register_driver - register a parallel port device driver 247 * @drv: structure describing the driver 248 * @owner: owner module of drv 249 * @mod_name: module name string 250 * 251 * This can be called by a parallel port device driver in order 252 * to receive notifications about ports being found in the 253 * system, as well as ports no longer available. 254 * 255 * If devmodel is true then the new device model is used 256 * for registration. 257 * 258 * The @drv structure is allocated by the caller and must not be 259 * deallocated until after calling parport_unregister_driver(). 260 * 261 * If using the non device model: 262 * The driver's attach() function may block. The port that 263 * attach() is given will be valid for the duration of the 264 * callback, but if the driver wants to take a copy of the 265 * pointer it must call parport_get_port() to do so. Calling 266 * parport_register_device() on that port will do this for you. 267 * 268 * The driver's detach() function may block. The port that 269 * detach() is given will be valid for the duration of the 270 * callback, but if the driver wants to take a copy of the 271 * pointer it must call parport_get_port() to do so. 272 * 273 * 274 * Returns 0 on success. The non device model will always succeeds. 275 * but the new device model can fail and will return the error code. 276 **/ 277 278int __parport_register_driver(struct parport_driver *drv, struct module *owner, 279 const char *mod_name) 280{ 281 /* using device model */ 282 int ret; 283 284 /* initialize common driver fields */ 285 drv->driver.name = drv->name; 286 drv->driver.bus = &parport_bus_type; 287 drv->driver.owner = owner; 288 drv->driver.mod_name = mod_name; 289 ret = driver_register(&drv->driver); 290 if (ret) 291 return ret; 292 293 /* 294 * check if bus has any parallel port registered, if 295 * none is found then load the lowlevel driver. 296 */ 297 ret = bus_for_each_dev(&parport_bus_type, NULL, NULL, 298 port_detect); 299 if (!ret) 300 get_lowlevel_driver(); 301 302 mutex_lock(®istration_lock); 303 if (drv->match_port) 304 bus_for_each_dev(&parport_bus_type, NULL, drv, 305 port_check); 306 mutex_unlock(®istration_lock); 307 308 return 0; 309} 310EXPORT_SYMBOL(__parport_register_driver); 311 312static int port_detach(struct device *dev, void *_drv) 313{ 314 struct parport_driver *drv = _drv; 315 316 if (is_parport(dev) && drv->detach) 317 drv->detach(to_parport_dev(dev)); 318 319 return 0; 320} 321 322/** 323 * parport_unregister_driver - deregister a parallel port device driver 324 * @drv: structure describing the driver that was given to 325 * parport_register_driver() 326 * 327 * This should be called by a parallel port device driver that 328 * has registered itself using parport_register_driver() when it 329 * is about to be unloaded. 330 * 331 * When it returns, the driver's attach() routine will no longer 332 * be called, and for each port that attach() was called for, the 333 * detach() routine will have been called. 334 * 335 * All the driver's attach() and detach() calls are guaranteed to have 336 * finished by the time this function returns. 337 **/ 338 339void parport_unregister_driver(struct parport_driver *drv) 340{ 341 mutex_lock(®istration_lock); 342 bus_for_each_dev(&parport_bus_type, NULL, drv, port_detach); 343 driver_unregister(&drv->driver); 344 mutex_unlock(®istration_lock); 345} 346EXPORT_SYMBOL(parport_unregister_driver); 347 348static void free_port(struct device *dev) 349{ 350 int d; 351 struct parport *port = to_parport_dev(dev); 352 353 spin_lock(&full_list_lock); 354 list_del(&port->full_list); 355 spin_unlock(&full_list_lock); 356 for (d = 0; d < 5; d++) { 357 kfree(port->probe_info[d].class_name); 358 kfree(port->probe_info[d].mfr); 359 kfree(port->probe_info[d].model); 360 kfree(port->probe_info[d].cmdset); 361 kfree(port->probe_info[d].description); 362 } 363 364 kfree(port->name); 365 kfree(port); 366} 367 368/** 369 * parport_get_port - increment a port's reference count 370 * @port: the port 371 * 372 * This ensures that a struct parport pointer remains valid 373 * until the matching parport_put_port() call. 374 **/ 375 376struct parport *parport_get_port(struct parport *port) 377{ 378 struct device *dev = get_device(&port->bus_dev); 379 380 return to_parport_dev(dev); 381} 382EXPORT_SYMBOL(parport_get_port); 383 384void parport_del_port(struct parport *port) 385{ 386 device_unregister(&port->bus_dev); 387} 388EXPORT_SYMBOL(parport_del_port); 389 390/** 391 * parport_put_port - decrement a port's reference count 392 * @port: the port 393 * 394 * This should be called once for each call to parport_get_port(), 395 * once the port is no longer needed. When the reference count reaches 396 * zero (port is no longer used), free_port is called. 397 **/ 398 399void parport_put_port(struct parport *port) 400{ 401 put_device(&port->bus_dev); 402} 403EXPORT_SYMBOL(parport_put_port); 404 405/** 406 * parport_register_port - register a parallel port 407 * @base: base I/O address 408 * @irq: IRQ line 409 * @dma: DMA channel 410 * @ops: pointer to the port driver's port operations structure 411 * 412 * When a parallel port (lowlevel) driver finds a port that 413 * should be made available to parallel port device drivers, it 414 * should call parport_register_port(). The @base, @irq, and 415 * @dma parameters are for the convenience of port drivers, and 416 * for ports where they aren't meaningful needn't be set to 417 * anything special. They can be altered afterwards by adjusting 418 * the relevant members of the parport structure that is returned 419 * and represents the port. They should not be tampered with 420 * after calling parport_announce_port, however. 421 * 422 * If there are parallel port device drivers in the system that 423 * have registered themselves using parport_register_driver(), 424 * they are not told about the port at this time; that is done by 425 * parport_announce_port(). 426 * 427 * The @ops structure is allocated by the caller, and must not be 428 * deallocated before calling parport_remove_port(). 429 * 430 * If there is no memory to allocate a new parport structure, 431 * this function will return %NULL. 432 **/ 433 434struct parport *parport_register_port(unsigned long base, int irq, int dma, 435 struct parport_operations *ops) 436{ 437 struct list_head *l; 438 struct parport *tmp; 439 int num; 440 int device; 441 char *name; 442 int ret; 443 444 tmp = kzalloc(sizeof(struct parport), GFP_KERNEL); 445 if (!tmp) 446 return NULL; 447 448 /* Init our structure */ 449 tmp->base = base; 450 tmp->irq = irq; 451 tmp->dma = dma; 452 tmp->muxport = tmp->daisy = tmp->muxsel = -1; 453 tmp->modes = 0; 454 INIT_LIST_HEAD(&tmp->list); 455 tmp->devices = tmp->cad = NULL; 456 tmp->flags = 0; 457 tmp->ops = ops; 458 tmp->physport = tmp; 459 memset(tmp->probe_info, 0, 5 * sizeof(struct parport_device_info)); 460 rwlock_init(&tmp->cad_lock); 461 spin_lock_init(&tmp->waitlist_lock); 462 spin_lock_init(&tmp->pardevice_lock); 463 tmp->ieee1284.mode = IEEE1284_MODE_COMPAT; 464 tmp->ieee1284.phase = IEEE1284_PH_FWD_IDLE; 465 sema_init(&tmp->ieee1284.irq, 0); 466 tmp->spintime = parport_default_spintime; 467 atomic_set(&tmp->ref_count, 1); 468 INIT_LIST_HEAD(&tmp->full_list); 469 470 name = kmalloc(15, GFP_KERNEL); 471 if (!name) { 472 kfree(tmp); 473 return NULL; 474 } 475 /* Search for the lowest free parport number. */ 476 477 spin_lock(&full_list_lock); 478 for (l = all_ports.next, num = 0; l != &all_ports; l = l->next, num++) { 479 struct parport *p = list_entry(l, struct parport, full_list); 480 if (p->number != num) 481 break; 482 } 483 tmp->portnum = tmp->number = num; 484 list_add_tail(&tmp->full_list, l); 485 spin_unlock(&full_list_lock); 486 487 /* 488 * Now that the portnum is known finish doing the Init. 489 */ 490 sprintf(name, "parport%d", tmp->portnum = tmp->number); 491 tmp->name = name; 492 tmp->bus_dev.bus = &parport_bus_type; 493 tmp->bus_dev.release = free_port; 494 dev_set_name(&tmp->bus_dev, name); 495 tmp->bus_dev.type = &parport_device_type; 496 497 for (device = 0; device < 5; device++) 498 /* assume the worst */ 499 tmp->probe_info[device].class = PARPORT_CLASS_LEGACY; 500 501 tmp->waithead = tmp->waittail = NULL; 502 503 ret = device_register(&tmp->bus_dev); 504 if (ret) { 505 put_device(&tmp->bus_dev); 506 return NULL; 507 } 508 509 return tmp; 510} 511EXPORT_SYMBOL(parport_register_port); 512 513/** 514 * parport_announce_port - tell device drivers about a parallel port 515 * @port: parallel port to announce 516 * 517 * After a port driver has registered a parallel port with 518 * parport_register_port, and performed any necessary 519 * initialisation or adjustments, it should call 520 * parport_announce_port() in order to notify all device drivers 521 * that have called parport_register_driver(). Their attach() 522 * functions will be called, with @port as the parameter. 523 **/ 524 525void parport_announce_port(struct parport *port) 526{ 527 int i; 528 529#ifdef CONFIG_PARPORT_1284 530 /* Analyse the IEEE1284.3 topology of the port. */ 531 parport_daisy_init(port); 532#endif 533 534 if (!port->dev) 535 pr_warn("%s: fix this legacy no-device port driver!\n", 536 port->name); 537 538 parport_proc_register(port); 539 mutex_lock(®istration_lock); 540 spin_lock_irq(&parportlist_lock); 541 list_add_tail(&port->list, &portlist); 542 for (i = 1; i < 3; i++) { 543 struct parport *slave = port->slaves[i-1]; 544 if (slave) 545 list_add_tail(&slave->list, &portlist); 546 } 547 spin_unlock_irq(&parportlist_lock); 548 549 /* Let drivers know that new port(s) has arrived. */ 550 attach_driver_chain(port); 551 for (i = 1; i < 3; i++) { 552 struct parport *slave = port->slaves[i-1]; 553 if (slave) 554 attach_driver_chain(slave); 555 } 556 mutex_unlock(®istration_lock); 557} 558EXPORT_SYMBOL(parport_announce_port); 559 560/** 561 * parport_remove_port - deregister a parallel port 562 * @port: parallel port to deregister 563 * 564 * When a parallel port driver is forcibly unloaded, or a 565 * parallel port becomes inaccessible, the port driver must call 566 * this function in order to deal with device drivers that still 567 * want to use it. 568 * 569 * The parport structure associated with the port has its 570 * operations structure replaced with one containing 'null' 571 * operations that return errors or just don't do anything. 572 * 573 * Any drivers that have registered themselves using 574 * parport_register_driver() are notified that the port is no 575 * longer accessible by having their detach() routines called 576 * with @port as the parameter. 577 **/ 578 579void parport_remove_port(struct parport *port) 580{ 581 int i; 582 583 mutex_lock(®istration_lock); 584 585 /* Spread the word. */ 586 detach_driver_chain(port); 587 588#ifdef CONFIG_PARPORT_1284 589 /* Forget the IEEE1284.3 topology of the port. */ 590 parport_daisy_fini(port); 591 for (i = 1; i < 3; i++) { 592 struct parport *slave = port->slaves[i-1]; 593 if (!slave) 594 continue; 595 detach_driver_chain(slave); 596 parport_daisy_fini(slave); 597 } 598#endif 599 600 port->ops = &dead_ops; 601 spin_lock(&parportlist_lock); 602 list_del_init(&port->list); 603 for (i = 1; i < 3; i++) { 604 struct parport *slave = port->slaves[i-1]; 605 if (slave) 606 list_del_init(&slave->list); 607 } 608 spin_unlock(&parportlist_lock); 609 610 mutex_unlock(®istration_lock); 611 612 parport_proc_unregister(port); 613 614 for (i = 1; i < 3; i++) { 615 struct parport *slave = port->slaves[i-1]; 616 if (slave) 617 parport_put_port(slave); 618 } 619} 620EXPORT_SYMBOL(parport_remove_port); 621 622static void free_pardevice(struct device *dev) 623{ 624 struct pardevice *par_dev = to_pardevice(dev); 625 626 kfree(par_dev->name); 627 kfree(par_dev); 628} 629 630/** 631 * parport_register_dev_model - register a device on a parallel port 632 * @port: port to which the device is attached 633 * @name: a name to refer to the device 634 * @par_dev_cb: struct containing callbacks 635 * @id: device number to be given to the device 636 * 637 * This function, called by parallel port device drivers, 638 * declares that a device is connected to a port, and tells the 639 * system all it needs to know. 640 * 641 * The struct pardev_cb contains pointer to callbacks. preemption 642 * callback function, @preempt, is called when this device driver 643 * has claimed access to the port but another device driver wants 644 * to use it. It is given, @private, as its parameter, and should 645 * return zero if it is willing for the system to release the port 646 * to another driver on its behalf. If it wants to keep control of 647 * the port it should return non-zero, and no action will be taken. 648 * It is good manners for the driver to try to release the port at 649 * the earliest opportunity after its preemption callback rejects a 650 * preemption attempt. Note that if a preemption callback is happy 651 * for preemption to go ahead, there is no need to release the 652 * port; it is done automatically. This function may not block, as 653 * it may be called from interrupt context. If the device driver 654 * does not support preemption, @preempt can be %NULL. 655 * 656 * The wake-up ("kick") callback function, @wakeup, is called when 657 * the port is available to be claimed for exclusive access; that 658 * is, parport_claim() is guaranteed to succeed when called from 659 * inside the wake-up callback function. If the driver wants to 660 * claim the port it should do so; otherwise, it need not take 661 * any action. This function may not block, as it may be called 662 * from interrupt context. If the device driver does not want to 663 * be explicitly invited to claim the port in this way, @wakeup can 664 * be %NULL. 665 * 666 * The interrupt handler, @irq_func, is called when an interrupt 667 * arrives from the parallel port. Note that if a device driver 668 * wants to use interrupts it should use parport_enable_irq(), 669 * and can also check the irq member of the parport structure 670 * representing the port. 671 * 672 * The parallel port (lowlevel) driver is the one that has called 673 * request_irq() and whose interrupt handler is called first. 674 * This handler does whatever needs to be done to the hardware to 675 * acknowledge the interrupt (for PC-style ports there is nothing 676 * special to be done). It then tells the IEEE 1284 code about 677 * the interrupt, which may involve reacting to an IEEE 1284 678 * event depending on the current IEEE 1284 phase. After this, 679 * it calls @irq_func. Needless to say, @irq_func will be called 680 * from interrupt context, and may not block. 681 * 682 * The %PARPORT_DEV_EXCL flag is for preventing port sharing, and 683 * so should only be used when sharing the port with other device 684 * drivers is impossible and would lead to incorrect behaviour. 685 * Use it sparingly! Normally, @flags will be zero. 686 * 687 * This function returns a pointer to a structure that represents 688 * the device on the port, or %NULL if there is not enough memory 689 * to allocate space for that structure. 690 **/ 691 692struct pardevice * 693parport_register_dev_model(struct parport *port, const char *name, 694 const struct pardev_cb *par_dev_cb, int id) 695{ 696 struct pardevice *par_dev; 697 int ret; 698 char *devname; 699 700 if (port->physport->flags & PARPORT_FLAG_EXCL) { 701 /* An exclusive device is registered. */ 702 pr_err("%s: no more devices allowed\n", port->name); 703 return NULL; 704 } 705 706 if (par_dev_cb->flags & PARPORT_DEV_LURK) { 707 if (!par_dev_cb->preempt || !par_dev_cb->wakeup) { 708 pr_info("%s: refused to register lurking device (%s) without callbacks\n", 709 port->name, name); 710 return NULL; 711 } 712 } 713 714 if (par_dev_cb->flags & PARPORT_DEV_EXCL) { 715 if (port->physport->devices) { 716 /* 717 * If a device is already registered and this new 718 * device wants exclusive access, then no need to 719 * continue as we can not grant exclusive access to 720 * this device. 721 */ 722 pr_err("%s: cannot grant exclusive access for device %s\n", 723 port->name, name); 724 return NULL; 725 } 726 } 727 728 if (!try_module_get(port->ops->owner)) 729 return NULL; 730 731 parport_get_port(port); 732 733 par_dev = kzalloc(sizeof(*par_dev), GFP_KERNEL); 734 if (!par_dev) 735 goto err_put_port; 736 737 par_dev->state = kzalloc(sizeof(*par_dev->state), GFP_KERNEL); 738 if (!par_dev->state) 739 goto err_put_par_dev; 740 741 devname = kstrdup(name, GFP_KERNEL); 742 if (!devname) 743 goto err_free_par_dev; 744 745 par_dev->name = devname; 746 par_dev->port = port; 747 par_dev->daisy = -1; 748 par_dev->preempt = par_dev_cb->preempt; 749 par_dev->wakeup = par_dev_cb->wakeup; 750 par_dev->private = par_dev_cb->private; 751 par_dev->flags = par_dev_cb->flags; 752 par_dev->irq_func = par_dev_cb->irq_func; 753 par_dev->waiting = 0; 754 par_dev->timeout = 5 * HZ; 755 756 par_dev->dev.parent = &port->bus_dev; 757 par_dev->dev.bus = &parport_bus_type; 758 ret = dev_set_name(&par_dev->dev, "%s.%d", devname, id); 759 if (ret) 760 goto err_free_devname; 761 par_dev->dev.release = free_pardevice; 762 par_dev->devmodel = true; 763 ret = device_register(&par_dev->dev); 764 if (ret) { 765 kfree(par_dev->state); 766 put_device(&par_dev->dev); 767 goto err_put_port; 768 } 769 770 /* Chain this onto the list */ 771 par_dev->prev = NULL; 772 /* 773 * This function must not run from an irq handler so we don' t need 774 * to clear irq on the local CPU. -arca 775 */ 776 spin_lock(&port->physport->pardevice_lock); 777 778 if (par_dev_cb->flags & PARPORT_DEV_EXCL) { 779 if (port->physport->devices) { 780 spin_unlock(&port->physport->pardevice_lock); 781 pr_debug("%s: cannot grant exclusive access for device %s\n", 782 port->name, name); 783 kfree(par_dev->state); 784 device_unregister(&par_dev->dev); 785 goto err_put_port; 786 } 787 port->flags |= PARPORT_FLAG_EXCL; 788 } 789 790 par_dev->next = port->physport->devices; 791 wmb(); /* 792 * Make sure that tmp->next is written before it's 793 * added to the list; see comments marked 'no locking 794 * required' 795 */ 796 if (port->physport->devices) 797 port->physport->devices->prev = par_dev; 798 port->physport->devices = par_dev; 799 spin_unlock(&port->physport->pardevice_lock); 800 801 init_waitqueue_head(&par_dev->wait_q); 802 par_dev->timeslice = parport_default_timeslice; 803 par_dev->waitnext = NULL; 804 par_dev->waitprev = NULL; 805 806 /* 807 * This has to be run as last thing since init_state may need other 808 * pardevice fields. -arca 809 */ 810 port->ops->init_state(par_dev, par_dev->state); 811 if (!test_and_set_bit(PARPORT_DEVPROC_REGISTERED, &port->devflags)) { 812 port->proc_device = par_dev; 813 parport_device_proc_register(par_dev); 814 } 815 816 return par_dev; 817 818err_free_devname: 819 kfree(devname); 820err_free_par_dev: 821 kfree(par_dev->state); 822err_put_par_dev: 823 if (!par_dev->devmodel) 824 kfree(par_dev); 825err_put_port: 826 parport_put_port(port); 827 module_put(port->ops->owner); 828 829 return NULL; 830} 831EXPORT_SYMBOL(parport_register_dev_model); 832 833/** 834 * parport_unregister_device - deregister a device on a parallel port 835 * @dev: pointer to structure representing device 836 * 837 * This undoes the effect of parport_register_device(). 838 **/ 839 840void parport_unregister_device(struct pardevice *dev) 841{ 842 struct parport *port; 843 844#ifdef PARPORT_PARANOID 845 if (!dev) { 846 pr_err("%s: passed NULL\n", __func__); 847 return; 848 } 849#endif 850 851 port = dev->port->physport; 852 853 if (port->proc_device == dev) { 854 port->proc_device = NULL; 855 clear_bit(PARPORT_DEVPROC_REGISTERED, &port->devflags); 856 parport_device_proc_unregister(dev); 857 } 858 859 if (port->cad == dev) { 860 printk(KERN_DEBUG "%s: %s forgot to release port\n", 861 port->name, dev->name); 862 parport_release(dev); 863 } 864 865 spin_lock(&port->pardevice_lock); 866 if (dev->next) 867 dev->next->prev = dev->prev; 868 if (dev->prev) 869 dev->prev->next = dev->next; 870 else 871 port->devices = dev->next; 872 873 if (dev->flags & PARPORT_DEV_EXCL) 874 port->flags &= ~PARPORT_FLAG_EXCL; 875 876 spin_unlock(&port->pardevice_lock); 877 878 /* 879 * Make sure we haven't left any pointers around in the wait 880 * list. 881 */ 882 spin_lock_irq(&port->waitlist_lock); 883 if (dev->waitprev || dev->waitnext || port->waithead == dev) { 884 if (dev->waitprev) 885 dev->waitprev->waitnext = dev->waitnext; 886 else 887 port->waithead = dev->waitnext; 888 if (dev->waitnext) 889 dev->waitnext->waitprev = dev->waitprev; 890 else 891 port->waittail = dev->waitprev; 892 } 893 spin_unlock_irq(&port->waitlist_lock); 894 895 kfree(dev->state); 896 device_unregister(&dev->dev); 897 898 module_put(port->ops->owner); 899 parport_put_port(port); 900} 901EXPORT_SYMBOL(parport_unregister_device); 902 903/** 904 * parport_find_number - find a parallel port by number 905 * @number: parallel port number 906 * 907 * This returns the parallel port with the specified number, or 908 * %NULL if there is none. 909 * 910 * There is an implicit parport_get_port() done already; to throw 911 * away the reference to the port that parport_find_number() 912 * gives you, use parport_put_port(). 913 */ 914 915struct parport *parport_find_number(int number) 916{ 917 struct parport *port, *result = NULL; 918 919 if (list_empty(&portlist)) 920 get_lowlevel_driver(); 921 922 spin_lock(&parportlist_lock); 923 list_for_each_entry(port, &portlist, list) { 924 if (port->number == number) { 925 result = parport_get_port(port); 926 break; 927 } 928 } 929 spin_unlock(&parportlist_lock); 930 return result; 931} 932EXPORT_SYMBOL(parport_find_number); 933 934/** 935 * parport_find_base - find a parallel port by base address 936 * @base: base I/O address 937 * 938 * This returns the parallel port with the specified base 939 * address, or %NULL if there is none. 940 * 941 * There is an implicit parport_get_port() done already; to throw 942 * away the reference to the port that parport_find_base() 943 * gives you, use parport_put_port(). 944 */ 945 946struct parport *parport_find_base(unsigned long base) 947{ 948 struct parport *port, *result = NULL; 949 950 if (list_empty(&portlist)) 951 get_lowlevel_driver(); 952 953 spin_lock(&parportlist_lock); 954 list_for_each_entry(port, &portlist, list) { 955 if (port->base == base) { 956 result = parport_get_port(port); 957 break; 958 } 959 } 960 spin_unlock(&parportlist_lock); 961 return result; 962} 963EXPORT_SYMBOL(parport_find_base); 964 965/** 966 * parport_claim - claim access to a parallel port device 967 * @dev: pointer to structure representing a device on the port 968 * 969 * This function will not block and so can be used from interrupt 970 * context. If parport_claim() succeeds in claiming access to 971 * the port it returns zero and the port is available to use. It 972 * may fail (returning non-zero) if the port is in use by another 973 * driver and that driver is not willing to relinquish control of 974 * the port. 975 **/ 976 977int parport_claim(struct pardevice *dev) 978{ 979 struct pardevice *oldcad; 980 struct parport *port = dev->port->physport; 981 unsigned long flags; 982 983 if (port->cad == dev) { 984 pr_info("%s: %s already owner\n", dev->port->name, dev->name); 985 return 0; 986 } 987 988 /* Preempt any current device */ 989 write_lock_irqsave(&port->cad_lock, flags); 990 oldcad = port->cad; 991 if (oldcad) { 992 if (oldcad->preempt) { 993 if (oldcad->preempt(oldcad->private)) 994 goto blocked; 995 port->ops->save_state(port, dev->state); 996 } else 997 goto blocked; 998 999 if (port->cad != oldcad) { 1000 /* 1001 * I think we'll actually deadlock rather than 1002 * get here, but just in case.. 1003 */ 1004 pr_warn("%s: %s released port when preempted!\n", 1005 port->name, oldcad->name); 1006 if (port->cad) 1007 goto blocked; 1008 } 1009 } 1010 1011 /* Can't fail from now on, so mark ourselves as no longer waiting. */ 1012 if (dev->waiting & 1) { 1013 dev->waiting = 0; 1014 1015 /* Take ourselves out of the wait list again. */ 1016 spin_lock_irq(&port->waitlist_lock); 1017 if (dev->waitprev) 1018 dev->waitprev->waitnext = dev->waitnext; 1019 else 1020 port->waithead = dev->waitnext; 1021 if (dev->waitnext) 1022 dev->waitnext->waitprev = dev->waitprev; 1023 else 1024 port->waittail = dev->waitprev; 1025 spin_unlock_irq(&port->waitlist_lock); 1026 dev->waitprev = dev->waitnext = NULL; 1027 } 1028 1029 /* Now we do the change of devices */ 1030 port->cad = dev; 1031 1032#ifdef CONFIG_PARPORT_1284 1033 /* If it's a mux port, select it. */ 1034 if (dev->port->muxport >= 0) { 1035 /* FIXME */ 1036 port->muxsel = dev->port->muxport; 1037 } 1038 1039 /* If it's a daisy chain device, select it. */ 1040 if (dev->daisy >= 0) { 1041 /* This could be lazier. */ 1042 if (!parport_daisy_select(port, dev->daisy, 1043 IEEE1284_MODE_COMPAT)) 1044 port->daisy = dev->daisy; 1045 } 1046#endif /* IEEE1284.3 support */ 1047 1048 /* Restore control registers */ 1049 port->ops->restore_state(port, dev->state); 1050 write_unlock_irqrestore(&port->cad_lock, flags); 1051 dev->time = jiffies; 1052 return 0; 1053 1054blocked: 1055 /* 1056 * If this is the first time we tried to claim the port, register an 1057 * interest. This is only allowed for devices sleeping in 1058 * parport_claim_or_block(), or those with a wakeup function. 1059 */ 1060 1061 /* The cad_lock is still held for writing here */ 1062 if (dev->waiting & 2 || dev->wakeup) { 1063 spin_lock(&port->waitlist_lock); 1064 if (test_and_set_bit(0, &dev->waiting) == 0) { 1065 /* First add ourselves to the end of the wait list. */ 1066 dev->waitnext = NULL; 1067 dev->waitprev = port->waittail; 1068 if (port->waittail) { 1069 port->waittail->waitnext = dev; 1070 port->waittail = dev; 1071 } else 1072 port->waithead = port->waittail = dev; 1073 } 1074 spin_unlock(&port->waitlist_lock); 1075 } 1076 write_unlock_irqrestore(&port->cad_lock, flags); 1077 return -EAGAIN; 1078} 1079EXPORT_SYMBOL(parport_claim); 1080 1081/** 1082 * parport_claim_or_block - claim access to a parallel port device 1083 * @dev: pointer to structure representing a device on the port 1084 * 1085 * This behaves like parport_claim(), but will block if necessary 1086 * to wait for the port to be free. A return value of 1 1087 * indicates that it slept; 0 means that it succeeded without 1088 * needing to sleep. A negative error code indicates failure. 1089 **/ 1090 1091int parport_claim_or_block(struct pardevice *dev) 1092{ 1093 int r; 1094 1095 /* 1096 * Signal to parport_claim() that we can wait even without a 1097 * wakeup function. 1098 */ 1099 dev->waiting = 2; 1100 1101 /* Try to claim the port. If this fails, we need to sleep. */ 1102 r = parport_claim(dev); 1103 if (r == -EAGAIN) { 1104#ifdef PARPORT_DEBUG_SHARING 1105 printk(KERN_DEBUG "%s: parport_claim() returned -EAGAIN\n", 1106 dev->name); 1107#endif 1108 /* 1109 * FIXME!!! Use the proper locking for dev->waiting, 1110 * and make this use the "wait_event_interruptible()" 1111 * interfaces. The cli/sti that used to be here 1112 * did nothing. 1113 * 1114 * See also parport_release() 1115 */ 1116 1117 /* 1118 * If dev->waiting is clear now, an interrupt 1119 * gave us the port and we would deadlock if we slept. 1120 */ 1121 if (dev->waiting) { 1122 wait_event_interruptible(dev->wait_q, 1123 !dev->waiting); 1124 if (signal_pending(current)) 1125 return -EINTR; 1126 r = 1; 1127 } else { 1128 r = 0; 1129#ifdef PARPORT_DEBUG_SHARING 1130 printk(KERN_DEBUG "%s: didn't sleep in parport_claim_or_block()\n", 1131 dev->name); 1132#endif 1133 } 1134 1135#ifdef PARPORT_DEBUG_SHARING 1136 if (dev->port->physport->cad != dev) 1137 printk(KERN_DEBUG "%s: exiting parport_claim_or_block but %s owns port!\n", 1138 dev->name, dev->port->physport->cad ? 1139 dev->port->physport->cad->name : "nobody"); 1140#endif 1141 } 1142 dev->waiting = 0; 1143 return r; 1144} 1145EXPORT_SYMBOL(parport_claim_or_block); 1146 1147/** 1148 * parport_release - give up access to a parallel port device 1149 * @dev: pointer to structure representing parallel port device 1150 * 1151 * This function cannot fail, but it should not be called without 1152 * the port claimed. Similarly, if the port is already claimed 1153 * you should not try claiming it again. 1154 **/ 1155 1156void parport_release(struct pardevice *dev) 1157{ 1158 struct parport *port = dev->port->physport; 1159 struct pardevice *pd; 1160 unsigned long flags; 1161 1162 /* Make sure that dev is the current device */ 1163 write_lock_irqsave(&port->cad_lock, flags); 1164 if (port->cad != dev) { 1165 write_unlock_irqrestore(&port->cad_lock, flags); 1166 pr_warn("%s: %s tried to release parport when not owner\n", 1167 port->name, dev->name); 1168 return; 1169 } 1170 1171#ifdef CONFIG_PARPORT_1284 1172 /* If this is on a mux port, deselect it. */ 1173 if (dev->port->muxport >= 0) { 1174 /* FIXME */ 1175 port->muxsel = -1; 1176 } 1177 1178 /* If this is a daisy device, deselect it. */ 1179 if (dev->daisy >= 0) { 1180 parport_daisy_deselect_all(port); 1181 port->daisy = -1; 1182 } 1183#endif 1184 1185 port->cad = NULL; 1186 write_unlock_irqrestore(&port->cad_lock, flags); 1187 1188 /* Save control registers */ 1189 port->ops->save_state(port, dev->state); 1190 1191 /* 1192 * If anybody is waiting, find out who's been there longest and 1193 * then wake them up. (Note: no locking required) 1194 */ 1195 /* !!! LOCKING IS NEEDED HERE */ 1196 for (pd = port->waithead; pd; pd = pd->waitnext) { 1197 if (pd->waiting & 2) { /* sleeping in claim_or_block */ 1198 parport_claim(pd); 1199 if (waitqueue_active(&pd->wait_q)) 1200 wake_up_interruptible(&pd->wait_q); 1201 return; 1202 } else if (pd->wakeup) { 1203 pd->wakeup(pd->private); 1204 if (dev->port->cad) /* racy but no matter */ 1205 return; 1206 } else { 1207 pr_err("%s: don't know how to wake %s\n", 1208 port->name, pd->name); 1209 } 1210 } 1211 1212 /* 1213 * Nobody was waiting, so walk the list to see if anyone is 1214 * interested in being woken up. (Note: no locking required) 1215 */ 1216 /* !!! LOCKING IS NEEDED HERE */ 1217 for (pd = port->devices; !port->cad && pd; pd = pd->next) { 1218 if (pd->wakeup && pd != dev) 1219 pd->wakeup(pd->private); 1220 } 1221} 1222EXPORT_SYMBOL(parport_release); 1223 1224irqreturn_t parport_irq_handler(int irq, void *dev_id) 1225{ 1226 struct parport *port = dev_id; 1227 1228 parport_generic_irq(port); 1229 1230 return IRQ_HANDLED; 1231} 1232EXPORT_SYMBOL(parport_irq_handler); 1233 1234MODULE_LICENSE("GPL");