1 /********************************************************************* 2 * 3 * Filename: irport.h 4 * Version: 0.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> 11 * 12 * Copyright (c) 1997, 1998-2000 Dag Brattli <dagb@cs.uit.no> 13 * All Rights Reserved. 14 * 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. 19 * 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. 23 * 24 ********************************************************************/ 25 26 #ifndef IRPORT_H 27 #define IRPORT_H 28 29 #include <linux/netdevice.h> 30 #include <linux/skbuff.h> 31 #include <linux/types.h> 32 #include <linux/spinlock.h> 33 34 #include <net/irda/irda_device.h> 35 36 #define SPEED_DEFAULT 9600 37 #define SPEED_MAX 115200 38 39 /* 40 * These are the supported serial types. 41 */ 42 #define PORT_UNKNOWN 0 43 #define PORT_8250 1 44 #define PORT_16450 2 45 #define PORT_16550 3 46 #define PORT_16550A 4 47 #define PORT_CIRRUS 5 48 #define PORT_16650 6 49 #define PORT_MAX 6 50 51 #define FRAME_MAX_SIZE 2048 52 53 struct irport_cb { 54 struct net_device *netdev; /* Yes! we are some kind of netdevice */ 55 struct net_device_stats stats; 56 57 struct irlap_cb *irlap; /* The link layer we are attached to */ 58 59 chipio_t io; /* IrDA controller information */ 60 iobuff_t tx_buff; /* Transmit buffer */ 61 iobuff_t rx_buff; /* Receive buffer */ 62 63 struct qos_info qos; /* QoS capabilities for this device */ 64 dongle_t *dongle; /* Dongle driver */ 65 66 __u32 flags; /* Interface flags */ 67 __u32 new_speed; 68 int mode; 69 int index; /* Instance index */ 70 71 spinlock_t lock; /* For serializing operations */ 72 73 /* For piggyback drivers */ 74 void *priv; 75 void (*change_speed)(void *priv, __u32 speed); 76 void (*interrupt)(int irq, void *dev_id, struct pt_regs *regs); 77 }; 78 79 struct irport_cb *irport_open(int i, unsigned int iobase, unsigned int irq); 80 int irport_close(struct irport_cb *self); 81 void irport_start(struct irport_cb *self); 82 void irport_stop(struct irport_cb *self); 83 void irport_change_speed(void *priv, __u32 speed); 84 void irport_interrupt(int irq, void *dev_id, struct pt_regs *regs); 85 int irport_hard_xmit(struct sk_buff *skb, struct net_device *dev); 86 int irport_net_open(struct net_device *dev); 87 int irport_net_close(struct net_device *dev); 88 89 #endif /* IRPORT_H */ 90