Lines Matching refs:port
156 struct parport *port = _port; in driver_check() local
160 drv->match_port(port); in driver_check()
165 static void attach_driver_chain(struct parport *port) in attach_driver_chain() argument
171 drv->attach(port); in attach_driver_chain()
178 bus_for_each_drv(&parport_bus_type, NULL, port, driver_check); in attach_driver_chain()
183 struct parport *port = _port; in driver_detach() local
187 drv->detach(port); in driver_detach()
192 static void detach_driver_chain(struct parport *port) in detach_driver_chain() argument
197 drv->detach (port); in detach_driver_chain()
204 bus_for_each_drv(&parport_bus_type, NULL, port, driver_detach); in detach_driver_chain()
289 struct parport *port; in __parport_register_driver() local
294 list_for_each_entry(port, &portlist, list) in __parport_register_driver()
295 drv->attach(port); in __parport_register_driver()
333 struct parport *port; in parport_unregister_driver() local
341 list_for_each_entry(port, &portlist, list) in parport_unregister_driver()
342 drv->detach(port); in parport_unregister_driver()
350 struct parport *port = to_parport_dev(dev); in free_port() local
353 list_del(&port->full_list); in free_port()
356 kfree(port->probe_info[d].class_name); in free_port()
357 kfree(port->probe_info[d].mfr); in free_port()
358 kfree(port->probe_info[d].model); in free_port()
359 kfree(port->probe_info[d].cmdset); in free_port()
360 kfree(port->probe_info[d].description); in free_port()
363 kfree(port->name); in free_port()
364 kfree(port); in free_port()
375 struct parport *parport_get_port (struct parport *port) in parport_get_port() argument
377 struct device *dev = get_device(&port->bus_dev); in parport_get_port()
382 void parport_del_port(struct parport *port) in parport_del_port() argument
384 device_unregister(&port->bus_dev); in parport_del_port()
397 void parport_put_port (struct parport *port) in parport_put_port() argument
399 put_device(&port->bus_dev); in parport_put_port()
524 void parport_announce_port (struct parport *port) in parport_announce_port() argument
530 parport_daisy_init(port); in parport_announce_port()
533 if (!port->dev) in parport_announce_port()
536 port->name); in parport_announce_port()
538 parport_proc_register(port); in parport_announce_port()
541 list_add_tail(&port->list, &portlist); in parport_announce_port()
543 struct parport *slave = port->slaves[i-1]; in parport_announce_port()
550 attach_driver_chain (port); in parport_announce_port()
552 struct parport *slave = port->slaves[i-1]; in parport_announce_port()
578 void parport_remove_port(struct parport *port) in parport_remove_port() argument
585 detach_driver_chain (port); in parport_remove_port()
589 parport_daisy_fini(port); in parport_remove_port()
591 struct parport *slave = port->slaves[i-1]; in parport_remove_port()
599 port->ops = &dead_ops; in parport_remove_port()
601 list_del_init(&port->list); in parport_remove_port()
603 struct parport *slave = port->slaves[i-1]; in parport_remove_port()
611 parport_proc_unregister(port); in parport_remove_port()
614 struct parport *slave = port->slaves[i-1]; in parport_remove_port()
690 parport_register_device(struct parport *port, const char *name, in parport_register_device() argument
697 if (port->physport->flags & PARPORT_FLAG_EXCL) { in parport_register_device()
700 port->name); in parport_register_device()
706 …printk(KERN_INFO "%s: refused to register lurking device (%s) without callbacks\n", port->name, na… in parport_register_device()
712 if (port->physport->devices) { in parport_register_device()
720 port->name, name); in parport_register_device()
730 if (!try_module_get(port->ops->owner)) { in parport_register_device()
734 parport_get_port (port); in parport_register_device()
738 printk(KERN_WARNING "%s: memory squeeze, couldn't register %s.\n", port->name, name); in parport_register_device()
744 printk(KERN_WARNING "%s: memory squeeze, couldn't register %s.\n", port->name, name); in parport_register_device()
749 tmp->port = port; in parport_register_device()
766 spin_lock(&port->physport->pardevice_lock); in parport_register_device()
769 if (port->physport->devices) { in parport_register_device()
770 spin_unlock (&port->physport->pardevice_lock); in parport_register_device()
773 "device %s\n", port->name, name); in parport_register_device()
776 port->flags |= PARPORT_FLAG_EXCL; in parport_register_device()
779 tmp->next = port->physport->devices; in parport_register_device()
783 if (port->physport->devices) in parport_register_device()
784 port->physport->devices->prev = tmp; in parport_register_device()
785 port->physport->devices = tmp; in parport_register_device()
786 spin_unlock(&port->physport->pardevice_lock); in parport_register_device()
796 port->ops->init_state(tmp, tmp->state); in parport_register_device()
797 if (!test_and_set_bit(PARPORT_DEVPROC_REGISTERED, &port->devflags)) { in parport_register_device()
798 port->proc_device = tmp; in parport_register_device()
808 parport_put_port (port); in parport_register_device()
809 module_put(port->ops->owner); in parport_register_device()
823 parport_register_dev_model(struct parport *port, const char *name, in parport_register_dev_model() argument
830 if (port->physport->flags & PARPORT_FLAG_EXCL) { in parport_register_dev_model()
832 pr_err("%s: no more devices allowed\n", port->name); in parport_register_dev_model()
839 port->name, name); in parport_register_dev_model()
845 if (port->physport->devices) { in parport_register_dev_model()
853 port->name, name); in parport_register_dev_model()
858 if (!try_module_get(port->ops->owner)) in parport_register_dev_model()
861 parport_get_port(port); in parport_register_dev_model()
876 par_dev->port = port; in parport_register_dev_model()
886 par_dev->dev.parent = &port->bus_dev; in parport_register_dev_model()
905 spin_lock(&port->physport->pardevice_lock); in parport_register_dev_model()
908 if (port->physport->devices) { in parport_register_dev_model()
909 spin_unlock(&port->physport->pardevice_lock); in parport_register_dev_model()
911 port->name, name); in parport_register_dev_model()
915 port->flags |= PARPORT_FLAG_EXCL; in parport_register_dev_model()
918 par_dev->next = port->physport->devices; in parport_register_dev_model()
924 if (port->physport->devices) in parport_register_dev_model()
925 port->physport->devices->prev = par_dev; in parport_register_dev_model()
926 port->physport->devices = par_dev; in parport_register_dev_model()
927 spin_unlock(&port->physport->pardevice_lock); in parport_register_dev_model()
938 port->ops->init_state(par_dev, par_dev->state); in parport_register_dev_model()
939 port->proc_device = par_dev; in parport_register_dev_model()
952 parport_put_port(port); in parport_register_dev_model()
953 module_put(port->ops->owner); in parport_register_dev_model()
968 struct parport *port; in parport_unregister_device() local
977 port = dev->port->physport; in parport_unregister_device()
979 if (port->proc_device == dev) { in parport_unregister_device()
980 port->proc_device = NULL; in parport_unregister_device()
981 clear_bit(PARPORT_DEVPROC_REGISTERED, &port->devflags); in parport_unregister_device()
985 if (port->cad == dev) { in parport_unregister_device()
987 port->name, dev->name); in parport_unregister_device()
991 spin_lock(&port->pardevice_lock); in parport_unregister_device()
997 port->devices = dev->next; in parport_unregister_device()
1000 port->flags &= ~PARPORT_FLAG_EXCL; in parport_unregister_device()
1002 spin_unlock(&port->pardevice_lock); in parport_unregister_device()
1006 spin_lock_irq(&port->waitlist_lock); in parport_unregister_device()
1007 if (dev->waitprev || dev->waitnext || port->waithead == dev) { in parport_unregister_device()
1011 port->waithead = dev->waitnext; in parport_unregister_device()
1015 port->waittail = dev->waitprev; in parport_unregister_device()
1017 spin_unlock_irq(&port->waitlist_lock); in parport_unregister_device()
1025 module_put(port->ops->owner); in parport_unregister_device()
1026 parport_put_port (port); in parport_unregister_device()
1043 struct parport *port, *result = NULL; in parport_find_number() local
1049 list_for_each_entry(port, &portlist, list) { in parport_find_number()
1050 if (port->number == number) { in parport_find_number()
1051 result = parport_get_port (port); in parport_find_number()
1073 struct parport *port, *result = NULL; in parport_find_base() local
1079 list_for_each_entry(port, &portlist, list) { in parport_find_base()
1080 if (port->base == base) { in parport_find_base()
1081 result = parport_get_port (port); in parport_find_base()
1104 struct parport *port = dev->port->physport; in parport_claim() local
1107 if (port->cad == dev) { in parport_claim()
1109 dev->port->name,dev->name); in parport_claim()
1114 write_lock_irqsave (&port->cad_lock, flags); in parport_claim()
1115 if ((oldcad = port->cad) != NULL) { in parport_claim()
1119 port->ops->save_state(port, dev->state); in parport_claim()
1123 if (port->cad != oldcad) { in parport_claim()
1128 port->name, oldcad->name); in parport_claim()
1129 if (port->cad) in parport_claim()
1139 spin_lock_irq (&port->waitlist_lock); in parport_claim()
1143 port->waithead = dev->waitnext; in parport_claim()
1147 port->waittail = dev->waitprev; in parport_claim()
1148 spin_unlock_irq (&port->waitlist_lock); in parport_claim()
1153 port->cad = dev; in parport_claim()
1157 if (dev->port->muxport >= 0) { in parport_claim()
1159 port->muxsel = dev->port->muxport; in parport_claim()
1165 if (!parport_daisy_select (port, dev->daisy, in parport_claim()
1167 port->daisy = dev->daisy; in parport_claim()
1172 port->ops->restore_state(port, dev->state); in parport_claim()
1173 write_unlock_irqrestore(&port->cad_lock, flags); in parport_claim()
1184 spin_lock (&port->waitlist_lock); in parport_claim()
1188 dev->waitprev = port->waittail; in parport_claim()
1189 if (port->waittail) { in parport_claim()
1190 port->waittail->waitnext = dev; in parport_claim()
1191 port->waittail = dev; in parport_claim()
1193 port->waithead = port->waittail = dev; in parport_claim()
1195 spin_unlock (&port->waitlist_lock); in parport_claim()
1197 write_unlock_irqrestore (&port->cad_lock, flags); in parport_claim()
1252 if (dev->port->physport->cad != dev) in parport_claim_or_block()
1255 dev->port->physport->cad ? in parport_claim_or_block()
1256 dev->port->physport->cad->name:"nobody"); in parport_claim_or_block()
1274 struct parport *port = dev->port->physport; in parport_release() local
1279 write_lock_irqsave(&port->cad_lock, flags); in parport_release()
1280 if (port->cad != dev) { in parport_release()
1281 write_unlock_irqrestore (&port->cad_lock, flags); in parport_release()
1283 "when not owner\n", port->name, dev->name); in parport_release()
1289 if (dev->port->muxport >= 0) { in parport_release()
1291 port->muxsel = -1; in parport_release()
1296 parport_daisy_deselect_all (port); in parport_release()
1297 port->daisy = -1; in parport_release()
1301 port->cad = NULL; in parport_release()
1302 write_unlock_irqrestore(&port->cad_lock, flags); in parport_release()
1305 port->ops->save_state(port, dev->state); in parport_release()
1310 for (pd = port->waithead; pd; pd = pd->waitnext) { in parport_release()
1318 if (dev->port->cad) /* racy but no matter */ in parport_release()
1321 printk(KERN_ERR "%s: don't know how to wake %s\n", port->name, pd->name); in parport_release()
1328 for (pd = port->devices; (port->cad == NULL) && pd; pd = pd->next) { in parport_release()
1336 struct parport *port = dev_id; in parport_irq_handler() local
1338 parport_generic_irq(port); in parport_irq_handler()