Lines Matching refs:dev
40 #define reader_to_dev(x) (&x->p_dev->dev)
109 struct reader_dev *dev = from_timer(dev, t, poll_timer);
110 unsigned int obs = xinb(dev->p_dev->resource[0]->start
114 set_bit(BS_READABLE, &dev->buffer_status);
115 DEBUGP(4, dev, "waking up read_wait\n");
116 wake_up_interruptible(&dev->read_wait);
118 clear_bit(BS_READABLE, &dev->buffer_status);
121 set_bit(BS_WRITABLE, &dev->buffer_status);
122 DEBUGP(4, dev, "waking up write_wait\n");
123 wake_up_interruptible(&dev->write_wait);
125 clear_bit(BS_WRITABLE, &dev->buffer_status);
127 if (dev->buffer_status)
128 wake_up_interruptible(&dev->poll_wait);
130 mod_timer(&dev->poll_timer, jiffies + POLL_PERIOD);
133 static void cm4040_stop_poll(struct reader_dev *dev)
135 del_timer_sync(&dev->poll_timer);
138 static int wait_for_bulk_out_ready(struct reader_dev *dev)
141 int iobase = dev->p_dev->resource[0]->start;
146 DEBUGP(4, dev, "BulkOut empty (i=%d)\n", i);
151 DEBUGP(4, dev, "wait_event_interruptible_timeout(timeout=%ld\n",
152 dev->timeout);
153 rc = wait_event_interruptible_timeout(dev->write_wait,
155 &dev->buffer_status),
156 dev->timeout);
159 DEBUGP(4, dev, "woke up: BulkOut empty\n");
161 DEBUGP(4, dev, "woke up: BulkOut full, returning 0 :(\n");
163 DEBUGP(4, dev, "woke up: signal arrived\n");
169 static int write_sync_reg(unsigned char val, struct reader_dev *dev)
171 int iobase = dev->p_dev->resource[0]->start;
174 rc = wait_for_bulk_out_ready(dev);
179 rc = wait_for_bulk_out_ready(dev);
186 static int wait_for_bulk_in_ready(struct reader_dev *dev)
189 int iobase = dev->p_dev->resource[0]->start;
194 DEBUGP(3, dev, "BulkIn full (i=%d)\n", i);
199 DEBUGP(4, dev, "wait_event_interruptible_timeout(timeout=%ld\n",
200 dev->timeout);
201 rc = wait_event_interruptible_timeout(dev->read_wait,
203 &dev->buffer_status),
204 dev->timeout);
206 DEBUGP(4, dev, "woke up: BulkIn full\n");
208 DEBUGP(4, dev, "woke up: BulkIn not full, returning 0 :(\n");
210 DEBUGP(4, dev, "woke up: signal arrived\n");
218 struct reader_dev *dev = filp->private_data;
219 int iobase = dev->p_dev->resource[0]->start;
226 DEBUGP(2, dev, "-> cm4040_read(%s,%d)\n", current->comm, current->pid);
235 DEBUGP(4, dev, "filep->f_flags O_NONBLOCK set\n");
236 DEBUGP(2, dev, "<- cm4040_read (failure)\n");
240 if (!pcmcia_dev_present(dev->p_dev))
244 rc = wait_for_bulk_in_ready(dev);
246 DEBUGP(5, dev, "wait_for_bulk_in_ready rc=%.2x\n", rc);
247 DEBUGP(2, dev, "<- cm4040_read (failed)\n");
252 dev->r_buf[i] = xinb(iobase + REG_OFFSET_BULK_IN);
254 pr_debug("%lu:%2x ", i, dev->r_buf[i]);
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;
321 int iobase = dev->p_dev->resource[0]->start;
326 DEBUGP(2, dev, "-> cm4040_write(%s,%d)\n", current->comm, current->pid);
329 DEBUGP(2, dev, "<- cm4040_write empty read (successfully)\n");
334 DEBUGP(2, dev, "<- cm4040_write buffersize=%zd < 5\n", count);
339 DEBUGP(4, dev, "filep->f_flags O_NONBLOCK set\n");
340 DEBUGP(4, dev, "<- cm4040_write (failure)\n");
344 if (!pcmcia_dev_present(dev->p_dev))
348 if (copy_from_user(dev->s_buf, buf, bytes_to_write))
351 switch (dev->s_buf[0]) {
356 dev->timeout = CCID_DRIVER_BULK_DEFAULT_TIMEOUT;
360 dev->timeout = CCID_DRIVER_ASYNC_POWERUP_TIMEOUT;
371 dev->timeout = CCID_DRIVER_MINIMUM_TIMEOUT;
375 rc = write_sync_reg(SCR_HOST_TO_READER_START, dev);
377 DEBUGP(5, dev, "write_sync_reg c=%.2zx\n", rc);
378 DEBUGP(2, dev, "<- cm4040_write (failed)\n");
385 DEBUGP(4, dev, "start \n");
388 rc = wait_for_bulk_out_ready(dev);
390 DEBUGP(5, dev, "wait_for_bulk_out_ready rc=%.2zx\n",
392 DEBUGP(2, dev, "<- cm4040_write (failed)\n");
399 xoutb(dev->s_buf[i],iobase + REG_OFFSET_BULK_OUT);
401 DEBUGP(4, dev, "end\n");
403 rc = write_sync_reg(SCR_HOST_TO_READER_DONE, dev);
406 DEBUGP(5, dev, "write_sync_reg c=%.2zx\n", rc);
407 DEBUGP(2, dev, "<- cm4040_write (failed)\n");
414 DEBUGP(2, dev, "<- cm4040_write (successfully)\n");
420 struct reader_dev *dev = filp->private_data;
423 poll_wait(filp, &dev->poll_wait, wait);
425 if (test_and_clear_bit(BS_READABLE, &dev->buffer_status))
427 if (test_and_clear_bit(BS_WRITABLE, &dev->buffer_status))
430 DEBUGP(2, dev, "<- cm4040_poll(%u)\n", mask);
437 struct reader_dev *dev;
457 dev = link->priv;
458 filp->private_data = dev;
461 DEBUGP(4, dev, "filep->f_flags O_NONBLOCK set\n");
468 mod_timer(&dev->poll_timer, jiffies + POLL_PERIOD);
470 DEBUGP(2, dev, "<- cm4040_open (successfully)\n");
479 struct reader_dev *dev = filp->private_data;
483 DEBUGP(2, dev, "-> cm4040_close(maj/min=%d.%d)\n", imajor(inode),
493 cm4040_stop_poll(dev);
496 wake_up(&dev->devq);
498 DEBUGP(2, dev, "<- cm4040_close\n");
504 struct reader_dev *dev = link->priv;
506 DEBUGP(3, dev, "-> cm4040_reader_release\n");
508 DEBUGP(3, dev, MODULE_NAME ": delaying release "
510 wait_event(dev->devq, (link->open == 0));
512 DEBUGP(3, dev, "<- cm4040_reader_release\n");
524 struct reader_dev *dev;
534 dev_info(&link->dev, "pcmcia_enable_device failed 0x%x\n",
539 dev = link->priv;
541 DEBUGP(2, dev, "device " DEVICE_NAME "%d at %pR\n", devno,
543 DEBUGP(2, dev, "<- reader_config (succ)\n");
560 struct reader_dev *dev;
571 dev = kzalloc(sizeof(struct reader_dev), GFP_KERNEL);
572 if (dev == NULL)
575 dev->timeout = CCID_DRIVER_MINIMUM_TIMEOUT;
576 dev->buffer_status = 0;
578 link->priv = dev;
579 dev->p_dev = link;
583 init_waitqueue_head(&dev->devq);
584 init_waitqueue_head(&dev->poll_wait);
585 init_waitqueue_head(&dev->read_wait);
586 init_waitqueue_head(&dev->write_wait);
587 timer_setup(&dev->poll_timer, cm4040_do_poll, 0);
592 kfree(dev);
603 struct reader_dev *dev = link->priv;
617 kfree(dev);