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