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