Lines Matching refs:dev
40 #define reader_to_dev(x) (&x->p_dev->dev)
109 struct reader_dev *dev = (struct reader_dev *) dummy; in cm4040_do_poll() local
110 unsigned int obs = xinb(dev->p_dev->resource[0]->start in cm4040_do_poll()
114 set_bit(BS_READABLE, &dev->buffer_status); in cm4040_do_poll()
115 DEBUGP(4, dev, "waking up read_wait\n"); in cm4040_do_poll()
116 wake_up_interruptible(&dev->read_wait); in cm4040_do_poll()
118 clear_bit(BS_READABLE, &dev->buffer_status); in cm4040_do_poll()
121 set_bit(BS_WRITABLE, &dev->buffer_status); in cm4040_do_poll()
122 DEBUGP(4, dev, "waking up write_wait\n"); in cm4040_do_poll()
123 wake_up_interruptible(&dev->write_wait); in cm4040_do_poll()
125 clear_bit(BS_WRITABLE, &dev->buffer_status); in cm4040_do_poll()
127 if (dev->buffer_status) in cm4040_do_poll()
128 wake_up_interruptible(&dev->poll_wait); in cm4040_do_poll()
130 mod_timer(&dev->poll_timer, jiffies + POLL_PERIOD); in cm4040_do_poll()
133 static void cm4040_stop_poll(struct reader_dev *dev) in cm4040_stop_poll() argument
135 del_timer_sync(&dev->poll_timer); in cm4040_stop_poll()
138 static int wait_for_bulk_out_ready(struct reader_dev *dev) in wait_for_bulk_out_ready() argument
141 int iobase = dev->p_dev->resource[0]->start; in wait_for_bulk_out_ready()
146 DEBUGP(4, dev, "BulkOut empty (i=%d)\n", i); in wait_for_bulk_out_ready()
151 DEBUGP(4, dev, "wait_event_interruptible_timeout(timeout=%ld\n", in wait_for_bulk_out_ready()
152 dev->timeout); in wait_for_bulk_out_ready()
153 rc = wait_event_interruptible_timeout(dev->write_wait, in wait_for_bulk_out_ready()
155 &dev->buffer_status), in wait_for_bulk_out_ready()
156 dev->timeout); in wait_for_bulk_out_ready()
159 DEBUGP(4, dev, "woke up: BulkOut empty\n"); in wait_for_bulk_out_ready()
161 DEBUGP(4, dev, "woke up: BulkOut full, returning 0 :(\n"); in wait_for_bulk_out_ready()
163 DEBUGP(4, dev, "woke up: signal arrived\n"); in wait_for_bulk_out_ready()
169 static int write_sync_reg(unsigned char val, struct reader_dev *dev) in write_sync_reg() argument
171 int iobase = dev->p_dev->resource[0]->start; in write_sync_reg()
174 rc = wait_for_bulk_out_ready(dev); in write_sync_reg()
179 rc = wait_for_bulk_out_ready(dev); in write_sync_reg()
186 static int wait_for_bulk_in_ready(struct reader_dev *dev) in wait_for_bulk_in_ready() argument
189 int iobase = dev->p_dev->resource[0]->start; in wait_for_bulk_in_ready()
194 DEBUGP(3, dev, "BulkIn full (i=%d)\n", i); in wait_for_bulk_in_ready()
199 DEBUGP(4, dev, "wait_event_interruptible_timeout(timeout=%ld\n", in wait_for_bulk_in_ready()
200 dev->timeout); in wait_for_bulk_in_ready()
201 rc = wait_event_interruptible_timeout(dev->read_wait, in wait_for_bulk_in_ready()
203 &dev->buffer_status), in wait_for_bulk_in_ready()
204 dev->timeout); in wait_for_bulk_in_ready()
206 DEBUGP(4, dev, "woke up: BulkIn full\n"); in wait_for_bulk_in_ready()
208 DEBUGP(4, dev, "woke up: BulkIn not full, returning 0 :(\n"); in wait_for_bulk_in_ready()
210 DEBUGP(4, dev, "woke up: signal arrived\n"); in wait_for_bulk_in_ready()
218 struct reader_dev *dev = filp->private_data; in cm4040_read() local
219 int iobase = dev->p_dev->resource[0]->start; in cm4040_read()
226 DEBUGP(2, dev, "-> cm4040_read(%s,%d)\n", current->comm, current->pid); in cm4040_read()
235 DEBUGP(4, dev, "filep->f_flags O_NONBLOCK set\n"); in cm4040_read()
236 DEBUGP(2, dev, "<- cm4040_read (failure)\n"); in cm4040_read()
240 if (!pcmcia_dev_present(dev->p_dev)) in cm4040_read()
244 rc = wait_for_bulk_in_ready(dev); in cm4040_read()
246 DEBUGP(5, dev, "wait_for_bulk_in_ready rc=%.2x\n", rc); in cm4040_read()
247 DEBUGP(2, dev, "<- cm4040_read (failed)\n"); in cm4040_read()
252 dev->r_buf[i] = xinb(iobase + REG_OFFSET_BULK_IN); in cm4040_read()
254 pr_debug("%lu:%2x ", i, dev->r_buf[i]); in cm4040_read()
261 bytes_to_read = 5 + le32_to_cpu(*(__le32 *)&dev->r_buf[1]);
263 DEBUGP(6, dev, "BytesToRead=%zu\n", bytes_to_read);
268 DEBUGP(6, dev, "Min=%zu\n", min_bytes_to_read);
271 rc = wait_for_bulk_in_ready(dev);
273 DEBUGP(5, dev, "wait_for_bulk_in_ready rc=%.2x\n", rc);
274 DEBUGP(2, dev, "<- cm4040_read (failed)\n");
279 dev->r_buf[i+5] = xinb(iobase + REG_OFFSET_BULK_IN);
281 pr_debug("%lu:%2x ", i, dev->r_buf[i]);
289 if (copy_to_user(buf, dev->r_buf, min_bytes_to_read))
292 rc = wait_for_bulk_in_ready(dev);
294 DEBUGP(5, dev, "wait_for_bulk_in_ready rc=%.2x\n", rc);
295 DEBUGP(2, dev, "<- cm4040_read (failed)\n");
301 rc = write_sync_reg(SCR_READER_TO_HOST_DONE, dev);
303 DEBUGP(5, dev, "write_sync_reg c=%.2x\n", rc);
304 DEBUGP(2, dev, "<- cm4040_read (failed)\n");
313 DEBUGP(2, dev, "<- cm4040_read (successfully)\n");
320 struct reader_dev *dev = filp->private_data; in cm4040_write() local
321 int iobase = dev->p_dev->resource[0]->start; in cm4040_write()
326 DEBUGP(2, dev, "-> cm4040_write(%s,%d)\n", current->comm, current->pid); in cm4040_write()
329 DEBUGP(2, dev, "<- cm4040_write empty read (successfully)\n"); in cm4040_write()
334 DEBUGP(2, dev, "<- cm4040_write buffersize=%Zd < 5\n", count); in cm4040_write()
339 DEBUGP(4, dev, "filep->f_flags O_NONBLOCK set\n"); in cm4040_write()
340 DEBUGP(4, dev, "<- cm4040_write (failure)\n"); in cm4040_write()
344 if (!pcmcia_dev_present(dev->p_dev)) in cm4040_write()
348 if (copy_from_user(dev->s_buf, buf, bytes_to_write)) in cm4040_write()
351 switch (dev->s_buf[0]) { in cm4040_write()
356 dev->timeout = CCID_DRIVER_BULK_DEFAULT_TIMEOUT; in cm4040_write()
360 dev->timeout = CCID_DRIVER_ASYNC_POWERUP_TIMEOUT; in cm4040_write()
371 dev->timeout = CCID_DRIVER_MINIMUM_TIMEOUT; in cm4040_write()
375 rc = write_sync_reg(SCR_HOST_TO_READER_START, dev); in cm4040_write()
377 DEBUGP(5, dev, "write_sync_reg c=%.2Zx\n", rc); in cm4040_write()
378 DEBUGP(2, dev, "<- cm4040_write (failed)\n"); in cm4040_write()
385 DEBUGP(4, dev, "start \n"); in cm4040_write()
388 rc = wait_for_bulk_out_ready(dev); in cm4040_write()
390 DEBUGP(5, dev, "wait_for_bulk_out_ready rc=%.2Zx\n", in cm4040_write()
392 DEBUGP(2, dev, "<- cm4040_write (failed)\n"); in cm4040_write()
399 xoutb(dev->s_buf[i],iobase + REG_OFFSET_BULK_OUT); in cm4040_write()
401 DEBUGP(4, dev, "end\n"); in cm4040_write()
403 rc = write_sync_reg(SCR_HOST_TO_READER_DONE, dev); in cm4040_write()
406 DEBUGP(5, dev, "write_sync_reg c=%.2Zx\n", rc); in cm4040_write()
407 DEBUGP(2, dev, "<- cm4040_write (failed)\n"); in cm4040_write()
414 DEBUGP(2, dev, "<- cm4040_write (successfully)\n"); in cm4040_write()
420 struct reader_dev *dev = filp->private_data; in cm4040_poll() local
423 poll_wait(filp, &dev->poll_wait, wait); in cm4040_poll()
425 if (test_and_clear_bit(BS_READABLE, &dev->buffer_status)) in cm4040_poll()
427 if (test_and_clear_bit(BS_WRITABLE, &dev->buffer_status)) in cm4040_poll()
430 DEBUGP(2, dev, "<- cm4040_poll(%u)\n", mask); in cm4040_poll()
437 struct reader_dev *dev; in cm4040_open() local
457 dev = link->priv; in cm4040_open()
458 filp->private_data = dev; in cm4040_open()
461 DEBUGP(4, dev, "filep->f_flags O_NONBLOCK set\n"); in cm4040_open()
468 dev->poll_timer.data = (unsigned long) dev; in cm4040_open()
469 mod_timer(&dev->poll_timer, jiffies + POLL_PERIOD); in cm4040_open()
471 DEBUGP(2, dev, "<- cm4040_open (successfully)\n"); in cm4040_open()
480 struct reader_dev *dev = filp->private_data; in cm4040_close() local
484 DEBUGP(2, dev, "-> cm4040_close(maj/min=%d.%d)\n", imajor(inode), in cm4040_close()
494 cm4040_stop_poll(dev); in cm4040_close()
497 wake_up(&dev->devq); in cm4040_close()
499 DEBUGP(2, dev, "<- cm4040_close\n"); in cm4040_close()
505 struct reader_dev *dev = link->priv; in cm4040_reader_release() local
507 DEBUGP(3, dev, "-> cm4040_reader_release\n"); in cm4040_reader_release()
509 DEBUGP(3, dev, KERN_INFO MODULE_NAME ": delaying release " in cm4040_reader_release()
511 wait_event(dev->devq, (link->open == 0)); in cm4040_reader_release()
513 DEBUGP(3, dev, "<- cm4040_reader_release\n"); in cm4040_reader_release()
525 struct reader_dev *dev; in reader_config() local
535 dev_info(&link->dev, "pcmcia_enable_device failed 0x%x\n", in reader_config()
540 dev = link->priv; in reader_config()
542 DEBUGP(2, dev, "device " DEVICE_NAME "%d at %pR\n", devno, in reader_config()
544 DEBUGP(2, dev, "<- reader_config (succ)\n"); in reader_config()
561 struct reader_dev *dev; in reader_probe() local
572 dev = kzalloc(sizeof(struct reader_dev), GFP_KERNEL); in reader_probe()
573 if (dev == NULL) in reader_probe()
576 dev->timeout = CCID_DRIVER_MINIMUM_TIMEOUT; in reader_probe()
577 dev->buffer_status = 0; in reader_probe()
579 link->priv = dev; in reader_probe()
580 dev->p_dev = link; in reader_probe()
584 init_waitqueue_head(&dev->devq); in reader_probe()
585 init_waitqueue_head(&dev->poll_wait); in reader_probe()
586 init_waitqueue_head(&dev->read_wait); in reader_probe()
587 init_waitqueue_head(&dev->write_wait); in reader_probe()
588 setup_timer(&dev->poll_timer, cm4040_do_poll, 0); in reader_probe()
593 kfree(dev); in reader_probe()
604 struct reader_dev *dev = link->priv; in reader_detach() local
618 kfree(dev); in reader_detach()