Lines Matching +full:we +full:- +full:extra +full:- +full:delay
11 * ??-12-1998: Initial implementation.
12 * 31-01-1999: Make port-cloning transparent.
13 * 13-02-1999: Move DeviceID technique from parport_probe.
14 * 13-03-1999: Get DeviceID from non-IEEE 1284.3 devices too.
15 * 22-02-2000: Count devices that are actually detected.
24 #include <linux/delay.h>
44 /* Forward-declaration of lower-level functions. */
56 newdev->port = port; in add_dev()
57 newdev->daisy = daisy; in add_dev()
58 newdev->devnum = devnum; in add_dev()
60 for (p = &topology; *p && (*p)->devnum<devnum; p = &(*p)->next) in add_dev()
62 newdev->next = *p; in add_dev()
71 struct parport *extra = parport_register_port(real->base, in clone_parport() local
72 real->irq, in clone_parport()
73 real->dma, in clone_parport()
74 real->ops); in clone_parport()
75 if (extra) { in clone_parport()
76 extra->portnum = real->portnum; in clone_parport()
77 extra->physport = real; in clone_parport()
78 extra->muxport = muxport; in clone_parport()
79 real->slaves[muxport-1] = extra; in clone_parport()
82 return extra; in clone_parport()
87 struct device_driver *drv = par_dev->dev.driver; in daisy_drv_probe()
89 if (strcmp(drv->name, "daisy_drv")) in daisy_drv_probe()
90 return -ENODEV; in daisy_drv_probe()
91 if (strcmp(par_dev->name, daisy_dev_name)) in daisy_drv_probe()
92 return -ENODEV; in daisy_drv_probe()
102 /* Discover the IEEE1284.3 topology on a port -- muxes and daisy chains.
132 * we don't have to claim exclusive access. */ in parport_daisy_init()
135 * parports for each extra port. */ in parport_daisy_init()
136 if (port->muxport < 0 && mux_present(port) && in parport_daisy_init()
140 port->muxport = 0; in parport_daisy_init()
141 pr_info("%s: 1st (default) port of %d-way multiplexor\n", in parport_daisy_init()
142 port->name, num_ports); in parport_daisy_init()
145 struct parport *extra = clone_parport(port, i); in parport_daisy_init() local
146 if (!extra) { in parport_daisy_init()
154 pr_info("%s: %d%s port of %d-way multiplexor on %s\n", in parport_daisy_init()
155 extra->name, i + 1, th[i + 1], num_ports, in parport_daisy_init()
156 port->name); in parport_daisy_init()
158 /* Analyse that port too. We won't recurse in parport_daisy_init()
159 forever because of the 'port->muxport < 0' in parport_daisy_init()
161 parport_daisy_init(extra); in parport_daisy_init()
165 if (port->muxport >= 0) in parport_daisy_init()
172 add_dev(numdevs++, port, -1); in parport_daisy_init()
177 if (parport_device_id(numdevs - 1, deviceid, 1024) > 2) in parport_daisy_init()
210 if (dev->port != port) { in parport_daisy_fini()
211 p = &dev->next; in parport_daisy_fini()
214 *p = dev->next; in parport_daisy_fini()
227 * parport_open - find a device by canonical device number
250 while (p && p->devnum != devnum) in parport_open()
251 p = p->next; in parport_open()
258 daisy = p->daisy; in parport_open()
259 port = parport_get_port(p->port); in parport_open()
267 dev->daisy = daisy; in parport_open()
273 selected = port->daisy; in parport_open()
287 * parport_close - close a device opened with parport_open()
299 /* Send a daisy-chain-style CPP command packet. */
317 pr_debug("%s: cpp_daisy: aa5500ff(%02x)\n", port->name, s); in cpp_daisy()
318 return -ENXIO; in cpp_daisy()
327 pr_debug("%s: cpp_daisy: aa5500ff87(%02x)\n", port->name, s); in cpp_daisy()
328 return -ENXIO; in cpp_daisy()
345 /* Send a mux-style CPP command packet. */
363 port->name, cmd, s); in cpp_mux()
364 return -EIO; in cpp_mux()
384 // For these modes we should switch to EPP mode: in parport_daisy_select()
391 // For these modes we should switch to ECP mode: in parport_daisy_select()
423 int muxport = port->muxport; in select_port()
448 pr_debug("%s: assign_addrs: aa5500ff(%02x)\n", port->name, s); in assign_addrs()
458 pr_debug("%s: assign_addrs: aa5500ff87(%02x)\n", port->name, s); in assign_addrs()
486 /* We are seeing pass through status now. We see in assign_addrs()
488 work status lines from some non-daisy chain in assign_addrs()
494 detected = numdevs - thisdev; in assign_addrs()
495 pr_debug("%s: Found %d daisy-chained devices\n", port->name, detected); in assign_addrs()