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.. */
dead_write_lines(struct parport * p,unsigned char b)55 static void dead_write_lines(struct parport *p, unsigned char b){}
dead_read_lines(struct parport * p)56 static unsigned char dead_read_lines(struct parport *p) { return 0; }
dead_frob_lines(struct parport * p,unsigned char b,unsigned char c)57 static unsigned char dead_frob_lines(struct parport *p, unsigned char b,
58 unsigned char c) { return 0; }
dead_onearg(struct parport * p)59 static void dead_onearg(struct parport *p){}
dead_initstate(struct pardevice * d,struct parport_state * s)60 static void dead_initstate(struct pardevice *d, struct parport_state *s) { }
dead_state(struct parport * p,struct parport_state * s)61 static void dead_state(struct parport *p, struct parport_state *s) { }
dead_write(struct parport * p,const void * b,size_t l,int f)62 static size_t dead_write(struct parport *p, const void *b, size_t l, int f)
63 { return 0; }
dead_read(struct parport * p,void * b,size_t l,int f)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
is_parport(struct device * dev)106 static int is_parport(struct device *dev)
107 {
108 return dev->type == &parport_device_type;
109 }
110
parport_probe(struct device * dev)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
parport_bus_init(void)136 int parport_bus_init(void)
137 {
138 return bus_register(&parport_bus_type);
139 }
140
parport_bus_exit(void)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 */
driver_check(struct device_driver * dev_drv,void * _port)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. */
attach_driver_chain(struct parport * port)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
driver_detach(struct device_driver * _drv,void * _port)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. */
detach_driver_chain(struct parport * port)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. */
get_lowlevel_driver(void)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 */
port_check(struct device * dev,void * dev_drv)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
port_detect(struct device * dev,void * dev_drv)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
__parport_register_driver(struct parport_driver * drv,struct module * owner,const char * mod_name)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
port_detach(struct device * dev,void * _drv)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
parport_unregister_driver(struct parport_driver * drv)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
free_port(struct device * dev)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
parport_get_port(struct parport * port)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
parport_del_port(struct parport * port)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
parport_put_port(struct parport * port)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
parport_register_port(unsigned long base,int irq,int dma,struct parport_operations * ops)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
parport_announce_port(struct parport * port)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
parport_remove_port(struct parport * port)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
free_pardevice(struct device * dev)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 *
parport_register_dev_model(struct parport * port,const char * name,const struct pardev_cb * par_dev_cb,int id)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
parport_unregister_device(struct pardevice * dev)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
parport_find_number(int number)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
parport_find_base(unsigned long base)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
parport_claim(struct pardevice * dev)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
parport_claim_or_block(struct pardevice * dev)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
parport_release(struct pardevice * dev)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
parport_irq_handler(int irq,void * dev_id)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