1099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba/*
2099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba * IPWireless 3G PCMCIA Network Driver
3099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *
4099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba * Original code
5099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *   by Stephen Blackheath <stephen@blacksapphire.com>,
6099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *      Ben Martel <benm@symmetric.co.nz>
7099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *
8099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba * Copyrighted as follows:
9099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *   Copyright (C) 2004 by Symmetric Systems Ltd (NZ)
10099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *
11099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba * Various driver changes and rewrites, port to new kernels
12099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *   Copyright (C) 2006-2007 Jiri Kosina
13099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *
14099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba * Misc code cleanups and updates
15099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba *   Copyright (C) 2007 David Sterba
16099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba */
17099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba
18099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#ifndef _IPWIRELESS_CS_HARDWARE_H_
19099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#define _IPWIRELESS_CS_HARDWARE_H_
20099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba
21099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#include <linux/types.h>
22099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#include <linux/sched.h>
23099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#include <linux/interrupt.h>
24099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba
25099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#define IPW_CONTROL_LINE_CTS 0x0001
26099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#define IPW_CONTROL_LINE_DCD 0x0002
27099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#define IPW_CONTROL_LINE_DSR 0x0004
28099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#define IPW_CONTROL_LINE_RI  0x0008
29099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#define IPW_CONTROL_LINE_DTR 0x0010
30099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#define IPW_CONTROL_LINE_RTS 0x0020
31099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba
32099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbastruct ipw_hardware;
33099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbastruct ipw_network;
34099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba
35099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbastruct ipw_hardware *ipwireless_hardware_create(void);
36099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbavoid ipwireless_hardware_free(struct ipw_hardware *hw);
372fc5577e1729ac303ad8b9547f8ccdb057076998David Sterbairqreturn_t ipwireless_interrupt(int irq, void *dev_id);
38099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbaint ipwireless_set_DTR(struct ipw_hardware *hw, unsigned int channel_idx,
39099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba		int state);
40099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbaint ipwireless_set_RTS(struct ipw_hardware *hw, unsigned int channel_idx,
41099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba		int state);
42099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbaint ipwireless_send_packet(struct ipw_hardware *hw,
43099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba			    unsigned int channel_idx,
44ff3e990e61a5a9124687a01a025c43b3564f82abDavid Sterba			    const unsigned char *data,
45099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba			    unsigned int length,
46099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba			    void (*packet_sent_callback) (void *cb,
47099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba							  unsigned int length),
48099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba			    void *sent_cb_data);
49099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbavoid ipwireless_associate_network(struct ipw_hardware *hw,
50099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba		struct ipw_network *net);
51099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbavoid ipwireless_stop_interrupts(struct ipw_hardware *hw);
52099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbavoid ipwireless_init_hardware_v1(struct ipw_hardware *hw,
53099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba				 unsigned int base_port,
54099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba				 void __iomem *attr_memory,
55099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba				 void __iomem *common_memory,
56099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba				 int is_v2_card,
57099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba				 void (*reboot_cb) (void *data),
58099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba				 void *reboot_cb_data);
59099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbavoid ipwireless_init_hardware_v2_v3(struct ipw_hardware *hw);
60099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterbavoid ipwireless_sleep(unsigned int tenths);
61099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba
62099dc4fb62653f6019d78db55fba7a18ef02d65bDavid Sterba#endif
63