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