5  * Shared defines for all mac80211 Prism54 code
 
   7  * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net>
 
   9  * Based on the islsm (softmac prism54) driver, which is:
 
  10  * Copyright 2004-2006 Jean-Baptiste Note <jbnote@gmail.com>, et al.
 
  12  * This program is free software; you can redistribute it and/or modify
 
  13  * it under the terms of the GNU General Public License version 2 as
 
  14  * published by the Free Software Foundation.
 
  17 enum control_frame_types {
 
  18         P54_CONTROL_TYPE_FILTER_SET = 0,
 
  19         P54_CONTROL_TYPE_CHANNEL_CHANGE,
 
  20         P54_CONTROL_TYPE_FREQDONE,
 
  21         P54_CONTROL_TYPE_DCFINIT,
 
  22         P54_CONTROL_TYPE_ENCRYPTION,
 
  24         P54_CONTROL_TYPE_POWERMGT,
 
  25         P54_CONTROL_TYPE_FREEQUEUE,
 
  26         P54_CONTROL_TYPE_TXDONE,
 
  27         P54_CONTROL_TYPE_PING,
 
  28         P54_CONTROL_TYPE_STAT_READBACK,
 
  30         P54_CONTROL_TYPE_EEPROM_READBACK,
 
  32         P54_CONTROL_TYPE_GPIO,
 
  33         P54_CONTROL_TYPE_TIMER,
 
  34         P54_CONTROL_TYPE_MODULATION,
 
  35         P54_CONTROL_TYPE_SYNTH_CONFIG,
 
  36         P54_CONTROL_TYPE_DETECTOR_VALUE,
 
  37         P54_CONTROL_TYPE_XBOW_SYNTH_CFG,
 
  38         P54_CONTROL_TYPE_CCE_QUIET,
 
  39         P54_CONTROL_TYPE_PSM_STA_UNLOCK,
 
  42 struct p54_control_hdr {
 
  46         __le16 type;    /* enum control_frame_types */
 
  50 } __attribute__ ((packed));
 
  52 #define EEPROM_READBACK_LEN 0x3fc
 
  54 #define ISL38XX_DEV_FIRMWARE_ADDR 0x20000
 
  56 #define FW_FMAC 0x464d4143
 
  57 #define FW_LM86 0x4c4d3836
 
  58 #define FW_LM87 0x4c4d3837
 
  59 #define FW_LM20 0x4c4d3230
 
  64         struct sk_buff_head tx_queue;
 
  65         void (*tx)(struct ieee80211_hw *dev, struct p54_control_hdr *data,
 
  66                    size_t len, int free_on_tx);
 
  67         int (*open)(struct ieee80211_hw *dev);
 
  68         void (*stop)(struct ieee80211_hw *dev);
 
  74         struct mutex conf_mutex;
 
  75         u8 mac_addr[ETH_ALEN];
 
  78         struct pda_iq_autocal_entry *iq_autocal;
 
  79         unsigned int iq_autocal_len;
 
  80         struct pda_channel_output_limit *output_limit;
 
  81         unsigned int output_limit_len;
 
  82         struct pda_pa_curve_data *curve_data;
 
  83         unsigned int filter_flags;
 
  87         unsigned int tx_hdr_len;
 
  90         unsigned int fw_interface;
 
  91         unsigned int output_power;
 
  94         struct ieee80211_tx_queue_stats tx_stats[8];
 
  95         struct ieee80211_low_level_stats stats;
 
  96         struct timer_list stats_timer;
 
  97         struct completion stats_comp;
 
 101         struct completion eeprom_comp;
 
 104 int p54_rx(struct ieee80211_hw *dev, struct sk_buff *skb);
 
 105 int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw);
 
 106 int p54_read_eeprom(struct ieee80211_hw *dev);
 
 107 struct ieee80211_hw *p54_init_common(size_t priv_data_len);
 
 108 void p54_free_common(struct ieee80211_hw *dev);