162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * IPWireless 3G PCMCIA Network Driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Original code
662306a36Sopenharmony_ci *   by Stephen Blackheath <stephen@blacksapphire.com>,
762306a36Sopenharmony_ci *      Ben Martel <benm@symmetric.co.nz>
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * Copyrighted as follows:
1062306a36Sopenharmony_ci *   Copyright (C) 2004 by Symmetric Systems Ltd (NZ)
1162306a36Sopenharmony_ci *
1262306a36Sopenharmony_ci * Various driver changes and rewrites, port to new kernels
1362306a36Sopenharmony_ci *   Copyright (C) 2006-2007 Jiri Kosina
1462306a36Sopenharmony_ci *
1562306a36Sopenharmony_ci * Misc code cleanups and updates
1662306a36Sopenharmony_ci *   Copyright (C) 2007 David Sterba
1762306a36Sopenharmony_ci */
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#ifndef _IPWIRELESS_CS_HARDWARE_H_
2062306a36Sopenharmony_ci#define _IPWIRELESS_CS_HARDWARE_H_
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci#include <linux/types.h>
2362306a36Sopenharmony_ci#include <linux/sched.h>
2462306a36Sopenharmony_ci#include <linux/interrupt.h>
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci#define IPW_CONTROL_LINE_CTS 0x0001
2762306a36Sopenharmony_ci#define IPW_CONTROL_LINE_DCD 0x0002
2862306a36Sopenharmony_ci#define IPW_CONTROL_LINE_DSR 0x0004
2962306a36Sopenharmony_ci#define IPW_CONTROL_LINE_RI  0x0008
3062306a36Sopenharmony_ci#define IPW_CONTROL_LINE_DTR 0x0010
3162306a36Sopenharmony_ci#define IPW_CONTROL_LINE_RTS 0x0020
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cistruct ipw_hardware;
3462306a36Sopenharmony_cistruct ipw_network;
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_cistruct ipw_hardware *ipwireless_hardware_create(void);
3762306a36Sopenharmony_civoid ipwireless_hardware_free(struct ipw_hardware *hw);
3862306a36Sopenharmony_ciirqreturn_t ipwireless_interrupt(int irq, void *dev_id);
3962306a36Sopenharmony_ciint ipwireless_set_DTR(struct ipw_hardware *hw, unsigned int channel_idx,
4062306a36Sopenharmony_ci		int state);
4162306a36Sopenharmony_ciint ipwireless_set_RTS(struct ipw_hardware *hw, unsigned int channel_idx,
4262306a36Sopenharmony_ci		int state);
4362306a36Sopenharmony_ciint ipwireless_send_packet(struct ipw_hardware *hw,
4462306a36Sopenharmony_ci			    unsigned int channel_idx,
4562306a36Sopenharmony_ci			    const unsigned char *data,
4662306a36Sopenharmony_ci			    unsigned int length,
4762306a36Sopenharmony_ci			    void (*packet_sent_callback) (void *cb,
4862306a36Sopenharmony_ci							  unsigned int length),
4962306a36Sopenharmony_ci			    void *sent_cb_data);
5062306a36Sopenharmony_civoid ipwireless_associate_network(struct ipw_hardware *hw,
5162306a36Sopenharmony_ci		struct ipw_network *net);
5262306a36Sopenharmony_civoid ipwireless_stop_interrupts(struct ipw_hardware *hw);
5362306a36Sopenharmony_civoid ipwireless_init_hardware_v1(struct ipw_hardware *hw,
5462306a36Sopenharmony_ci				 unsigned int base_port,
5562306a36Sopenharmony_ci				 void __iomem *attr_memory,
5662306a36Sopenharmony_ci				 void __iomem *common_memory,
5762306a36Sopenharmony_ci				 int is_v2_card,
5862306a36Sopenharmony_ci				 void (*reboot_cb) (void *data),
5962306a36Sopenharmony_ci				 void *reboot_cb_data);
6062306a36Sopenharmony_civoid ipwireless_init_hardware_v2_v3(struct ipw_hardware *hw);
6162306a36Sopenharmony_civoid ipwireless_sleep(unsigned int tenths);
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci#endif
64