32 #include <linux/string.h>
35 #include <linux/capability.h>
37 #include <linux/if_ether.h>
38 #include <linux/if_arp.h>
39 #include <linux/netdevice.h>
41 #include <linux/tty.h>
44 #include <linux/slab.h>
45 #include <linux/export.h>
47 #include <asm/ioctls.h>
48 #include <asm/uaccess.h>
62 static void irda_task_timer_expired(
void *
data);
67 if (dongles ==
NULL) {
86 static void leftover_dongle(
void *
arg)
112 IRDA_DEBUG(4,
"%s(%s)\n", __func__, status ?
"TRUE" :
"FALSE");
127 self->media_busy =
TRUE;
134 self->media_busy =
FALSE;
155 IRDA_ERROR(
"%s: do_ioctl not impl. by device driver\n",
165 return req.ifr_receiving;
180 __irda_task_delete(task);
191 static int irda_task_kick(
struct irda_task *task)
208 irda_task_delete(task);
214 IRDA_ERROR(
"%s: Error executing task!\n", __func__);
215 irda_task_delete(task);
237 irda_task_kick(task->
parent);
240 irda_task_delete(task);
241 }
else if (timeout > 0) {
242 irda_start_timer(&task->
timer, timeout, (
void *) task,
243 irda_task_timer_expired);
246 IRDA_DEBUG(0,
"%s(), not finished, and no timeout!\n",
260 static void irda_task_timer_expired(
void *
data)
268 irda_task_kick(task);
298 return alloc_netdev(sizeof_priv,
"irda%d", irda_device_setup);
302 #ifdef CONFIG_ISA_DMA_API
316 clear_dma_ff(channel);
318 set_dma_addr(channel, buffer);