1 /*********************************************************************
 
   5  * Description:   Serial driver for IrDA
 
   6  * Status:        Experimental.
 
   7  * Author:        Dag Brattli <dagb@cs.uit.no>
 
   8  * Created at:    Sun Aug  3 13:49:59 1997
 
   9  * Modified at:   Fri Jan 14 10:21:10 2000
 
  10  * Modified by:   Dag Brattli <dagb@cs.uit.no>
 
  12  *     Copyright (c) 1997, 1998-2000 Dag Brattli <dagb@cs.uit.no>
 
  13  *     All Rights Reserved.
 
  15  *     This program is free software; you can redistribute it and/or 
 
  16  *     modify it under the terms of the GNU General Public License as 
 
  17  *     published by the Free Software Foundation; either version 2 of 
 
  18  *     the License, or (at your option) any later version.
 
  20  *     Neither Dag Brattli nor University of Tromsø admit liability nor
 
  21  *     provide warranty for any of this software. This material is 
 
  22  *     provided "AS-IS" and at no charge.
 
  24  ********************************************************************/
 
  29 #include <linux/netdevice.h>
 
  30 #include <linux/skbuff.h>
 
  31 #include <linux/types.h>
 
  32 #include <linux/spinlock.h>
 
  34 #include <net/irda/irda_device.h>
 
  36 #define SPEED_DEFAULT 9600
 
  37 #define SPEED_MAX     115200
 
  40  * These are the supported serial types.
 
  42 #define PORT_UNKNOWN    0
 
  51 #define FRAME_MAX_SIZE 2048
 
  54         struct net_device *netdev; /* Yes! we are some kind of netdevice */
 
  55         struct net_device_stats stats;
 
  57         struct irlap_cb *irlap;    /* The link layer we are attached to */
 
  59         chipio_t io;               /* IrDA controller information */
 
  60         iobuff_t tx_buff;          /* Transmit buffer */
 
  61         iobuff_t rx_buff;          /* Receive buffer */
 
  63         struct qos_info qos;       /* QoS capabilities for this device */
 
  64         dongle_t *dongle;          /* Dongle driver */
 
  66         __u32 flags;               /* Interface flags */
 
  69         int index;                 /* Instance index */
 
  70         int transmitting;          /* Are we transmitting ? */
 
  72         spinlock_t lock;           /* For serializing operations */
 
  74         /* For piggyback drivers */
 
  76         void (*change_speed)(void *priv, __u32 speed);
 
  77         int (*interrupt)(int irq, void *dev_id, struct pt_regs *regs);